o80/i18n

用于管理 i18n 的 PHP 库。

0.4 2016-05-12 12:14 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:57:24 UTC


README

o80-i18n 是一个用于管理 i18n(国际化)的小型 PHP 工具。默认情况下,它使用 json 格式进行语言文件,您也可以定义自己的提供者以使用其他格式。以下是如何简单使用的示例。

Build Status Latest Unstable Version License

如何使用

安装

使用 Composer,您只需要求 o80/i18n

{
...
    "require": {
        "o80/i18n": "~0.2"
    }
...
}

使用方法

字典

例如,将您的语言文件放在 'lang' 目录中

  • langs
    • en.json
    • en_US.json
    • fr.json

语言文件 en.json 的示例

{
    "Generic" : {
        "Welcome": "Welcome",
        "Hello": "Hello %s!",
        "submit": "submit"
    }
}

语言文件 fr.json 的示例

{
    "Generic" : {
        "Welcome": "Bienvenue",
        "Hello": "Bonjour %s !",
        "submit": "valider"
    }
}

配置 i18n 实例

方法 1 - 单例

$i18n = I18N::instance();
$i18n->setPath(__DIR__ . '/langs');
$i18n->setDefaultLang('en');

方法 2 - 新实例

$i18n = new I18N();
$i18n->setPath(__DIR__ . '/langs');
$i18n->setDefaultLang('en');

使用方法

方法 1 - 单例

<h1><?php echo __('Generic', 'Welcome'); ?></h1>
<!-- Result : <h1>Welcome</h1> -->
<h1><?php echo __('Generic', 'NotExistingText'); ?></h1>
<!-- Result : <h1>[missing key: Generic.NotExistingText]</h1> -->
<span><?php echo __f('Generic', 'Hello', 'Olivier'); ?></span>
<!-- Result : <span>Hello Olivier!</span> -->
<span><?php echo I18N::instance()->getLoadedLang(); ?></span>
<!-- Result : <span>en</span> -->

方法 2 - 使用实例

<h1><?php echo $i18n->get('Generic', 'Welcome'); ?></h1>
<!-- Result : <h1>Welcome</h1> -->
<h1><?php echo $i18n->get('Generic', 'NotExistingText'); ?></h1>
<!-- Result : <h1>[missing key: Generic.NotExistingText]</h1> -->
<span><?php echo $i18n->format('Generic', 'Hello', array('Olivier')); ?></span>
<!-- Result : <span>Hello Olivier!</span> -->
<span><?php echo $i18n->getLoadedLang(); ?></span>
<!-- Result : <span>en</span> -->

如何设置要使用的语言

系统会检查多个变量以查找要加载的语言文件。请看下面的说明。

  • 如果定义了 $_GET['lang'] 并且它与语言文件匹配,则使用它;
  • 如果定义了 $_SESSION['lang'] 并且它与语言文件匹配,则使用它;
  • 如果定义了 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 并且它与语言文件匹配,则使用它;
    • 它将检查此变量中找到的所有语言
  • 使用在 I18N 实例中定义的 $defaultLang
  • 如果没有找到文件,则不加载任何内容

贡献

只需分支项目,进行更改,请求拉取请求即可 ;-).