137 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env perl
 | 
						|
 | 
						|
# This file is part of OpenTTD.
 | 
						|
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
 | 
						|
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
 | 
						|
 | 
						|
use strict;
 | 
						|
use warnings;
 | 
						|
 | 
						|
use utf8;
 | 
						|
 | 
						|
use File::Slurp;
 | 
						|
 | 
						|
my @langs = qw(
 | 
						|
afrikaans.txt
 | 
						|
arabic_egypt.txt
 | 
						|
basque.txt
 | 
						|
belarusian.txt
 | 
						|
brazilian_portuguese.txt
 | 
						|
bulgarian.txt
 | 
						|
catalan.txt
 | 
						|
chuvash.txt
 | 
						|
croatian.txt
 | 
						|
czech.txt
 | 
						|
danish.txt
 | 
						|
dutch.txt
 | 
						|
english_AU.txt
 | 
						|
english_US.txt
 | 
						|
esperanto.txt
 | 
						|
estonian.txt
 | 
						|
faroese.txt
 | 
						|
finnish.txt
 | 
						|
french.txt
 | 
						|
frisian.txt
 | 
						|
gaelic.txt
 | 
						|
galician.txt
 | 
						|
german.txt
 | 
						|
greek.txt
 | 
						|
hebrew.txt
 | 
						|
hindi.txt
 | 
						|
hungarian.txt
 | 
						|
icelandic.txt
 | 
						|
ido.txt
 | 
						|
indonesian.txt
 | 
						|
irish.txt
 | 
						|
italian.txt
 | 
						|
japanese.txt
 | 
						|
korean.txt
 | 
						|
latin.txt
 | 
						|
latvian.txt
 | 
						|
lithuanian.txt
 | 
						|
luxembourgish.txt
 | 
						|
macedonian.txt
 | 
						|
malay.txt
 | 
						|
maltese.txt
 | 
						|
marathi.txt
 | 
						|
norwegian_bokmal.txt
 | 
						|
norwegian_nynorsk.txt
 | 
						|
persian.txt
 | 
						|
polish.txt
 | 
						|
portuguese.txt
 | 
						|
romanian.txt
 | 
						|
russian.txt
 | 
						|
serbian.txt
 | 
						|
simplified_chinese.txt
 | 
						|
slovak.txt
 | 
						|
slovenian.txt
 | 
						|
spanish.txt
 | 
						|
spanish_MX.txt
 | 
						|
swedish.txt
 | 
						|
tamil.txt
 | 
						|
thai.txt
 | 
						|
traditional_chinese.txt
 | 
						|
turkish.txt
 | 
						|
urdu.txt
 | 
						|
ukrainian.txt
 | 
						|
vietnamese.txt
 | 
						|
welsh.txt
 | 
						|
);
 | 
						|
 | 
						|
 | 
						|
my @lang_lines;
 | 
						|
 | 
						|
my $override = 0;
 | 
						|
my $no_translate = 0;
 | 
						|
my @lines = read_file("extra/english.txt") or die("Can't read english.txt");
 | 
						|
for (@lines) {
 | 
						|
	$override = 0 if /##override off/;
 | 
						|
	$override = 1 if /##override on/;
 | 
						|
	$no_translate = 0 if /##no-translate off/;
 | 
						|
	$no_translate = 1 if /##no-translate on/;
 | 
						|
 | 
						|
	next if $override;
 | 
						|
	next if $no_translate;
 | 
						|
 | 
						|
	next if /^##/;
 | 
						|
 | 
						|
	push @lang_lines, $_;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
for my $lang (@langs) {
 | 
						|
	my @in_lines = read_file($lang);
 | 
						|
	push @in_lines, read_file("extra/$lang");
 | 
						|
 | 
						|
	my %strs;
 | 
						|
	for (@in_lines) {
 | 
						|
		chomp;
 | 
						|
		next if /^#/;
 | 
						|
 | 
						|
		if (/^(\w+)\s*:/) {
 | 
						|
			$strs{$1} = $_;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	my @lines;
 | 
						|
	my $suppress_whitespace = 1;
 | 
						|
	for (@lang_lines) {
 | 
						|
		if (/^(\w+)\s*:/) {
 | 
						|
			my $str = $strs{$1};
 | 
						|
			if ($str) {
 | 
						|
				$str =~ s/\{((?:\d:)?)STRING\d\}/{${1}STRING}/g;
 | 
						|
				$str =~ s/\{((?:\d:)?)RAW_STRING\}/{${1}STRING}/g;
 | 
						|
				push @lines, $str . "\n";
 | 
						|
				$suppress_whitespace = 0;
 | 
						|
			}
 | 
						|
		} else {
 | 
						|
			next if ($_ eq "\n") && $suppress_whitespace;
 | 
						|
			push @lines, $_;
 | 
						|
			$suppress_whitespace = ($_ eq "\n");
 | 
						|
		}
 | 
						|
	}
 | 
						|
	pop @lines if ($lines[-1] eq "\n");
 | 
						|
	write_file("extra/$lang", @lines);
 | 
						|
}
 |