2016-05-24 2 views
2

Я создаю проект с phoenixframework, и я использую gettext для добавления некоторых переводов. Команда mix gettext.extract --merge захватывает все мои ключи перевода из контроллеров и шаблонов и сохраняет их в файлах и .po.Добавить ключи для перевода текста вручную

Но некоторые ключи перевода У меня есть файл конфигурации, который я использую в качестве опций выбора в окне выбора формы. На данный момент у меня есть список ключей: [:key1, :key2, key3, ..., keyN].

Теперь мне нужен список ключевых слов для отображения переводов и выбора ключей с помощью поля выбора. Мой результат таков: [{"translation 1": key1}, {"translation 2": key2}, {"translation 3": key3}, ..., {"translation N": keyN}].

Проблема:

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

Есть ли способ добавить переводы вручную, чтобы я мог запустить команду, чтобы захватить новые переводы из моего проекта, не теряя мои добавленные вручную переводы?

ответ

1

Существует решение, и он работает с эликсиром, получая текстовую реализацию из коробки.

Ключевое слово: домен

Сначала я создал новый файл горшок со всеми моими ключами перевода:

msgid "" 
msgstr "" 
"Language: en\n" 

msgid "key1" 
msgstr "" 

msgid "key2" 
msgstr "" 

# ... and so on ... 

Мой файл называется additionals.pot. Затем я запускаю mix gettext.extract --merge. Теперь у меня есть файл additionals.po в каждом языковом каталоге, где теперь я добавляю свои переводы.

В моем проекте теперь я использую метод Gettext вместо gettext. dgettext позволяет указать домен, который является базовым именем нового файла additionals.po.

Gettext.dgettext(<MyProjectName>.Gettext, "additionals", "key1") 
# => "translation 1" 

Это все и все работает так, как ожидалось.

Here - хорошая статья о Gettext. Найдите Домены, чтобы найти другое описание, как используется dgettext.

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