datalinx/gettext-context

PHP gettext 扩展的上下文函数实现

v2.0.0 2023-01-28 13:10 UTC

This package is auto-updated.

Last update: 2024-08-31 00:43:58 UTC


README

PHP gettext 扩展的上下文函数实现

Packagist Version Packagist PHP Version Support Packagist Downloads Tests codecov Conventional Commits Packagist License

关于

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 工作流程)进行测试,那就太好了。

安装

  1. 使用 composer 下载它: composer require datalinx/gettext-context
  2. 当需要时包含 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,2
  • npgettext:1c,2,3
  • dpgettext:2c,3
  • dnpgettext:2c,3,4

然后运行“从代码更新”程序 :)

贡献

如果您有关于如何使此包更好的建议,请打开一个问题或更好的是,提交一个拉取请求。

如果您想贡献,请参阅 DataLinx PHP 包模板中的开发指南。

更改日志

此项目中所有值得注意的更改都自动记录在 CHANGELOG.md 文件中,该文件使用基于 release-please GitHub 操作的发布工作流程,基于 Keep a Changelog 格式,并遵循 语义化版本控制

格式基于 Keep a Changelog,并且此项目遵循 Semantic Versioning

为了使所有这些都有效,提交消息必须遵循 Conventional commits 规范,该规范也由 Git 钩强制执行。

鸣谢

  • 这个答案 在 Stack Overflow 上关于实现的相关内容。
  • 这个评论 在 PHP 文档中关于消息提取修复的内容。