PHP数组键从功能

耶尔·斯梅茨(Jelle Smeets)

我正在调查一个问题,我想以一般的方式解决它。要获取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';
米海·米泰(Mihai Matei)

从创建新功能的建议开始,您可以尝试以下操作:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章