我在NSIS論壇上提出了同樣的問題,但沒有成功。最後,我創建了一個小的Perl腳本解析我NSIS代碼,並檢測包括語言和所有Langstrings,檢測丟失的翻譯,並創建初始化爲默認語言Langstrings:
#!/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
在installer.nsi我需要包括生成的NSI:
!include missingphrases.nsi
希望它能幫助。
恕我直言沒有意義使用回退字符串從不同的語言,你應該把所有字符串或根本不支持該語言... – Anders