diff --git a/source/code/main.cpp b/source/code/main.cpp index deedace..401aefb 100644 --- a/source/code/main.cpp +++ b/source/code/main.cpp @@ -1806,11 +1806,12 @@ int main(int argc, const char* argv[]) { textdomain (PACKAGE); boost::program_options::options_description desc("Allowed options"); desc.add_options() - ("help,h", _("Displays this message")) - ("nosound", _("Disables the sound. Can be used if sound errors prevents you from starting")) - ("priority", _("Causes the game to not sleep between frames.")) - ("verbose-basic", _("Enables basic verbose messages")) - ("print-search-path", _("Prints the search path and quits")) + ("help,h", "Displays this message") + ("nosound", "Disables the sound. Can be used if sound errors prevents you from starting") + ("priority", "Causes the game to not sleep between frames.") + ("verbose-basic", "Enables basic verbose messages") + ("print-search-path", "Prints the search path and quits") + ("bind-text-domain", boost::program_options::value(), SPrintStringF("Overwrites the bind text domain used for finding translations. Default: \"%s\"", LOCALEDIR).c_str() ) ; boost::program_options::variables_map vm; try { @@ -1822,9 +1823,13 @@ int main(int argc, const char* argv[]) { cerr << desc << endl; throw; } + if (vm.count("bind-text-domain")) { + string s = vm["bind-text-domain"].as(); + bindtextdomain (PACKAGE, s.c_str()); + } if (vm.count("help")) { - cout << SPrintStringF(_("Block Attack - Rise of the blocks %s\n" - "%s\n"), VERSION_NUMBER, "www.blockattack.net"); + cout << SPrintStringF("Block Attack - Rise of the blocks %s\n" + "%s\n", VERSION_NUMBER, "www.blockattack.net"); cout << desc << endl; return 1; } diff --git a/source/misc/translation/build_mo_all.sh b/source/misc/translation/build_mo_all.sh new file mode 100755 index 0000000..733fb48 --- /dev/null +++ b/source/misc/translation/build_mo_all.sh @@ -0,0 +1,4 @@ +#! /bin/bash +set -e + +ls po/*.po | xargs -n1 ./build_mo_single_file.sh diff --git a/source/misc/translation/build_mo_single_file.sh b/source/misc/translation/build_mo_single_file.sh new file mode 100755 index 0000000..912433d --- /dev/null +++ b/source/misc/translation/build_mo_single_file.sh @@ -0,0 +1,12 @@ +#! /bin/bash +set -e + +test $1 + +POFILE=$1 + +LANGUAGE=${1##*/} +LANGUAGE=${LANGUAGE%%_*} +mkdir -p locale/$LANGUAGE/LC_MESSAGES +echo "Building $LANGUAGE from $1" +msgfmt -o locale/$LANGUAGE/LC_MESSAGES/blockattack_roftb.mo $1 diff --git a/source/misc/translation/extractTexts.sh b/source/misc/translation/extractTexts.sh new file mode 100755 index 0000000..dcb90e4 --- /dev/null +++ b/source/misc/translation/extractTexts.sh @@ -0,0 +1,2 @@ +mkdir -p template +xgettext -k_ ../../code/*.cpp --output=template/blockattack_roftb.pot diff --git a/source/misc/translation/po/da_DK.po b/source/misc/translation/po/da_DK.po new file mode 100644 index 0000000..c79dbcc --- /dev/null +++ b/source/misc/translation/po/da_DK.po @@ -0,0 +1,386 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-06 15:20+0100\n" +"PO-Revision-Date: 2016-02-06 15:34+0100\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.4\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: da_DK\n" + +#: ../../code/main.cpp:782 +msgid "Score:" +msgstr "Score:" + +#: ../../code/main.cpp:783 +msgid "Time:" +msgstr "Tid:" + +#: ../../code/main.cpp:784 +msgid "Chain:" +msgstr "Kæde:" + +#: ../../code/main.cpp:785 +msgid "Speed:" +msgstr "Hastighed:" + +#: ../../code/main.cpp:800 ../../code/main.cpp:818 +msgid "Retry" +msgstr "Forsøg igen" + +#: ../../code/main.cpp:804 ../../code/main.cpp:822 ../../code/main.cpp:1116 +msgid "Next" +msgstr "Næste" + +#: ../../code/main.cpp:808 ../../code/main.cpp:826 +msgid "Skip" +msgstr "Spring over" + +#: ../../code/main.cpp:998 +msgid "Endless:" +msgstr "" + +#: ../../code/main.cpp:1001 +msgid "Time Trial:" +msgstr "Time Trial:" + +#: ../../code/main.cpp:1027 +msgid "Stats" +msgstr "Statistik" + +#: ../../code/main.cpp:1029 +msgid "Chains" +msgstr "Kæder" + +#: ../../code/main.cpp:1037 +msgid "Lines Pushed: " +msgstr "Linjer skubbet:" + +#: ../../code/main.cpp:1042 +msgid "Puzzles solved: " +msgstr "Gåder løst:" + +#: ../../code/main.cpp:1047 +msgid "Run time: " +msgstr "Kørsels tid:" + +#: ../../code/main.cpp:1050 ../../code/main.cpp:1063 +#, c-format +msgid "Days: %i" +msgstr "Dage: %i" + +#: ../../code/main.cpp:1052 ../../code/main.cpp:1065 +#, c-format +msgid "Hours: %i" +msgstr "Timer: %i" + +#: ../../code/main.cpp:1054 ../../code/main.cpp:1067 +#, c-format +msgid "Minutes: %i" +msgstr "Minutter: %i" + +#: ../../code/main.cpp:1056 ../../code/main.cpp:1069 +#, c-format +msgid "Seconds: %i" +msgstr "Sekunder: %i" + +#: ../../code/main.cpp:1060 +msgid "Play time: " +msgstr "Spille tid:" + +#: ../../code/main.cpp:1073 +msgid "VS CPU (win/loss)" +msgstr "mod computeren (vundet/tabt)" + +#: ../../code/main.cpp:1114 ../../code/main.cpp:1227 +#: ../../code/MenuSystem.cpp:169 ../../code/MenuSystem.cpp:177 +#: ../../code/MenuSystem.cpp:190 +msgid "Back" +msgstr "Tilbage" + +#: ../../code/main.cpp:1119 +msgid "Page %1% of %2%" +msgstr "Side %1% af %2%" + +#: ../../code/main.cpp:1225 +msgid "Forward" +msgstr "Fremad" + +#: ../../code/main.cpp:1324 ../../code/main.cpp:1438 +msgid "AI" +msgstr "Computer" + +#: ../../code/main.cpp:1327 +msgid "Playing field" +msgstr "Spille flade" + +#: ../../code/main.cpp:1399 +msgid "Time Trial" +msgstr "Time Trial" + +#: ../../code/main.cpp:1400 +msgid "Score as much as possible in 2 minutes" +msgstr "Se hvor mange point du kan opnå på 2 minutter" + +#: ../../code/main.cpp:1404 +msgid "Stage Clear" +msgstr "" + +#: ../../code/main.cpp:1405 +msgid "You must clear a number of lines. Speed is rapidly increased." +msgstr "Fjern et specifik antal linjer. Hastigheden stiger hurtigt." + +#: ../../code/main.cpp:1408 +msgid "Puzzle" +msgstr "Gåde" + +#: ../../code/main.cpp:1409 +msgid "Clear the entire board with a limited number of moves." +msgstr "Fjern alle blokke med et begrænset antal flyt" + +#: ../../code/main.cpp:1412 +msgid "Endless" +msgstr "" + +#: ../../code/main.cpp:1413 +msgid "Score as much as possible. No time limit." +msgstr "Opnå så mange point som muligt. Ingen tidsbegrænsning." + +#: ../../code/main.cpp:1417 +msgid "Objective:" +msgstr "Formål:" + +#: ../../code/main.cpp:1423 +msgid "Movement keys:" +msgstr "Bevægelses taster:" + +#: ../../code/main.cpp:1426 +msgid "Switch: " +msgstr "Skift:" + +#: ../../code/main.cpp:1428 +msgid "Restart: " +msgstr "Genstart:" + +#: ../../code/main.cpp:1431 +msgid "Push line: " +msgstr "Skub linje:" + +#: ../../code/main.cpp:1551 +msgid "Select Puzzle" +msgstr "Vælg gåde" + +#: ../../code/main.cpp:1554 +msgid "Stage Clear Level Select" +msgstr "Vælg Stage Clear bane" + +#: ../../code/main.cpp:1658 +msgid "Best score: 0" +msgstr "Bedste resultat: 0" + +#: ../../code/main.cpp:1659 +msgid "Time used: -- : --" +msgstr "Tid brugt: -- : --" + +#: ../../code/main.cpp:1662 +msgid "Best score: " +msgstr "Bedste resultat:" + +#: ../../code/main.cpp:1665 +msgid "Time used: " +msgstr "Tid brugt:" + +#: ../../code/main.cpp:1809 +msgid "Displays this message" +msgstr "Vis denne besked" + +#: ../../code/main.cpp:1810 +msgid "Disables the sound. Can be used if sound errors prevents you from starting" +msgstr "Slå lyden fra. Kan bruges hvis lyd fejl forhindre programmet i at starte." + +#: ../../code/main.cpp:1811 +msgid "Causes the game to not sleep between frames." +msgstr "Programmet vil ikke sove mellem frames" + +#: ../../code/main.cpp:1812 +msgid "Enables basic verbose messages" +msgstr "Slår basale beskeder til" + +#: ../../code/main.cpp:1813 +msgid "Prints the search path and quits" +msgstr "Viser alle søge stiger og afslutter derefter" + +#: ../../code/main.cpp:1826 +#, c-format +msgid "" +"Block Attack - Rise of the blocks %s\n" +"%s\n" +msgstr "" +"Block Attack - Rise of the blocks %s\n" +"%s\n" + +#: ../../code/menudef.cpp:138 ../../code/menudef.cpp:194 +msgid "Sound: On" +msgstr "Lyd: Til" + +#: ../../code/menudef.cpp:138 ../../code/menudef.cpp:194 +msgid "Sound: Off" +msgstr "Lyd: Fra" + +#: ../../code/menudef.cpp:143 ../../code/menudef.cpp:196 +msgid "Fullscreen: On" +msgstr "Fuldskærm: Til" + +#: ../../code/menudef.cpp:143 ../../code/menudef.cpp:196 +msgid "Fullscreen: Off" +msgstr "Fuldskærm: Fra" + +#: ../../code/menudef.cpp:164 +msgid "Change key bindings" +msgstr "Skift taster" + +#: ../../code/menudef.cpp:165 +msgid "Left" +msgstr "Venstra" + +#: ../../code/menudef.cpp:166 +msgid "Right" +msgstr "Højre" + +#: ../../code/menudef.cpp:167 +msgid "Up" +msgstr "Op" + +#: ../../code/menudef.cpp:168 +msgid "Down" +msgstr "Ned" + +#: ../../code/menudef.cpp:169 +msgid "Push" +msgstr "Skub" + +#: ../../code/menudef.cpp:170 +msgid "Change" +msgstr "Skift" + +#: ../../code/menudef.cpp:189 +msgid "Configuration" +msgstr "Konfiguration" + +#: ../../code/menudef.cpp:192 +msgid "Music: On" +msgstr "Musik: Til" + +#: ../../code/menudef.cpp:192 +msgid "Music: Off" +msgstr "Musik: Fra" + +#: ../../code/menudef.cpp:199 +msgid "Change player 1's name" +msgstr "" + +#: ../../code/menudef.cpp:201 +msgid "Change player 2's name" +msgstr "" + +#: ../../code/menudef.cpp:203 +msgid "Change player 1's keys" +msgstr "" + +#: ../../code/menudef.cpp:205 +msgid "Change player 2's keys" +msgstr "" + +#: ../../code/menudef.cpp:217 +msgid "Single player VS" +msgstr "" + +#: ../../code/menudef.cpp:240 +msgid "Very easy" +msgstr "" + +#: ../../code/menudef.cpp:241 +msgid "Easy" +msgstr "" + +#: ../../code/menudef.cpp:242 +msgid "Below normal" +msgstr "" + +#: ../../code/menudef.cpp:243 +msgid "Normal" +msgstr "" + +#: ../../code/menudef.cpp:244 +msgid "Above normal" +msgstr "" + +#: ../../code/menudef.cpp:245 +msgid "Hard" +msgstr "" + +#: ../../code/menudef.cpp:246 +msgid "Hardest" +msgstr "" + +#: ../../code/menudef.cpp:258 +msgid "Multiplayer" +msgstr "" + +#: ../../code/menudef.cpp:260 +msgid "Two player - time trial" +msgstr "" + +#: ../../code/menudef.cpp:262 +msgid "Two player - vs" +msgstr "" + +#: ../../code/menudef.cpp:271 +msgid "Block Attack - Rise of the blocks" +msgstr "" + +#: ../../code/menudef.cpp:273 +msgid "Single player - endless" +msgstr "" + +#: ../../code/menudef.cpp:275 +msgid "Single player - time trial" +msgstr "" + +#: ../../code/menudef.cpp:277 +msgid "Single player - stage clear" +msgstr "" + +#: ../../code/menudef.cpp:279 +msgid "Single player - puzzle mode" +msgstr "" + +#: ../../code/menudef.cpp:281 +msgid "Single player - vs" +msgstr "" + +#: ../../code/menudef.cpp:283 +msgid "Multi player" +msgstr "" + +#: ../../code/menudef.cpp:285 +msgid "Configure" +msgstr "" + +#: ../../code/menudef.cpp:287 +msgid "Highscores" +msgstr "Bedste resultater" + +#: ../../code/MenuSystem.cpp:180 ../../code/MenuSystem.cpp:193 +msgid "Exit" +msgstr "Afslut" diff --git a/source/misc/translation/template/blockattack_roftb.pot b/source/misc/translation/template/blockattack_roftb.pot new file mode 100644 index 0000000..7711e02 --- /dev/null +++ b/source/misc/translation/template/blockattack_roftb.pot @@ -0,0 +1,356 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-06 16:05+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../code/main.cpp:782 +msgid "Score:" +msgstr "" + +#: ../../code/main.cpp:783 +msgid "Time:" +msgstr "" + +#: ../../code/main.cpp:784 +msgid "Chain:" +msgstr "" + +#: ../../code/main.cpp:785 +msgid "Speed:" +msgstr "" + +#: ../../code/main.cpp:800 ../../code/main.cpp:818 +msgid "Retry" +msgstr "" + +#: ../../code/main.cpp:804 ../../code/main.cpp:822 ../../code/main.cpp:1116 +msgid "Next" +msgstr "" + +#: ../../code/main.cpp:808 ../../code/main.cpp:826 +msgid "Skip" +msgstr "" + +#: ../../code/main.cpp:998 +msgid "Endless:" +msgstr "" + +#: ../../code/main.cpp:1001 +msgid "Time Trial:" +msgstr "" + +#: ../../code/main.cpp:1027 +msgid "Stats" +msgstr "" + +#: ../../code/main.cpp:1029 +msgid "Chains" +msgstr "" + +#: ../../code/main.cpp:1037 +msgid "Lines Pushed: " +msgstr "" + +#: ../../code/main.cpp:1042 +msgid "Puzzles solved: " +msgstr "" + +#: ../../code/main.cpp:1047 +msgid "Run time: " +msgstr "" + +#: ../../code/main.cpp:1050 ../../code/main.cpp:1063 +#, c-format +msgid "Days: %i" +msgstr "" + +#: ../../code/main.cpp:1052 ../../code/main.cpp:1065 +#, c-format +msgid "Hours: %i" +msgstr "" + +#: ../../code/main.cpp:1054 ../../code/main.cpp:1067 +#, c-format +msgid "Minutes: %i" +msgstr "" + +#: ../../code/main.cpp:1056 ../../code/main.cpp:1069 +#, c-format +msgid "Seconds: %i" +msgstr "" + +#: ../../code/main.cpp:1060 +msgid "Play time: " +msgstr "" + +#: ../../code/main.cpp:1073 +msgid "VS CPU (win/loss)" +msgstr "" + +#: ../../code/main.cpp:1114 ../../code/main.cpp:1227 +#: ../../code/MenuSystem.cpp:169 ../../code/MenuSystem.cpp:177 +#: ../../code/MenuSystem.cpp:190 +msgid "Back" +msgstr "" + +#: ../../code/main.cpp:1119 +msgid "Page %1% of %2%" +msgstr "" + +#: ../../code/main.cpp:1225 +msgid "Forward" +msgstr "" + +#: ../../code/main.cpp:1324 ../../code/main.cpp:1438 +msgid "AI" +msgstr "" + +#: ../../code/main.cpp:1327 +msgid "Playing field" +msgstr "" + +#: ../../code/main.cpp:1399 +msgid "Time Trial" +msgstr "" + +#: ../../code/main.cpp:1400 +msgid "Score as much as possible in 2 minutes" +msgstr "" + +#: ../../code/main.cpp:1404 +msgid "Stage Clear" +msgstr "" + +#: ../../code/main.cpp:1405 +msgid "You must clear a number of lines. Speed is rapidly increased." +msgstr "" + +#: ../../code/main.cpp:1408 +msgid "Puzzle" +msgstr "" + +#: ../../code/main.cpp:1409 +msgid "Clear the entire board with a limited number of moves." +msgstr "" + +#: ../../code/main.cpp:1412 +msgid "Endless" +msgstr "" + +#: ../../code/main.cpp:1413 +msgid "Score as much as possible. No time limit." +msgstr "" + +#: ../../code/main.cpp:1417 +msgid "Objective:" +msgstr "" + +#: ../../code/main.cpp:1423 +msgid "Movement keys:" +msgstr "" + +#: ../../code/main.cpp:1426 +msgid "Switch: " +msgstr "" + +#: ../../code/main.cpp:1428 +msgid "Restart: " +msgstr "" + +#: ../../code/main.cpp:1431 +msgid "Push line: " +msgstr "" + +#: ../../code/main.cpp:1551 +msgid "Select Puzzle" +msgstr "" + +#: ../../code/main.cpp:1554 +msgid "Stage Clear Level Select" +msgstr "" + +#: ../../code/main.cpp:1658 +msgid "Best score: 0" +msgstr "" + +#: ../../code/main.cpp:1659 +msgid "Time used: -- : --" +msgstr "" + +#: ../../code/main.cpp:1662 +msgid "Best score: " +msgstr "" + +#: ../../code/main.cpp:1665 +msgid "Time used: " +msgstr "" + +#: ../../code/menudef.cpp:138 ../../code/menudef.cpp:194 +msgid "Sound: On" +msgstr "" + +#: ../../code/menudef.cpp:138 ../../code/menudef.cpp:194 +msgid "Sound: Off" +msgstr "" + +#: ../../code/menudef.cpp:143 ../../code/menudef.cpp:196 +msgid "Fullscreen: On" +msgstr "" + +#: ../../code/menudef.cpp:143 ../../code/menudef.cpp:196 +msgid "Fullscreen: Off" +msgstr "" + +#: ../../code/menudef.cpp:164 +msgid "Change key bindings" +msgstr "" + +#: ../../code/menudef.cpp:165 +msgid "Left" +msgstr "" + +#: ../../code/menudef.cpp:166 +msgid "Right" +msgstr "" + +#: ../../code/menudef.cpp:167 +msgid "Up" +msgstr "" + +#: ../../code/menudef.cpp:168 +msgid "Down" +msgstr "" + +#: ../../code/menudef.cpp:169 +msgid "Push" +msgstr "" + +#: ../../code/menudef.cpp:170 +msgid "Change" +msgstr "" + +#: ../../code/menudef.cpp:189 +msgid "Configuration" +msgstr "" + +#: ../../code/menudef.cpp:192 +msgid "Music: On" +msgstr "" + +#: ../../code/menudef.cpp:192 +msgid "Music: Off" +msgstr "" + +#: ../../code/menudef.cpp:199 +msgid "Change player 1's name" +msgstr "" + +#: ../../code/menudef.cpp:201 +msgid "Change player 2's name" +msgstr "" + +#: ../../code/menudef.cpp:203 +msgid "Change player 1's keys" +msgstr "" + +#: ../../code/menudef.cpp:205 +msgid "Change player 2's keys" +msgstr "" + +#: ../../code/menudef.cpp:217 +msgid "Single player VS" +msgstr "" + +#: ../../code/menudef.cpp:240 +msgid "Very easy" +msgstr "" + +#: ../../code/menudef.cpp:241 +msgid "Easy" +msgstr "" + +#: ../../code/menudef.cpp:242 +msgid "Below normal" +msgstr "" + +#: ../../code/menudef.cpp:243 +msgid "Normal" +msgstr "" + +#: ../../code/menudef.cpp:244 +msgid "Above normal" +msgstr "" + +#: ../../code/menudef.cpp:245 +msgid "Hard" +msgstr "" + +#: ../../code/menudef.cpp:246 +msgid "Hardest" +msgstr "" + +#: ../../code/menudef.cpp:258 +msgid "Multiplayer" +msgstr "" + +#: ../../code/menudef.cpp:260 +msgid "Two player - time trial" +msgstr "" + +#: ../../code/menudef.cpp:262 +msgid "Two player - vs" +msgstr "" + +#: ../../code/menudef.cpp:271 +msgid "Block Attack - Rise of the blocks" +msgstr "" + +#: ../../code/menudef.cpp:273 +msgid "Single player - endless" +msgstr "" + +#: ../../code/menudef.cpp:275 +msgid "Single player - time trial" +msgstr "" + +#: ../../code/menudef.cpp:277 +msgid "Single player - stage clear" +msgstr "" + +#: ../../code/menudef.cpp:279 +msgid "Single player - puzzle mode" +msgstr "" + +#: ../../code/menudef.cpp:281 +msgid "Single player - vs" +msgstr "" + +#: ../../code/menudef.cpp:283 +msgid "Multi player" +msgstr "" + +#: ../../code/menudef.cpp:285 +msgid "Configure" +msgstr "" + +#: ../../code/menudef.cpp:287 +msgid "Highscores" +msgstr "" + +#: ../../code/MenuSystem.cpp:180 ../../code/MenuSystem.cpp:193 +msgid "Exit" +msgstr ""