我的建议是使用 Laravel 中的参数化翻译选项。
我建议有这样的结构:
对于通用且可重复使用的内容:
trans('messages.alerts.update.success', ['item' => 'User']); // results in: 'User has successfully been updated'
trans('messages.alerts.update.success.default'); // results in: 'Updated was successfull.'
对于与特定领域/问题严格相关的内容...(在本例中为经理):
trans('manager.alerts.update.user.success'); // results in: 'User has successfully been updated'
or
trans('manager.alerts.update.success', ['item' => 'User']); // results in: 'User has successfully been updated'
trans('manager.alerts.update.success.default'); // results in: 'Updated was successfull.'
我们的想法是,对于经理特定的某些内容(例如更新成功消息可能与其他更新成功消息不同),您应该从特定的内容开始,例如:manager.alerts...
。
在通用情况下(同一消息可以在多个用例中使用),您应该从通用的东西开始,例如messages.alerts.update...
.
命名如trans('alert.the_user_was_updated_successfully')
我认为应该避免,因为当您想更改消息时可能会遇到大问题。键仍然反映旧值,而值将是新值。
关于您的目标:
一致性 and 可重用性:一定量的内容会重复。这是无法避免的。然而,可以通过构建内容并使用包含常见单词和短语的文件(例如)来最小化这个问题。 commons.words commons.phrases 或 2 个包含几个类别的文件(单词和短语)。例子:commons.time.day , commons.hello_world ...
可读性:这将是一个问题,除非您向翻译人员提供一个已经包含所有值的文件(采用他/她可以翻译的默认语言或起始语言)。我真的不明白为什么你没有最初的翻译/内容。
组织:您必须尝试像开发人员一样思考。如果您想找到特定的东西,您会思考并尝试在该特定主题下找到一些东西(manager.alerts....
在这种情况下)
但如果您正在搜索更通用的东西,您更有可能搜索通用的东西(messages.alerts....
在这种情况下)
我有类似的问题并发布了question https://stackoverflow.com/questions/33549409/structuring-website-translation-files关于它。
不幸的是,人们对这个主题也没有太多兴趣。