我正在调查一个问题,我想以一般的方式解决它。要获取API响应的翻译,请使用以下代码:
$array['name'] = getTranslation($key);
这将根据用户设置获取翻译,并可能导致以下内容返回带有翻译的键或仅返回键。这使得数组如下:
//user only can get the key
$array['name']['key'] = 'key';
或者
//user can get both key and translation
$array['name']['key'] = 'key';
$array['name']['translation'] = 'translation';
此解决方案效果很好,但是很遗憾,它必须更改。翻译密钥必须始终位于密钥中,并且翻译必须放在_key中。但前提是用户设置使他们能够获得翻译。结果为以下结果:
$array['name'] = 'key';
$array['_name'] = 'translation';
要不就:
$array['name'] = 'key';
不幸的是,翻译被广泛使用,如果用户可以翻译,我不想在每种方法中进行检查。
所以现在我在想,是否有办法在全球范围内解决这个问题。理想情况下,将是创建一种以这种方式解决该问题的方法:
$arraykey = 'name';
$array[$arraykey] = getTranslations('translationkey', $arraykey);
它将最终以以下形式出现在数组中:
$array['name'] = 'translationkey';
$array['_name'] = 'translated value';
从创建新功能的建议开始,您可以尝试以下操作:
function getTranslations($translationKey, $arrayKey)
{
$translation = getTranslation($translationKey);
$result = array($arrayKey => $translation['key']);
if (/*user settings enabled translations*/) {
$result['_' . $arrayKey] = $translation['translation'];
}
return $result;
}
// usage
$translation = getTranslations('namekey', 'name');
// if you have more translations in the final array then you can use array_merge
$translation = getTranslations('namekey', 'name');
$translation = array_merge($translation, getTranslations('phonekey', 'phone'));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句