lucasweb/translations

此包为Symfony添加了额外的命令,以便轻松管理翻译。支持使用Yandex Translate API进行自动翻译。

1.0.4 2018-02-03 17:57 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:55:14 UTC


README

Symfony License Stable Stable

knpbundles.com

为Symfony框架提供额外开发者工具的包

此包为Symfony添加了额外的命令,以便轻松管理翻译。支持使用Yandex Translate API进行自动翻译。

  • 添加新的翻译消息
  • 编辑翻译消息
  • 在翻译文件中搜索
  • 删除翻译消息
  • 从翻译消息获取信息
  • 检查翻译文件
  • 同步翻译文件
  • 创建翻译文件
  • 导入翻译文件
  • 使用Yandex Translate API进行自动翻译

为什么创建此包?

坦白说,我讨厌在我正在编写Twig模板或控制器时需要更改标签页来创建新消息。

最初的想法是创建一个命令,以简单的方式创建新消息,但我也需要其他功能,所以我添加了它们。

我目前正在改进此包,并每天都在扩展其功能。

如果您发现了错误,请创建一个问题 !!

希望您觉得它很有用!

要求

文档

安装

composer require lucasweb/translations

配置

此包只需此配置即可开始工作

translations_extra:
    default_format: 'xml' 
    default_locale: 'es'
    other_locales: ['en,'fr']
    domains: ['messages','validators']
    main_folder: '%kernel.project_dir%/translations/'
    yandex_api_key: 'trnsl.1.1.4e434e....'
  • default_format (字符串,必需) : 此包创建新文件时默认使用的格式。有效值是 'xml'、'yaml' 和 'php'。
  • default_locale (字符串,必需) : 您symfony项目的默认区域设置。(例如,'en' 或 'fr')
  • other_locales (数组,必需) : 包含项目中使用的其他区域设置的数组(例如,['en'、'fr']。如果您只想为此默认区域设置使用此包,则此配置是必需的,但可以是一个空数组。此配置是必需的,但可以是一个空数组,如果没有其他区域设置。)
  • domains (数组,必需) : 包含此包可访问的域名的数组。"messages" 和 "validators" 是Symfony中的默认域名。
  • main_folder (字符串,必需) : 存储翻译文件的根文件夹。
  • yandex_api_key (字符串,可选) : 从此处 获取的Yandex Translate API密钥。如果配置了,则将激活Yandex翻译。

如何使用此包

添加新的翻译消息

此命令会在文件存在的情况下,将新消息添加到域名的所有区域设置中。

 php bin/console trans:add domainname

示例

php bin/console trans:add messages

TRANS:ADD => INFO : Starting Add Process ...
TRANS:ADD => QUESTION : Please, enter unique ID for the new message : label.name
TRANS:ADD => INFO : The ID you have entered is valid!
TRANS:ADD => QUESTION : Please, enter value for ID="label.name" in file "messages.es.xliff" : Nombre
TRANS:ADD => QUESTION : Please, enter value for ID="label.name" in file "messages.en.xliff" (Yandex Translation: Name ) : Name
TRANS:ADD => QUESTION : Please, enter value for ID="label.name" in file "messages.fr.xliff" (Yandex Translation: Nom ) : Nom
TRANS:ADD => SUCCESS : Translation message created!

搜索

在域名的所有翻译文件中搜索字符串。

 php bin/console trans:search "searchterm" domainname

示例

php bin/console trans:search "Nombre" messages

TRANS:SEARCH => INFO : Starting Search Process ...

+--------+-------------------+------------------+-------------------+
| Locale | File              | ID               | Value             |
+--------+-------------------+------------------+-------------------+
| es     | messages.es.xliff | label.name       | Nombre            |
| es     | messages.es.xliff | profile.username | Nombre de usuario |
+--------+-------------------+------------------+-------------------+

编辑翻译消息

此命令会在文件存在的情况下,编辑域名的所有区域设置中的ID。

 php bin/console trans:edit ID domainname

示例

php bin/console trans:edit label.name messages

TRANS:EDIT => INFO : Starting Edit Process ...
TRANS:EDIT => INFO : ID="label.name" found in file "messages.es.xliff".
TRANS:EDIT => QUESTION : New value for ID=label.name in default file messages.es.xliff (Current="Nombre") : Nombre completo
TRANS:EDIT => INFO : ID="label.name" found in file "messages.en.xliff".
TRANS:EDIT => QUESTION : New value for ID=label.name in file messages.en.xliff (Current="Name") (Yandex Translation: Full name ) : Full name
TRANS:EDIT => INFO : ID="label.name" found in file "messages.fr.xliff".
TRANS:EDIT => QUESTION : New value for ID=label.name in file messages.fr.xliff (Current="Nom") (Yandex Translation: Nom complet ) : Nom complet
TRANS:EDIT => SUCCESS : Translation message edited and saved!

删除翻译消息

此命令会在文件存在的情况下,从域名的所有区域设置中删除ID,即使它在项目中正在使用。

 php bin/console trans:edit ID domainname

示例

php bin/console trans:remove label.name messages

TRANS:REMOVE => INFO : Starting Remove Process ...
TRANS:REMOVE => INFO : ID="label.name" found in default file "messages.es.xliff".
TRANS:REMOVE => WARNING : Translation ID="label.name" will be deleted from default file "messages.es.xliff", even if it is being used in the project. Continue? (y/n) : y
TRANS:REMOVE => SUCCESS : Translation message ID="label.name" removed from default file "messages.es.xliff"!
TRANS:REMOVE => INFO : ID="label.name" found in file "messages.en.xliff".
TRANS:REMOVE => WARNING : Translation ID="label.name" will be deleted from file "messages.en.xliff", even if it is being used in the project. Continue? (y/n) : y
TRANS:REMOVE => SUCCESS : Translation message ID="label.name" removed from file "messages.en.xliff"!
TRANS:REMOVE => INFO : ID="label.name" found in file "messages.fr.xliff".
TRANS:REMOVE => WARNING : Translation ID="label.name" will be deleted from file "messages.fr.xliff", even if it is being used in the project. Continue? (y/n) : y
TRANS:REMOVE => SUCCESS : Translation message ID="label.name" removed from file "messages.fr.xliff"!

从翻译消息获取信息

此命令会显示ID的所有区域设置翻译。

 php bin/console trans:info ID domainname

示例

php bin/console trans:info label.name messages

TRANS:INFO => INFO : Starting Info Process ...

+--------+-------------------+------------+--------+
| Locale | File              | ID         | Value  |
+--------+-------------------+------------+--------+
| es     | messages.es.xliff | label.name | Nombre |
+--------+-------------------+------------+--------+
| en     | messages.en.yml   | label.name | Name   |
+--------+-------------------+------------+--------+
| fr     | messages.fr.xliff | Not found! |        |
+--------+-------------------+------------+--------+

TRANS:INFO => SUCCESS : Translation message info shown!

检查翻译文件

检查域名应存在的区域文件,并报告问题。

 php bin/console trans:check domainname

示例

php bin/console trans:remove label.name messages

TRANS:CHECK => INFO : Starting Check Process ...

+--------+-------------------+--------+----------+--------------------------------------------------------------------------------------------+
| Locale | File              | Format | Messages | Status                                                                                     |
+--------+-------------------+--------+----------+--------------------------------------------------------------------------------------------+
| es     | messages.es.xliff | xml    | 9        | Ok!                                                                                        |
+--------+-------------------+--------+----------+--------------------------------------------------------------------------------------------+
| en     | messages.en.xliff | xml    | 8        | Different quantity of messages than default locale, Run "trans:sync messages" to solve it! |
+--------+-------------------+--------+----------+--------------------------------------------------------------------------------------------+
| fr     | messages.fr.???   | ???    | 0        | File not found, Run "trans:create messages" to solve it!                                   |
+--------+-------------------+--------+----------+--------------------------------------------------------------------------------------------+

TRANS:CHECK => SUCCESS : Check process finished!

同步翻译文件

此命令会检查域名的所有翻译文件是否有相同数量的消息,并在发现某些缺失翻译时,提供创建缺失翻译消息的新消息的选项,或者从找到该消息的文件中删除该消息。

 php bin/console trans:sync domainname

示例

php bin/console trans:sync messages

TRANS:SYNC => INFO : Starting Sync Process ...
TRANS:SYNC => INFO : Comparing messages.es.xliff -> messages.en.xliff
TRANS:SYNC => INFO : ID="menu.login" with value "Inicio de sesión" is in default file messages.es.xliff but not in messages.en.xliff. Create(1) or Delete(2) : 1
TRANS:SYNC => QUESTION : Value for messages.en.xliff (Yandex Translation: Login ) : Login
TRANS:SYNC => INFO : ID="menu.login"" created in messages.en.xliff!
TRANS:SYNC => INFO : Comparing messages.en.xliff -> messages.es.xliff
TRANS:SYNC => INFO : ID="profile.username" with target "Username" is in messages.en.xliff but not in default file messages.es.xliff. Create(1) or Delete(2) : 1
TRANS:SYNC => QUESTION: Value for default file messages.es.xliff (Yandex Translation: Nombre de usuario ) : Nombre de usuario
TRANS:SYNC => INFO : ID=profile.username created in default file messages.es.xliff
TRANS:SYNC => SUCCESS : Process finished!
TRANS:SYNC => INFO : Comparing messages.es.xliff -> messages.fr.xliff
TRANS:SYNC => INFO : ID="menu.home" with value "Inicio" is in default file messages.es.xliff but not in messages.fr.xliff. Create(1) or Delete(2) : 1
TRANS:SYNC => QUESTION : Value for messages.fr.xliff (Yandex Translation: Démarrer ) :
TRANS:SYNC => INFO : ID="menu.home"" created in messages.fr.xliff!
TRANS:SYNC => INFO : ID="profile.username" with value "Nombre de usuario" is in default file messages.es.xliff but not in messages.fr.xliff. Create(1) or Delete(2) : 1
TRANS:SYNC => QUESTION : Value for messages.fr.xliff (Yandex Translation: Nom d'utilisateur ) : Nom d'utilisateur
TRANS:SYNC => INFO : ID="profile.username"" created in messages.fr.xliff!
TRANS:SYNC => INFO : Comparing messages.fr.xliff -> messages.es.xliff
TRANS:SYNC => SUCCESS : Process finished!

创建翻译文件

此命令会检查根据配置的区域设置和域名必须存在的所有文件的存在性,并允许您创建空文件和默认区域设置的副本。

 php bin/console trans:create domainname

示例

php bin/console trans:create messages

TRANS:CREATE => INFO : Starting Create Process ...
TRANS:CREATE => INFO : Default File "messages.es.xliff" exists!
TRANS:CREATE => QUESTION : File for domain "messages" and locale "en" not found!
  [0] Skip
  [1] Create new empty file
  [2] Create a clon of default file
  [3] Create a clon of default file and translate it with Yandex Translate API
 > 3
TRANS:CREATE => SUCCESS : File "messages.en.xliff" with Yandex Translation from default file create!
TRANS:CREATE => INFO : File "messages.fr.xliff" exists!

导入翻译文件

在Symfony中,您可以从主文件夹中覆盖包的翻译消息。此命令检查路径或Composer安装的包中的翻译文件,针对域中的区域设置导入它们,然后在主文件夹中轻松修改它们。

 php bin/console trans:import bundle/package domainname 

示例 在此示例中,该命令根据配置的区域设置和默认格式将Vich Uploader翻译文件导入我们的主文件夹,格式为默认格式。不需要的文件将不会导入。

php bin/console trans:import Vich\Uploader-Bundle VichUploaderBundle

TRANS:IMPORT => INFO : Starting Import Process ...
TRANS:IMPORT => INFO : Folder "Vich\Uploader-Bundle" found !!.
TRANS:IMPORT => INFO : File "VichUploaderBundle.es.yml" located in folder "C:\xampp\htdocs\symfny4\src/../vendor/vich\uploader-bundle/Resources/Translations"!
TRANS:IMPORT => QUESTION : Import this translation file content (y/n) : y
TRANS:IMPORT => SUCCESS : File "VichUploaderBundle.es.xliff" created with imported data.
TRANS:IMPORT => INFO : File "VichUploaderBundle.en.yml" located in folder "C:\xampp\htdocs\symfny4\src/../vendor/vich\uploader-bundle/Resources/Translations"!
TRANS:IMPORT => QUESTION : Import this translation file content (y/n) : y
TRANS:IMPORT => SUCCESS : File "VichUploaderBundle.en.xliff" created with imported data.
TRANS:IMPORT => INFO : File "VichUploaderBundle.fr.yml" located in folder "C:\xampp\htdocs\symfny4\src/../vendor/vich\uploader-bundle/Resources/Translations"!
TRANS:IMPORT => QUESTION : Import this translation file content (y/n) : y
TRANS:IMPORT => SUCCESS : File "VichUploaderBundle.fr.xliff" created with imported data.
TRANS:IMPORT => INFO : Process finished!
TRANS:IMPORT => IMPORTANT : Remember to add "VichUploaderBundle" domain to configuration or this files will be ignored by this Bundle.

您也可以从任何文件夹导入文件。以下命令与上一个示例的作用相同

php bin/console trans:import C:\xampp\htdocs\symfny4\vendor\vich\uploader-bundle\Resources\Translations VichUploaderBundle

许可证

此包采用MIT许可证。请参阅包中的完整许可证。

报告问题或功能请求

问题和功能请求在Github问题跟踪器中进行跟踪。