локализация — php gettext из разных папок не работает?

я пытаюсь локализовать свой код, и я хочу использовать 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');
?>

0

Решение

Скорее всего это все из-за вашего Folder определение:

$folder = "Locale";

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

$folder = "someFolder/Locale";

Позвольте мне знать, если это помогает.

РЕДАКТИРОВАТЬ:

Или даже лучше, жестко закодируйте свой путь, если вы это знаете:

$folder = "/home/me/myproject/someFolder/i18n/Locale";
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]