我正在做一个项目,我需要为它进行用户翻译。所以我决定在 php 中使用 gettext,但它有时会起作用。
所以我有一个名为 lng 的文件夹,在这个文件夹中我有一个 php 文件,它调用我的 lang 文件来翻译我的页面。
代码如下:
<?php
if(isset($_GET['lang']) != '')
{
setcookie('lang',$_GET['lang'], time() + 365*24*3600, null, null, false, true);
$_SESSION['lang'] = $_GET['lang'];
$language = $_GET['lang'];
}
else if(isset($_SESSION['lang']) != '' )
{
$language = $_SESSION['lang'];
}
else if(isset($_COOKIE['lang']) != '')
{
$_SESSION['lang'] = $_COOKIE['lang'];
$language = $_SESSION['lang'];
}else{
$language = 'fr';
}
putenv("LANG=$language");
setlocale(LC_MESSAGES, $language);
$domain = 'trad';
bindtextdomain($domain, 'locale/');
textdomain($domain);
?>
所以我可以检查我的 $_SESSION 和 $_COOKIE,没问题他给我 'en' 或 'fr' 但他不翻译我的文件,我不知道为什么。
对于 lng 中的文件夹,它是:locale/en/LC_MESSAGES/trad.po(或 .mo)。 我尝试使用 LC_ALL 和 LC_MESSAGES,但这并没有改变结果。
我是不是遗漏了什么或做错了什么?
非常感谢!
J.
最佳答案
我也遇到了同样的问题。重启 Apache 服务为我解决了这个问题
关于php - Gettext 有时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10508305/