devture/symfony-translation-bundle

Symfony 扩展包,允许 .json 文件在多种语言之间进行翻译。

安装: 793

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 0

开放问题: 0

类型:symfony-bundle

2.4.2 2024-01-10 09:11 UTC

This package is auto-updated.

Last update: 2024-09-10 10:27:40 UTC


README

用于管理实际 Web 应用程序内 Symfony 扩展包翻译文件的 Web UI。

这是与同名 Silex 扩展包的移植版本: devture/silex-translation-bundle

在给定的基础目录列表中查找所有源语言文件(例如: messages.en.jsonanother-domain.en.json),并允许这些文件翻译为所有指定的语言。

每当保存翻译时,都会为每个区域生成并保存一个 {translationDomain}.{targetLanguage}.json 文件,并将其保存在 {translationDomain}{sourceLanguage}.json 旁边。

同样,也会在同一个目录下保存一个 {translationDomain}{targetLanguage}.hash.json 文件。它包含“提示”信息,告诉翻译系统某个翻译是从哪个源翻译字符串派生出来的。这样,如果源翻译字符串发生变化,翻译可以被视为过时。在这种情况下,过时的翻译在 Web UI 中会自动标记为未翻译(也就是说,它们不会标记为“已翻译但过时”,而是简单地标记为“未翻译”)。

安装

通过 composer 安装(composer require --dev devture/symfony-translation-bundle)。

添加到 config/bundles.php

Devture\Bundle\TranslationBundle\DevtureTranslationBundle::class => ['dev' => true],

权限

由于翻译系统需要在项目中保存翻译文件,我们需要授予 Web 服务器用户的文件写入权限。

示例

$ find /srv/http/my-project/src -type d -name translations | xargs chown :http
$ find /srv/http/my-project/src -type d -name translations | xargs chmod g+w

配置

您可能只想在开发(dev)环境中激活此扩展包。因此,您可以在 config/packages/dev/devture_translation.yaml 中放置以下路由配置

devture_translation:
    source_language_locale_key: en
    paths_to_translate:
        - "%kernel.project_dir%/src"
        - "%kernel.project_dir%/translations"
    locales:
        - {"key": "en", "name": "English"}
        - {"key": "ja", "name": "Japanese"}
    twig_layout_path: "base.html.twig"

locales 需要包含翻译系统应激活的所有语言(包括源语言)。

paths_to_translate 中可以指定多个路径。每个路径都会扫描匹配以下模式的文件:*/translations/<some translation domain>.<source_language_locale_key>.json

twig_layout_path 是您的布局文件路径,其中将包含翻译系统。唯一的要求是它定义了一个 content 块。翻译系统将在其中渲染。

示例布局文件

<!doctype html>
<html>
	<body>
		<h1>Website</h1>
		{% block content %}{% endblock %}
	</body>
</html>

路由示例

您可能只想在开发(dev)环境中激活此扩展包。因此,您可以在 config/routes/dev/DevtureTranslationBundle.yaml 中放置以下路由配置

DevtureTranslationBundleWebsite:
    prefix: /{_locale}/translation
    resource: "@DevtureTranslationBundle/Resources/config/routes/website.yaml"
    requirements:
        _locale: "en|ja"

Web UI 可在 devture_translation.manage 路由中访问。

样式

此扩展包依赖于 Bootstrap v4 进行样式。除非您安装并包含它(在您的 twig_layout_path 模板中的某个位置),否则事物看起来会很丑。

此外,您还可以通过在布局或 CSS 文件中包含每个语言的标志图标来使页面看起来更漂亮。

<style>
	.devture-translation-flag {
		border: 1px solid #dbdbdb;
		width: 20px;
		height: 13px;
		display: inline-block;
		vertical-align: text-top;
	}
	.devture-translation-flag.en {
		background: url('/images/flag/en_US.png') no-repeat;
	}
	.devture-translation-flag..ja {
		background: url('/images/flag/ja_JP.png') no-repeat;
	}
</style>