Я создаю функцию, которая должна возвращать лучший перевод в зависимости от локали пользователя.
Входной массив (от BDD) перевода одного и того же текста на разных языках, язык сохраняется в качестве ключа, как следующее:
$textes = array(2) {
["fr-fr"]=> string(24) "Editer l'item"
["en-en"]=> string(22) "Edit the item"
}
Функция возвращает элемент, когда $textes
содержит только один элемент, иначе он должен вернуть лучший перевод; Я пытаюсь разобраться с функцией Locale INTL, но она всегда возвращает пустую строку:
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
, и я должен сам ее закодировать?