赵斯奇/laravel-localization-helpers

一款用于简化Laravel项目中翻译管理的 artisan 命令包


README

Latest Stable Version Latest Unstable Version Build Status Coverage Status Total Downloads Stories in Ready

这个分支是当前的开发分支

LLH 是一套 artisan 命令,用于管理 Laravel 项目的翻译。主要功能

  • 解析您的代码并生成语言文件
  • 自动翻译您的句子,得益于 Microsoft Translator API
  • 根据您的代码风格配置输出

目录

  1. 安装
  2. 配置
  3. 使用方法
  4. 支持
  5. 升级通知
  6. 变更日志
  7. 贡献

1. 安装

  • 根据版本兼容性矩阵选择您的版本
  • composer.json 文件的 require-dev 数组中添加以下行,并根据您的 Laravel 版本替换版本(如有需要)

    "potsky/laravel-localization-helpers" : "2.6.*"
  • 更新您的安装: composer update

  • 对于 Laravel,在 config/app.php 配置文件的 AppServiceProvider 数组中添加以下行

    Potsky\LaravelLocalizationHelpers\LaravelLocalizationHelpersServiceProvider::class,

    在 Laravel 5.5 中,如果您在生产环境中不使用此包,请禁用自动加载,并且仅在 localdev 上注册它

    • AppServiceProviderregister 方法中添加以下行

       public function register()
       {
       	if ($this->app->environment() === 'dev') { // or local or whatever
       		$this->app->register(\Potsky\LaravelLocalizationHelpers\LaravelLocalizationHelpersServiceProvider::class);
       	}
       }
    • 通过在 composer.json 文件中添加以下行来禁用自动注册提供者

       "extra" : {
       	"laravel" : {
       		"dont-discover" : [
       			"potsky/laravel-localization-helpers"
       		]
       	}
       }
  • 对于 Lumen,在 bootstrap/app.php 文件中添加以下行

     $app->register( Potsky\LaravelLocalizationHelpers\LaravelLocalizationHelpersServiceProvider::class );
     $app->configure('laravel-localization-helpers');
  • 现在执行 php artisan list,您应该能看到新的 localization 命令

    ...
    localization
    localization:clear          Remove lang backup files
    localization:find           Display all files where the argument is used as a lemma
    localization:missing        Parse all translations in app directory and build all lang files
    ...
    

在 Laravel 中,如果您需要在代码中管理翻译,可以在别名中添加 facade

'LocalizationHelpers' => Potsky\LaravelLocalizationHelpers\Facade\LocalizationHelpers::class

2. 配置

为了配置您的新安装包,请通过执行以下命令创建一个配置文件

php artisan vendor:publish

然后您可以在文件中修改配置

config/laravel-localization-helpers.php

添加新的文件夹以搜索,添加您自己的语言方法或函数,...

对于 Lumen,请手动将配置文件复制为 config/laravel-localization-helpers.php

备份文件

您不应该将备份语言文件包含在 GIT 或其他版本控制系统中。

在您的 laravel 文件夹中,在 .gitignore 文件中添加以下内容

# Do not include backup lang files
resources/lang/*/[a-zA-Z]*20[0-9][0-9][0-1][0-9][0-3][0-9]_[0-2][0-9][0-5][0-9][0-5][0-9].php

3. 使用方法

3.1 命令 localization:missing

此命令解析所有您的代码,并根据所有 lang/XXX/ 目录中的语言文件生成翻译。

使用 php artisan help localization:missing 获取有关选项的更多信息。

示例

生成所有语言文件
php artisan localization:missing
生成所有语言文件而不提示
php artisan localization:missing -n
生成所有语言文件而不备份旧文件
php artisan localization:missing -b
生成所有语言文件并自动翻译
php artisan localization:missing -t

您需要设置您的 Microsoft Bing Translator 凭据。更多信息请参阅:https://github.com/potsky/microsoft-translator-php-sdk#user-content-2-configuration

生成所有语言文件而不保留过时的词项
php artisan localization:missing -o
生成所有语言文件而不为新发现的词项添加任何注释
php artisan localization:missing -c
生成所有语言文件而不添加头部注释
php artisan localization:missing -d
生成所有语言文件并设置新的词项值

以下 3 个命令会产生相同的输出

php artisan localization:missing
php artisan localization:missing -l
php artisan localization:missing -l "TODO: %LEMMA"

您可以自定义未知词项的默认生成值。

以下命令让新值留空

php artisan localization:missing -l ""

以下命令在所有词项值前添加 "请翻译此:"

php artisan localization:missing -l "Please translate this : %LEMMA"

以下命令将所有词项值设置为 null,以提供所有缺失值的回退翻译。

php artisan localization:missing -l null

以下命令将所有词元值设置为 "请翻译此内容!"

php artisan localization:missing -l 'Please translate this !'
用于shell集成的静默选项
#!/bin/bash

php artisan localization:missing -s
if [ $? -eq 0 ]; then
echo "Nothing to do dude, GO for release"
else
echo "I will not release in production, lang files are not clean"
fi
模拟所有操作(不写入任何内容)进行干运行
php artisan localization:missing -r
在处理结束后打开所有必须编辑的文件
php artisan localization:missing -e

您可以在配置文件中编辑编辑器路径。默认情况下,在 Mac OS X 上编辑器为 Sublime Text

'editor_command_line' => '/Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl'

对于 PHPStormMac OS X

'editor_command_line' => '/usr/local/bin/phpstorm'

3.2 命令 localization:find

此命令将在您的所有代码中搜索作为词元的参数。

使用 php artisan help localization:find 获取有关选项的更多信息。

示例

查找常规词元
php artisan localization:find Search
以详细模式查找常规词元
php artisan localization:find -v Search
显示短路径查找常规词元
php artisan localization:find -s "Search me"
使用正则表达式查找词元
php artisan localization:find -s -r "@Search.*@"
php artisan localization:find -s -r "/.*me$/"

使用PCRE函数

3.3 命令 localization:clear

此命令将删除所有备份语言文件。

使用 php artisan help localization:clear 获取有关选项的更多信息。

示例

删除所有备份
php artisan localization:clear
删除7天以上的备份
php artisan localization:clear -d 7

4. 支持

使用 GitHub问题工具 打开问题或提出要求。

5. 升级通知

v2.x.5v2.x.6

  • PHPCSFixer 已更改。不再支持以前的修复程序。请查看包中的 配置文件 以检查新规则。

v2.x.4v2.x.5

  • 配置文件 中添加了参数 dot_notation_split_regex。请将其添加到您的配置文件中。

v2.x.1v2.x.2

  • 配置文件 中添加了参数 obsolete_array_key。请将其添加到您的配置文件中。

v1.x.xv2.x.x

  • 首先,您需要更新您的composer文件以设置正确的版本
  • 请查看包中的 配置文件 以添加您当前配置文件中不存在的参数。

6. 更新日志

v2.x.6

  • 变更:支持 Laravel 5.5
  • 变更:更新 PHPCSFixer,规则已更改!
  • 变更:翻译包已更新

v2.x.5

  • 新增:添加了 dot_notation_split_regex 以自动处理词元中的点(#59
  • 修复:忽略供应商语言文件夹(#59
  • 新增:现在可以忽略特定的语言文件,而不仅仅是语言家族(#44
  • 修复:在干运行模式下,仍然创建了语言文件(#54
  • 变更:尝试处理动态词元错误(#53
  • 变更:更改composer要求以最小化lumen要求(#49
  • 变更:处理间接翻译调用(#47

v2.x.4

  • 新增:从 2.4.4 分支支持 Laravel 5.3(#41
  • 新增:跟踪多行函数调用(#33
  • 新功能:通过在新值中提供null来支持翻译的回退(#38
  • 更改:使用包 friendsofphp/php-cs-fixer 而不是 fabpot/php-cs-fixer#28

v2.x.3

  • 新功能:添加禁用检查过时词项的可能性(#27
  • 修复:由于两位字母代码不工作,“output-flat”和“php-file-extension”的短选项已更改(#27

v2.x.2

  • 当过时词项在数组中时显示它(#21
  • 修复使用过时选项时的一个bug(#22

v2.x.1

  • 修复使用备份文件时以及在laravel安装路径中有点时的问题(#20

v2.x.0

  • 添加新命令 localization:clear 以删除备份
  • 添加指定输出格式的选项(#17
  • 添加指定扁平数组样式输出的选项(#18
  • 添加使用Bing翻译命令翻译句子的选项
  • 新翻译现在是
    • 默认使用 TODO: 前缀标记(如果你两次运行了缺少的artisan命令而没有在第一次运行时翻译旁边的词项,你的丢失翻译就会在lang文件中丢失。现在默认情况下,只需在lang文件中搜索TODO即可!
    • 如果使用选项 t,则进行翻译
    • 缩短到它们的最小值(trans( 'message.child.this is a text' ) 现在将生成 ['child'] => 'TODO: this is a text', 而不是 ['child'] => 'TODO: child.this is a text',

内部

  • 完全重构
  • 单元测试
  • 测试覆盖率
  • 外观以允许你在代码中使用本地化助手(翻译、查找丢失的翻译等...)

v1.3.3

  • 生命结束。1.x版本不再受支持且不再工作。请根据您的laravel版本使用正确的版本。

v1.3.2

  • 修复与Laravel 5.2的不兼容性(#16

v1.3.1

  • 添加Laravel 5的资源文件夹

v1.3

  • 添加对Laravel 5的完全支持

v1.2.2

  • 添加对Blade模板中的 @lang 和 @choice 的支持(由Jesper Ekstrand提供)

v1.2.1

  • 在配置文件中添加 lang_folder_path 参数以配置自定义的lang文件位置
  • 默认情况下检查Laravel 4.x中的 app/lang 中的lang文件
  • 默认情况下检查Laravel 5中的 app/resources/lang 中的lang文件

v1.2

  • 支持Laravel 5(4.3)
  • 在配置文件中添加 ignore_lang_files 参数以忽略lang文件(例如,对于 validation 文件很有用)

7. 贡献

  1. 分叉它
  2. 创建你的功能分支(git checkout -b my-new-feature
  3. 提交你的更改(git commit -am 'Added some feature'
  4. 推送到分支(git push origin my-new-feature
  5. 创建新的Pull Request

测试在 tests 中。要运行测试: vendor/bin/phpunit

合并后覆盖率不能下降。要跟踪文件覆盖率,请运行 vendor/bin/phpunit --coverage-html coverage 并打开 coverage/index.html 检查未覆盖的代码行。

开发徽章 : 开发状态 开发覆盖率状态