制作一个根据用户语言而变化的常量是一种好的做法吗


Is it good practice to make a constant that varies based on the user language?

我正在我的PHP应用程序中创建常量来组织它的响应,我计划很快添加外语支持。以下是我现在正在做的:define('SOME_SYSTEM_MESSAGE',array('EN' => 'This is the system message!') [USER_LANGUAGE]);(我知道[]语法只在PHP 5.5中受支持,我有一个向后兼容的旧版本函数)。这是编码的好方法吗?还是应该将消息保存在一个数组中(比如英语消息的$en或法语消息的$fr),或者其他方式?

我认为这取决于您的应用程序的用途。如果你想将其主要局限于你自己/你的团队,那么你提出的解决方案可能会奏效。

但是,如果其他人以后应该使用你的代码,或者如果你想将其翻译成其他语言,那么拥有像.po或.csv这样的文件会很方便,翻译人员可以处理这些文件。

常量不能容纳数组,常量被限制为以下类型:null、boolean、integer、string或resource。

如果您想将应用程序本地化为不同的语言,请使用gettext或其他本地化技术。你应该更喜欢组件,而不是重新设计。

例如:Symfony框架包含一个(独立的)翻译组件。

相关文章: