- جمعه 19 مرداد 1397 ساعت 08:26
- 3.1.9
- در حال تکمیل
- فعال
کلاس Language، فانکشنهایی را برای دریافت فایلهای زبان و خطوط متن آنها، برای اهداف بینالمللیسازی (چندزبانه ساختن اپلیکیشن) ارائه میدهد.
در دایرکتوری system کدایگنایتر، میتوانید یک سابدایرکتوری با نام language را بیابید که حاوی مجموعهای از فایلهای زبان برای اصطلاحات زبان انگلیسی (english) است. فایلهای داخل این دایرکتوری (system/language/english/)، پیامهای معمولی، پیامهای خطا و سایر عبارات و اصطلاحات عمومی خروجی را برای بخشهای مختلف فریمورک کدایگنایتر تعریف میکنند.
به منظور ارائه خطاهای مخصوص برنامه و پیامهای دیگر، یا ارائه ترجمهای برای پیامهای مربوط به هسته فریمورک به زبانی دیگر، در صورت نیاز میتوانید فایلهای زبان خود را ایجاد یا ترکیب کنید. این ترجمهها یا پیامهای اضافی باید داخل دایرکتوری application/language/ قرار بگیرند، هر زبان باید دارای سابدایرکتوری مخصوص خود باشد. (برای مثال، french یا german یا persian).
فریمورک کدایگنایتر با مجموعهای از فایلهای زبان برای اصطلاحات انگلیسی همراه است. ترجمههای تایید شده اضافی را میتوانید در ریپازیتوری ترجمههای کدایگنایتر 3 پیدا کنید.
هنگامی که کدایگنایتر فایلهای زبان را لود میکند، ابتدا فایلهای داخل دایرکتوری system/language/ را لود میکند، سپس به دنبال فایلهای موجود در دایرکتوری application/language/ میگردد و ترجمههای تکراری را جایگزین نسخه موجود در دایرکتوری system میکند.
توجه
هر زبان باید در پوشه مربوط به خودش ذخیره شود. برای مثال، فایلهای زبان انگلیسی باید در محل system/language/english قرار گیرند.
هندل کردن چندین زبان
اگر میخواهید چندین زبان را در اپلیکیشن خود پشتیبانی کنید، باید برای هر کدام یک پوشه در دایرکتوری application/language/ ایجاد کنید و زبان پیشفرض را نیز باید در application/config/config.php مشخص کنید.
دایرکتوری application/language/english/ باید حاوی هر فایل زبانی باشد که در اپلیکیشن خود نیاز دارید، برای مثال پیامهای خطا.
هر دایرکتوری اصطلاحات اختصاصی دیگری باید حاوی فایلهای زبان مربوط به هسته باشد که از ریپازیتوری ترجمهها دریافت کرده و یا خودتان ترجمه کردهاید و همچنین هر مورد اضافی دیگری که در اپلیکیشنتان به آن نیاز دارید.
زبانی که کاربر در حال حاضر در حال استفاده از آن است را نیز باید ذخیره کنید، برای مثال در یک متغییر سشن.
نمونه ساختار فایلهای زبان
system/
language/
english/
...
email_lang.php
form_validation_lang.php
...
application/
language/
english/
error_messages_lang.php
french/
...
email_lang.php
error_messages_lang.php
form_validation_lang.php
...
مثالی از سوئیچ بین زبانها
$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);
$oops = $this->lang->line('message_key');
بینالمللیسازی (چندزبانهسازی)
هدف از کلاس زبان در کدایگنایتر، ارائه شیوهای ساده و سبک برای ساپورت چندین زبان در اپلیکیشن شما است. هدف پیادهسازی کامل آن چیزی که معمولا به آن بینالمللیسازی و محلیسازی میگویند، نیست.
به جای استفاده از استانداردهای بینالمللی، مانند en و en-US یا en-CA-x-ca برای انگلیسی و انواع آن، از نام متداول یک زبان برای ارجاع به آن استفاده میکنیم.
توجه
هیچ چیزی مانع شما در استفاده از حالت اختصاری کلمات و عبارات رنیست!
استفاده از کلاس زبان
ساخت فایلهای زبان
نام فایلهای زبان باید با _lang.php به پایان برسد. برای مثال، فرض کنیم میخواهید فایلی بسازید که حاوی پیامهای خطا باشد. بهتر است نام آن را error_lang.php بگذارید.
داخل فایل، برای هر خط متن را به یک اندیس از آرایه $lang
با الگوی زیر نسبت دهید:
$lang['language_key'] = 'The actual message to be shown';
برای جلوگیری از تداخل اصطلاحات شبیه به هم در چندین فایل مروبط به یک زبان، یک راهکار خوب این است که برای تمامی پیامها در یک فایل مشخص از یک پیشوند مشترک استفاده کنیم. برای مثال، اگر دارید پیامهای خطا را میسازید، بهتر است برای آنها از پیشوند error استفاده کنید.
$lang['error_email_missing'] = 'You must submit an email address';
$lang['error_url_missing'] = 'You must submit a URL';
$lang['error_username_missing'] = 'You must submit a username';
لود یک فایل زبان
به منظور دریافت یک خط از یک فایل مشخص، ابتدا باید فایل را لود کنید. با استفاده از کد زیر میتوان یک فایل زبان را لود کرد.
$this->lang->load('filename', 'language');
در کد بالا، filename نام فایل مورد نظرتان (بدون اکستنشن فایل) برای لود است و language نام زبانی است که فایل در آن قرار دارد (برای مثال english). اگر پارامتر دوم وجود نداشته باشد، زبان پیشفرض که در application/config/config.php مشخص شده، استفاده خواهد شد.
همچنین با ارسال، فایلهای زبان به شکل یک آرایه به پارامتر اول، میتوانید چندین فایل را به صورت همزمان لود کنید.
$this->lang->load(array('filename1', 'filename2'));
توجه
پارامتر language فقط میتواند از حروف تشکیل شده باشد.
دریافت یک خط از متن
هنگامی که فایل زبان مورد نظرتان لود شد، میتوانید با استفاده از فانکشن زیر به هر خط از آن دسترسی داشته باشید:
$this->lang->line('language_key');
که در کد بالا، language_key کلید آرایه مربوط به خطی است که میخواهید نمایش دهید.
اگر از وجود یک خط مطمئن نیستید، برای غیرفعال کردن لاگ کردن خطاها، مقدار اختیاری FALSE را میتوانید به عنوان آرگومان دوم متد بالا قرار دهید.
$this->lang->line('misc_key', FALSE);
توجه
این متد در واقع مقدار خط را return میکند و آن را چاپ نمیکند.
استفاده از خطوط زبان به عنوان لیبلهای فرم
این فیچر از لایبرری زبان حذف شده و به فانکشن lang()
هلپرفانکشن Language منتقل شده است.
لود خودکار زبانها
اگر متوجه شدید که نیاز دارید تا یک زبان خاص به صورت گلوبال در کل اپلیکیشن شما لود شود، میتوانید به کدایگنایتر بگویید تا در هنگام آغاز به کار سیستم، آن را به صورت خودکار لود کند. اینکار را با باز کردن فایل application/config/autoload.php و افزودن زبانها به آرایه autoload میتوانید انجام دهید.
رفرنس کلاس
کلاس CI_Lang
load($langfile[, $idiom = ''[, $return = FALSE[, $add_suffix = TRUE[, $alt_path = '']]]]) |
|
پارامترها |
|
مقدار بازگشتی | اگر $return دارای مقدار TRUE باشد، آرایهای از خطوط زبان را برمیگرداند، درغیراینصورت void (مقدار بازگشتی ندارد) |
نوع مقدار بازگشتی | mixed (بیش از یک نوع میتواند باشد) |
یک فایل زبان را لود میکند.
line($line[, $log_errors = TRUE]) |
|
پارامترها |
|
مقدار بازگشتی | ترجمه خط درخواست شده یا FALSE در صورت عدم موفقیت |
نوع مقدار بازگشتی | استرینگ |
با توجه به نام خط (کلید یا اندیس آرایه)، ترجمه یک خط از فایلهای زبان لود شده جاری را برمیگرداند.
سایر پستهای داکیومنت
- به کدایگنایتر خوش آمدید
- نصب
- بررسی اجمالی
- شروع به استفاده از کدایگنایتر
- کدایگنایتر در یک نگاه
- فیچرهای کدایگنایتر
- فلوچارت اپلیکیشن
- مدل ویو کنترلر
- اهداف طراحی و معماری
- خودآموز
- مشارکت در کدایگنایتر
- نوشتن مستندات کدایگنایتر در صف ترجمه
- گواهی مبدأ توسعه دهنده 1.1 در صف ترجمه
- مباحث کلی
- URLها در کدایگنایتر
- کنترلرها
- نامهای رزرو شده
- ویوها
- مدلها
- هلپرفانکشنها
- استفاده از لایبرریهای کدایگنایتر
- ساخت لایبرری
- استفاده از درایورهای کدایگنایتر
- ساخت درایور
- ساخت کلاسهای هسته سیستم
- ساخت کلاسهای کمکی
- هوکها - توسعه هسته فریمورک
- بارگذاری خودکار ریسورسها
- فانکشنهای عمومی
- فانکشنهای سازگاری
- مسیریابی URI
- هندل کردن خطاها
- کش کردن صفحات وب
- ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن
- اجرای کدایگنایتر به وسیله خط فرمان
- مدیریت چندین اپلیکیشن
- هندل کردن محیطهای چندگانه
- سینتکس جایگزین PHP برای فایلهای ویو
- Security در صف ترجمه
- راهنمای کدنویسی در PHP
- لایبرریها در صف ترجمه
- کلاس بنچمارک
- درایور کش در صف ترجمه
- Calendaring Class در صف ترجمه
- Shopping Cart Class در صف ترجمه
- Config Class در صف ترجمه
- Email Class در صف ترجمه
- Encrypt Class در صف ترجمه
- Encryption Library در صف ترجمه
- File Uploading Class در صف ترجمه
- Form Validation در صف ترجمه
- FTP Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Javascript Class در صف ترجمه
- کلاس زبان
- Loader Class در صف ترجمه
- کلاس مایگریشن
- Output Class در صف ترجمه
- Pagination Class در صف ترجمه
- Template Parser Class در صف ترجمه
- Security Class در صف ترجمه
- Session Library در صف ترجمه
- HTML Table Class در صف ترجمه
- Trackback Class در صف ترجمه
- کلاس تایپوگرافی در صف ترجمه
- Unit Testing Class در صف ترجمه
- URI Class در صف ترجمه
- User Agent Class در صف ترجمه
- XML-RPC and XML-RPC Server Classes در صف ترجمه
- کلاس انکود کردن آرشیو Zip در صف ترجمه
- رفرنس دیتابیس در صف ترجمه
- شروع سریع دیتابیس: کد نمونه
- پیکربندی دیتابیس در صف ترجمه
- Connecting to your Database در صف ترجمه
- Queries در صف ترجمه
- Generating Query Results در صف ترجمه
- Query Helper Methods در صف ترجمه
- Query Builder Class در صف ترجمه
- Transactions در صف ترجمه
- Database Metadata در صف ترجمه
- فراخوانی سفارشی فانکشن
- Database Caching Class در صف ترجمه
- Database Forge Class در صف ترجمه
- Database Utility Class در صف ترجمه
- DB Driver Reference در صف ترجمه
- هلپرفانکشنها
- هلپرفانکشن Array
- هلپرفانکشن CAPTCHA در صف ترجمه
- هلپرفانکشن Cookie
- Date Helper در صف ترجمه
- هلپرفانکشن Directory
- Download Helper در صف ترجمه
- Email Helper در صف ترجمه
- File Helper در صف ترجمه
- هلپرفانکشن Form در صف ترجمه
- HTML Helper در صف ترجمه
- Inflector Helper در صف ترجمه
- هلپرفانکشن Language
- هلپرفانکشن Number
- Path Helper در صف ترجمه
- Security Helper در صف ترجمه
- Smiley Helper در صف ترجمه
- هلپرفانکشن String
- Text Helper در صف ترجمه
- Typography Helper در صف ترجمه
- URL Helper در صف ترجمه
- XML Helper در صف ترجمه