اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

في أطر العمل الكبيرة والمنتشرة بقوة مثل Rails، نجد إمكانية إضافة ما يسمى بـ Internationalization، وهي أداة تمكّن الموقع من تحويل وترجمة الموقع -تقريبا- إلى أي لغة في العالم، وغالبا ما يُرمز لهذه التقنية بـ i18n .

في Rails  بالتحديد توفر لنا إضافة Gem التي تفي بهذا الغرض، ومن تجربة شخصية أرى أنها قوية، وسهلة الاستعمال، اسمها - الإضافة - : rails-i18n.

هذا رابطه : rails-i18n

ولبضبط الإعدادات:

في ملف GemFile نضيف السطر التالي:

gem 'rails-i18n', '~> 4.0.0'  

ومن خلال الطرفية، نشغّل الأمر التالي:

gem install rails-i18n -v '~> 4.0.0'  

في المسار التالي من المشروع:

config/environments/

نختار اللغة المراد اعتمادها في الموقع:

config.i18n.available_locales = ['es-CO', :de]

وهذه لائحة جميع اللغات المتاحة -لاحظ وجود اللغة العربية- :

af, ar, az, bg, bn, bs, ca, cs, cy, da, de, de-AT, de-CH, el, en, en-AU, en-CA, en-GB, en-IE, en-IN, en-NZ, en-US, en-ZA, eo, es, es-419, es-AR, es-CL, es-CO, es-CR, es-EC, es-MX, es-PA, es-PE, es-US, es-VE, et, eu, fa, fi, fr, fr-CA, fr-CH, gl, he, hi, hi-IN, hr, hu, id, is, it, it-CH, ja, km, kn, ko, lo, lt, lv, mk, mn, mr-IN, ms, nb, ne, nl, nn, or, pl, pt, pt-BR, rm, ro, ru, sk, sl, sr, sv, sw, ta, th, tl, tr, tt, uk, ug, ur, uz, vi, wo, zh-CN, zh-HK, zh-TW, zh-YUE

باقي الخطوات أتركك لتتبعها مع هذا الفيديو:

Ruby On Rails Tutorial - I18n

  • 0
نشر

بالإضافة إلى إستعمال مكاتب I18n التي تستخدم للترجمة بشكل كبير في تطبيقات Rails حتى في المواقع أحادية اللغة (الغاية من الإستعمال في هذه الحالة هو عدم إدراج أي محتوى نصي ستاتيكي أو فقرات نصية في ملفات الـ views، بحيث يتم سحبها من ملفات yml وذلك لجعل الأكواد قصيرة ومقروءة).

بالعودة إلى الموقع متعدد اللغات من المستحسن تخصيص روابط محددة لكل لغة، ويتم ذلك عبر إدراج

gem 'route_translator'

إلى ملف gemfile.

ويجب عندها تعديل ملف routes لتصبح بالشكل:

localized do
    resources :articles, only: [:index] do
      get :method, on: :collection
    end
end

بهذا الشكل يتم ترجمة الروابط إلى:

localhost:3000/articles للغة الإنكليزية إذا كانت هي اللغة الإفتراضية التي تم تحديدها.

localhost:3000/ar/articles إذا كانت اللغة المحددة ar. وهكذا.

ولكن هذه الروابط لا تغير اللغة بل يجب تغييرها من ApplicationController كالتالي:

before_action :set_locale_from_links

private
def set_locale_from_links
  locale_from_url = RouteTranslator.locale_from_params(params) || RouteTranslator::Host.locale_from_host(request.host)
    if locale_from_url
      old_locale  = I18n.locale
      I18n.locale = locale_from_url
    end
  ensure
    I18n.locale = old_locale if locale_from_url
end

 

للمزيد عبر طريقة عمل هذا الـ gem يمكن مراجعة:

https://github.com/enriclluelles/route_translator

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...