fdevs/locale

支持不同语言的库

3.0.0 2016-02-05 11:22 UTC

This package is auto-updated.

Last update: 2024-08-28 17:33:49 UTC


README

Build Status

SensioLabsInsight

文档

安装和使用

安装和使用是快速的

  1. 使用composer下载Locale
  2. 使用库
  3. 自定义数据提供者

您可以使用 "fdevs/locale-bridge" 与其他库/组件一起使用

步骤 1: 使用composer下载Locale库

运行以下命令下载包

$ php composer.phar require fdevs/locale

Composer会将包安装到您的项目vendor/fdevs目录下。

步骤 2: 使用库

####基本设置

<?php

require DIR . '/../vendor/autoload.php';

use FDevs\Locale\Model\LocaleText;
use FDevs\Locale\Translator;

// The same text in different languages
$englishText = new LocaleText('I am a programmer', 'en');
$chineseText = new LocaleText('我是程序员', 'zh');
$russianText = new LocaleText('Я программист', 'ru');

$supportedTexts = [
    $englishText,
    $russianText,
    $chineseText,
];

$trans = new Translator();

####设置当前区域

$trans->setLocale('zh');

####获取当前区域的文本

// 1. Get text for current locale - ch (Chinese)
$text = $trans->trans($supportedTexts);
echo $text?$text->getText():'';
// Output: "我是程序员"

####获取区域 - ru 的文本

$text = $trans->trans($supportedTexts, 'ru');
echo $text?$text->getText():'';
// Output: "Я программист"

####获取我们未翻译的区域文本

$text = $trans->trans($supportedTexts, 'kk');
echo $text?$text->getText():'';
// Output: ""

####使用一组优先区域获取文本:这里可以将它视为区域回退,列表中找到的第一个区域将被选择。

use FDevs\Locale\Model\PriorityLocale;
use FDevs\Locale\TranslatorPriority;

$priorityLocale = [
    new PriorityLocale('uk',['en','ru']),
    new PriorityLocale('en',['uk']),
    new PriorityLocale('fa',['zh','en']),
];

$trans = new TranslatorPriority('en',$priorityLocale);
$text = $trans->trans($supportedTexts, 'uk');
echo $text?$text->getText():'';
// Output: "I am programmer"

步骤 3: 自定义数据提供者

创建您出色的提供者

use FDevs\Locale\DataProvider\DataProviderInterface;

class MyProvider implements DataProviderInterface
{
//implement interface
}

添加您的提供者

use FDevs\Locale\DataProvider\DataProviderRegistry;
use FDevs\Locale\Translator;
use FDevs\Locale\TranslatorPriority;

$registry = new DataProviderRegistry([new MyProvider()]);
$translator = new Translator('en',$registry);
//or
$translator = new TranslatorPriority('en', $priorityLocale, $registry);

许可证

此库受MIT许可证的约束。在库中查看完整的许可证。

LICENSE

报告问题或功能请求

问题和功能请求在Github问题跟踪器中跟踪。