多语言配置

领域配置 - 应该被版本控制

// 是否启用国际化
'ENABLE_I18N' => false,

// 项目内部代码注释/注解标题等主要使用的语言 对应的语言代码
'LANG_DEFAULT' => 'en',

// 当 HTTP 请求时候需要使用到多语言 并且通过请求参数的来标记的时候 约定的多语言请求参数名 
'LANG_HTTP_PARAM' => '__language',

// 当 HTTP 请求时候需要使用到多语言 并且通过请求头的来标记的时候 约定的多语言请求头名 
'LANG_HTTP_HEADER' => 'LANGUAGE',

环境变量 - 不应该被版本控制

'ENABLE_I18N' => false,
'LANG_DEFAUL' => 'en',
'LANG_HTTP_PARAM' => '__language',
'LANG_HTTP_HEADER' => 'LANGUAGE',

环境变量中的多语言参数配置和领域配置所起的作用是一样的,区别是环境变量中的优先级会比领域配置的要高,即可以通过将同一套代码部署到不同的环境来配置不同的多语言环境,而不用改变默认的代码中注释所使用的语言。

当环境变量中使用的多语言代码和领域中配置的不一样的时候,就会执行多语言查找——匹配项目多语言目录中是否存在优先级更高的语言配置文件,如果有就会使用优先级高的多语言配置。

两种配置的正确使用姿势

  • 项目某个领域内开发者使用一种语言编写了代码注释/注解标题,将其配置到领域配置中,这样该领域的所有接口、文档输出等需要多语言翻译的地方就默认使用代码注释里面的内容,而不需要执行多语言查找。

非常适用于没有多语言需求的项目,因为既不会执行多语言查找,也不会要求配置多语言文件。

  • 当项目有多语言翻译需求的时候,就为其新增多语言配置文件,然后再需要多语言返回的调用入口出传递语言代码,通过多语言查找和变量替换,就会返回最终的多语言翻译。

  • 当项目开发时使用的一种语言,而部署/交付的时候需要另外一种语言,这时候配置环境变量配置为所需的语言代码,这样就可以不用传递多语言参数,而默认使用多语言查找环境变量内配置的语言代码。

常见于开发团队和客户不是同一家公司的情况,比如:外包。

说明

很多项目其实自始至终都没有多语言需求,但是 DOF 框架从功能上是支持的,为了避免在没有多语言需求的项目中还需要配置多语言配置文件,所以支持将代码中注释/注解标题等内容中使用的语言作为多语言的默认语言。

这样取舍兼顾了有多语言需求和没有多语言需求的项目,有的就配置多语言文件,然后再需要的入口处传递多语言参数,就可以如愿返回多语言翻译;没有多语言需求的,就直接使用代码中注释的原始内容作为默认的语言代码。

示例

获取框架内配置的多语言翻译

// 先获取领域内多语言配置 如果没有配置 再获取系统默认的通用多语言配置
\DOF\I18N::get('user', 'INVALID_PHONE_NUMBER: {phone}', 'zh-CN', ['phone' => 1234]);

// 只获取领域内多语言配置 
\DOF\I18N::domain('user', 'INVALID_PHONE_NUMBER: {phone}', 'zh-CN', ['phone' => 1234]);

// 只获取系统通用的多语言配置 
\DOF\I18N::system('INVALID_PHONE_NUMBER: {phone}', 'zh-CN', ['phone' => 1234]);

获取自定义多语言目录的翻译

\DOF\Util\I18N::get('INVALID_PHONE_NUMBER: {phone}', 'zh-CN', ['phone' => 1234]);

results matching ""

    No results matching ""