با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که دوره آموزش codeigniter را دنبال می کنند. در جلسه قبل به آموزش افزودن JS و CSS در codeigniter پرداختیم. در این جلسه شما را با مسئله بین المللی سازی در codeigniter آشنا خواهیم کرد.
language class در codeigniter یک راه آسان برای پشتیبانی از زبان های چندگانه در جهت بین المللی سازی برنامه های تحت وب است.
تا حدودی می توان از فایل های مختلف زبان در فریم ورک کدایگنایتر برای نمایش متن در بسیاری از زبان های مختلف استفاده کرد.
می توانیم فایل های مختلف زبان را در دایرکتوری application/language قرار دهیم. فایل های زبان سیستم را می توان در دایرکتوری system/language یافت، اما برای اضافه کردن زبان مورد نظرتان به برنامه خود، باید یک پوشه جداگانه برای هر زبان در دایرکتوری application/language ایجاد کنید.
برای ایجاد یک فایل زبان، باید از طریقlang.php_ آن را به پایان رسانید. به عنوان مثال، شما می خواهید یک فایل زبان برای زبان فرانسه ایجاد کنید، برای این کار باید آن را به صورت french_lang.php ذخیره نمایید.
در این فایل می توانید تمام متون زبان خود را در key, value combination در lang array$ ذخیره کنید که در زیر نشان داده شده است.
1 | $lang[‘key’] = ‘val’; |
برای استفاده از هر زبانی در برنامه خود ابتدا باید فایل آن زبان خاص را برای بازیابی متون مختلف ذخیره شده در آن فایل، بارگذاری کنید.
می توانید از کد زیر برای بارگذاری پرونده زبان استفاده کنید.
1 | $this->lang->load('filename', 'language'); |
برای دریافت یک خط از فایل زبان، فقط کافی است که کد زیر را اجرا نمایید.
1 | $this->lang->line('language_key'); |
جایی که language_key وجود دارد، این پارامتر، یک پارامتر کلیدی برای به دست آوردن مقدار کلیدی در فایل زبان بارگذاری شده است.
اگر به یک زبان در سطح جهانی نیاز دارید، می توانید آن را در فایل application / config / autoload.php به صورت زیر بارگذاری کنید.
1 2 3 4 5 6 7 8 9 10 11 | | ----------------------------------------------------------------------- | Auto-load Language files | ----------------------------------------------------------------------- | Prototype: | $autoload['language'] = array('lang1', 'lang2'); | | NOTE: Do not include the "_lang" part of your file. For example | "codeigniter_lang.php" would be referenced as array('codeigniter'); | */ $autoload['language'] = array(); |
به سادگی با استفاده از این قابلیت زبان های مختلف را به codeigniter منتقل کنید.
یک کنترل کننده با عنوان Lang_controller.php ایجاد کنید.
این کنترل کننده را در application/controller/Lang_controller.php ذخیره کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php class Lang_controller extends CI_Controller { public function index(){ //Load form helper $this->load->helper('form'); //Get the selected language $language = $this->input->post('language'); //Choose language file according to selected lanaguage if($language == "french") $this->lang->load('french_lang','french'); else if($language == "german") $this->lang->load('german_lang','german'); else $this->lang->load('english_lang','english'); //Fetch the message from language file. $data['msg'] = $this->lang->line('msg'); $data['language'] = $language; //Load the view file $this->load->view('lang_view',$data); } } ?> |
یک فایل نمایه یا view file با عنوان lang_view.php ایجاد کنید.
این فایل را در application/views/ lang_view.php ذخیره نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter Internationalization Example</title> </head> <body> <?php echo form_open('/lang'); ?> <select name = "language" onchange = "javascript:this.form.submit();"> <?php $lang = array('english'=>"English",'french'=>"French",'german'=>"German"); foreach($lang as $key=>$val) { if($key == $language) echo "<option value = '".$key."' selected>".$val."</option>"; else echo "<option value = '".$key."'>".$val."</option>"; } ?> </select> <br> <?php form_close(); echo $msg; ?> </body> </html> |
همانطور که در شکل زیر نشان داده شده است، سه پوشه به نام های انگلیسی، فرانسوی و آلمانی ایجاد کنید.
کد داده شده زیر را کپی کنید و آن را در فایل english_lang.php در پوشه application / language / english ذخیره کنید.
1 2 3 | <?php $lang['msg'] = "CodeIgniter Internationalization example."; ?> |
کد داده شده زیر را کپی کنید و آن را در فایل french_lang.php در پوشه application/language/French ذخیره کنید.
1 2 3 | <?php $lang['msg'] = "Exemple CodeIgniter internationalisation."; ? |
کد داده شده زیر را کپی کنید و آن را در فایل german_lang.php در پوشه application/language/german ذخیره کنید.
1 2 3 | <?php $lang['msg'] = "CodeIgniter Internationalisierung Beispiel."; ?> |
فایل routes.php را در application/config/routes.php تغییر دهید.
این کار موجب اضافه شدن مسیر برای کنترل کننده می شود. سپس خط زیر را در انتهای فایل اضافه کنید.
1 | $route['lang'] = "Lang_controller"; |
برای اجرای مثال فوق، URL زیر را در مرورگر اجرا کنید.
1 | http://yoursite.com/index.php/lang |
این کار خروجی ای شبیه به تصویر زیر ایجاد می کند.
اگر زبان را در لیست کشویی تغییر دهید، زبان جمله ای که در زیر لیست کشویی نوشته می شود نیز تغییر خواهد کرد.
در این جلسه از جلسات آموزشی codeigniter با مسئله بین المللی سازی در codeigniter آشنا شدیم.
در جلسه بعدی که آخرین جلسه آموزش کدایگنایتر است شما را با امنیت در codeigniter آشنا خواهیم کرد.
با پی وی لرن همراه باشید.