2015-04-28 3 views
3

Я использую шаблон HTML, что позволяет использовать выделенные (выделены жирным шрифтом) текстов, применяющими следующий формат:Rails I18n - Строки с форматом

<h3><span class="semi-bold">Visit</span> details</h3> 

Это будет визуализируется как что-то вроде:

Визит детали

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

(ен) Посетите детали

(ов) Detalles де Visita

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

en: 
    visit_details: '<span class="semi-bold">Visit</span> details' 
es: 
    visit_details: 'Detalles de <span class="semi-bold">visita</span>' 

Реализует ли Rails лучший метод обработки таких форматированных текстов i18n?

+0

Не могли бы вы объяснить больше, например, кто выделяет текст? –

+1

Разработчик делает. – DiegoSalazar

ответ

6

Там ничто не мешает вам делать, как:

# view 
t('menus.object_details', object: content_tag(:span, t('menus.visit'), class: 'semi-bold')).html_safe 

# en.yml 
en: 
    menus: 
    object_details: "%{object} details" 
    visit: "Visit" 

# some_other_locale.yml 
some_other_locale: 
    menus: 
    object_details: "Details %{object}" 
    visit: "Visit" 

Как вы можете видеть, файл I18n не содержит жестко запрограммированный элемент HTML.

Трюк здесь, как обращаться с мужскими/женскими (/ нейтральными) существительными (например: французский, немецкий).

+0

Отличная идея! Благодаря! – AlexGuti

+0

Это решение не очень хорошо. I18n используется для перевода текста и сохранения контекста. Например, если у меня есть текст «Сведения о посещении» в EN, заказ на работу может измениться и может быть переведен на другой язык на что-то вроде «Детали визита». Это может произойти на чешском, иврите, арабском и т. Д. Как ваше решение, вы вынуждаете порядок слов, которые не будут работать. –

+0

@CodeMonkey Порядок слов обрабатывается каждым языковым стандартом. Если вы хотите изменить порядок слов на другом языке, скажем, «Детали визита» для испанского (я знаю, что это неправильно, но я использую его для примера), вы бы определили ключ I18n es.menus.object_details в «Details% { объект}». См. Обновление моего ответа. – MrYoshiji

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

  • Нет связанных вопросов^_^