كيفية استخدام ميزات Rails I18N الاحتياطية
-
26-09-2019 - |
سؤال
لدي مشكلة i18n
activerecord:
notices:
messages:
success:
create: "Something was created"
models:
user:
success:
create: "Thanks for registration"
I18n.t("activerecord.notices.models.user.success.create")
# => "Thanks for registration"
I18n.t("activerecord.notices.models.book.success.create")
# => "translation missing: de, activerecord, notices, models, book, success, create"
لا أعرف لماذا لا يحصل نموذج الكتاب على تدليك احتياطي. لقد وضع config.i18n.fallbacks = true
. أنا أستخدم Rails 3
المحلول
عندما :إفتراضي يتم تقديم الخيار ، وسيتم إرجاع قيمته إذا كانت الترجمة مفقودة:
I18n.t :missing, :default => 'Not here'
# => 'Not here'
مزيد من المعلومات هنا
نصائح أخرى
لقد قمت بتعيين في config/application.rb عادة
config.i18n.fallbacks =[:de, :fr, :en]
حتى تتمكن من تباطؤ ترتيب الاحتياطي.
ولكن استمر في الانتباه في بعض البيئات/*. RB يتم الكتابة فوق التكوين.
هل قمت بتمكين احتياجات الخلفية الخاصة بك؟ على افتراض أنه بسيط (استنادًا إلى YML في المثال):
ضع هذا في مُهيئ:
require "i18n/backend/fallbacks"
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
في Rails 3+ ، يتم تعيين هذا في ملفات التكوين/البيئات:
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation can not be found)
config.i18n.fallbacks = true
أعتقد أن أفضل طريقة للتعامل مع سلسلة مفقودة ، هي عرض لغة افتراضية ، بدلاً من رسالة خطأ.
أضف هذا السطر في application.rb إلى العودة إلى اللغة الإنجليزية.
config.i18n.fallbacks = [:en]
في حال كنت ترغب في تحديد حالات احتياطية خاصة بالكلام ، يمكنك استخدام ما يلي:
config.i18n.fallbacks = {:de => [:de,:en], :en => [:en,:de]}
لاحظ أيضًا أنه يمكنك تمكين وتعطيل الاحتياطات بناءً على بيئتك. لذا ، على الرغم من أنه قد يكون من المنطقي عرض خطأ ، يمكنك بدلاً من ذلك تمكين التراجع في environments/production.rb
كالآتي:
config.i18n.fallbacks = true