Changeset - r16480:b531763d125c
[Not reviewed]
master
0 2 0
rubidium - 14 years ago 2010-11-16 21:01:56
rubidium@openttd.org
(svn r21215) -Codechange: store the plural form in the plural (choice) lists
2 files changed with 11 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/strgen/strgen.cpp
Show inline comments
 
@@ -354,6 +354,7 @@ static void EmitPlural(char *buf, int va
 
	}
 

	
 
	PutUtf8(SCC_PLURAL_LIST);
 
	PutByte(_lang.plural_form);
 
	PutByte(TranslateArgumentIdx(argidx, offset));
 
	EmitWordList(words, nw);
 
}
src/strings.cpp
Show inline comments
 
@@ -375,12 +375,18 @@ static char *FormatGenericCurrency(char 
 
	return buff;
 
}
 

	
 
static int DeterminePluralForm(int64 count)
 
/**
 
 * Determine the "plural" index given a plural form and a number.
 
 * @param count       The number to get the plural index of.
 
 * @param plural_form The plural form we want an index for.
 
 * @return The plural index for the given form.
 
 */
 
static int DeterminePluralForm(int64 count, int plural_form)
 
{
 
	/* The absolute value determines plurality */
 
	uint64 n = abs(count);
 

	
 
	switch (_langpack->plural_form) {
 
	switch (plural_form) {
 
		default:
 
			NOT_REACHED();
 

	
 
@@ -875,8 +881,9 @@ static char *FormatString(char *buff, co
 
				break;
 

	
 
			case SCC_PLURAL_LIST: { // {P}
 
				int plural_form = *str++;          // contains the plural form for this string
 
				int64 v = argv_orig[(byte)*str++]; // contains the number that determines plural
 
				str = ParseStringChoice(str, DeterminePluralForm(v), &buff, last);
 
				str = ParseStringChoice(str, DeterminePluralForm(v, plural_form), &buff, last);
 
				break;
 
			}
 

	
0 comments (0 inline, 0 general)