【发布时间】:2015-05-05 14:07:03
【问题描述】:
我创建了一个函数,它应该根据用户的语言环境返回最佳翻译。
输入是多个语言的相同文本翻译的数组(来自BDD),语言存储为键,如下所示:
$textes = array(2) {
["fr-fr"]=> string(24) "Editer l'item"
["en-en"]=> string(22) "Edit the item"
}
当$textes仅包含一项时,该函数返回该项目,否则它应该返回最佳翻译;我尝试处理 intl 的 Locale 函数,但它总是返回一个空字符串:
private static function getMeilleureTraduction(array $textes) {
if (count($textes) === 1) {
return array_pop($textes);
}
// Returns "fr,en;q=0.8,fr-fr;q=0.5,en-us;q=0.3"
$a = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
// Returns "fr"
$b = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
// Returns ""
$c = Locale::lookup(array_keys($textes), $a, true);
// Returns ""
$d = Locale::lookup(array_keys($textes), $b, true);
// return $textes[$bestLocale];
}
所以lookup 函数对我没有帮助,因为它无法做出决定。我用错了吗?或者我不明白php-intl的函数的目的,我应该自己编码?
【问题讨论】: