php 来自不同文件夹的 gettext 不起作用?
php gettext included from different folders doesnt work?
我正在尝试本地化我的代码,我想使用 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 中,包括来自 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(在某个文件夹中)
<?php
include('i18n/a.php');
include('i18n/b.php');
?>
很可能都是因为你的Folder
定义:
$folder = "Locale";
当您将文件移动到某个上层文件夹时,您应该将路径修改为:
$folder = "someFolder/Locale";
如果有帮助请告诉我。
编辑:
或者更好的是,如果您知道路径,请对其进行硬编码:
$folder = "/home/me/myproject/someFolder/i18n/Locale";
我正在尝试本地化我的代码,我想使用 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 中,包括来自 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(在某个文件夹中)
<?php
include('i18n/a.php');
include('i18n/b.php');
?>
很可能都是因为你的Folder
定义:
$folder = "Locale";
当您将文件移动到某个上层文件夹时,您应该将路径修改为:
$folder = "someFolder/Locale";
如果有帮助请告诉我。
编辑:
或者更好的是,如果您知道路径,请对其进行硬编码:
$folder = "/home/me/myproject/someFolder/i18n/Locale";