datalinx / gettext-context
PHP gettext 扩展的上下文函数实现
Requires
- php: >=7.4
- ext-gettext: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-08-31 00:43:58 UTC
README
PHP gettext 扩展的上下文函数实现
关于
PHP 仍然缺少对 gettext 的完全支持,因为它没有实现上下文函数。直到解决这个问题,您可以使用此包来为您的本地化工作添加上下文支持。
例如,在英语中,人员和产品都有一个“名称”属性。所以使用简单的 gettext
echo _('Name');
... 在斯洛文尼亚语中会得到“Ime”,这是错误的。
为了解决这个问题,您可以使用此包提供的上下文函数
echo pgettext('Person', 'Name'); // Echoes "Ime" echo pgettext('Product', 'Name'); // Echoes "Naziv"
要求
- PHP >= 7.4
- gettext PHP 扩展
它可以在较低的 PHP 版本上使用,但您将无法使用 composer(或运行测试)安装它。
此包已在 Linux 上进行测试,但它也应适用于其他系统。任何 Windows 和 Mac 的反馈都非常受欢迎。如果您能为此平台(包括 GitHub 工作流程)进行测试,那就太好了。
安装
- 使用 composer 下载它:
composer require datalinx/gettext-context - 当需要时包含
vendor/datalinx/gettext-context/src/gettext-context.php文件*
* 由于您可能不需要或不想在运行时始终包含它,因此它未添加到 autoload 指令中。如果您想始终加载它,只需将源文件添加到您的 composer.json 中自动加载文件列表即可
{
"autoload": {
"files": [
"vendor/datalinx/gettext-context/src/gettext-context.php"
]
}
}
用法
请参阅文档化的 src/gettext-context.php 文件以获取函数及其参数列表。
提取具有上下文支持的消息
使用 xgettext
您可以在您的 xgettext 调用中添加额外的关键字参数以包含上下文函数。例如,这将在我们的包中使用
xgettext --force-po --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 --keyword=dpgettext:2c,3 --keyword=dnpgettext:2c,3,4 -c -o messages.po tests/Unit/Test.php
使用 Poedit
如果您正在使用 Poedit,请在“目录 > 属性 > 源代码关键字”中添加以下关键字
pgettext:1c,2npgettext:1c,2,3dpgettext:2c,3dnpgettext:2c,3,4
然后运行“从代码更新”程序 :)
贡献
如果您有关于如何使此包更好的建议,请打开一个问题或更好的是,提交一个拉取请求。
如果您想贡献,请参阅 DataLinx PHP 包模板中的开发指南。
更改日志
此项目中所有值得注意的更改都自动记录在 CHANGELOG.md 文件中,该文件使用基于 release-please GitHub 操作的发布工作流程,基于 Keep a Changelog 格式,并遵循 语义化版本控制。
格式基于 Keep a Changelog,并且此项目遵循 Semantic Versioning。
为了使所有这些都有效,提交消息必须遵循 Conventional commits 规范,该规范也由 Git 钩强制执行。