hdodov/potext

此包已被废弃且不再维护。作者建议使用https://php.ac.cn/manual/en/book.gettext.php包代替。

以gettext类似的方式翻译文本,实际上不使用gettext,而是解析.po文件。

dev-master 2022-08-23 07:01 UTC

This package is auto-updated.

Last update: 2022-08-23 07:01:54 UTC


README

通过解析.po文件而不是实际使用PHP gettext实现来以gettext类似的方式翻译文本。

默认的gettext实现并不总是有效,并且理解起来有些困难。Potext让您仍然可以使用像_po()_npo()(用于复数)这样的简写函数,但使用一个(po文件,使用PHP-po-parser解析)来显示实际的文本。没有文本域或地区。您只需将这些函数中的文本放入,然后设置一个包含要显示给用户的文本的文件。

⚠ 已弃用!

只需使用Gettext

安装

克隆此存储库或在Packagist上找到Potext,然后使用Composer安装它

composer require hdodov/potext:dev-master

使用

设置

首先,确保您requireComposer的自动加载文件

require __DIR__ . '/vendor/autoload.php';

然后,创建一个Potext对象。它允许您从po文件中提取数据

$potext_bg = new Potext\Potext('./locales/bg.po');

最后,设置Translate单例以使用您刚刚创建的Potext对象

Potext\Translate::$potext = $potext_bg;

此单例由翻译函数(如_po())用于显示文本。如果没有设置$potext,它将直接显示输入文本。

现在您可以显示一些翻译后的文本了!

翻译函数

_po("Text");                        // Get translated string
_epo("Text");                       // Echo translated string
_npo("%d Text", "%d Texts", $n);    // Get translated plural string
_enpo("%d Text", "%d Texts", $n);   // Echo translated plural string

注意

如果您正在使用像Poedit这样的程序来翻译文本,除非您将Potext函数内的字符串添加到Poedit的关键词列表中,否则它们不会被收集!您需要添加以下内容

_po
_epo
_npo:1,2
_enpo:1,2