Çeviri aramalarını yerleştirmenin bir yolu var mı? Böyle bir şey:Raylar I18n iç içe çeviri tuşları
en:
uh_oh: 'Uh Oh!'
error1: :'uh_oh' + ' There was a big error!'
error2: :'uh_oh' + ' There was another big error!'
I18n.t('error1') #=> 'Uh Oh! There was a big error!'
I18n.t('error2') #=> 'Uh Oh! There was another big error!'
bu varyasyonları bir demet çalıştı ve aynı zamanda yerine YAML bir Ruby çeviri dosyasını kullanarak denedim. Not Bu çalışır o:
en:
uh_oh: 'Uh Oh!'
error1: :'uh_oh'
Ben
error1
ek metin eklerseniz
I18n.t('error1') #=> 'Uh Oh!'
Ama uh_oh
tercüme almaz.
Temelde hep böyle, genel terimler geçmek zorunda kalmamak istiyorum:
en:
uh_oh: 'Uh Oh!'
error1: '%{uh_oh} There was a big error!'
uh_oh
gibi genel terimler için
I18n.t('error1', {uh_oh: I18n.t('uh_oh')})
, interpolasyon error1
her çağrı için aynı (ve diğer bir uh_oh
'u kullanan anahtar), bu yüzden enterpolasyon yapılacak bir dizgeyi geçmek gerçekten mantıklı değil. Bunun yerine aşağıdakileri yapmanız daha kolay olacaktır ve error1
çeviri ortak anahtar çeviri özen olurdu:
I18n.t('error1')
Farklı cümle yapıları ve dil bilgisi kuralları hakkında ne kastettiğinizi biliyorum. Ancak, bir çeviri anahtar/değer çiftinden (örneğin sorduğum gibi) veya açıkça ileterek bir değişkenin değerini almak, her dilin dosyasındaki tümceyi nasıl yapılandırdığınızı değiştirmez. –
Doğru, yine de yine de cinsiyet konusunda dikkatli olmanız gerekiyor. Bunun için kendi yardımcınızı yazmanız gerektiğini düşünüyorum. Yani anahtarlarınızı aşağıdaki gibi yapın: 'tuşu:"! some.key! foo bar "' I18n.t sarıcınızın anahtarı alacağı yere gidin, sonra aramayı arayın ve yerine koyun. – chrismcg
Bunu özel bir i18n arka ucu olarak da yapın. – chrismcg