Любые преимущества для расширенных вложенных ключей контекста (по сравнению с путями) в файлах перевода YAML i18n в Rails - PullRequest
1 голос
/ 01 ноября 2011

Примечание: я не являюсь разработчиком RoR, поэтому, если в вопросе есть что-то неточное, поправьте меня.

RoR имеет собственную библиотеку i18n. Эта библиотека (опционально) использует формат YAML для файлов локализации. В этих файлах локализации пары ключ-значение используются там, где значением является предоставленный перевод, но эти пары ключ-значение могут находиться в пределах области (пространства имен), вот примеры:

Один пример отсюда - http://guides.rubyonrails.org/i18n.html

pt:   
  foo:
    bar: baz

... ключ верхнего уровня - локаль. : foo - это ключ пространства имен и: bar является ключом для перевода «Баз».

И еще один пример - http://ruby -on-rails-tutorials.blogspot.com / 2010/11 / i18n-in-rails3.html

en:
  contact:
    prices:
      show_price: "%{price_dollar}$"
      quote: "Coordinator: & quot;Crucifixion?& quot? & lt;br /& gt; Mr. Cheeky: & quot;Er, no, freedom actually.& quot;"

  attributes:
    created_at: "Created at"
    updated_at: "Updated at"

  helpers:
    submit:
      contact:
        create: "Order"
        update: "Modify"
    label:
      contact:
        name: "Your name"
        company_name: "Company name"
        phone: "Phone number"
        email: "E-mail"
        comment: "Comment"

Пожалуйста, проверьте указатели для лучшего объяснения.

Альтернативный стиль, который можно придумать, - это сгладить атрибуты области действия: например, в последней цитате мы можем сказать:

helpers.label.contact.company_name: "Company name" 

Я считаю, что вложенный стиль может быть очень запутанным при редактировании больших или глубоко вложенных файлов локализации. И действительно, я нашел пару мест, где поднимается эта проблема:

Причиной этого были сложности, с которыми я столкнулся, работая над огромным часть данных во вложенных файлах yml. Имея несколько тысяч ключей в нескольких переводы файлов, меня бесило, когда мне нужно было переименовать переводить ключи, перемещать их в другое пространство имен и т. д. и пришлось прокручивать много, глядя и задаваясь вопросом, что такое пространство имен ключа. Кроме того, разрешение конфликтов слияния, проверка отсутствующих переводов в другие файлы локали намного проще, когда вы видите полный ключ.

Мой вопрос: каковы преимущества наличия вложенного стиля. Есть ли какие-либо проблемы с плоским стилем, которые заставили разработчиков использовать вложенный стиль, несмотря на недостатки?

Ответы [ 2 ]

3 голосов
/ 27 ноября 2012

Я написал плагин для выравнивания YAML для Vim.

Основная причина для вложенного формата, для меня, заключается в том, что он является традиционным, поэтому любые инструменты или службы, которые мы можем захотеть использовать, могут использовать этот формат.

Я полагаю, что есть некоторый риск сделать опечатки, когда вы начнете повторять себя, и переименование вещей означает переименование их в нескольких местах - но их также сложнее найти, чтобы переименовать, и у вашего редактора, вероятно, есть хорошие инструменты для переименования в пакетном режиме. .

Я мог бы придумать больше причин (более короткие строки, меньшие файлы, менее шумные различия), но я не думаю, что они очень важны.

Это хороший вопрос. Большую часть времени я рассматриваю возможность использования плоского формата и преобразования только в случае необходимости использования внешнего инструмента.

0 голосов
/ 01 ноября 2011

Для меня главным преимуществом расположения файлов YAML является то, что с первого взгляда довольно просто увидеть взаимосвязь между данными конфигурации. Я провел несколько лет, работая с Python, который определяет область видимости с пробелами, а не с посторонними символами, такими как {} и т. Д., Поэтому парадигма для меня удобна.

Возможно, если у вас большие файлы yaml ... тысячи ключей ... тогда, возможно, пришло время разбить файлы на более мелкие, более управляемые файлы. Когда я пишу код в целом и получаю файл ЛЮБОГО вида, который настолько велик, я безжалостно рефакторину, чтобы организовать вещи более интуитивно.

Я полагаю, что в основном это барабанщики.

...