nyrados / translator
此包的最新版本(0.2.1)没有可用的许可信息。
网页本地化翻译API
0.2.1
2020-10-29 13:46 UTC
Requires
- php: ^7.2
- psr/container: ^1.0
- psr/simple-cache: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.2
This package is auto-updated.
Last update: 2024-09-29 05:48:53 UTC
README
用于本地化Web应用程序的翻译API
一般设置
在此示例中,我们将创建一个Nyrados\Translator\TranslatorApi
的实例,并设置示例语言偏好。翻译API将按照以下顺序查找翻译,包括父语言(en-en
是en-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));