دليل التوطين خطوة بخطوة لـ Laravel [دليل]

ارتقِ بعملك إلى المستوى التالي من خلال التوسع العالمي. نمو الأعمال وتطويرها.
جدول المحتويات

Laravel الترجمة المحلية هي قوية تمكن المطورين من إنشاء مواقع إلكترونية متعددة اللغات. من خلال تنفيذ ترجمة الويب المحلية في Laravel، يمكنك توفير تجربة مستخدم شخصية للزوار من خلفيات لغوية مختلفة، مما يؤدي في النهاية إلى توسيع نطاق وصولك وتحسين تفاعل المستخدم.

سنرشد بك من خلال تنفيذ الترجمة في تطبيقك Laravel وتقديم أداة يمكنها تبسيط وتعزيز جهود الترجمة الخاصة بك!

لماذا يجب عليك ترجمة موقع Laravel ؟

رجل يرتدي سترة برتقالية يحمل جهازًا لوحيًا مع خريطة العالم. يتم عرض أعلام دول مختلفة.

هنا بعض الأسباب الهامة التي تجعلك تقوم بترجمة موقعك Laravel .

  • الوصول إلى جمهور عالمي: من خلال توطين موقعك على الويب Laravel ، يمكنك توسيع نطاق تطبيقك ليشمل جمهورًا دوليًا. هذا يسمح للمستخدمين من مختلف البلدان والخلفيات اللغوية بفهم المحتوى الخاص بك والتفاعل معه.
  • تحسين تجربة المستخدم:
  • ميزة تنافسية: في سوق عالمي تنافسي ، يمكن أن يوفر تقديم التطبيقات بلغات متعددة ميزة كبيرة على المنافسين. يظهر التزامك بالأسواق الدولية ويمكن أن يساعدك على دخول أسواق جديدة بشكل أكثر فعالية.
  • تحسين محركات البحث: زيادة حركة مرور مدونتك والظهور عبر الإنترنت في أسواق مختلفة باستخدام الترجمة متعددة اللغات.

متطلبات لـ Laravel متعدد اللغات

شخصان يتعاونان على شاشة كمبيوتر كبيرة مع تطبيقات مختلفة. يبدو أنهم يعملون معًا.

هناك بعض المتطلبات والخطوات التي يجب مراعاتها عند تنفيذ الترجمة متعددة اللغات في Laravel.

  • للحصول على أحدث ميزات الترجمة، تأكد من استخدامك لأحدث إصدار من Laravel (مثل الإصدار 10.x).
  • سيساعد الفهم الأساسي لـ PHP وإطار عمل Laravel في عملية التنفيذ.
  • قم بإعداد بيئة تطوير محلية أو خادم يدعم Laravel، بما في ذلك خادم ويب وقاعدة بيانات.
  • تحديد اللغات التي سيتم دعمها من البداية في تطبيقك.

ترجمات Laravel بسيطة

رجل يعمل على حاسوب محمول. تصفح الويب على الشاشة.

بعد فهم المتطلبات التي يجب تلبيتها قبل ترجمة تطبيق أو ويب Laravel ، سنقدم بعض الخطوات لترجمة Laravel ببساطة.

لتنفيذ ذلك، افتح ملف العرض الذي ترغب في توطينه، على سبيل المثال، resources/views/welcome.blade.php. ثم استبدل علامة الجسم بالكود التالي.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                Welcome to Linguise website!
            </div>
        </div>
    </div> <script data-no-optimize="1">var litespeed_vary=document.cookie.replace(/(?:(?:^|.*;\s*)_lscache_vary\s*\=\s*([^;]*).*$)|^.*$/,"");litespeed_vary||fetch("/wp-content/plugins/litespeed-cache/guest.vary.php",{method:"POST",cache:"no-cache",redirect:"follow"}).then(e=>e.json()).then(e=>{console.log(e),e.hasOwnProperty("reload")&&"yes"==e.reload&&(sessionStorage.setItem("litespeed_docref",document.referrer),window.location.reload(!0))});</script><script data-optimized="1" type="litespeed/javascript" data-src="https://www.linguise.com/wp-content/litespeed/js/a44739f8e54b5f21c7e3f8bb17c365ba.js?ver=0275f"></script><script>window.litespeed_ui_events=window.litespeed_ui_events||["mouseover","click","keydown","wheel","touchmove","touchstart"];var urlCreator=window.URL||window.webkitURL;function litespeed_load_delayed_js_force(){console.log("[LiteSpeed] Start Load JS Delayed"),litespeed_ui_events.forEach(e=>{window.removeEventListener(e,litespeed_load_delayed_js_force,{passive:!0})}),document.querySelectorAll("iframe[data-litespeed-src]").forEach(e=>{e.setAttribute("src",e.getAttribute("data-litespeed-src"))}),"loading"==document.readyState?window.addEventListener("DOMContentLoaded",litespeed_load_delayed_js):litespeed_load_delayed_js()}litespeed_ui_events.forEach(e=>{window.addEventListener(e,litespeed_load_delayed_js_force,{passive:!0})});async function litespeed_load_delayed_js(){let t=[];for(var d in document.querySelectorAll('script[type="litespeed/javascript"]').forEach(e=>{t.push(e)}),t)await new Promise(e=>litespeed_load_one(t[d],e));document.dispatchEvent(new Event("DOMContentLiteSpeedLoaded")),window.dispatchEvent(new Event("DOMContentLiteSpeedLoaded"))}function litespeed_load_one(t,e){console.log("[LiteSpeed] Load ",t);var d=document.createElement("script");d.addEventListener("load",e),d.addEventListener("error",e),t.getAttributeNames().forEach(e=>{"type"!=e&&d.setAttribute("data-src"==e?"src":e,t.getAttribute(e))});let a=!(d.type="text/javascript");!d.src&&t.textContent&&(d.src=litespeed_inline2src(t.textContent),a=!0),t.after(d),t.remove(),a&&e()}function litespeed_inline2src(t){try{var d=urlCreator.createObjectURL(new Blob([t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1")],{type:"text/javascript"}))}catch(e){d="data:text/javascript;base64,"+btoa(t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1"))}return d}</script></body>
				
			

كما ترون، النص أعلاه مكتوب حاليًا بشكل مباشر في الكود. هذا أقل كفاءة ويجعل من الصعب ترجمة المواقع إلى لغات مختلفة (التدويل).

سنقوم بجعل النص أعلاه أكثر مرونة بحيث يمكن تكييفه بسهولة مع لغات مختلفة. يوفر 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 لدعم ثلاث لغات، وهي الإنجليزية والإيطالية والفرنسية.

Laravel نظرة عامة على ملفات الترجمة

امرأة تشير إلى شاشة كمبيوتر كبيرة تعرض أيقونات ملونة مختلفة. الشاشة لها خلفية بيضاء مع أيقونات زرقاء و أرجوانية.

في Laravel، كما هو الحال في العديد من الأطر الأخرى، يتم تخزين الترجمات للغات مختلفة في ملفات منفصلة. يتم استخدام طريقتين لتنظيم ملفات الترجمة هذه.

الطريقة القديمة تخزن الملفات في الهيكل التالي: resources/lang/{en,fr,it}/{myfile.php}. الطريقة الأحدث تستخدم ملفات JSON، مثل resources/lang/{fr.json, it.json}. ستركز هذه المقالة على الطريقة الأحدث، على الرغم من أن المبادئ متشابهة للطريقة القديمة، باستثناء الاختلافات في كيفية تسمية مفاتيح الترجمة والوصول إليها.

بالنسبة للغات ذات الاختلافات الإقليمية، يجب تسمية أدلة أو ملفات اللغة وفقًا لمعيار ISO 15897. على سبيل المثال، سيتم تسمية اللغة الإنجليزية البريطانية en_GB بدلاً من en-gb.

معلومات عامة

في Laravel، كما هو الحال مع العديد من الأطر، يتم تخزين الترجمات للغات المختلفة في ملفات منفصلة. هناك طريقتان رئيسيتان لتنظيم ملفات الترجمة Laravel .

  1. النهج القديم يتضمن تخزين الملفات تحت المسار: resources/lang/{en,fr,it}/{myfile.php}.
  2. النهج الحديث يستخدم ملفات 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 بعد لتجاوز اللغة المحلية، لذلك سنقوم الآن بمعالجة الترجمة مباشرة داخل المسار. قم بتعديل مسار الترحيب الافتراضي داخل ملف routes/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 إلى عرض المحتوى المترجم. إذا لم تحدد لغة أو اخترت لغة غير مدعومة، سيتم التحويل إلى الإنجليزية (en) بشكل افتراضي.

الوسيط للتوطين لـ Laravel

قد لا يكون تضمين المنطقة في كل عنوان URL مثاليًا وقد يؤدي إلى تعطيل المظهر المرئي للموقع. لمعالجة ذلك ، سنقوم بإعداد مفتاح لغة واستخدام جلسة المستخدم لعرض المحتوى المترجم. يمكنك إنشاء Middleware جديد في ملف app/Http/Middleware/Localization.php ، أو إنشائه عن طريق تشغيل الأمر artisan make:middleware Localization.

ثم، أضف الشفرة التالية داخل.

				
					<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;

class Localization
{
    /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure  $next
    * @return mixed
    */
    public function handle(Request $request, Closure $next)
    {
        if (Session::has('locale')) {
            App::setLocale(Session::get('locale'));
        }
        return $next($request);
    }
}


				
			

سيوجه هذا الوسيط Laravel لاستخدام الموقع الذي يختاره المستخدم إذا كان هذا الخيار موجودًا في الجلسة.

نظرًا لأننا نحتاج إلى تشغيل العملية في كل طلب، أضفها إلى حزمة الوسيط الافتراضية في app/Http/Kernel.php لمجموعة الوسيط للويب.

				
					/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
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}. سيتم حفظ المنطقة المحددة في الجلسة ، وسيتم إعادة توجيه المستخدمين إلى صفحتهم السابقة (كما تم التعامل معها بواسطة Middleware Localization). 

لاختباره، انتقل إلى localhost/language/it (بافتراض أن ملف تعريف الارتباط للجلسة نشط في متصفحك)، ويجب أن ترى المحتوى المترجم. يمكنك التنقل في الموقع أو تحديث الصفحة، وستظل اللغة المختارة سارية المفعول.

تنفيذ مفتاح اللغة

الآن، نحن بحاجة إلى تزويد المستخدم بخيار قابل للنقر لتغيير مفتاح اللغة Laravel الويب بدلاً من مطالبتهم بإدخال رموز اللغة في عنوان URL يدويًا. لتحقيق ذلك، قم بإنشاء مفتاح لغة بسيط. أضف ملفًا جديدًا في resources/views/partials/language_switcher.blade.php وأدرج الكود التالي.

				
					<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
    @foreach($available_locales as $locale_name => $available_locale)
        @if($available_locale === $current_locale)
            <span class="ml-2 mr-2 text-gray-700">{{ $locale_name }}</span>
        @else
            <a class="ml-1 underline ml-2 mr-2" href="language/{{ $available_locale }}">
                <span>{{ $locale_name }}</span>
            </a>
        @endif
    @endforeach
</div>


				
			

لتضمين مفتاح تبديل اللغة الذي تم إنشاؤه حديثًا في عرض "مرحبًا"، ما عليك سوى إضافة السطر التالي إلى ملف welcome.blade.php الخاص بك حيث ترغب في ظهور المفتاح.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            @include('partials/language_switcher')

            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                {{ __('Welcome to our website!') }}
            </div>
        </div>
    </div> <script data-optimized="1" type="litespeed/javascript" data-src="https://www.linguise.com/wp-content/litespeed/js/a44739f8e54b5f21c7e3f8bb17c365ba.js?ver=0275f"></script><script>window.litespeed_ui_events=window.litespeed_ui_events||["mouseover","click","keydown","wheel","touchmove","touchstart"];var urlCreator=window.URL||window.webkitURL;function litespeed_load_delayed_js_force(){console.log("[LiteSpeed] Start Load JS Delayed"),litespeed_ui_events.forEach(e=>{window.removeEventListener(e,litespeed_load_delayed_js_force,{passive:!0})}),document.querySelectorAll("iframe[data-litespeed-src]").forEach(e=>{e.setAttribute("src",e.getAttribute("data-litespeed-src"))}),"loading"==document.readyState?window.addEventListener("DOMContentLoaded",litespeed_load_delayed_js):litespeed_load_delayed_js()}litespeed_ui_events.forEach(e=>{window.addEventListener(e,litespeed_load_delayed_js_force,{passive:!0})});async function litespeed_load_delayed_js(){let t=[];for(var d in document.querySelectorAll('script[type="litespeed/javascript"]').forEach(e=>{t.push(e)}),t)await new Promise(e=>litespeed_load_one(t[d],e));document.dispatchEvent(new Event("DOMContentLiteSpeedLoaded")),window.dispatchEvent(new Event("DOMContentLiteSpeedLoaded"))}function litespeed_load_one(t,e){console.log("[LiteSpeed] Load ",t);var d=document.createElement("script");d.addEventListener("load",e),d.addEventListener("error",e),t.getAttributeNames().forEach(e=>{"type"!=e&&d.setAttribute("data-src"==e?"src":e,t.getAttribute(e))});let a=!(d.type="text/javascript");!d.src&&t.textContent&&(d.src=litespeed_inline2src(t.textContent),a=!0),t.after(d),t.remove(),a&&e()}function litespeed_inline2src(t){try{var d=urlCreator.createObjectURL(new Blob([t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1")],{type:"text/javascript"}))}catch(e){d="data:text/javascript;base64,"+btoa(t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1"))}return d}</script></body>


				
			

افتح ملف 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 كاربون لإدارة التواريخ والأوقات. إليك كيفية استخدام كاربون لعرض تاريخ مترجم محليًا.

				
					<?php
Route::get('/', function () {
    $today = \Carbon\Carbon::now()
        ->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
    ]);
});


				
			

يحدد هذا الرمز لغة الكربون بناءً على اللغة الحالية للتطبيق ويصوغ التاريخ وفقًا لذلك.

لعرض التاريخ المحلي في طريقة العرض:

				
					{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
<br>
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
<br>
{{ $date_message }}


				
			

تنسيق الأرقام والعملات

دول مختلفة لديها طرق مختلفة لتنسيق الأرقام. على سبيل المثال.

  • فرنسا → 123 123,12
  • ألمانيا → 123.123,12
  • اليابان → 123,123

لاستيعاب هذه الاختلافات في تطبيقك Laravel ، يمكنك استخدام NumberFormatter.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);

$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
				
			

يمكنك أيضًا تهجئة الأرقام بلغة معينة.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);

$num2 = NumberFormatter::create('it', NumberFormatter::SPELLOUT);
				
			

ها هي العملات. بالنسبة للغة الفرنسية (`fr`)، سيتم عرض العملة باليورو (€)، بينما بالنسبة للغة الولايات المتحدة (`en_US`)، سيتم عرضها بالدولار الأمريكي ($).

				
					<?php
$currency1 = NumberFormatter::create('it', NumberFormatter::CURRENCY);

$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
				
			
كسر حواجز اللغة
قل وداعًا للحواجز اللغوية ومرحبًا بالنمو غير المحدود! جرب خدمة الترجمة الآلية لدينا اليوم.

حل بديل توطين Laravel باستخدام Linguise

فريق يعمل معًا على مشروع رقمي. وهم محاطون بأدوات ورموز رقمية مختلفة.

بعد فهم خطوات توطين Laravel كما هو موضح في المقال، تتضمن هذه العملية العديد من الخطوات التي تتطلب من المستخدمين فهم كود برنامج Laravel بعمق.

يمكن أن يجعل هذا الأمر بالتأكيد صعبًا على المستخدمين الجدد الذين يرغبون في توطين تطبيقاتهم. لذلك ، هناك حاجة إلى حل أكثر ابتكارًا قادر على الترجمة السريعة ودعم التوطين ويتطلب فقط بضع خطوات بسيطة للتنفيذ.

حل واعد هو Linguise. Linguise يوفر نهجًا أكثر سهولة وكفاءة لـ Laravel التوطين بدون الحاجة إلى معرفة برمجية متعمقة. تتضمن الميزات الرئيسية لـ Linguise .

  • تكامل سهل مع Laravel
  • تخصيص مفتاح تبديل اللغة بدون ترميز
  • ترجمة الصور
  • محرر مباشر لتخصيص الترجمات حسب السياق المحلي
  • ترجمة ديناميكية للمحتوى الذي يتم إنشاؤه ديناميكيًا
  • تحسين محركات البحث لإصدارات متعددة اللغات

يمكن أيضًا تنفيذ خطوات تثبيت Linguise على مواقع Laravel الويب بسهولة. هنا شرح موجز.

  1. إنشاء حساب Linguise (استخدم التجربة المجانية لمدة 30 يومًا مجانًا)
  2. سجل نطاق الويب الخاص بك Laravel وأدخل بعض المعلومات. سوف تحصل على مفتاح API.
  3. قم بتحميل وتوصيل البرنامج النصي للترجمة Linguise إلى مجلد Laravel الذي حصلت عليه.
  4. إعداد عناوين URL للغة في ملف htaccess.
  5. أدخل برنامج تبديل اللغة في رأس HTML الخاص بك.
  6. تخصيص مفتاح تبديل اللغة حسب الحاجة
  7. سيظهر مفتاح تبديل اللغة على الويب Laravel ، ويمكن ترجمة المحتوى تلقائيًا.

كيف؟ مع Linguise، ما عليك سوى التسجيل والتفعيل، وسيظهر مفتاح تبديل اللغة. بعد ذلك، ستكون حرًا في التوطين، على سبيل المثال، من خلال المحرر المباشر، وترجمة الوسائط والصور، إلخ.

هل أنت مستعد لاستكشاف أسواق جديدة؟ جرب خدمتنا للترجمة التلقائية مجانًا مع تجربتنا الخالية من المخاطر لمدة شهر. لا حاجة لبطاقة ائتمان!

الاستنتاج

Laravel التوطين هو ميزة قوية تمكن المطورين من إنشاء مواقع وتطبيقات متعددة اللغات. كما رأينا، تتضمن عملية Laravel التوطين المدمجة خطوات متعددة وتتطلب فهمًا جيدًا للإطار. قد يكون ذلك تحديًا للمبتدئين أو أولئك الذين يبحثون عن حل أسرع.

توفر أدوات مثل Linguise بديلاً مبتكرًا لمن يبحثون عن نهج أكثر بساطة. تقدم هذه الحلول قدرات ترجمة سريعة، وتكاملًا سهلًا، وميزات سهلة الاستخدام مثل مفاتيح تبديل اللغة القابلة للتخصيص وترجمة الصور. الآن، قم بإنشاء حسابك Linguise واستمتع بميزتنا لتوطين Laravel

قد تكون مهتمًا أيضًا بقراءة

لا تفوت الفرصة!
اشترك في نشرتنا الإخبارية

تلقي الأخبار حول الترجمة التلقائية للموقع، وتحسين محركات البحث الدولية، والمزيد!

Invalid email address
جربها. مرة واحدة في الشهر، ويمكنك إلغاء الاشتراك في أي وقت.

لا تغادر دون مشاركة بريدك الإلكتروني!

لا يمكننا أن نضمن أنك ستفوز باليانصيب، ولكن يمكننا أن نعدك ببعض الأخبار الإعلامية المثيرة للاهتمام حول الترجمة والخصومات العرضية.

لا تفوت الفرصة!
Invalid email address