2015-04-28 2 views
4

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

Мой вопрос в том, что является лучшей практикой для записей в этом файле? Я думал, вместо ссылок на такие элементы, как:

echo _('This is an entry.'); 

Я думал об организации им нравится:

echo _('error_pwd'); 
echo _('error_user_taken'); 

Который, когда бежал через файл перевода, будет выводить что-то вроде:

Password incorrect. Please try again. 
Username is already taken. Please try another. 

Таким образом, все мои переводы могут быть организованы по типу, например, error_, msg_, status_, tip_, е tc.

Кто-нибудь видел, как это делается таким образом, или есть предложения по более организованному методу?

+0

Да - несколько файлов перевода для каждого типа.Другие библиотеки переводов поддерживают это, например, Symfony2, но я не знаю о вашей реализации. – sjagr

+0

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

+1

. Я не понимаю, я просто заметил дату вопроса, которая '' задана 28 апреля в 20: 29, и ни одна баунти не установлена, почему мы видим это на первой странице сейчас? – Vladimir

ответ

1

На самом деле это не имеет значения!

Это зависит только от вас.

Однако я советую вам не разделить переводы по разделам. В этом нет никакой пользы. Фактически, большинство проектов используют однофакторный подход для всех записей в msgid. Как django, see.

Конечно, если вы все еще хотите раздвоение перевод по разделам, возможно, вы хотите взглянуть на Domains:

От PHP документ:

Эта функция (ДОМЕН()) устанавливает домен для поиска внутри, когда вызовы совершаются с gettext(), обычно с именем, указанным после приложения.

Кроме того, как ранее говорилось, преимущество при использовании msgid как ои слово реальная фраза (вместо того, чтобы подчеркнуть или пунктирным ключа нотации) является то, что он остается в качестве сообщения по умолчанию, если не есть перевод записи.

И здесь идет некоторые полезные ссылки:

1

Это стандартный подход для других фреймворков, например. Symfony/Laravel:

trans('error.validation'); 

Но есть падение, если вы забыли перевести одну фразу на своем сайте он появится как ключевое слово «» error.validation

+0

Почему бы не проверить и если фраза не найдена, просто покажите сообщение «Ошибка», – Vladimir

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