好的,所以我有一个庞大而复杂的“即将发生的事件”PHP模块,我经常与之合作,我目前正在研究多语言(法语/英语)网站,我需要翻译我的PHP语言日期。
我不想做的事情在函数本身内嵌入了大量的条件PHP。有人可以帮我提出一系列条件语句,检查是否
<?php if (ICL_LANGUAGE_CODE == 'fr') { } ?>
为true,然后只需在处理函数后更改月份变量。原谅我的无知,在语法方面我只是有点慢。有人能告诉我检查特定输出是否被回显然后翻译它会是什么样子。以下不起作用
<?php if (ICL_LANGUAGE_CODE == 'fr') { February == Fevrier } ?>
修改
我考虑使用本地化框架,但我正在使用WordPress开发此网站并使用WPML(wordpress多语言插件)。这是一个真正的救命。我对添加复杂框架犹豫不决。这个轻量级吗?我更愿意翻译我所知道的字符串。唯一的格式是 - 1月01日// 2011年1月1日...日期名称不会出现在网站上,其他字符串翻译也是不必要的。
答案 0 :(得分:2)
使用您的字符串创建数组,并使用每种受支持语言的键:
$months = array(
1=>array(
'fr'=>'Janvier',
'en'=>'January'
),
2=>array(
'fr'=>'Février',
'en'=>'February'
),
3=>array(
'fr'=>'Mars',
'en'=>'March'
) // and so on...
);
$days = array(
1=>array(
'en'=>'Monday',
'fr'=>'Lundi'
),
2=>array(
'en'=>'Tuesday',
'fr'=>'Mardi'
) // and so on...
);
然后你可以像这样访问字符串:
$days[$day_of_week][ICL_LANGUAGE_CODE]
$days[$month][ICL_LANGUAGE_CODE]
......等等。
答案 1 :(得分:1)
您上面提出的建议都是有效的,并且可以正常使用。
WPML包括一个字符串转换工具,它也可以执行此操作并保持代码清洁。优点是您的代码将包含一种语言的文本,翻译将在WPML的字符串翻译编辑器中完成。
如果您选择添加更多语言,则无需更改代码中的任何内容。只需在WPML中添加更多翻译。
看看这里: http://wpml.org/documentation/support/translation-for-texts-by-other-plugins-and-themes/
您需要使用* icl_register_string *来注册可翻译的字符串。然后,在输出时,通过* icl_t *。这种机制类似于GetText,但它支持静态和动态文本。
如果您这样做,我建议您为字符串选择新的上下文字段。这样可以很容易地在字符串翻译编辑器中找到它们。
WPML缓存结果并将具有相同上下文的所有字符串加载在一起,因此您不会感觉到任何性能受到影响。
答案 2 :(得分:1)
这是我在wordpress中快速将日期翻译为法语的原因:
<?php setlocale(LC_TIME, "fr_FR"); ?>
<?php echo utf8_encode(strftime("%e %B, %G", strtotime(the_date('','','',FALSE)))); ?>
答案 3 :(得分:0)
如果您的项目不是高负载,请尝试这种方法,这足够灵活:
function t_date($format, $date=FALSE, $lang=LANG)
{
$months['January'] = array('uz'=>'Yanvar');
$months['February'] = array('uz'=>'Fevral');
$months['March'] = array('uz'=>'Mart');
$months['April'] = array('uz'=>'Aprel');
$months['May'] = array('uz'=>'May');
$months['June'] = array('uz'=>'Iyun');
$months['July'] = array('uz'=>'Iyul');
$months['August'] = array('uz'=>'Avgust');
$months['September'] = array('uz'=>'Sentabr');
$months['October'] = array('uz'=>'Oktabr');
$months['November'] = array('uz'=>'Noyabr');
$months['December'] = array('uz'=>'Dekabr');
$days['Monday'] = array('uz'=>'Dushanba');
$days['Tuesday'] = array('uz'=>'Seshanba');
$days['Wednesday'] = array('uz'=>'Chorshanba');
$days['Thursday'] = array('uz'=>'Payshanba');
$days['Friday'] = array('uz'=>'Juma');
$days['Saturday'] = array('uz'=>'Shanba');
$days['Sunday'] = array('uz'=>'Yakshanba');
if ($date)
$date = date($format, strtotime($date));
else
$date = date($format, time());
foreach ($months as $key => $val)
$date = str_replace($key, $val[$lang], $date);
foreach ($days as $key => $val)
$date = str_replace($key, $val[$lang], $date);
return $date;
}
答案 4 :(得分:0)
将php语言更改为wp
if (ICL_LANGUAGE_CODE == 'fr') {
setlocale(LC_ALL, 'fr_FR');
} else if (ICL_LANGUAGE_CODE == 'de') {
setlocale(LC_ALL, 'de_DE');
} else if (ICL_LANGUAGE_CODE == 'it') {
setlocale(LC_ALL, 'it_IT');
} else if (ICL_LANGUAGE_CODE == 'en') {
setlocale(LC_ALL, 'en_EN');
}
时间字符串
$translated_date = strftime("%e %B %Y",strtotime($post->post_date));
安全编码
$translated_date = utf8_encode($translated_date);