发新话题
打印

[FleaPHP][I18N] 如何载入语言包?

[FleaPHP][I18N] 如何载入语言包?

使用界面多语言支持,要做如下工作:

1、 修改应用程序设置
    multiLangaugeSupport 指定为 true,启用多语言支持
    languageFilesDir 指定一个目录,表示语言文件所在根目录
    defaultLanguage 指定默认语言名,例如 chinese-utf8、chinese-gb2312 等

2、 准备语言目录和字典文件
    假设 languageFilesDir 指向 d:\www\myapp\APP\Languages,
    那么就要在 d:\www\myapp\APP\Languages 下建立不同语言的子目录,例如 chinese-utf8、chinese-gb2312。
    因此应用程序如果是要载入 chinese-utf8 的字典文件,那么实际的字典文件就存放在
    d:\www\myapp\APP\Languages\chinese-utf8\ 目录。

    字典文件的名字可以随意定,但最好有一定意义。
    例如用于用户界面的字典文件可以是 ui.php 或者 UserInterface.php。

    字典文件的内容很简单,就是用 return 返回一个数组,例如:
复制内容到剪贴板
代码:
<?php

// d:\www\myapp\APP\Languages\chinese-utf8\UserInterface.php
// 用于 chinese-utf8 语言的用户界面字典文件

return array(
    'applicationTitle' => '应用程序的标题',
    'authorName' => '作者名',
    'copyright' => '版权所有',
);

?>
3、 在应用程序中使用字典文件
      应用程序用 load_language() 载入指定的语言文件。
      load_language($dictname, $language = null) 有两个参数,$dictname 指定字典名,$language 指定语言名。
      假如没有指定 $language 参数,则使用应用程序设置 defaultLanguage 的值作为 $language 参数的值。
复制内容到剪贴板
代码:
// 载入 chinese-utf8 的指定字典文件
load_language('UserInterface', 'chinese-utf8');
4、 获取字典中对应的文本
     载入字典文件后,就可以通过字典文件查询原文和翻译后的文本了。
     使用 _T($key, $language = null) 获取指定字符串的翻译文本,例如:
复制内容到剪贴板
代码:
echo _T('applicationTitle', 'chinese-utf8');
显示结果将是前面字典文件中定义的'应用程序的标题'。

5、 简化操作
      每次都给 _T() 指定第二个参数显然不方便,所以我们可以在应用程序开始执行时,
      先获取用户选择的界面语言,然后用 set_app_inf('defaultLanguage', $language) 设置默认语言。

      这样后续的 _T() 就不用指定第二个参数了。

TOP

发新话题