я пытаюсь локализовать свой код, и я хочу использовать gettext и poedit, чтобы сделать это, так что это кажется самым простым способом сделать это.
Я инициализирую все мои классы и представления из простого сценария, который включает это.
Я пытаюсь понять, как работает функция gettext (), вот пример того, что я имею в виду:
Файловая структура перевода из корня: i18n/Locale/da_DK/LC_MESSAGES
,
messages.po
и .mo находится в папке LC_MESSAGES, и если мои скрипты находятся в папке i18n, и я вызываю c.php в браузере, это работает
Если я положу c.php
в папке дальше это не работает, поэтому путь: someFolder/i18n/Locale/da_DK/LC_MESSAGES
и c.php
находится в someFolder и включает в себя a.php
а также b.php
с 1818 г.
скрипты:
a.php
<?php
// use sessions
session_start();
// get language preference
if (isset($_GET["lang"])) {
$language = $_GET["lang"];
}
else if (isset($_SESSION["lang"])) {
$language = $_SESSION["lang"];
}
else {
$language = "da_DK";
}
// save language preference for future page requests
$_SESSION["Language"] = $language;
$folder = "Locale";
$domain = "messages";
$encoding = "UTF-8";
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);
bindtextdomain($domain, $folder);
bind_textdomain_codeset($domain, $encoding);
textdomain($domain);
b.php
<?php
echo _('Change language');
?>
c.php
<?php
include('a.php');
include('b.php');
?>
c.php (в некоторых папках)
<?php
include('i18n/a.php');
include('i18n/b.php');
?>
Скорее всего это все из-за вашего Folder
определение:
$folder = "Locale";
Когда вы перемещаете файл в папку someupper, вы должны изменить путь к чему-то вроде:
$folder = "someFolder/Locale";
Позвольте мне знать, если это помогает.
РЕДАКТИРОВАТЬ:
Или даже лучше, жестко закодируйте свой путь, если вы это знаете:
$folder = "/home/me/myproject/someFolder/i18n/Locale";
Других решений пока нет …