Frage

in Bezug auf

[1] Dies Rails Internationalisierung:i18n sucht nach verschachtelten Locales-Verzeichnissen

[2] dies http://guides.rubyonrails.org/i18n.html#organization-of-locale-files

Dabei zeigt die Schienenführung nur, wie man sie strukturieren könnte, aber sie schneidet danach ab.Es wurde nichts darüber erwähnt, wie mit der angegebenen Dateistruktur gesucht werden soll

Deshalb habe ich mich gefragt, ob es überhaupt möglich ist, Lazy Look mit der Dateistruktur zu verwenden

Betrachten Sie die folgenden Verzeichnisse

config/locales             app/views          

|locales                   |views
|-defaults                 |-fruits
|--en.yml                  |--apple 
|--views                   |--banana
|---fruits                 |-meats
|----en.yml                |--chicken
|---meat                   |--beef
|----en.yml 

config/application.rb

 config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/**/*.{rb,yml}"]

.yml

locales/views/fruits/en.yml|  locales/views/meats/en.yml
                           |
en:                        |  en:   
  produce: "Produce"       |   meat_section: "Meat Section" <--- shared key within folder
                           |
  apple:                   |   chicken:
    red: "Red"             |     white_meat: "White Meat"
                           |
  banana:                  |   beef: 
    yellow: "Yellow"       |     red_meat: "Red Meat"

locales/defaults/en.yml

en:
  repeat_key:
    market: "Market"     <------- shared key across folders 

Gibt es eine Möglichkeit, wie ich das machen kann?oder irgendetwas in der Nähe??

In view/fruits/apple.html.haml

= t('.red')                 <------- unique key in apple 
= t('produce')              <------- shared key within fruits folder
= t('repeat_key.maket')     <------- repeat key across fruits and meat folders

Ich weiß, dass der folgende Code funktionieren wird, aber da ich mich im Apple-Verzeichnis befinde, muss es eine Möglichkeit geben, die verzögerte Suche nach dem eindeutigen Schlüssel zu verwenden.

In view/fruits/apple.html.haml

= t('apple.red')            <------- unique key in apple 
= t('produce')              <------- shared key within fruits folder
= t('repeat_key.maket')     <------- repeat key across fruits and meat folders 

Ich denke, wenn das möglich ist.Dadurch können doppelte Schlüssel minimiert werden, und wenn wir einen zusätzlichen Alias ​​hinzufügen müssen, können wir ihn bei Bedarf hinzufügen, da ich glaube, dass die meisten Übersetzungsteams pro Wort abrechnen

War es hilfreich?

Lösung

Ich habe herausgefunden, dass Rails tatsächlich die gesamte .yml-Datei für eine ausgewählte verschachtelte Ebene abruft und sie zu einer zusammenfasst, außer der endgültigen .yml-Datei, die unter der Haube passiert und etwas ist, das wir nicht sehen können (zumindest konnte ich keine finden). Art, es zu sehen);Darüber hinaus spielt der .yml-Name keine Rolle, solange die darin enthaltene .yml-Datei strukturiert ist und Lazy Lookup funktionieren würde.

Am Ende habe ich die Orte wie folgt organisiert. Ich denke, das ist eine bessere Möglichkeit, sie zu organisieren.

|config
|-locales
|--en
|---en.yml
|---fruits.en.yml
|---meat.en.yml   

.yml

locales/en/fruits.en.yml|     locales/en/meats.en.yml
                           |
en:                        |  en:   
  fruits:                  |   meats:
    produce: "Produce"     |     meat_section: "Meat Section" <-shared key within folder
                           |
    apple:                 |     chicken:
      red: "Red"           |       white_meat: "White Meat"
                           |
    banana:                |     beef: 
      yellow: "Yellow"     |       red_meat: "Red Meat"

locales/en/en.yml

en:
  repeat_key:
    market: "Market"     <------- shared key across folders 

In view/fruits/apple.html.haml

= t('.red')                 <------- unique key in apple 
= t('fruits.produce')       <------- shared key within fruits folder
= t('repeat_key.maket')     <------- repeat key across fruits and meat folders

Durch diese Konvention

  1. Der Schlüssel mit dem "." alias Lazy schau nach dem, was angibt, in welchem ​​.yml es ist
  2. Der Schlüssel mit dem Dateinamen davor zeigt den gemeinsamen Schlüssel sowie seinen Speicherort an
  3. Der Schlüssel mit vielen Wiederholungen in allen Ordnern kann unter „repeat_key“ abgelegt werden und ist in der Datei „en/en.yml“ vorhanden

Andere Tipps

@AirWick219.

Wenn Sie Lazy Lookup verwenden möchten, müssen Sie meiner Meinung nach die Datei vorbereiten config/locales/views/fruits/apple/en.yml.

Wenn Sie einen gemeinsamen Schlüssel innerhalb eines Ordners wünschen, können Sie so etwas hinzufügen, obwohl es etwas überflüssig ist.

config/locales/views/shared/en.yml,

en:
  shared:
    fruits:
      produce: "Produce" 

= t('shared.fruits.produce')

Oder geben Sie auf, Lazy Lookup zu verwenden :(

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top