所以问题如下。我正在将一个站点从每种语言的内容数组转换为一个gettext站点,另外还有2个原始语言。
所以我的基本语言是es_MX,我有en_US和fr_FR翻译。
我在.htaccess中使用以下参数来传递语言环境的信息:
RewriteRule ^/?$ index.php?es=./&en=./en/&fr=./fr/&locale=es_MX [L]
RewriteRule ^en/?$ index.php?es=./&en=./en/&fr=./fr/&locale=en_US [L]
RewriteRule ^fr/?$ index.php?es=./&en=./en/&fr=./fr/&locale=fr_FR [L]
因此,当我检查$ _GET参数时,一切都被正确接收。
案例1:默认es_MX
Array
(
[es] => ./
[en] => ./en/
[fr] => ./fr/
[locale] => es_MX
)
案例2:en_US
Array
(
[es] => ./
[en] => ./en/
[fr] => ./fr/
[locale] => en_US
)
案例3:fr_FR
Array
(
[es] => ./
[en] => ./en/
[fr] => ./fr/
[locale] => fr_FR
)
那么,之后我要做的是为了在社交网络插件或属性中使用多个语言变量,我有以下条件:
if(!$_GET["locale"] || $_GET["locale"] == "es_MX") {
$locale = "es_MX";
$locale_general = "es_LA";
$lang = "es";
$isolang = "es-419";
$htlang = "es-MX";
} else if($_GET["locale"] == "en_US") {
$locale = "en_US";
$locale_general = "en_US";
$lang = "en";
$isolang = "en";
$htlang = "en-US";
} else if($_GET["locale"] == "fr_FR") {
$locale = "fr";
$locale_general = "fr_FR";
$lang = "fr";
$isolang = "fr";
$htlang = "fr-FR";
}
之后我使用:
初始化语言环境putenv("LC_ALL=".$locale.".utf8");
setlocale(LC_ALL, $locale.".utf8");
bindtextdomain("hacienda", "./locale");
bind_textdomain_codeset("hacienda", "UTF-8");
textdomain("hacienda");
我的区域设置位于: - 英文(./locale/en_US/LC_MESSAGES/hacienda.mo) - 法语(./locale/fr_FR/LC_MESSAGES/hacienda.mo)
我运行了exec("locale -a",$output)
,该网站显示了一堆语言环境,其中包括几个fr_FR条目,包括fr_FR.utf8。
生成的html是:
<html class="no-js" lang="fr" xml:lang="fr" itemscope itemtype="http://schema.org/Hotel"> <!--<![endif]-->
<head>
<meta charset="utf-8">
...
我尝试重命名语言环境文件也创建了一个新文件,但它似乎没有得到法语翻译。知道可能导致什么原因吗?
答案 0 :(得分:0)
这非常令人尴尬,但我现在错过了将_FR
添加到$locale = "fr";
,因为我已将其修改为$locale = "fr_FR";
它正在工作。抱歉浪费时间。