12

Ho diversi modelli raggruppate in un modulo come questo:chiave I18N per i modelli binari raggruppati in un modulo

#/app/models/blobs/small_text.rb 
    class Blobs::SmallText < ActiveRecord::Base 

     #.. class implementation 

    end 

vorrei impostare il nome della classe umano "Texte corte" in francese:

I18n.locale = "fr" 
    Blobs::SmallText.model_name.human # should return "Texte Court" 

Ho problemi con la parte del modulo della definizione della classe e come dovrebbe essere inclusa nei file locali. Ho provato diverse combinazioni nei miei file locali, ma non funziona. Qui ci sono alcune combinazioni che ho provato:


# /config/locales/models/blobs.fr.yml 

    # first attempt (does not work) 
    fr: 
    activerecord: 
     models: 
     blobs_small_text: "Texte Court" 

# /config/locales/models/blobs.fr.yml 
    # second attempt(does not work) 
    fr: 
    activerecord: 
     models: 
     blobs: 
      small_text: "Texte Court" 

Tutte le idee? Grazie D.

risposta

27

Ok. Io cosa ho trovato la risposta. Quando non si conosce la chiave di classe basta eseguire in un rotaie console la seguente istruzione:

Blobs::SmallText.model_name.i18n_key # this returns :"blobs/small_text" 

ora posso aggiornare i miei file di localizzazione di conseguenza:

# /config/locales/models/blobs.fr.yml 
# last attempt (it works) 
fr: 
    activerecord: 
    models: 
     blobs/small_text: "Texte Court" 

Così ora funziona. Tuttavia, è solo per me o questa convenzione di denominazione non rispetta le convenzioni generali sui nomi in Ruby on Rails?

+4

Chiamare 'i18n_key' è un grande trucco. Vorrei aprire un ticket per lo spazio dei nomi blob/small_text come sicuramente dovrebbe essere blobs.small_text – tigrish