lehadnk / translation-merge-tool
此包的最新版本(1.6.4)没有提供许可证信息。
用于生成和合并翻译文件的工具。
1.6.4
2024-06-06 15:54 UTC
Requires
- php: ^8.1
- ext-json: *
- ext-mbstring: *
- ext-readline: *
- gettext/gettext: ^4.6
- guzzlehttp/guzzle: ~7.8
- json-mapper/json-mapper: ^2.16
- splitbrain/php-cli: ^1.1
Requires (Dev)
- phpunit/phpunit: ^8
- dev-master
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.19
- 1.1.18
- 1.1.17
- 1.1.16
- 1.1.15
- 1.1.13
- 1.1.12
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-feature/java-annotations
This package is not auto-updated.
Last update: 2024-09-26 17:26:40 UTC
README
i18n_mrg 是一个辅助工具,用于扫描您的项目代码库中的翻译字符串,并与名为 Weblate 的流行翻译工具同步翻译,以及反向同步。
安装
您需要安装以下软件以安装翻译合并工具
- PHP >= 7.0
- Composer 包管理器
- GNU Gettext 包(已在 macOS 和大多数 Linux 发行版中安装)
- NodeJS >= 6.0(用于 JS 项目)
- i18next 转换器(如果您在 js 项目中使用 i18next)
您需要 php>=8.1 来运行此软件。此外,您还需要有一个 PHP 包管理器(composer),您可以在这里获取它。
运行以下命令来安装工具
composer global require lehadnk/translation-merge-tool
运行工具
在您的项目根目录下运行以下命令
i18n_mrg
项目设置
首先,您需要准备您的代码库以与 i18n_mrg 一起工作
- 将您的项目配置为使用翻译文件。我们建议您使用 GNU gettext 格式,但 i18n_mrg 也可以编译 JSON 文件,如果您更喜欢,这更适合 Web 应用程序。您需要在项目中设置一个目录,并将您的翻译文件存储在其中,每个子文件夹命名为您打算使用的语言代码。例如文件树结构
/i18n/en_GB/messages.po
/i18n/de_DE/messages.po
/i18n/zh_CN/messages.po
- 使用名为
__()
的包装函数来标记您的翻译字符串。实现该函数以从存储中返回相应的字符串,例如
public class i18nService { private static <LocaleEnum, HashMap<String, String>> translationStrings; public static String __(string text, HashMap<String, String> placeholders) { var translatedString = i18nService.translationStrings.get("de_DE").get(text); StrSubstitutor sub = new StrSubstitutor(placeholders, "%", "%"); return sub.replace(translatedString); } }
import static i18n.I18nFacade.__; public class ScoreHandler { public UserResponse getScore() { var placeholders = new HashMap<String, String>(); placeholders.put("score", 16); var response = new UserResponse(); response.message = __("You have %score% points", placeholders); // Sie haben 16 Punkte return response; } }
- 将
.translate-config.json
添加到您的项目根目录。文件的示例内容
{
"configVersion": "1.3.0",
"components": [
{
"name": "default",
"includePaths": [
"app/",
"resources/"
],
"excludePaths": [],
"translationFileName": "resources/lang/i18n/{localeName}/LC_MESSAGES/default.po",
"weblateProjectSlug": "crm",
"weblateComponentSlug": "main"
}
],
"vcs": "bitbucket",
"bitbucketUsername": "bitbucket@user.com",
"bitbucketPassword": "password",
"vcsRepository": "company/crm-project",
"vcsAuthToken": "token",
"translationBranchName": "translation",
"weblateServiceUrl": "http://weblate.service.com",
"weblateAuthToken": "token"
}
- 接下来,在您的仓库中定义翻译分支。通常,您希望它只由翻译工具(i18n_mrg 和 Weblate)管理,永远不要触摸它:
git checkout -b translations && git push --set-upstream origin translations
- 设置 Weblate 平台并定义您的项目的 组件。
- 现在运行
i18n_mrg
以扫描您的项目中的翻译字符串,并将其最初上传到 Weblate。i18n_mrg 将解析您的代码库中的每个由 __() 装饰器包装的字符串,并将其添加到翻译文件中,并自动从 Weblate 拉取更新。
开发者工作流程
对于与您的项目一起使用 i18n_mrg
的开发者,我建议以下工作流程
- 当您即将完成包含翻译字符串的工作分支时,运行
i18n_mrg
并将新翻译字符串推送到 Weblate。 - 通知负责处理翻译的团队成员,Weblate 中已添加新字符串。
- 一旦完成翻译,再次运行
i18n_mrg
以从 Weblate 拉取翻译字符串并将其添加到分支中的更新翻译文件。
在大型团队中,您可能还希望将翻译文件编译作为 CI 循环的一部分。
更新工具
composer global update lehadnk/translation-merge-tool
处理授权令牌
要使用各种 VCS 提供商使用此工具,您必须设置授权。
Gitlab
- 使用您的配置文件设置 > 访问令牌来创建密钥。
- 您的密钥必须具有以下权限范围:api、read_repository、write_repository
- 将您的令牌导出到 I18N_MRG_GITLAB_AUTH_TOKEN 环境变量:
export I18N_MRG_GITLAB_AUTH_TOKEN=<token>
Github
- 转到设置 > 开发者设置 > 个人访问令牌
- 创建一个具有 repo 范围的令牌
- 将您的令牌导出到 I18N_MRG_GITHUB_AUTH_TOKEN 环境变量:
export I18N_MRG_GITHUB_AUTH_TOKEN=<token>
BitBucket
- 转到仓库设置
- 在“访问令牌”部分颁发具有读写权限的仓库访问令牌
- 将您的令牌放置在 I18N_MRG_BITBUCKET_AUTH_TOKEN 环境变量中:
export I18N_MRG_BITBUCKET_AUTH_TOKEN=<token>
如何添加到项目
首先,您需要在项目的根目录下创建一个.translate-config.json
配置文件。配置文件的示例内容
故障排除
一些使用 Brew 安装 gettext 工具的 Mac 用户报告说他们遇到了问题。解除链接并重新链接它可以解决问题
brew unlink gettext && brew link gettext