becklyn/translations

一个提取翻译的包

1.3.0 2022-02-17 14:39 UTC

This package is auto-updated.

Last update: 2024-09-17 20:45:23 UTC


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 还可以处理具有自定义类和包含图标的链接。