Как сделать так, чтобы gettext ВСЕГДА использовал перевод вместо языкового текста по умолчанию

Когда вы вызываете функцию gettext php для перевода текста на другой язык, она использует текст, который у вас есть на странице, в качестве КЛЮЧА / ID для поиска значения, чтобы заменить его на

echo gettext('hello how are you today');

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

echo gettext('welcome_message');

и пусть это будет переведено на английский и любой другой язык, который я предлагаю. Так как я мог это сделать? Как я могу заставить функцию gettext ВСЕГДА использовать языковой файл? Поэтому, если моим языком по умолчанию для сайта является английский, то вместо того, чтобы gettext отображал welcome_message для англоязычного пользователя, он показывал бы привет, как вы сегодня

Это так же просто, как просто создать файл на английском языке в дополнение к другим языковым файлам?


person JasonDavis    schedule 12.09.2009    source источник
comment
_ ('text') то же самое, что и gettext ('text'), функция lang () не нужна.   -  person Alix Axel    schedule 12.09.2009
comment
Я понимаю, что делаю это по другой причине, например, иногда, когда расширение gettext недоступно для тестирования, я все равно могу использовать массив или константы o, это делает мое приложение более гибким. Но это не мой вопрос   -  person JasonDavis    schedule 13.09.2009
comment
Также два или три символа подчеркивания часто используются как функция перевода. Это дает еще большую гибкость, например: если нет встроенного расширения gettext, просто отобразите материал или если установлен флаг X, прочтите переводы из БД и т. Д. Затем вы просто используете xgettext --keyword = __. Также Zend_Translate может читать строки gettext без фактического расширения PHP и имеет такие вещи, как - ›isTranslated () -› hasLanguage ('финский') и т. Д.   -  person raspi    schedule 13.09.2009
comment
Вы не должны. Gettext был разработан так по одной причине: чтобы предоставить значение по умолчанию. Конечно, он даже будет использовать английский перевод, если он доступен, но он будет использовать ваш бесполезный заполнитель для любого другого языка без перевода. Нет, вы не умнее разработчиков gettext! Используйте его так, как оно предназначено.   -  person Bachsau    schedule 19.04.2018


Ответы (1)


Вы на правильном пути. Строковый аргумент gettext () - это просто идентификатор, а не «язык по умолчанию». Если в активном языковом стандарте нет перевода, gettext вернет этот идентификатор.

Ваше решение - именно то, о чем вы подозреваете: просто создайте файл перевода на английский язык.

person timdev    schedule 12.09.2009
comment
сначала здорово, я думал, что он только искал языковой файл и переводил, если языковой набор был на другом языке, тогда сайт был создан. Например, если сайт на английском языке, и вы должны видеть испанский, тогда он получит испанский файл, но если бы вы были англичанином и просматривали сайт, он даже не стал бы искать файл на английском языке, но вы говорите, что он сначала будет искать файл английского языка, прежде чем показывать идентификатор по умолчанию, awsome +1 - person JasonDavis; 13.09.2009