قابلیت MessageSelector در لاراول 11

laravel 11 message selector translation
30 فروردین 1404

فهم قابلیت MessageSelector در Laravel 11


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


در لاراول ۱۱، استفاده از MessageSelector خیلی ساده‌تر شده و قابلیت‌های جدیدی بهش اضافه شده که کار رو برای توسعه‌دهنده‌ها راحت‌تر می‌کنه. شما می‌تونید با استفاده از این قابلیت، متون رو در فایل‌های ترجمه‌تون به راحتی مدیریت کنید و بر اساس پارامترهای مختلف، متون مختلفی رو نمایش بدید.


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


به این ترتیب، شما می‌تونید تجربه کاربری بهتری برای مخاطبانتون ایجاد کنید و پیام‌های خودتون رو به صورت داینامیک تغییر بدید. این ویژگی به خصوص برای سایت‌هایی با مفاهیم چند زبانه و چند فرهنگی بسیار کاربردی و موثره.


نمونه کد برای MessageSelector در لاراول ۱۱


<?php
// فایل ترجمه resources/lang/en/messages.php
return [
'comments' => 'There is one comment.|There are:count comments.',
];

// در کنترلر
public function showComments($count)
{
$message = trans_choice('messages.comments', $count);
return view('comments.show', compact('message'));
}

// در ویو
{{ $message }}

توضیح قدم به قدم کد


کد ترجمه در فایل messages.php:
در این کد، یک خط برای متون مربوط به نظرات داریم که برای حالت‌های مختلف تعریف شده است.

استفاده از trans_choice:
در کنترلر، با استفاده از متد trans_choice می‌توانیم تعداد نظرات را به عنوان پارامتر به متد بدهیم که به صورت خودکار متن مناسب را انتخاب می‌کند.

نمایش پیام در ویو:
در نهایت، پیام دریافت شده را در ویو نمایش می‌دهیم. این کار به کمک {{ $message }} انجام می‌شود.

سوالات متداول

؟

چطور می‌توانم از MessageSelector استفاده کنم؟

؟

آیا MessageSelector فقط برای تعداد استفاده می‌شود؟