سؤال

لدي مشكلة 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)

https://github.com/svenfuchs/i18n/wiki/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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top