我在我的应用程序(https://laravel.com/docs/5.0/localization)
上使用Laravel Localization我有以下字符串:
'plan_month' => 'usd-plan-month',
'plan_yeary' => 'usd-plan-year',
现在,当我创建订阅时,这一切都很好,我可以通过以下方式访问它:
{{ trans('subscription.plan_month') }}
但是..当我想要检索订阅时,可能要更改用户计划,我需要得到反转,因为条带将计划ID保存在数据库中,我需要获得有关它的额外数据。
我的问题是,是否有laravel或PHP(或者很可能是hack)中的函数可以提供计划ID(例如'usd-plan-month'),它将返回索引名称'plan_month' ?
答案 0 :(得分:0)
我不认为从lang文件中获取它是个好主意,因为它对于订阅来说是一个至关重要的数据。它应该保存为常量或其他内容,因此您可以确保它不会发生变化(并且lang文件很容易发生变化)。此外,如果有两个lang项具有相同的值但键不同,则会出现问题。您可能会收到错误的密钥,这会导致订阅过程中出现错误。
如果你想坚持这个,那就是黑客攻击。您可以使用
获取lang数组$lang = Lang::get('FILE_NAME');
如果您将翻译嵌套在多个数组中会更好,因此您不需要遍历整个lang文件(或者只为订阅文本使用单独的lang文件)。如果你想访问lang文件中的数组,你可以
$lang = Lang::get('FILE_NAME.ARR_KEY');
其中FILE_NAME是文件的名称,ARR_KEY是您要访问的数组的键。
然后,您可以使用array_flip将数组键与其值交换(如果您必须访问多个项目,这会更好),或使用array_search获取给定的键价值(如果您只需要查找一个项目)。
我仍然认为你应该考虑使用常量来代替lang文件。语言文件仅用于显示内容,它们不应与应用程序逻辑混合。