gettext 和 bindtextdomain 不翻译
gettext and bindtextdomain doesn't translate
我正在尝试将一些文本翻译成日语。但是没法翻译。即使它不会引发任何错误。根据 https://www.php.net/manual/en/function.gettext.php bindtextdomain() 应该寻找 .mo 文件。当我调试我的代码时 ir returns /var/www/lumber-mill.co.jp/sys/locales
是不是没有被翻译的问题?
我关注了这些-
Gettext doesn't translate
none 这些解决了我的问题。我该如何解决?
<?php
function __autoload($class) {
$filename = dirname(__FILE__) . "/../core/" . $class . ".php";
if (file_exists($filename)) {
include_once $filename;
}else{
$filename = dirname(__FILE__) . "/../toolkit/" . $class . ".php";
if(file_exists($filename)){
include_once $filename;
}
}
}
// タイムゾーンと言語設定
date_default_timezone_set('Asia/Tokyo');
session_start();
if (isset($_GET["lang"])) {
// パラメタで直接指定されている場合
switch ($_GET["lang"]) {
case "en_US":
case "ja_JP":
$_SESSION["LANGUAGE"] = $_GET["lang"];
break;
default:
break;
}
} else if (!isset($_SESSION["LANGUAGE"])) {
// セッションに定義されていない場合、リクエストヘッダから判別します
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$languages = array_reverse($languages);
} else {
$languages = array();
}
$lang = 'ja_JP'; // 規定値
foreach ($languages as $language) {
if (preg_match('/^ja/i', $language)) {
$lang = 'ja_JP';
} elseif (preg_match('/^en/i', $language)) {
$lang = 'en_US';
}
}
$_SESSION["LANGUAGE"] = $lang;
}
// 言語設定
setlocale(LC_ALL, $_SESSION["LANGUAGE"] . '.utf8');
$res = bindtextdomain("messages", $_SERVER["DOCUMENT_ROOT"]."/../sys/locales");
$mes = textdomain("messages");
bind_textdomain_codeset("messages", 'UTF-8');
print_r($res);
print_r($mes);
// 動作環境
if(strpos($_SERVER["SERVER_NAME"],"dev.") === 0){
define("ENV","staging");
}else{
define("ENV","production");
}
当我添加以下行时,我的问题就解决了-
putenv("LANGUAGE=".$_SESSION["LANGUAGE"].".utf8");
我正在尝试将一些文本翻译成日语。但是没法翻译。即使它不会引发任何错误。根据 https://www.php.net/manual/en/function.gettext.php bindtextdomain() 应该寻找 .mo 文件。当我调试我的代码时 ir returns /var/www/lumber-mill.co.jp/sys/locales
是不是没有被翻译的问题?
我关注了这些-
Gettext doesn't translate
none 这些解决了我的问题。我该如何解决?
<?php
function __autoload($class) {
$filename = dirname(__FILE__) . "/../core/" . $class . ".php";
if (file_exists($filename)) {
include_once $filename;
}else{
$filename = dirname(__FILE__) . "/../toolkit/" . $class . ".php";
if(file_exists($filename)){
include_once $filename;
}
}
}
// タイムゾーンと言語設定
date_default_timezone_set('Asia/Tokyo');
session_start();
if (isset($_GET["lang"])) {
// パラメタで直接指定されている場合
switch ($_GET["lang"]) {
case "en_US":
case "ja_JP":
$_SESSION["LANGUAGE"] = $_GET["lang"];
break;
default:
break;
}
} else if (!isset($_SESSION["LANGUAGE"])) {
// セッションに定義されていない場合、リクエストヘッダから判別します
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$languages = array_reverse($languages);
} else {
$languages = array();
}
$lang = 'ja_JP'; // 規定値
foreach ($languages as $language) {
if (preg_match('/^ja/i', $language)) {
$lang = 'ja_JP';
} elseif (preg_match('/^en/i', $language)) {
$lang = 'en_US';
}
}
$_SESSION["LANGUAGE"] = $lang;
}
// 言語設定
setlocale(LC_ALL, $_SESSION["LANGUAGE"] . '.utf8');
$res = bindtextdomain("messages", $_SERVER["DOCUMENT_ROOT"]."/../sys/locales");
$mes = textdomain("messages");
bind_textdomain_codeset("messages", 'UTF-8');
print_r($res);
print_r($mes);
// 動作環境
if(strpos($_SERVER["SERVER_NAME"],"dev.") === 0){
define("ENV","staging");
}else{
define("ENV","production");
}
当我添加以下行时,我的问题就解决了-
putenv("LANGUAGE=".$_SESSION["LANGUAGE"].".utf8");