charcoal / translator
Charcoal 服务提供者,用于翻译消息和本地化管理。
Requires
- php: ^7.4 || ^8.0
- charcoal/config: ^5.0
- pimple/pimple: ^3.0
- symfony/translation: ^3.4
Requires (Dev)
- charcoal/admin: ^5.0
- charcoal/app: ^5.0
- mockery/mockery: ^1.0
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
Suggests
- charcoal/app: To run the parser script.
Replaces
- dev-main / 5.x-dev
- v5.0.0
- v4.1.0
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.2
- v4.0.1
- v4.0.0
- v3.1.8
- v3.1.7
- v3.1.6
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.2
- 0.3.7.1
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3
- 0.2
- 0.1.10.1
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1
- dev-release/0.1
- dev-mcaskill-patch-6
- dev-dom-browser-language-detection
- dev-mcaskill-patch-scripts
- dev-mcaskill-patch-5
This package is auto-updated.
Last update: 2024-09-13 16:05:59 UTC
README
Transator 包提供工具,以支持多语言数据并集成为 Symfony 翻译组件,来实现 Web 应用的国际化。
安装
composer require charcoal/translator
对于 Charcoal 项目,可以在配置文件中注册服务提供者
{ "service_providers": { "charcoal/translator/service-provider/translator": {} } }
概述
功能
翻译对象
Charcoal\Translator\Translation
翻译对象 存储特定字符串在所有可用语言/区域设置中的翻译数据。
// Get a translation object from the Translator $translation = $container['translator']->translation([ 'en' => 'Hello World', 'fr' => 'Bonjour' ]); // If cast to string, the default language will be used. echo $translation; // Use ArrayAccess to get (or set) a translated value. echo $translation['fr']; $translation['fr'] => 'Bonjour le monde'; // To loop through all translations: foreach ($translation->data() as $lang => $translatedValue) { // ... }
翻译服务
Charcoal\Translator\Translator
Charcoal 的 翻译器 扩展了 Symfony 的 Translator
,并提供了两种新的翻译方法(translation($val)
和 translator($val)
),它们都可以接受混合参数,以返回 Translation 对象(在 translation()
的情况下)或字符串(在 translate($val)
的情况下)。
区域设置管理器
Charcoal\Translator\LocalesManager
区域设置管理器 用于管理可用区域设置/语言并跟踪当前语言。
解析脚本
Charcoal\Translator\Script\TranslationParserScript
解析脚本 用于抓取包含可翻译内容的文件。将以下路由添加到您的应用程序配置中
"scripts": { "charcoal/translator/parse": { "ident": "charcoal/translator/script/translation-parser" } }
服务提供者
TranslatorServiceProvider
提供将应用程序翻译成不同语言所需的服务和选项。
参数
- locales/config:定义可用语言、回退和默认值的配置对象。
- locales/default-language:应用程序的默认语言,可选地是浏览器的首选语言。
- locales/browser-language:浏览器接受的语言。
- locales/fallback-languages:翻译器的回退语言代码列表。
- locales/available-languages:从可用区域设置中的语言代码列表。
- locales/languages:应用程序的可用语言结构列表。
- translator/config:翻译服务、消息目录和目录加载器的配置对象。
- translator/translations:按域和区域设置分组的其他翻译字典。
服务
- locales/manager:一个
LocalesManager
的实例,用于处理可用语言、它们的定义、默认语言以及跟踪当前语言。 - translator:一个用于翻译的
Translator
的实例。 - translator/message-selector:一个
Symfony\Component\Translation\MessageSelector
的实例。 - translator/loader/*:翻译
Symfony\Component\Translation\Loader\LoaderInterface
的实例。
配置
以下是一个配置示例
"locales": { "languages": { "de": {}, "en": {}, "es": { "active": false }, "fr": {} }, "default_language": "fr", "fallback_languages": [ "en", "fr" ], "auto_detect": true }, "translator": { "loaders": [ "xliff", "json", "php" ], "paths": [ "translations/", "vendor/charcoal/app/translations/" ], "debug": false, "cache_dir": "cache/translation/", "translations": { "messages": { "de": { "hello": "Hallo {{ name }}", "goodbye": "Auf Wiedersehen!" }, "en": { "hello": "Hello {{ name }}", "goodbye": "Goodbye!" }, "es": { "hello": "Hallo {{ name }}", "goodbye": "Adios!" }, "fr": { "hello": "Bonjour {{ name }}", "goodbye": "Au revoir!" } }, "admin": { "fr": { "Save": "Enregistrer" } } } }
中间件
LanguageMiddleware
可用于支持中间件的 PSR-7 应用程序。中间件使用 Accept-Language
HTTP 头、URI 路径、查询字符串或主机检测首选语言。
如果您正在使用 charcoal/app,您可以通过应用程序配置集添加中间件
"middlewares": { "charcoal/translator/middleware/language": { "active": true, "use_params": true, "param_key": "hl" } }
否则,例如使用 Slim
use Charcoal\Translator\Middleware\LanguageMiddleware; use Slim\App; $app = new App(); // Register middleware $app->add(new LanguageMiddleware([ 'default_language' => 'fr', 'use_params' => true, 'param_key' => 'hl', ]));
中间件提供了一套默认选项,可以单独覆盖。
辅助工具
TranslatorAwareTrait
Charcoal\Translator\TranslatorAwareTrait
TranslatorAwareTrait
被提供为便利,以避免重复/样板代码。它只是设置和获取一个 Translator
服务属性。
使用 setTranslator()
设置,使用 translator()
获取。这两个都是受保护的方法。(此特性没有公共接口。)
资源
- 贡献
- 在 报告问题 和 发送拉取请求 到 Charcoal 主仓库