delfimov/translate

多语言网站易用 i18n 翻译 PHP 类

v2.6.0 2019-02-13 12:48 UTC

This package is auto-updated.

Last update: 2024-09-11 22:03:20 UTC


README

Latest Stable Version Build Status StyleCI SensioLabsInsight License

Translate

带语言自动检测和复数的多语言网站易用 i18n 翻译 PHP 类。

PSR-6 翻译容器。PSR-3 日志记录器。

要求

如何安装

将此行添加到您的 composer.json 文件中

"delfimov/translate": "~2.0"

或者

composer require delfimov/translate

或者,将 Translate 文件夹的内容复制到您的项目目录之一,并执行 require 'src/Translate.php';require 'src/Loader/LoaderInterface.php';require 'src/Loader/PhpFilesLoader.php';。如果您不熟悉 git 或只想获得 tarball,请点击 GitHub 页面顶部的 'zip' 按钮。

简单示例

源代码请参见 example 目录。

example\example.php

<pre><?php

use DElfimov\Translate\Translate;
use DElfimov\Translate\Loader\PhpFilesLoader;
use Monolog\Logger; // PSR-3 logger, not required  
use Monolog\Handler\StreamHandler;

$log = new Logger('Translate');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));

$t = new Translate(
    new PhpFilesLoader(__DIR__ . "/messages"),
    [
        "default" => "en",
        "available" => ["en", "ru"],
    ],
    $log // optional
);

$num = rand(0, 100);

$t->setLanguage("en"); // this is not required, language will be auto detected with Accept-Language HTTP header
echo $t->t('some string') . "\n\n"; // or $t('some string');
echo $t->plural('%d liters', $num) . "\n\n";
echo $t->plural("The %s contains %d monkeys", $num, ['tree', $num]) . "\n\n";

$num = rand(0, 100);

$t->setLanguage("ru");
echo $t->t('some string')."\n\n"; // or $t('some string');
echo $t->plural('%d liters', $num) . "\n\n";
echo $t->plural("The %s contains %d monkeys", $num, ['tree', $num]) . "\n\n";

?></pre>

example\messages\en\messages.php

<?php
return [
    'some string' => 'Some string',
    '%d liters' => ['%d liter', '%d liters'],
    '%d liters alt' => '%d liter|%d liters',
    'The %s contains %d monkeys' => ['The %s contains %d monkey', 'The %s contains %d monkeys'],
    'The %s contains %d monkeys alt' => 'The %s contains %d monkey|The %s contains %d monkeys',
];

example\messages\ru\messages.php

<?php
return [
    'some string' => 'Просто строка',
    '%d liters' => '%d литр|%d литра|%d литров',
    'The %s contains %d monkeys' => ['На %s сидит %d обезьяна', 'На %s сидят %d обезьяны', 'На %s сидят %d обезьян'],
    'The %s contains %d monkeys alt' => 'На %s сидит %d обезьяна|На %s сидят %d обезьяны|На %s сидят %d обезьян',
    'tree' => 'дереве'
];

待办事项

  • 更好的代码覆盖率