В модуле perl я хочу использовать https://metacpan.org/pod/Locale::Maketext::Simple для преобразования строк на разные языки.
Мои .po файлы расположены под /opt/x/languages
, например /opt/x/languages/en.po
.
В моем модуле я использую следующий заголовок:
use Locale::Maketext::Simple (
Path => '/opt/x/languages',
Style => 'maketext'
);
loc_lang('en');
Запись в .po файлах выглядит так:
msgid "string [_1] to be converted"
msgstr "string [_1] is converted"
и проверка через консоль с msgfmt -c en.po
пока не выдает ошибок.
Но когда я конвертирую строку с loc()
, как loc("string [_1] to be converted", "xy")
, это дает мне вывод «преобразуемой строки xy» вместо «преобразуется строка xy», как я и ожидал. Мне кажется, что .po файлы загружены неправильно.
Как я могу проверить, какие файлы .po найдены при создании экземпляра maketext? Или я что-то путаю и есть общая ошибка?
Редактировать 1:
Спасибо за комментарии, но все равно не работает.
Я проверил файлы с помощью https://poedit.net/ и создал соответствующие файлы .mo (в настоящее время для de и en) также с помощью этого инструмента. Они расположены рядом с файлами .po (внутри /opt/x/languages).
Для полноты заголовок выглядит так:
# MY OWN LANGUAGE FILE (DE)
# 06-2019 by me
#
msgid ""
msgstr ""
"Project-Id-Version: 1.0.0\n"
"POT-Creation-Date: 2019-06-01 00:00+0100\n"
"PO-Revision-Date: 2019-06-02 00:00+0100\n"
"Last-Translator: thatsme <me@me.de>\n"
"Language-Team: unknown\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.3\n"
msgid "string [_1] to be converted"
msgstr "string [_1] is converted"