بومی سازی
معرفی
ویژگیهای محلیسازی لاراول راه مناسبی برای بازیابی رشتهها در زبانهای
مختلف فراهم میکند و به شما این امکان را میدهد تا به راحتی از چندین زبان در برنامه خود پشتیبانی کنید.
رشته های زبان در فایل های داخل
resources/lang
دایرکتوری ذخیره می شوند.
در این دایرکتوری باید برای هر زبانی که توسط برنامه پشتیبانی می شود یک زیر
شاخه وجود داشته باشد:
/resources /lang /en messages.php /es messages.php
همه فایل های زبان آرایه ای از رشته های کلیددار را برمی گرداند. مثلا:
<?php return [ 'welcome' => 'Welcome to our application',];
برای زبانهایی که بر اساس قلمرو متفاوت هستند، باید فهرست راهنمای زبانها را بر اساس ISO 15897 نامگذاری کنید. برای مثال، «en_GB» باید برای انگلیسی بریتانیایی به جای «en-gb» استفاده شود.
پیکربندی Locale
زبان پیش فرض برنامه شما در
config/app.php
فایل پیکربندی ذخیره می شود.
می توانید این مقدار را مطابق با نیازهای برنامه خود تغییر دهید.
همچنین می توانید زبان فعال را در زمان اجرا با استفاده از
setLocale
روش روی
App
نما تغییر دهید:
Route::get('welcome/{locale}', function ($locale) { if (! in_array($locale, ['en', 'es', 'fr'])) { abort(400); } App::setLocale($locale); //});
شما می توانید یک "زبان بازگشتی" را پیکربندی کنید، که زمانی استفاده می شود
که زبان فعال دارای رشته ترجمه معینی نباشد.
مانند زبان پیشفرض، زبان بازگشتی نیز در
config/app.php
فایل پیکربندی پیکربندی شده است:
'fallback_locale' => 'en',
تعیین محل فعلی
میتوانید از روشهای
getLocale
و
isLocale
روی
App
نما برای تعیین محلی فعلی استفاده کنید یا بررسی کنید که آیا منطقه یک مقدار
داده شده است:
$locale = App::getLocale(); if (App::isLocale('en')) { //}
تعریف رشته های ترجمه
استفاده از کلیدهای کوتاه
به طور معمول، رشته های ترجمه در فایل های داخل
resources/lang
دایرکتوری ذخیره می شوند.
در این دایرکتوری باید برای هر زبانی که توسط برنامه پشتیبانی می شود یک زیر
شاخه وجود داشته باشد:
/resources /lang /en messages.php /es messages.php
همه فایل های زبان آرایه ای از رشته های کلیددار را برمی گرداند. مثلا:
<?php // resources/lang/en/messages.php return [ 'welcome' => 'Welcome to our application',];
استفاده از رشته های ترجمه به عنوان کلید
برای برنامههایی که نیازمند ترجمه سنگین هستند، تعریف هر رشته با یک "کلید کوتاه" میتواند هنگام ارجاع به آنها در نماهای شما به سرعت گیجکننده شود. به همین دلیل، لاراول همچنین برای تعریف رشته های ترجمه با استفاده از ترجمه "پیش فرض" رشته به عنوان کلید، پشتیبانی می کند.
فایل های ترجمه که از رشته های ترجمه به عنوان کلید استفاده می کنند به
عنوان فایل های JSON در
resources/lang
فهرست ذخیره می شوند.
به عنوان مثال، اگر برنامه شما دارای ترجمه اسپانیایی است، باید یک
resources/lang/es.json
فایل ایجاد کنید:
{ "I love programming.": "Me encanta programar."}
بازیابی رشته های ترجمه
می توانید خطوط را از فایل های زبان با استفاده از
__
تابع کمکی بازیابی کنید.
متد
__
فایل و کلید رشته ترجمه را به عنوان اولین آرگومان خود می پذیرد.
به عنوان مثال، بیایید
welcome
رشته ترجمه را از
resources/lang/messages.php
فایل زبان بازیابی کنیم:
echo __('messages.welcome'); echo __('I love programming.');
اگر از موتور قالب سازی Blade
استفاده می کنید
، می توانید از
{{ }}
نحو برای تکرار رشته ترجمه یا
@lang
دستورالعمل استفاده کنید:
{{ __('messages.welcome') }} @lang('messages.welcome')
اگر رشته ترجمه مشخص شده وجود نداشته باشد،
__
تابع کلید رشته ترجمه را برمی گرداند.
بنابراین، با استفاده از مثال بالا،
اگر رشته ترجمه وجود نداشته باشد،
__
تابع برمی گردد .
messages.welcome
این
@lang
دستورالعمل از هیچ خروجی فرار نمی کند. شما در هنگام استفاده از این دستورالعمل مسئولیت کامل فرار از خروجی خود را دارید.
جایگزینی پارامترها در رشته های ترجمه
در صورت تمایل، می توانید متغیرهایی را در رشته های ترجمه خود تعریف کنید.
همه جایبانها با یک پیشوند هستند
:
.
برای مثال، ممکن است پیام خوشامدگویی را با نام مکاننما تعریف کنید:
'welcome' => 'Welcome, :name',
برای جایگزینی نگهدارندهها هنگام بازیابی یک رشته ترجمه، آرایهای از
جایگزینها را به عنوان آرگومان دوم به تابع ارسال کنید
__
:
echo __('messages.welcome', ['name' => 'dayle']);
اگر مکاننمای شما حاوی تمام حروف بزرگ باشد یا فقط حرف اول آن بزرگ باشد، مقدار ترجمه شده بر این اساس بزرگ میشود:
'welcome' => 'Welcome, :NAME', // Welcome, DAYLE'goodbye' => 'Goodbye, :Name', // Goodbye, Dayle
کثرت سازی
کثرتسازی یک مشکل پیچیده است، زیرا زبانهای مختلف قوانین پیچیدهای برای کثرتسازی دارند. با استفاده از یک کاراکتر "pipe" می توانید اشکال مفرد و جمع یک رشته را تشخیص دهید:
'apples' => 'There is one apple|There are many apples',
حتی ممکن است قوانین جمعسازی پیچیدهتری ایجاد کنید که رشتههای ترجمه را برای چندین محدوده اعداد مشخص میکنند:
'apples' => '{0} There are none|[1,19] There are some|[20,*] There are many',
پس از تعریف یک رشته ترجمه که دارای گزینههای جمعسازی است، میتوانید از
trans_choice
تابع برای بازیابی خط برای یک «شمار» معین استفاده کنید.
در این مثال، از آنجایی که تعداد بیشتر از یک است، شکل جمع رشته ترجمه
برگردانده می شود:
echo trans_choice('messages.apples', 10);
همچنین میتوانید ویژگیهای نگهدارنده مکان را در رشتههای جمعسازی تعریف
کنید.
این مکانها ممکن است با ارسال یک آرایه به عنوان آرگومان سوم به
trans_choice
تابع جایگزین شوند:
'minutes_ago' => '{1} :value minute ago|[2,*] :value minutes ago', echo trans_choice('time.minutes_ago', 5, ['value' => 5]);
اگر می خواهید مقدار صحیحی را که به
trans_choice
تابع ارسال شده است نمایش دهید، می توانید از
:count
مکان نگهدار استفاده کنید:
'apples' => '{0} There are none|{1} There is one|[2,*] There are :count',
لغو فایل های زبان بسته
برخی از بسته ها ممکن است با فایل های زبان خود ارسال شوند.
بهجای تغییر فایلهای هسته بسته برای تغییر دادن این خطوط، ممکن است با
قرار دادن فایلها در
resources/lang/vendor/{package}/{locale}
فهرست، آنها را لغو کنید.
messages.php
بنابراین، برای مثال، اگر برای بسته ای با نام
نیاز به لغو رشته های ترجمه انگلیسی در آن دارید
skyrim/hearthfire
، باید یک فایل زبان در این آدرس قرار دهید
resources/lang/vendor/hearthfire/en/messages.php
:
در این فایل، شما باید فقط رشته های ترجمه ای را که می خواهید لغو کنید،
تعریف کنید.
هر رشته ترجمه ای که لغو نکنید همچنان از فایل های زبان اصلی بسته بارگیری
می شود.