Internationalization code generator
Ecstatic Coder
ecstatic.coder at gmail.com
Thu May 31 08:16:34 UTC 2018
For those interested, I've open-sourced my localization code
generator here :
https://github.com/senselogic/LINGUI
It converts human-readable translation scripts into compilable
D/C# code.
For instance, this script :
Game
New_game
Welcome first_name last_name
Pears count
English : Game
New_game
"New game"
Welcome first_name last_name
"Welcome, "
first_name
" "
last_name
"!"
Pears count
*count
" "
if @count = one
"pear"
else
"pears"
German : Game
New_game
"Neues Spiel"
Welcome first_name last_name
"Willkommen, "
first_name
" "
last_name
"!"
Pears count
*count
" "
if @count = one
"Birne"
else
"Birnen"
French : Game
New_game
"Nouveau jeu"
Welcome first_name last_name
"Bienvenue, "
first_name
" "
last_name
" !"
Pears count
*count
" "
if @count = one
"poire"
else
"poires"
Can be used this way :
// -- IMPORTS
import std.stdio : writeln;
import ENGLISH_LANGUAGE_MODULE;
import FRENCH_LANGUAGE_MODULE;
import GAME_LANGUAGE_MODULE;
import GERMAN_LANGUAGE_MODULE;
import TRANSLATION_MODULE;
// -- FUNCTIONS
void Test(
GAME_LANGUAGE game_language
)
{
writeln( game_language.New_game() );
writeln( game_language.Welcome( TRANSLATION( "Jack" ),
TRANSLATION( "Sparrow" ) ) );
writeln( game_language.Pears( TRANSLATION( 0 ) ) );
writeln( game_language.Pears( TRANSLATION( 1 ) ) );
writeln( game_language.Pears( TRANSLATION( 2 ) ) );
}
// ~~
void main(
string[] argument_array
)
{
Test( new ENGLISH_LANGUAGE() );
Test( new GERMAN_LANGUAGE() );
Test( new FRENCH_LANGUAGE() );
}
Which will thus print :
New game
Welcome, Jack Sparrow!
0 pears
1 pear
2 pears
Neues Spiel
Willkommen, Jack Sparrow!
0 Birnen
1 Birne
2 Birnen
Nouveau jeu
Bienvenue, Jack Sparrow !
0 poire
1 poire
2 poires
I know there are other ways to do this, but for Unity games this
was what best matched my needs, especially performance-wise...
More information about the Digitalmars-d-announce
mailing list