是否有命令来标记和清除 po 文件中具有相同翻译的不同消息?
Is there a command to flag and clean different messages that have the same translation in a po file?
是否有命令来标记和清除 GetText po 文件中具有相同翻译的不同消息?
#: templates/translations.html:7161
msgid "Straightedges"
msgstr "Règles de précision"
#: templates/translations.html:11697
msgid "Straight hemostats"
msgstr "Règles de précision"
在这种情况下,有没有办法清除所有翻译?
您可以使用以下 Perl 脚本来完成该任务:
#! /usr/bin/env perl
use strict;
use Locale::PO;
die "usage: [=10=] POFILE\n" unless $ARGV[0];
binmode 'STDOUT', ':utf8';
my $entries = Locale::PO->load_file_asarray($ARGV[0], 'UTF-8')
or die "$ARGV[0]: $!\n";
my %seen;
foreach my $entry (@$entries) {
++$seen{$entry->dequote($entry->msgstr)};
}
foreach my $entry (@$entries) {
my $msgstr = $entry->dequote($entry->msgstr);
#next if $seen{$msgstr} > 1;
$entry->msgstr("") if $seen{$msgstr} > 1;
print $entry->dump;
}
为此您需要 Perl 库 Locale-PO
。您可以使用命令 sudo perl -MCPAN -e 'install Locale::PO'
来安装它。如果不需要,请省略 sudo
。
如果您确实要删除具有重复翻译的条目,请取消注释 next
的行。我的版本只是丢弃了很可能是您真正想要的翻译。
解决方案有点过分简化了。它不支持具有复数形式或消息上下文的条目,但您可能根本不需要它们。
是否有命令来标记和清除 GetText po 文件中具有相同翻译的不同消息?
#: templates/translations.html:7161
msgid "Straightedges"
msgstr "Règles de précision"
#: templates/translations.html:11697
msgid "Straight hemostats"
msgstr "Règles de précision"
在这种情况下,有没有办法清除所有翻译?
您可以使用以下 Perl 脚本来完成该任务:
#! /usr/bin/env perl
use strict;
use Locale::PO;
die "usage: [=10=] POFILE\n" unless $ARGV[0];
binmode 'STDOUT', ':utf8';
my $entries = Locale::PO->load_file_asarray($ARGV[0], 'UTF-8')
or die "$ARGV[0]: $!\n";
my %seen;
foreach my $entry (@$entries) {
++$seen{$entry->dequote($entry->msgstr)};
}
foreach my $entry (@$entries) {
my $msgstr = $entry->dequote($entry->msgstr);
#next if $seen{$msgstr} > 1;
$entry->msgstr("") if $seen{$msgstr} > 1;
print $entry->dump;
}
为此您需要 Perl 库 Locale-PO
。您可以使用命令 sudo perl -MCPAN -e 'install Locale::PO'
来安装它。如果不需要,请省略 sudo
。
如果您确实要删除具有重复翻译的条目,请取消注释 next
的行。我的版本只是丢弃了很可能是您真正想要的翻译。
解决方案有点过分简化了。它不支持具有复数形式或消息上下文的条目,但您可能根本不需要它们。