我正在尝试本地化我的代码,我想使用gettext和poedit这样做似乎是最直接的方法。
我从包含此内容的简单脚本初始化所有类和视图。
我正在努力理解gettext()函数如何在这里工作是我的意思的一个例子:
来自root的翻译文件结构: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中,并包含来自i18n的a.php
和b.php
。
脚本:
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(在someFolder中)
<?php
include('i18n/a.php');
include('i18n/b.php');
?>
答案 0 :(得分:1)
最有可能的原因是你的Folder
定义:
$folder = "Locale";
将文件移动到someupper文件夹时,应修改路径为:
$folder = "someFolder/Locale";
如果有帮助,请告诉我。
修改强>
如果你知道的话,甚至更好,硬编码你的路径:
$folder = "/home/me/myproject/someFolder/i18n/Locale";