nyrados/translator

此包的最新版本(0.2.1)没有可用的许可信息。

网页本地化翻译API

安装: 293

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

类型:

0.2.1 2020-10-29 13:46 UTC

This package is auto-updated.

Last update: 2024-09-29 05:48:53 UTC


README

用于本地化Web应用程序的翻译API

一般设置

在此示例中,我们将创建一个Nyrados\Translator\TranslatorApi的实例,并设置示例语言偏好。翻译API将按照以下顺序查找翻译,包括父语言(en-enen-us的父语言)。在此上下文中,它将首先查找奥地利德语,然后是常规德语,然后是美国英语,最后是英国英语。

提供者是Nyrados\Translator\Provider\ProviderInterface的实例,它为语言字符串和给定语言提供翻译。

<?php

use Nyrados\Translator\TranslatorApi;
use Nyrados\Translator\Provider\ArrayProvider;

require "./vendor/autoload.php";

$provider = new ArrayProvider();
$provider->set('en', [
    'greet' => 'Hello {name}!',
    'article_header' => 'A meaningful title',
    'article' => 'A very interesting article',
]);
$provider->set('de', [
    'greet' => 'Hallo {name}!',
    'article_header' => 'Eine aussagekräftige Überschrift',
]);

$t = new Translator();
$t->addProvider($provider);
$t->setPreferences(['de-at', 'en-us']);

翻译单个翻译

用法

<?php

//Output: Hallo John!
$t->translate('greet', ['name' => 'John!']);

翻译多个翻译

有时建议即使可能进行翻译,也保留页面特定区域的语言(例如,表单、导航栏、页脚)。在此示例中,对于article_header可用德语翻译,但未使用它以保持相同的语言。

示例

<?php

$trans = $t->translate([
    'article_header', 
    'article'
    //with context: 'article' => ["context" => "value"]
]);

//Output: <h1>A meaningful title</h1><hr>
echo "<h1>" . $trans . "</h1><hr>";

//Output: <p>A very interesting article</p>
echo "<p>" . $trans . "</p>";

如果您向translate()传递一个数组,它将返回一个Nyrados\Translator\Translation\TranslationSection的实例,该实例是一个可调用的迭代器,您可以使用特定上下文调用它。

用法

<?php
$trans->rewind();
echo $trans->current()($context);

$trans->next();
echo $trans->current()($context);

使用以下推荐的方法作为快捷方式会更简单,它将返回当前并调用next()。

用法

<?php

echo $trans->get($context);
echo $trans($context) // via __invoke()
echo (string) $trans; // via __toString()

通过Accept-Language头设置偏好

用法

<?php
// Set from $_SERVER['HTTP_ACCEPT_LANGUAGE']
$t->setPreferences(Helper::preferencesFromAcceptLanguage());

// Set from a Psr\Http\Message\ServerRequestInterface instance
$t->setPreferences(Helper::preferencesFromAcceptLanguage($request));