نگاهی عمیق به localization (محلی سازی) در لاراول

ترجمه و تالیف : رضا جمال زاده
تاریخ انتشار : 03 مهر 98
خواندن در 2 دقیقه
دسته بندی ها : لاراول

اکثر افرادی که با لاراول کار می‌کنند می‌‌دانند که قابلیت محلی سازی در لاراول یک کمک بزرگ به توسعه دهندگان برای ساخت اپلیکیشن‌های چند زبانه است، اما خیلی‌ها هنوز اطلاعات کمی از ویژگی‌های مختلف این قابلیت لاراول دارند.

 بنابراین با ما همراه باشید تا در این مقاله نگاهی عمیق‌تر به این ویژگی کمتر شناخته شده لاراول بپردازیم. در این مقاله ما به توضیح محلی سازی مبتنی بر آرایه‌ها می‌پردازیم. در مقاله‌های آینده سعی خواهیم کرد که در مورد localization با استفاده از JSON و همچنین با استفاده از middleware بپردازد.

نگاهی عمیق به localization (محلی سازی) در لاراول

اصول اولیه

 همانطور که می‌دانید ما در لاراول دو تابع کمکی trans() و trans_choice() را داریم. این دو تابع کار مشابه‌ی را انجام می‌دهند اما تابع trans() برای خطوط ساده زبان مناسب است و تابع  trans_choice()برای  pluralizationیا تعیین مفرد و جمع بودن کلمات مناسب است. به عنوان اولین پارامتر برای هر دو تابع شما می‌توانید مسیر خط زبانی را که می‌خواهید ترجمه شود به همراه علامت نقطه قرار دهید. برای مثال شما می‌خواهید کلید failed را در فایل auth.php ترجمه کنیم برای این کار شما می‌توانید تابعی مانند تابع روبرو را بنویسید: trans(‘auth.failed’)

پارامترهای ترجمه

در فایل ترجمه‌ی خود شما می‌توانید متغیرهایی را تعریف کنید که به سادگی قابل جایگزین شدن هستند.استفاده از رشته‌های داینامیک عمل ترجمه را می‌تواند خیلی ساده‌تر کند و به سادگی نیز قابل استفاده می‌باشد.

برای تعریف پارامتر در ترجمه‌ی خود، تنها چیزی که شما نیاز دارید افزودن یک :  به نام پارامتر خود است:

[
    'message' => 'You are :years years old.',
]

سپس شما می‌توانید به سادگی این پارامتر را با قرار دادن آرایه‌ای از پارامترهای مورد نظر خود جایگزین کنید:

trans('messages.message', ['years' => 30]);

// You are 30 years old.

توجه کنید که فقط پارامترهایی جایگزین می‌شوند که در آرایه قرار داده شده باشند.

موارد بیشتری نیز وجود دارد، شما می‌توانید پارامترهای خود را تغییر دهید. این ویژگی جزء ویژگی‌های کمتر شناخته شدی محلی سازی در لاراول است. شما می‌توانید تمام حروف پارامترها را به حروف بزرگ تبدیل کنید و یا فقط حرف اول پارامترها را بزرگ کنید. این ویژگی هنگامی که به عنوان مثال با اسامی کار می‌کنید می‌تواند کار را برای شما راحت‌تر کند.

[
    'welcome' => 'Hello, :NAME',
    'goodbye' => 'Goodbye, :Name',
]

تنها قبل از آن ما نیاز داریم که پارامترها را جایگزین کنیم:

trans('messages.welcome', ['name' => 'pine']);

// Hello, PINE

trans('messages.goodbye', ['name' => 'pine']);

// Goodbye, Pine

Pluralization یا تعدد

مشخص کردن مفرد یا جمع بودن در لاراول خیلی آسان است. برای استفاده‌ی اولیه، ما نیاز داریم که مفرد و جمع کلمه‌ی مورد نظر را با علامت | جدا کنیم، سپس از تابع trans_choice() استفاده کنیم. برای این کار ما باید عددی که مشخص کنندی جمع و یا مفرد بودن است را در این تابع قرار دهیم.

[
    'message' => 'One apple|Some apples',
]

trans_choice('messages.message', 1) // One apple

trans_choice('messages.message', 3) // Some apples

روش بالا، روش ساده‌ای است که ما می‌توانیم از آن استفاده کنیم. در روش دیگر شما می‌توانید یک بازه تعریف کنید و مشخص کنید که چه بازه‌ای را می‌خواهید ترجمه برای شما چاپ کند. به مثال زیر توجه کنید:

[
    'message' => '{0} There is nothing|[1,10] There are some items (:number)|[11,*] There are lot of items (:number)',
]

همانطور که دیدید ما می‌توانیم یک عدد را مشخص کنیم و یا یک بازه تعریف کنیم. اگر شما می‌خواهید یک نقطه‌ی شروع و یک نقطه‌ی پایان برای بازه‌ی خود تعریف کنید، می توانید از علامت * استفاده کنید.

trans_choice('messages.message', 0); // There is nothing
trans_choice('messages.message', 5, ['number' => 5]); // There are some items (5)
trans_choice('messages.message', 300, ['number' => 300]); // There are a lot of items 

به عنوان پارامتر سوم شما می‌توانید آرایه‌ای از پارامترهای جایگزین را قرار دهید.

ویژگی‌های دیگر

در ادامه به توضیح برخی ویژگی‌های دیگری که ممکن است شما با آن‌ها آشنا نباشید می‌پردازیم. شما می‌توانید نه تنها رشته‌ بلکه آرایه‌ای از ترجمه‌ها را بازیابی کنید. برای مثال، تابع trans('auth') همه ترجمه‌های موجود در فایل auth.php را باز می‌گرداند.

این کار برای mapزدن  روی همه‌ی ترجمه‌ها و استفاده از آن‌ها در فرانت اند می‌تواند مفید باشد.

مورد دیگر استفاده از دایرکتیو @lang است. اگر شما برای کار ترجمه از تابع trans() همراه با {{}} در قالب خود استفاده می‌کنید، این دایرکتیو می‌تواند برای شما مفید باشد و کدنویسی شما را تمیزتر کند.

مورد آخر، شما می توانید از تابع __() برای بازگردانی ترجمه‌های خود استفاده کنید، برای مثال __(‘messages.message’) مانند trans(‘messages.message’) عمل می‌کند.

نتیجه‌گیر

در صورتی که شما قبلاً داکیومنت لاراول را مطالعه کرده باشید حتماً با این موارد آشنایی دارید، اما در صورتی که این موارد برای شما تازگی دارد خوب است که بدانید این فریمورک محبوب چه راه مناسب و راحتی برای localization ارائه داده است.

منبع 

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید