関数を使用して多数のロケール文字列を json オブジェクトにエクスポートしようとしていますが、文字列が .mo ファイルから取り出されていないようです。私のコードは次のとおりです。
lang.php
<?php
define('_COOKIE_EXPIRE', 60 * 60 * 24 * 30);
$lang = "es";
if(isset($_COOKIE['lang'])){
$lang = $_COOKIE['lang'];
}
if(isset($_GET['lang'])){
$lang = $_GET['lang'];
}
define('_LANG', $lang);
setcookie('lang', _LANG, time() + _COOKIE_EXPIRE);
switch($lang){
case 'es':
$lc = "es_HN.UTF-8";
break;
case 'en':
$lc = "en_US.UTF-8";
break;
}
putenv("LC_ALL=$lc");
setlocale(LC_ALL, $lc);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset('messages', 'UTF-8');
textdomain("messages");
?>
関数.php
function getProjectsImages(){
//....
$json = '{Proyectos: [';
while(...){
$json .= ($first?'':', ') . '{' .
'id: ' . $row["id_proyecto"] . ', ' .
'cliente: "' . $row["nombre_cliente"] . '", ' .
'portada: "' . $row["portada_proyecto"] . '", ' .
'actividades: "' . _($row["actividades_proyecto"]) . '", ' .
'resumen: "' . _($row["resumen_proyecto"]) . '"}';
if($first) $first = false;
}
$json .= ']}';
return $json;
}
_("text")
言語を英語に選択した場合でも、印刷されるすべての文字列はスペイン語で印刷されます。これは、関数内でロケールを処理する正しい方法ですか?