(svn r25204) [1.3] -Backport from trunk:

- Change: [strgen] Allow any number of colour codes in translations (r25193, r25192, r25191)
- Feature: Faroese and Scottish Gaelic translations (r25198, r25176)
- Feature: Plural form to be used by Scottish Gaelic (1,11; 2,12; 3..10, 13..19; other) (r25078)
This commit is contained in:
rubidium 2013-04-24 17:54:43 +00:00
parent 17d90107a3
commit 7739f1951d
3 changed files with 31 additions and 40 deletions

View File

@ -434,24 +434,14 @@ int CDECL main(int argc, char *argv[])
printf("args\tflags\tcommand\treplacement\n");
for (const CmdStruct *cs = _cmd_structs; cs < endof(_cmd_structs); cs++) {
char flags;
switch (cs->value) {
case 0x200E: case 0x200F: // Implicit BIDI controls
case 0x202A: case 0x202B: case 0x202C: case 0x202D: case 0x202E: // Explicit BIDI controls
case 0xA0: // Non breaking space
case '\n': // Newlines may be added too
case '{': // This special
/* This command may be in the translation when it is not in base */
flags = 'i';
break;
default:
if (cs->proc == EmitGender) {
flags = 'g'; // Command needs number of parameters defined by number of genders
} else if (cs->proc == EmitPlural) {
flags = 'p'; // Command needs number of parameters defined by plural value
} else {
flags = '0'; // Command needs no parameters
}
if (cs->proc == EmitGender) {
flags = 'g'; // Command needs number of parameters defined by number of genders
} else if (cs->proc == EmitPlural) {
flags = 'p'; // Command needs number of parameters defined by plural value
} else if (cs->flags & C_DONTCOUNT) {
flags = 'i'; // Command may be in the translation when it is not in base
} else {
flags = '0'; // Command needs no parameters
}
printf("%i\t%c\t\"%s\"\t\"%s\"\n", cs->consumes, flags, cs->cmd, strstr(cs->cmd, "STRING") ? "STRING" : cs->cmd);
}

View File

@ -617,6 +617,11 @@ static int DeterminePluralForm(int64 count, int plural_form)
* Maltese */
case 12:
return (n == 1 ? 0 : n == 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3);
/* Four forms: special cases for 1 and 11, 2 and 12, 3 .. 10 and 13 .. 19, other
* Used in:
* Scottish Gaelic */
case 13:
return ((n == 1 || n == 11) ? 0 : (n == 2 || n == 12) ? 1 : ((n > 2 && n < 11) || (n > 12 && n < 20)) ? 2 : 3);
}
}

View File

@ -40,23 +40,23 @@ static const CmdStruct _cmd_structs[] = {
{"BIG_FONT", EmitSingleChar, SCC_BIGFONT, 0, C_NONE},
/* Colours */
{"BLUE", EmitSingleChar, SCC_BLUE, 0, C_NONE},
{"SILVER", EmitSingleChar, SCC_SILVER, 0, C_NONE},
{"GOLD", EmitSingleChar, SCC_GOLD, 0, C_NONE},
{"RED", EmitSingleChar, SCC_RED, 0, C_NONE},
{"PURPLE", EmitSingleChar, SCC_PURPLE, 0, C_NONE},
{"LTBROWN", EmitSingleChar, SCC_LTBROWN, 0, C_NONE},
{"ORANGE", EmitSingleChar, SCC_ORANGE, 0, C_NONE},
{"GREEN", EmitSingleChar, SCC_GREEN, 0, C_NONE},
{"YELLOW", EmitSingleChar, SCC_YELLOW, 0, C_NONE},
{"DKGREEN", EmitSingleChar, SCC_DKGREEN, 0, C_NONE},
{"CREAM", EmitSingleChar, SCC_CREAM, 0, C_NONE},
{"BROWN", EmitSingleChar, SCC_BROWN, 0, C_NONE},
{"WHITE", EmitSingleChar, SCC_WHITE, 0, C_NONE},
{"LTBLUE", EmitSingleChar, SCC_LTBLUE, 0, C_NONE},
{"GRAY", EmitSingleChar, SCC_GRAY, 0, C_NONE},
{"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, C_NONE},
{"BLACK", EmitSingleChar, SCC_BLACK, 0, C_NONE},
{"BLUE", EmitSingleChar, SCC_BLUE, 0, C_DONTCOUNT},
{"SILVER", EmitSingleChar, SCC_SILVER, 0, C_DONTCOUNT},
{"GOLD", EmitSingleChar, SCC_GOLD, 0, C_DONTCOUNT},
{"RED", EmitSingleChar, SCC_RED, 0, C_DONTCOUNT},
{"PURPLE", EmitSingleChar, SCC_PURPLE, 0, C_DONTCOUNT},
{"LTBROWN", EmitSingleChar, SCC_LTBROWN, 0, C_DONTCOUNT},
{"ORANGE", EmitSingleChar, SCC_ORANGE, 0, C_DONTCOUNT},
{"GREEN", EmitSingleChar, SCC_GREEN, 0, C_DONTCOUNT},
{"YELLOW", EmitSingleChar, SCC_YELLOW, 0, C_DONTCOUNT},
{"DKGREEN", EmitSingleChar, SCC_DKGREEN, 0, C_DONTCOUNT},
{"CREAM", EmitSingleChar, SCC_CREAM, 0, C_DONTCOUNT},
{"BROWN", EmitSingleChar, SCC_BROWN, 0, C_DONTCOUNT},
{"WHITE", EmitSingleChar, SCC_WHITE, 0, C_DONTCOUNT},
{"LTBLUE", EmitSingleChar, SCC_LTBLUE, 0, C_DONTCOUNT},
{"GRAY", EmitSingleChar, SCC_GRAY, 0, C_DONTCOUNT},
{"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, C_DONTCOUNT},
{"BLACK", EmitSingleChar, SCC_BLACK, 0, C_DONTCOUNT},
{"REV", EmitSingleChar, SCC_REVISION, 0, C_NONE}, // openttd revision string
@ -128,15 +128,10 @@ static const CmdStruct _cmd_structs[] = {
{"PLANE", EmitSingleChar, SCC_PLANE, 0, C_DONTCOUNT},
{"SHIP", EmitSingleChar, SCC_SHIP, 0, C_DONTCOUNT},
{"NBSP", EmitSingleChar, 0xA0, 0, C_DONTCOUNT},
{"CENT", EmitSingleChar, 0xA2, 0, C_DONTCOUNT},
{"POUND_SIGN", EmitSingleChar, 0xA3, 0, C_DONTCOUNT},
{"EURO", EmitSingleChar, 0x20AC, 0, C_DONTCOUNT},
{"YEN_SIGN", EmitSingleChar, 0xA5, 0, C_DONTCOUNT},
{"COPYRIGHT", EmitSingleChar, 0xA9, 0, C_DONTCOUNT},
{"DOWN_ARROW", EmitSingleChar, SCC_DOWN_ARROW, 0, C_DONTCOUNT},
{"CHECKMARK", EmitSingleChar, SCC_CHECKMARK, 0, C_DONTCOUNT},
{"CROSS", EmitSingleChar, SCC_CROSS, 0, C_DONTCOUNT},
{"REGISTERED", EmitSingleChar, 0xAE, 0, C_DONTCOUNT},
{"RIGHT_ARROW", EmitSingleChar, SCC_RIGHT_ARROW, 0, C_DONTCOUNT},
{"SMALL_LEFT_ARROW", EmitSingleChar, SCC_LESS_THAN, 0, C_DONTCOUNT},
{"SMALL_RIGHT_ARROW", EmitSingleChar, SCC_GREATER_THAN, 0, C_DONTCOUNT},
@ -174,6 +169,7 @@ static const PluralForm _plural_forms[] = {
{ 3, "Three forms: special cases for 1, and 2 to 4.", "\"1\" \"2..4\" \"other\"" },
{ 2, "Two forms: cases for numbers ending with a consonant, and with a vowel.", "\"yeong,il,sam,yuk,chil,pal\" \"i,sa,o,gu\"" },
{ 4, "Four forms: special cases for 1, 0 and numbers ending in 02 to 10, and numbers ending in 11 to 19.", "\"1\" \"0,2..10,102..110,202..210,...\" \"11..19,111..119,211..219,...\" \"other\"" },
{ 4, "Four forms: special cases for 1 and 11, 2 and 12, 3..10 and 13..19.", "\"1,11\" \"2,12\" \"3..10,13..19\" \"other\"" },
};
/* Flags: