بومی سازی
معرفی
نمای لاراول
Lang
راه مناسبی برای بازیابی رشته ها به زبان های مختلف فراهم می کند که به شما امکان می دهد به راحتی از چندین زبان در برنامه خود پشتیبانی کنید.
فایل های زبان
رشته های زبان در فایل های داخل
resources/lang
دایرکتوری ذخیره می شوند.
در این دایرکتوری باید برای هر زبانی که توسط برنامه پشتیبانی می شود یک زیر شاخه وجود داشته باشد.
/resources /lang /en messages.php /es messages.php
فایل زبان مثال
فایل های زبان به سادگی یک آرایه از رشته های کلیددار را برمی گرداند. مثلا:
<?php return [ 'welcome' => 'Welcome to our application'];
تغییر زبان پیش فرض در زمان اجرا
زبان پیش فرض برنامه شما در
config/app.php
فایل پیکربندی ذخیره می شود.
می توانید زبان فعال را در هر زمانی با استفاده از
App::setLocale
روش زیر تغییر دهید:
App::setLocale('es');
تنظیم زبان بازگشتی
همچنین می توانید یک "زبان بازگشتی" را پیکربندی کنید، که زمانی استفاده می شود که زبان فعال شامل یک خط زبان معین نباشد.
مانند زبان پیشفرض، زبان بازگشتی نیز در
config/app.php
فایل پیکربندی پیکربندی شده است:
'fallback_locale' => 'en',
استفاده پایه
بازیابی خطوط از یک فایل زبان
echo Lang::get('messages.welcome');
اولین بخش رشته ای که به
get
متد ارسال می شود، نام فایل زبان است و دومین قسمت نام خطی است که باید بازیابی شود.
نکته: اگر خط زبان وجود نداشته باشد، کلید با
get
روش برگردانده می شود.
همچنین می توانید از
trans
تابع helper که نام مستعار متد است استفاده کنید
Lang::get
.
echo trans('messages.welcome');
انجام تعویض در خطوط
همچنین می توانید مکان نگهدارنده ها را در خطوط زبان خود تعریف کنید:
'welcome' => 'Welcome, :name',
سپس، آرگومان دوم جایگزینی را به
Lang::get
متد ارسال کنید:
echo Lang::get('messages.welcome', ['name' => 'Dayle']);
تعیین کنید که آیا یک فایل زبان حاوی یک خط است
if (Lang::has('messages.welcome')){ //}
کثرت سازی
کثرتسازی یک مشکل پیچیده است، زیرا زبانهای مختلف قوانین پیچیدهای برای کثرتسازی دارند. شما می توانید به راحتی این را در فایل های زبان خود مدیریت کنید. با استفاده از یک کاراکتر "pipe"، می توانید اشکال مفرد و جمع یک رشته را از هم جدا کنید:
'apples' => 'There is one apple|There are many apples',
سپس می توانید از
Lang::choice
روش برای بازیابی خط استفاده کنید:
echo Lang::choice('messages.apples', 10);
همچنین می توانید یک آرگومان محلی برای تعیین زبان ارائه دهید. به عنوان مثال، اگر می خواهید از زبان روسی (ru) استفاده کنید:
echo Lang::choice('товар|товара|товаров', $count, [], 'ru');
از آنجایی که مترجم لاراول از مؤلفه Symfony Translation پشتیبانی میکند، میتوانید قوانین جمعسازی واضحتر را نیز به راحتی ایجاد کنید:
'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',
اعتبار سنجی
برای محلیسازی خطاها و پیامهای اعتبارسنجی، به مستندات اعتبارسنجی نگاهی بیندازید .
لغو فایل های زبان بسته
بسیاری از بسته ها با خطوط زبان خاص خود ارسال می شوند.
به جای هک کردن فایلهای هسته بسته برای تغییر این خطوط، ممکن است با قرار دادن فایلها در
resources/lang/packages/{locale}/{package}
فهرست، آنها را لغو کنید.
messages.php
بنابراین، برای مثال، اگر برای بسته ای به نام،
نیاز دارید خطوط زبان انگلیسی را لغو کنید
skyrim/hearthfire
، یک فایل زبان را در: قرار دهید
resources/lang/packages/en/hearthfire/messages.php
.
در این فایل شما فقط خطوط زبانی را که می خواهید لغو کنید تعریف کنید.
هر خط زبانی که لغو نکنید همچنان از فایلهای زبان بسته بارگیری میشود.