🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 多语言实现 ### 多语言实现 - 界面多语言实现由PHP 与JS实现,JS上实现多语言的原因是在.js文件中存在中文。 - JS翻译使用 \_\_("key")形式翻译。 - PHP使用 \_\_("key") 统一是两个下划线,JS 与PHP的翻译函数是相同的。 - 语言包存在 messages/en\_US目录中,以en\_US英文为例。该目录下包含app.js app.php - 分别对应JS的翻译,PHP的翻译。PHP直接以KEY=>VALUE数组形式返回 \*JS的代码如下格式。 ``` <pre class="calibre14">``` var source <span class="token">=</span> <span class="token1">{</span> <span class="token4">'en_US.app'</span><span class="token1">:</span> <span class="token1">{</span> <span class="token4">'手机验证码错误'</span><span class="token1">:</span> <span class="token4">'Phone number is error'</span><span class="token1">,</span> <span class="token5">//……更多key:value的形式翻译</span> <span class="token1">}</span> <span class="token1">}</span><span class="token1">;</span> ``` ``` 如何设置当前的语言。 ``` <pre class="calibre14">``` <span class="token6">1.</span>messages<span class="token">/</span>I18N<span class="token1">.</span>php中 $language_id <span class="token">=</span> <span class="token4">"en_US"</span><span class="token1">;</span> 设置对应的语言包。 <span class="token6">2.</span>设置好后,将会生成对应的COOKIE<span class="token1">,</span>COOKIE名为lang_selected <span class="token6">3.</span>在JS系统会自动判断当前的语言是什么。 ``` ``` 页面中代码加载,实现JS翻译 ``` <pre class="calibre14">``` <span class="token"><</span><span class="token">?</span>php include __DIR__<span class="token1">.</span><span class="token4">'/../translatejs.php'</span><span class="token1">;</span><span class="token">?</span><span class="token">></span> ``` ``` 需要在加载JQ之后,header之间。 文件参考ucenter的实现 `ucenter/ucenter/views/default/LoginCtl/regist.php` JS需要的文件在 ``` <pre class="calibre14">``` ucenter<span class="token">/</span>ucenter<span class="token">/</span>static<span class="token">/</span>default<span class="token">/</span>js<span class="token">/</span>lang<span class="token1">.</span>min<span class="token1">.</span>js ucenter<span class="token">/</span>ucenter<span class="token">/</span>static<span class="token">/</span>default<span class="token">/</span>js<span class="token">/</span>jquery<span class="token1">.</span>cookie<span class="token1">.</span>js ucenter<span class="token">/</span>ucenter<span class="token">/</span>static<span class="token">/</span>default<span class="token">/</span>js<span class="token">/</span>message<span class="token1">.</span>js ``` ``` 注意: ``` <pre class="calibre15">``` <span class="token">*</span> shop paycenter ucenter 前后台,语言是哪一种是由shop决定的, <span class="token">*</span> 因此shop的messages目录的I18N<span class="token1">.</span>php代码是不能直接复制到其他目录下的, <span class="token">*</span> 剩下的是可以通用的,相互之间的代码是一样的。 ``` ```