slick/i18n

Slick 框架的国际化及字符串翻译包

v1.3.1 2017-11-19 23:53 UTC

This package is auto-updated.

Last update: 2024-09-20 11:36:08 UTC


README

Latest Version on Packagist Software License Build Status Quality Score Total Downloads

Slick I18n 是一个简单的翻译和国际化包。它依赖于 Zend/I18n,这是一个支持所有主流格式并包括复数翻译和文本域等流行功能的完整翻译套件。

此包符合 PSR-2 代码标准和 PSR-4 自动加载标准。它还遵循 语义版本 2.0.0 规范。

安装

通过 Composer

$ composer require slick/i18n

使用方法

消息文件

创建消息文件

/**
 * pt_PT messages file
 */

return [
    '' => array(
            'plural_forms' => 'nplurals=2; plural=n!=1;'
        ),
    'Hello world' => 'Olá mundo',
    'User' => ['Utilizador', 'Utilizadores'],
    'Users' => ''
];

将此文件保存到 ./i18n/pt_PT/messages.php

语言协商和设置

现在让我们获取我们的翻译器

use Slick\I18n\Language;
use Slick\I18n\Translation;
use Slick\I18n\Translator;

/**
 * Set locale based on the browser accept language
 */
$locale = 'en_US';
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    $locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
}

$translation = new Translation(new Language($locale), __DIR__.'/i18n');
$translator = new Translator($translation);

    
setlocale(LC_ALL, $locale);

上面的代码使用浏览器的语言来设置翻译器对象的区域设置。从现在开始,只需在您想要翻译的字符串上使用翻译方法。

消息翻译

echo $translator->translate('Hello world');  // will output 'Olá mundo' 

复数翻译

echo $translator->translatePlural('User', 'Users', 2);  // will output 'Utilizadores' 

在您的类中使用

您可以通过使用 TranslateMethods 特性和注入翻译器来为您的类添加翻译功能。

use Slick\I18n\TranslateMethods;
use Slick\I18n\TranslationCapableInterface;
use Slick\I18n\TranslatotInterface;

class MyClass implements TranslationCapableInterface
{

    use TranslateMethods;

    public function __construct(TranslatotInterface $translator)
    {
        $this->tranlator = $translator;
    }  
    
    public function getUsers()
    {
        return $this->translatePlural('User', 'Users', $this->getUserCount());
    }
}
 

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅 CONTRIBUTINGCODE_OF_CONDUCT

安全性

如果您发现任何与安全性相关的问题,请通过电子邮件 slick.framework@gmail.com 而不是使用问题跟踪器。

致谢

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件