WeCenter如何开启国际化和多语言?

通过 core_lang来应对多语言文本的localization

wecenter并未针对用户提供本地化的支持,如果需要提供基于用户的,可以稍加改动,根据浏览器的本地化初始化语种,自动选择本地化资源。

使用多语言

wecenter3.x之后默认是关闭了多语言功能,需要在/system/init.php 下取消注释,即可开启多语言

/uploads/files_user1/question/5e0c90be96b2a891997.png

其中'en_US’是/language/下的对应语言


配置

language/en_US.php

$language['抱歉, 你的账号已经被禁止登录'] = 'Sorry, your account has been suspended';

使用

各语种资源配置

提供了一个工具函数,方便使用

system/functions.inc.php

/** * 格式化输出相应的语言 * * 根据语言包中数组键名的下标获取对应的翻译字符串 * * @param  string * @param  string */function _e($string, $replace = null){   if (!class_exists('AWS_APP', false))   {      echo load_class('core_lang')->translate($string, $replace, TRUE);   }   else   {      echo AWS_APP::lang()->translate($string, $replace, TRUE);   }}


将各国语言的配置文件放到 language文件夹中
通过系统设置的语言SYSTEM_LANG,来加载不同的文件,实现本地化。

system/core/lang.php#__consturct

if (!defined('SYSTEM_LANG')){   return false;}if (SYSTEM_LANG == ''){   return false;}$language_file = ROOT_PATH . 'language/' . SYSTEM_LANG . '.php';if (file_exists($language_file)){   require $language_file;}

system/core/lang.php

public function translate($string, $replace = null, $display = false){   $search = '%s';   if (is_array($replace))   {      $search = array();      for ($i=0; $ilang[trim($string)])   {      if (isset($replace))      {         $translate = str_replace($search, $replace, $translate);      }      if (!$display)      {         return $translate;      }      echo $translate;   }   else   {      if (isset($replace))      {         $string = str_replace($search, $replace, $string);      }      return $string;   }}


已邀请:

要回复问题请先登录注册