NSIS フォーラムで同じ質問をしましたが、成功しませんでした。最後に、NSIS コードを解析し、含まれている言語とすべての Langstring を検出し、欠落している翻訳を検出し、デフォルト言語に初期化された Langstring を作成する小さな Perl スクリプトを作成しました。
#!/usr/bin/perl
#
# filltranslationgaps.pl
# Get list of included languages
my $tmp = uc(`grep "^!insertmacro MUI_LANGUAGE" installer.nsi |grep -v ";" |cut -f2 -d\\"`);
my @lang = split(/\n/, $tmp);
my $DEFAULTLANGUAGE = $lang[0];
# Get langstrings
open( $fh, "<installer.nsi");
while (<$fh>) {
if (/LangString *(.*?) *\${LANG_(.*?)} *\"(.*)\"/) {
$phrases{$1}{$2}=$3;
}
}
close $fh;
# Foreach Langstring, check if it's defined in all included languages.
foreach my $k (keys %phrases) {
foreach my $j (@lang) {
if (not defined $phrases{$k}{$j}) {
#print "MISSING PAIR: $k\t$j\n";
print "LangString $k \${LANG_$j} \"$phrases{$DEFAULTLANGUAGE}{$j}\"\n";
}
}
}
私のコンパイルスクリプト:
#/bin/sh
perl filltranslationgaps.pl >missingphrases.nsi
makensis installer.nsi
生成された nsi を、installer.nsi に含める必要があります。
!include missingphrases.nsi
それが役に立てば幸い。