PO 文件翻译:从 msgstr 到 msgid 倒退?

卢卡·雷格林

我需要从 msgstr 开始检索 msgid。原因是我有几个翻译,都是 EN 到 SOME OTHER LANG,但现在在当前安装中,我需要从 SOME OTHER LANG 返回到 EN。请注意,我也在使用 WordPress,不过这可能并不重要。这里有几个类似的问题,但不完全是我需要的。

那么有没有办法做到这一点?

蒂姆

WordPress 随附 PO 读取器和写入器作为pomo软件包的一部分下面是一个非常简单的脚本,它交换msgidmsgstr字段并写出一个新文件。

正如评论中已经指出的那样,有几件事可能会导致这个问题:

  1. 您的目标字符串必须都是唯一的(不能为空)
  2. 如果您有消息上下文,这将保留在原始语言中。
  3. 您的原始语言必须只有两种复数形式。

前进——

<?php
require_once 'path/to/wp-includes/pomo/po.php';
$source_file = 'path/to/languages/old-file.po';
$target_file = 'path/to/languages/new-file.po';

// parse original message catalogue from source file
$source = new PO;
$source->import_from_file($source_file);

// prep target messages with a different language
$target = new PO;
$target->set_headers( $source->headers );
$target->set_header('Language', 'en_US');
$target->set_header('Language-Team', 'English from SOME OTHER LANG');
$target->set_header('Plural-Forms', 'nplurals=2; plural=n!=1;');

/* @var Translation_Entry $entry */
foreach( $source->entries as $entry ){
    $reversed = clone $entry;
    // swap msgid and msgstr (singular)
    $reversed->singular = $entry->translations[0];
    $reversed->translations[0] = $entry->singular;
    // swap msgid_plural and msgstr[2] (plural)
    if( $entry->is_plural ){
        $reversed->plural = $entry->translations[1];
        $reversed->translations[1] = $entry->plural;
    }
    // append target file with modified entry
    $target->add_entry( $reversed );
}

// write final file back to disk
file_put_contents( $target_file, $target->export() );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Backport .po文件翻译

来自分类Dev

使用 awk sed linux 命令用原件替换 PO msgstr

来自分类Dev

在Django`.po`文件中查找缺少的翻译

来自分类Dev

Django翻译会创建po和mo文件,但翻译失败并显示翻译占位符

来自分类Dev

在TravisCI中检测对Django翻译(PO)文件的更改

来自分类Dev

从PO文件中提取未翻译的字符串

来自分类Dev

如何使用.po文件翻译帖子或页面的Wordpress内容

来自分类Dev

如何使用.po文件翻译帖子或页面的Wordpress内容

来自分类Dev

如何从Sphinx或gettext中的po文件中翻译完整文章

来自分类Dev

python django 翻译 .po 和 .mo 文件不翻译文件

来自分类Dev

Gettext PO文件格式

来自分类Dev

是否可以倒退nodejs中的文件描述符游标?

来自分类Dev

错误:翻译wordpress主题时,msgstr不是有效的PHP

来自分类Dev

django`.po`文件中标记为#〜的翻译是什么意思?

来自分类Dev

.po文件中的CakePhp i18n翻译单词顺序

来自分类Dev

翻译.po文件中未包含的WordPress网站中的主题文本

来自分类Dev

使用正则表达式从po文件中获取翻译后的计数和模糊计数...

来自分类Dev

django`.po`文件中标记为#〜的翻译是什么意思?

来自分类Dev

翻译.po文件中未包含的WordPress网站中的主题文本

来自分类Dev

PO文件头丢失或无效

来自分类Dev

克星倒退或靶心倒退之间的区别

来自分类Dev

从WordPress删除.po和.mo文件?

来自分类Dev

将.po文件导出到.csv

来自分类Dev

.po文件中未通过撇号

来自分类Dev

打开po文件时poEdit编码错误

来自分类Dev

将* .po文件转换为* .pot

来自分类Dev

从WordPress删除.po和.mo文件?

来自分类Dev

.po文件中未通过撇号

来自分类Dev

Django-gettext-奇怪的msgstr“”

Related 相关文章

热门标签

归档