Laravel أداة قوية تمكن المطورين من إنشاء مواقع ويب متعددة اللغات. من خلال تنفيذ توطين الويب في Laravel ، يمكنك توفير تجربة مستخدم مخصصة للزائرين من خلفيات لغوية مختلفة، مما يؤدي في النهاية إلى توسيع نطاق وصولك وتحسين مشاركة المستخدم.
سنرشدك خلال عملية تنفيذ الترجمة في تطبيق Laravel الخاص بك ونقدم لك أداة يمكنها تبسيط جهود الترجمة الخاصة بك وتعزيزها!
لماذا يجب عليك توطين موقع Laravel ؟
فيما يلي بعض الأسباب المهمة التي تدفعك إلى توطين موقع Laravel الإلكتروني الخاص بك.
- الوصول إلى جمهور عالمي: من خلال توطين Laravel ، يمكنك توسيع مدى وصول تطبيقك إلى جمهور عالمي. يتيح ذلك للمستخدمين من مختلف البلدان والخلفيات اللغوية فهم المحتوى الخاص بك والتفاعل معه.
- تحسين تجربة المستخدم: يتيح التعريب للمستخدمين التفاعل مع التطبيق بلغتهم الأصلية، مما يحسن تجربة المستخدم بشكل كبير. يمكن أن يؤدي ذلك إلى زيادة معدلات المشاركة وتقليل معدلات الارتداد وزيادة التحويلات.
- الميزة التنافسية: في السوق العالمية التنافسية، يمكن أن يوفر تقديم التطبيقات بلغات متعددة ميزة كبيرة على المنافسين. إنه يوضح التزامك بالأسواق الدولية ويمكن أن يساعدك على دخول أسواق جديدة بشكل أكثر فعالية.
- تحسين محركات البحث: تميل مواقع الويب ذات الترجمة الجيدة إلى الحصول على تصنيف أفضل في محركات البحث لعمليات البحث بلغة معينة. يمكن أن يؤدي ذلك إلى زيادة عدد زيارات مدونتك وإمكانية ظهورك عبر الإنترنت في الأسواق المختلفة من خلال الترجمة متعددة اللغات.
متطلبات توطين Laravel متعدد اللغات
هناك بعض المتطلبات والخطوات التي يجب مراعاتها عند تنفيذ الترجمة متعددة اللغات في Laravel .
- للحصول على أحدث ميزات الترجمة، تأكد من أنك تستخدم أحدث إصدار من Laravel (على سبيل المثال، الإصدار 10.x).
- سيكون الفهم الأساسي لـ PHP وإطار عمل Laravel مفيدًا في عملية التنفيذ.
- قم بإعداد بيئة تطوير محلية أو خادم يدعم Laravel ، بما في ذلك خادم الويب وقاعدة البيانات.
- حدد اللغات التي سيدعمها تطبيقك منذ البداية.
ترجمات Laravel بسيطة
بعد فهم المتطلبات التي يجب استيفاؤها قبل ترجمة تطبيق Laravel أو الويب، سنقدم بعض الخطوات لترجمة Laravel ببساطة.
للقيام بذلك، افتح ملف العرض الذي تريد تعريبه، على سبيل المثال، Resources/views/welcome.blade.php. ثم استبدل علامة الجسم بالكود التالي.
Welcome to Linguise website!
كما ترون، النص أعلاه مكتوب حاليًا مباشرة في الكود. وهذا أقل كفاءة ويجعل من الصعب ترجمة مواقع الويب إلى لغات مختلفة (التدويل).
سنجعل النص أعلاه أكثر مرونة حتى يمكن تكييفه بسهولة مع اللغات المختلفة. يوفر Laravel ميزة مفيدة جدًا لهذا الغرض؛ نظام التوطين. كخطوة أولى، استبدل النص الموجود بالكود التالي.
{{ __('Welcome to Linguise website!') }}
سيعرض Laravel النص أعلاه افتراضيًا ويبحث عن الترجمة إذا اختار المستخدم لغة أخرى غير الإنجليزية. في هذه الحالة، سيتم استخدام اللغة الإنجليزية كلغة افتراضية للتطبيق.
إعداد اللغات المحلية في شبكة Laravel متعددة اللغات
لكن كيف يحدد Laravel اللغة الحالية أو يعرف اللغات المتوفرة في التطبيق؟ يقوم بالتحقق من الإعدادات المحلية في ملف config/app.php. افتح هذا الملف وابحث عن المفتاحين التاليين.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
يجب أن يكون الشرح الموجود فوق المفاتيح واضحًا. باختصار، يحتفظ مفتاح اللغة باللغة الافتراضية لتطبيقك (إذا لم يتم تحديد لغة أخرى في الكود). يتم تنشيط Fallback_locale إذا تم طلب لغة غير موجودة في التطبيق الخاص بك.
الآن، دعونا نضيف مفتاحًا جديدًا لهذا الملف لتوفير قائمة بجميع اللغات المدعومة.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
في هذه المرحلة، قمنا بتجربة Laravel web لدعم ثلاث لغات، وهي الإنجليزية والإيطالية والفرنسية.
نظرة عامة على ملفات الترجمة Laravel
في Laravel ، كما هو الحال في العديد من الأطر الأخرى، يتم تخزين الترجمات للغات المختلفة في ملفات منفصلة. يتم استخدام طريقتين لتنظيم ملفات الترجمة هذه.
تقوم الطريقة القديمة بتخزين الملفات بالبنية التالية: Resources/lang/{en,fr,it}/{myfile.php}. تستخدم الطريقة الأحدث ملفات JSON، مثل Resources/lang/{fr.json, it.json}. ستركز هذه المقالة على الطريقة الأحدث، على الرغم من أن المبادئ متشابهة مع الطريقة القديمة، بصرف النظر عن الاختلافات في كيفية تسمية مفاتيح الترجمة والوصول إليها.
بالنسبة للغات ذات الاختلافات الإقليمية، يجب عليك تسمية أدلة أو ملفات اللغة وفقًا لمعيار ISO 15897. على سبيل المثال، سيتم تسمية اللغة الإنجليزية البريطانية باسم en_GB بدلاً من en-gb.
معلومات عامة
في Laravel ، كما هو الحال مع العديد من أطر العمل، يتم تخزين الترجمات للغات المختلفة في ملفات منفصلة. هناك طريقتان أساسيتان لتنظيم ملفات ترجمة Laravel .
- يتضمن الأسلوب القديم تخزين الملفات تحت المسار: Resources/lang/{en,fr,it}/{myfile.php}.
- يستخدم الأسلوب الحديث ملفات Resources/lang/{fr.json, it.json}.
ستركز هذه المقالة على الطريقة الثانية، على الرغم من أن المبادئ تنطبق على كليهما (مع اختلافات في كيفية تسمية مفاتيح الترجمة والوصول إليها).
بالنسبة للغات التي تختلف حسب المنطقة، يوصى بتسمية أدلة/ملفات اللغة وفقًا لمعايير ISO 15897. على سبيل المثال، سيتم الإشارة إلى اللغة الإنجليزية البريطانية بالصيغة en_GB بدلاً من en-gb.
إنشاء ملفات الترجمة Laravel
بعد تكوين الإعدادات المحلية لتطبيقنا، يمكننا متابعة ترجمة رسالة الترحيب الافتراضية الخاصة بنا.
لنبدأ بإنشاء ملفات ترجمة جديدة بتنسيق JSON داخل دليل Resources/lang. أولاً، سنقوم بإنشاء ملف Resources/lang/it.json وملؤه بالترجمات المناسبة.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
بعد ذلك، أضف ملف Resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
كما تلاحظ، فإننا نشير باستمرار إلى الرسالة الافتراضية من ملف Welcome.blade.php ({{ __('مرحبًا بك في موقع Linguise !') }}). ليست هناك حاجة لإنشاء ملف en.json، حيث يتعرف Laravel تلقائيًا على أن الرسائل الافتراضية باللغة الإنجليزية.
ضبط محوّل اللغة في تطبيق Laravel متعدد اللغات
علاوة على ذلك، لم يتم إعداد Laravel بعد لتجاوز اللغة المحلية، لذا، في الوقت الحالي، سنتعامل مع الترجمة مباشرة داخل المسار. قم بتعديل مسار الترحيب الافتراضي داخل ملف المسارات/web.php مثل هذا.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
في هذه الحالة، نقوم بالتقاط معلمة GET للغة اختيارية ونقوم بتعيين اللغة الحالية بناءً عليها (إذا كانت اللغة المطلوبة مدعومة).
يمكنك الآن زيارة موقع الويب الخاص بك وتضمين أي من اللغات المدعومة كالجزء الأول في عنوان URL. على سبيل المثال، سيؤدي الانتقال إلى localhost/it أو localhost/fr إلى عرض المحتوى المترجم. إذا لم تحدد لغة أو اخترت لغة غير مدعومة، فسيتم تعيين Laravel افتراضيًا على اللغة الإنجليزية (en).
الوسيطة للتوطين لـ Laravel
قد لا يكون تضمين اللغة في كل عنوان URL أمرًا مثاليًا وقد يؤدي إلى تعطيل المظهر المرئي للموقع. لمعالجة هذه المشكلة، سنقوم بإعداد محوّل لغة واستخدام جلسة المستخدم لعرض المحتوى المترجم. يمكنك إنشاء برامج وسيطة جديدة في ملف app/Http/Middleware/Localization.php، أو إنشائها عن طريق تشغيل الأمر الحرفي make:middleware Localization.
ثم قم بإضافة الكود التالي بداخله.
ستقوم هذه البرمجيات الوسيطة بتوجيه Laravel لاستخدام الموقع الذي حدده المستخدم إذا كان هذا الخيار موجودًا في الجلسة.
نظرًا لأننا نحتاج إلى تنفيذ العملية عند كل طلب، أضفها إلى حزمة البرامج الوسيطة الافتراضية في app/Http/Kernel.php لمجموعة البرامج الوسيطة على الويب.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
تعديل المسارات
بعد ذلك، حدد مسارًا لتغيير الإعدادات المحلية في ملف Routes/web.php. نحن نستخدم مسار إغلاق هنا، ولكن يمكنك وضع نفس الرمز داخل وحدة التحكم إذا كنت تفضل ذلك.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
بالإضافة إلى ذلك، قم بإزالة تبديل الإعدادات المحلية الذي تمت إضافته مسبقًا إلى مسار الترحيب الافتراضي. يجب أن يبدو مسار الجذر الخاص بك الآن هكذا.
Route::get('/', function () {
return view('welcome');
});
بمجرد الانتهاء من ذلك، يمكن للمستخدم فقط تبديل اللغة النشطة عن طريق زيارة localhost/language/{locale}. سيتم حفظ اللغة المحددة في الجلسة، وسيتم إعادة توجيه المستخدمين مرة أخرى إلى صفحتهم السابقة (كما يتم التعامل معها بواسطة البرنامج الوسيط للتعريب).
لاختباره، انتقل إلى localhost/language/it (بافتراض أن ملف تعريف ارتباط الجلسة نشط في متصفحك)، ومن المفترض أن تشاهد المحتوى المترجم. يمكنك التنقل في الموقع أو تحديث الصفحة، وستظل اللغة المختارة سارية المفعول.
تنفيذ محول اللغة
الآن، نحن بحاجة إلى تزويد المستخدم بخيار قابل للنقر لتغيير محوّل اللغة Laravel web بدلاً من مطالبته بإدخال رموز الإعدادات المحلية في عنوان URL يدويًا. ولتحقيق ذلك، قم بإنشاء محوّل لغة بسيط. أضف ملفًا جديدًا على Resources/views/partials/language_switcher.blade.php وأدخل الكود التالي.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
لتضمين محوّل اللغة الذي تم إنشاؤه حديثًا في عرض "الترحيب"، ما عليك سوى إضافة السطر التالي إلى ملف Welcome.blade.php الخاص بك حيث تريد أن يظهر المحوّل.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
افتح ملف app/Providers/AppServiceProvider.php وأضف الكود التالي في طريقة boot() لمشاركة اللغة الحالية مع جميع طرق العرض عند استخدام محوّل اللغة
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
ميزات الترجمة المتقدمة في Laravel PHP
في هذه المناقشة، سنتعامل بعد ذلك مع مكونات الترجمة الأخرى، وهي التاريخ والرقم والعملة. وهنا الخطوات.
التواريخ المحلية في Laravel
يعد التعامل مع التواريخ والأوقات أمرًا بالغ الأهمية في عملية الترجمة. يستخدم Laravel الكربون لإدارة التواريخ والأوقات. إليك كيفية استخدام Carbon لعرض تاريخ محلي.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
يقوم هذا الرمز بتعيين لغة Carbon بناءً على اللغة الحالية للتطبيق ويقوم بتنسيق التاريخ وفقًا لذلك.
لعرض التاريخ المترجم في طريقة عرض:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
تنسيق الأرقام والعملات
لدى البلدان المختلفة طرق مختلفة لتنسيق الأرقام. على سبيل المثال.
- فرنسا → 123 123,12
- ألمانيا → 123.123,12
- اليابان → 123,123
لاستيعاب هذه الاختلافات في تطبيق Laravel ، يمكنك استخدام NumberFormatter.
يمكنك أيضًا تهجئة الأرقام بلغة معينة.
وهنا العملات. بالنسبة للغة الفرنسية (`fr`)، سيتم عرض العملة باليورو (€)، بينما بالنسبة للغة الأمريكية (`en_US`)، فسيتم عرضها بالدولار الأمريكي ($).
الحل البديل لتوطين Laravel مع Linguise
بعد فهم خطوات توطين Laravel كما هو موضح في المقال، تتضمن هذه العملية العديد من الخطوات التي تتطلب من المستخدمين فهم كود برنامج Laravel بعمق.
وهذا بالتأكيد يمكن أن يجعل الأمر صعبًا على المستخدمين المبتدئين الذين يرغبون في توطين تطبيقاتهم. ولذلك، هناك حاجة إلى حل أكثر ابتكارًا يكون قادرًا على الترجمة السريعة، ويدعم الترجمة، ولا يتطلب سوى بضع خطوات بسيطة للتنفيذ.
أحد الحلول الواعدة هو Linguise . تقدم Linguise طريقة أسهل وأكثر كفاءة لتوطين Laravel دون الحاجة إلى معرفة متعمقة بالبرمجة. وتشمل الميزات الرئيسية ل Linguise .
- سهولة التكامل مع Laravel
- تخصيص محوّل اللغة بدون برمجة
- ترجمة الصور
- محرر مباشر لتخصيص الترجمات للسياق المحلي
- ترجمة ديناميكية للمحتوى الذي تم إنشاؤه ديناميكيًا
- تحسين محركات البحث (SEO) للإصدارات متعددة اللغات
يمكن أيضًا تنفيذ خطوات تثبيت Linguise على مواقع Laravel وهنا شرح موجز.
- قم بإنشاء حساب Linguise (استخدم الإصدار التجريبي المجاني لمدة 30 يومًا مجانًا)
- قم بتسجيل نطاق الويب Laravel الخاص بك وأدخل بعض المعلومات. سوف تحصل على مفتاح API.
- قم بتحميل برنامج الترجمة Linguise وقم بتوصيله بمجلد Laravel الذي حصلت عليه.
- إعداد عناوين URL للغة في ملف htaccess.
- أدخل البرنامج النصي لمحول اللغة في رأس ملف HTML الخاص بك.
- قم بتخصيص محوّل اللغة حسب الحاجة
- سيظهر محوّل اللغة على شبكة Laravel ، ويمكن ترجمة المحتوى تلقائيًا.
كيف؟ مع Linguise ، ما عليك سوى التسجيل والتنشيط، وسيظهر محوّل اللغة. بعد ذلك، لديك الحرية في الترجمة، على سبيل المثال، من خلال المحرر المباشر، وترجمة الوسائط، والصور، وما إلى ذلك.
خاتمة
يعد توطين Laravel ميزة قوية تمكن المطورين من إنشاء مواقع وتطبيقات متعددة اللغات. كما رأينا، تتضمن عملية التعريب المضمنة في Laravel خطوات متعددة وتتطلب فهمًا جيدًا لإطار العمل. قد يكون الأمر صعبًا بالنسبة للمبتدئين أو أولئك الذين يبحثون عن حل أسرع.
أدوات مثل Linguise بديلاً مبتكرًا لأولئك الذين يبحثون عن نهج أكثر بساطة. توفر هذه الحلول إمكانات ترجمة سريعة وتكاملًا سهلاً وميزات سهلة الاستخدام مثل محولات اللغة القابلة للتخصيص وترجمة الصور. الآن، حساب Linguise الخاص بك واستمتع بميزاتنا لترجمة Laravel !