becklyn / translations
一个提取翻译的包
1.3.0
2022-02-17 14:39 UTC
Requires
- php: >=7.4
- ext-json: *
- becklyn/cache: ^1.1.0
- becklyn/html-builder: ^2.2.0
- becklyn/icon-loader: ^2.2.0
- becklyn/rad: ^8.6.0
- symfony/config: ^5.4.3 || ^6.0.3
- symfony/dependency-injection: ^5.4.3 || ^6.0.3
- symfony/framework-bundle: ^5.4.3 || ^6.0.3
- symfony/http-kernel: ^5.4.4 || ^6.0.4
- symfony/process: ^5.4.3 || ^6.0.3
- symfony/translation: ^5.4.3 || ^6.0.3
- symfony/translation-contracts: ^1.1 || ^2.0 || ^3.0.0
- twig/twig: ^3.3.8
Requires (Dev)
- roave/security-advisories: dev-master
- symfony/phpunit-bridge: ^5.4.3 || ^6.0.3
README
此包提供了用于处理翻译的多个辅助工具。
安装
首先安装此包
composer require becklyn/translations
然后导入路由
_import.becklyn_translations: resource: '@BecklynTranslationsBundle/Resources/config/routes.yaml' prefix: /_v/translations/
配置
becklyn_translations: extract: frontend: messages: - test - abc.* backend: - *.error admin: messages: - admin.test.* cache_version: 1
extract
键定义了需要从哪些域提取哪些消息并导出到JavaScript。它是一个嵌套数组,第一级键是命名空间(下面会详细介绍)。第二级键是翻译域,值是消息键。您可以使用 *
作为消息键的占位符。
导出的JavaScript被缓存。如果缓存意外损坏,您可以通过增加 cache_version
来手动使缓存失效。
命名空间
翻译导出被分为命名空间,例如,可以有一个前端翻译的导出和一个后端翻译的导出。命名空间只是标签,它们被传递给初始化函数(见下一章)。
JS导出器 + 加载器
此包提供了一个端点,可用于在JS中加载翻译。在Twig中使用twig函数包含它
{{- javascript_translations_init(namespace) -}}
它将自动使用当前主请求的区域设置。要覆盖此行为,可以传递自定义区域设置
{{- javascript_translations_init(namespace, locale) -}}
使用翻译
导出的翻译将被添加到全局 window.TranslatorInit.data
对象中。这些是嵌套映射,外层映射以域为键,内层值是从键到翻译的映射。
链接翻译构建器
此包提供了一个 LinkedTranslationBuilder
,可以用来处理包含链接的翻译。它可以通过使用 LinkedTranslationBuilderFactory
来创建新实例。然后可以将使用过的链接列表添加到 LinkedTranslationBuilder
中。最后,LinkedTranslationBuilder
可以创建翻译所需的所有参数
$translator->trans("your.translation-key", $linkedTranslationBuilderFactory->create() ->link("beforeLink", "afterLink", $linkableInterface) ->link("beforeLinkTwo", "afterLinkTwo", $linkableInterfaceTwo) ->generateTranslationParameters() );
LinkedTranslationBuilder
还可以处理具有自定义类和包含图标的链接。