我正在一个使用Poedit进行翻译的多语言PHP网站上,我在使用特定语言(西班牙语)时遇到了问题。
我将开始说在服务器(发布网站之后)中,两种语言都可以正常工作,但是在我的DEV环境中,只会翻译英语。
仅供参考,在我的Ubunto系统上未安装西班牙语言环境,因此我通过以下方式安装了它们: sudo apt-get install language-pack-es 并通过以下方式生成了相关的东西:sudo locale -gen es 。
我的网站下有下一个文件夹结构:
languages => en_US => LC_MESSAGES => .po + .mo (compiled) files
languages => es_ES => LC_MESSAGES => .po + .mo (compiled) files
下一个是set_locale.php文件:
<?php
// Include the Composer autoloader
require_once 'vendor/autoload.php';
// Update include path
require_once 'Audero/SharedGettext/SharedGettext.php';
$translationsPath = 'languages';
$language = 'es_ES'; //en_ZM
if (isset($_GET['lng'])) {
$getLocale = $_GET['lng'];
if($getLocale=="en") {
$language="en_US";
}
}
$domain = 'audero';
putenv('LC_ALL=' . $language);
setlocale(LC_ALL, $language);
try {
$sharedGettext = new Audero\SharedGettext\SharedGettext($translationsPath, $language, $domain);
// Create the mirror copy of the translation and return the new domain
$newDomain = $sharedGettext->updateTranslation();
$sharedGettext->deleteOldTranslations();
// Sets the path for the current domain
bindtextdomain($newDomain, $translationsPath);
// Specifies the character encoding
bind_textdomain_codeset($newDomain, 'UTF-8');
// Choose domain
textdomain($newDomain);
//die(print_r("", true ));
} catch(\Exception $ex) {
echo $ex->getMessage();
}
?>
然后我通过以下方式翻译文本:
...
<title><?php echo _("home_title"); ?></title>
...
但是对于西班牙语,我得到了密钥(示例后为home_title),但没有翻译。
有帮助吗?
谢谢。