diff --git a/src/lang/extra/_checkMissingTranslations.sh b/utils/checkMissingTranslations.sh similarity index 80% rename from src/lang/extra/_checkMissingTranslations.sh rename to utils/checkMissingTranslations.sh index 847ab0a395..e3b23e622c 100755 --- a/src/lang/extra/_checkMissingTranslations.sh +++ b/utils/checkMissingTranslations.sh @@ -1,11 +1,13 @@ #!/bin/bash +git_top_level=$(git rev-parse --show-toplevel) + if [ $# -eq 0 ]; then - echo "Please specify a language file to update" + echo "Please specify a language to update" exit 1 fi -language_file="$1" +language_file="$git_top_level/src/lang/extra/$1.txt" # Check that the specified file exists if [ ! -f "$language_file" ]; then @@ -38,4 +40,6 @@ while read -r line; do echo "$line" >>"$language_file" echo "Added missing line to $language_file: $line" fi -done <"english.txt" +done <"$git_top_level/src/lang/extra/english.txt" +cd $git_top_level/src/lang/ +perl $git_top_level/utils/conv-lang.pl diff --git a/utils/conv-lang.pl b/utils/conv-lang.pl new file mode 100755 index 0000000000..092448a4a7 --- /dev/null +++ b/utils/conv-lang.pl @@ -0,0 +1,123 @@ + +#!/usr/bin/env perl + +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 $start = 0; +my @lines = read_file("extra/english.txt") or die("Can't read english.txt"); +for (@lines) { + $start = 1 if /##override off/; + next unless $start; + + 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*:/) { + if ($strs{$1}) { + push @lines, $strs{$1} . "\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); +} \ No newline at end of file