2

Я использую Рубин на Rails 3.1, и я хотел бы знать как, когда и почему я должен использовать один из следующих вариантов кода, а не другой на интернационализацию мое заявление (I18n gem) :I18n: В чем разница между использованием 't (: test_key)', 't (' test_key ')' и 't ('. Test_key ')'?

t(:test_key) 
t('test_key') 
t('.test_key') 

То есть, что такое "тонкое" разница между использованием t(:test_key), t('test_key') и t('.test_key')? Каковы наилучшие практики в этой проблеме?

ответ

4

Я думаю, что первые два эквивалентны, и вы просто обратитесь к главному ключу в ваших переводах, Ф.О. например

t('hello_world') 
# t(:hello_world) is an equivalent 

бы Reffer к

en: 
    hello_world: "Hello world" 

Однако, если использовать точечную нотацию, его называют ленивым поиск , и он будет выглядеть глубже в вашей структуре перевода, основываясь на контроле/обозначении действия

Итак, если вы используете это внутри пользователей/индексную строку плита

t('.hello_world') 

будет принято решение о

pl: 
    users: 
    index: 
     hello_world: "Witaj świecie" 

Вы найдете больше о интернализации в Rails Guides

1

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

Причина, по которой я предпочитаю ленивый поиск, заключается в том, что он делает код более чистым, и до тех пор, пока вы знакомы с тем, как работает драгоценный камень , вам не должно быть никаких проблем с пониманием того, где искать ключи ,

С другой стороны, если у вас есть такие компоненты, они должны действительно жить в частичном, cell или что-то подобное.

Одна вещь, которая стоит упомянуть abouth non-lazy, заключается в том, что вы можете предоставить им возможность для поиска ключа. Опять же, вам решать, хотите ли вы t('foo.bar.baz.test_key') или t(:test_key, :scope => 'foo.bar.baz').

Он также берет кучу других опций, но все это аккуратно задокументировано в rails guide, поэтому я не буду здесь объяснять это дальше.

Смежные вопросы