在构建支持多语言的 web 应用时,我们经常会用到 gettext 格式的
.po
.po
你是否曾遇到这样的场景:
.po
.po
这些问题都指向一个核心痛点:缺乏一个高效、程序化的方式来管理 Gettext
.po
.po
好在,PHP 社区为我们提供了一个完美的解决方案:
sepia/po-parser
sepia/po-parser
.po
sepia/po-parser
.po
.po
msgid
#,
#
#.
#:
#|
#~
这意味着你可以通过 PHP 代码完全掌控
.po
使用
sepia/po-parser
<pre class="brush:php;toolbar:false;">composer require sepia/po-parser
安装完成后,你就可以在 PHP 代码中开始使用了。
1. 解析 .po
首先,你需要指定
.po
Parser
<pre class="brush:php;toolbar:false;"><?php
require 'vendor/autoload.php';
use Sepia\PoParser\SourceHandler\FileSystem;
use Sepia\PoParser\Parser;
use Sepia\PoParser\Catalog\Entry;
use Sepia\PoParser\PoCompiler;
// 假设你的翻译文件名为 es.po
$fileHandler = new FileSystem('es.po');
$poParser = new Parser($fileHandler);
$catalog = $poParser->parse(); // $catalog 现在包含了所有的翻译条目$catalog
.po
2. 获取和更新翻译条目
你可以通过
msgid
<pre class="brush:php;toolbar:false;">// 获取一个条目
$entry = $catalog->getEntry('welcome.user');
if ($entry) {
echo "原始翻译: " . $entry->getMsgStr() . PHP_EOL;
// 修改翻译字符串
$entry->setMsgStr('¡Bienvenido Usuario!');
// 也可以修改其他属性,例如译者注释或标记
$entry->setTranslatorComments(['这是用户登录时的欢迎语']);
$entry->setFlags(['fuzzy', 'php-code']); // 标记为模糊翻译和PHP代码相关
$catalog->setEntry($entry); // 将修改后的条目重新设置回 catalog
}
// 添加一个新条目
$newEntry = new Entry('goodbye.user', '¡Adiós Usuario!');
$newEntry->setTranslatorComments(['用户退出时的告别语']);
$catalog->setEntry($newEntry); // 如果 msgid 不存在,则会添加新条目3. 保存修改到文件
当你完成所有修改后,可以使用
PoCompiler
Catalog
.po
FileSystem
<pre class="brush:php;toolbar:false;">$compiler = new PoCompiler(); $fileHandler->save($compiler->compile($catalog)); echo "es.po 文件已成功更新!" . PHP_EOL;
这样,你所有的修改就都被写入到
es.po
sepia/po-parser
msgid
msgstr
sepia/po-parser
.po
sepia/po-parser
通过
sepia/po-parser
以上就是如何高效管理多语言翻译文件?Sepia/Po-Parser助你告别手动编辑!的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号