yiisoft / translator-extractor
Yii 消息提取器
Requires
- php: ^8.0
- symfony/console: ^5.4|^6.0|^7.0
- yiisoft/friendly-exception: ^1.0
- yiisoft/translator: ^1.0|^2.0|^3.0
Requires (Dev)
- maglnet/composer-require-checker: ^4.2
- phpunit/phpunit: ^9.5
- rector/rector: ^1.0
- roave/infection-static-analysis-plugin: ^1.16
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.6
- yiisoft/di: ^1.0
- yiisoft/yii-console: ^2.0
This package is auto-updated.
Last update: 2024-09-22 15:11:10 UTC
README
Yii 翻译器消息提取器
该包允许自动从 PHP 源文件中提取翻译 ID,并将其写入 翻译消息源之一。
需求
- PHP 8.0 或更高版本。
安装
可以使用 Composer 安装此包
composer require yiisoft/translator-extractor
配置
您需要在包的配置文件中配置 MessageReader
和 MessageWriter
,即 config/console/translator-extractor.php
例如,当使用 PHP MessageSource
时,配置如下(使用 相对路径)
use \Yiisoft\Translator\Message\Php\MessageSource; return [ Extractor::class => [ '__construct()' => [ [ DynamicReference::to([ 'class' => ExtractorCategorySource::class, '__construct()' => [ 'app', 'messageReader' => DynamicReference::to(static fn () => new MessageSource($params['yiisoft/translator-extractor']['messagePath'])), 'messageWriter' => DynamicReference::to(static fn () => new MessageSource($params['yiisoft/translator-extractor']['messagePath'])), ], ]), ], ], '->translate' // optional, default value for Translation call to look for. ], ];
在 params.php
文件中,您可以配置消息源参数
return [ 'yiisoft/yii-console' => [ 'commands' => [ 'translator/extract' => ExtractCommand::class, ], ], 'yiisoft/translator-extractor' => [ // Using relative path: 'messagePath' => dirname(__DIR__, 5) . '/messages', ], ];
或者,如果使用 PHP MessageSource
,配置如下(使用 别名)
use \Yiisoft\Translator\Message\Php\MessageSource; return [ Extractor::class => [ '__construct()' => [ [ DynamicReference::to([ 'class' => ExtractorCategorySource::class, '__construct()' => [ 'app', 'messageReader' => DynamicReference::to(static fn (Aliases $aliases) => new MessageSource($aliases->get('@message'))), 'messageWriter' => DynamicReference::to(static fn (Aliases $aliases) => new MessageSource($aliases->get('@message'))), ], ]), ], ], ], ];
注意:为了与现有消息一起工作,需要为
MessageReader
和MessageWriter
配置 相同 的MessageSource
。
通用用法
./yii translator/extract
此命令将递归地找到从当前目录开始的代码中的所有消息,并将其保存到默认语言 en
的消息源中。您可以明确指定路径
./yii translator/extract /path/to/your/project
注意:默认情况下,提取器会排除应用程序目录中的 vendor
目录。要包含它,您可以指定 except
的空值
./yii translator/extract /path/to/your/project --except=''
完整选项列表
Usage: translator/extract [options] [--] [<path>] Arguments: path Path for extracting message IDs. Options: -L, --languages=LANGUAGES Comma separated list of languages to write message sources for. By default it is `en`. [default: "en"] -C, --category=CATEGORY Default message category to use when category is not set. [default: "app"] -E, --except[=EXCEPT] Exclude path from extracting. (multiple values allowed) -O, --only[=ONLY] Use the only specified path for extracting. (multiple values allowed)
指定语言
您可以指定多个语言来写入 ID
./yii translator/extract --languages=en,ru
或使用简短格式
./yii translator/extract -Lru
指定默认类别
此外,您还可以指定当类别未设置时使用的默认消息类别。
./yii translator/extract --category=your_category_name
使用 except
选项
要排除所有名为 dir1
的目录,请使用 --except
./yii translator/extract --except=**/dir1/**
要排除 vendor
和 tests
目录,可以使用以下选项
./yii translator/extract --except=./vendor/** --except=./tests/**
使用 only
选项
要解析任何目录中的 test.php
文件,请使用 --only
选项
./yii translator/extract --only=**/test.php
要解析 /var/www/html/test.php
文件,请使用
./yii translator/extract --only=/var/www/html/test.php
有关 except
和 only
参数的更多信息,请参阅 yiisoft/files 包 的文档。
与 gettext 一起使用
该包目前不支持将消息提取到 gettext 格式。要提取 gettext 格式的消息,您可以使用以下 shell 脚本(在基于 Linux 的操作系统上)
find src/ -name *.php | xargs xgettext --from-code=utf-8 --language=PHP --no-location --omit-header --sort-output --keyword=translate --output="locales/category.pot" for d in locales/*/ ; do for i in locales/*.pot; do if [ ! -f "$d$(basename "$i" .pot).po" ]; then touch "$d$(basename "$i" .pot).po" fi msgmerge --update --silent --backup=off "$d$(basename "$i" .pot).po" $i done done
文档
如果您需要帮助或有疑问,Yii 论坛 是一个很好的地方。您还可以查看其他 Yii 社区资源。
许可证
Yii 翻译器消息提取器是免费软件。它根据 BSD 许可证发布。有关更多信息,请参阅 LICENSE
。
由 Yii 软件 维护。