|  |  |  | @ -38,11 +38,14 @@ using namespace std; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | using namespace DFHack; | 
		
	
		
			
				|  |  |  |  | using namespace DFHack::Simple; | 
		
	
		
			
				|  |  |  |  | using namespace df::enums; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #include "DataDefs.h" | 
		
	
		
			
				|  |  |  |  | #include "df/world.h" | 
		
	
		
			
				|  |  |  |  | #include "df/d_init.h" | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | using df::global::world; | 
		
	
		
			
				|  |  |  |  | using df::global::d_init; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | bool Translation::IsValid () | 
		
	
		
			
				|  |  |  |  | { | 
		
	
	
		
			
				
					|  |  |  | @ -82,22 +85,53 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     string out; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if(!inEnglish) | 
		
	
		
			
				|  |  |  |  |     string word = name->first_name; | 
		
	
		
			
				|  |  |  |  |     word[0] = toupper(word[0]); | 
		
	
		
			
				|  |  |  |  |     out.append(word); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if (!name->nickname.empty()) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         word = "`" + name->nickname + "'"; | 
		
	
		
			
				|  |  |  |  |         switch (d_init ? d_init->nickname_dwarf : d_init_nickname::CENTRALIZE) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |         case d_init_nickname::REPLACE_ALL: | 
		
	
		
			
				|  |  |  |  |             out = word; | 
		
	
		
			
				|  |  |  |  |             return out; | 
		
	
		
			
				|  |  |  |  |         case d_init_nickname::REPLACE_FIRST: | 
		
	
		
			
				|  |  |  |  |             out = ""; | 
		
	
		
			
				|  |  |  |  |             break; | 
		
	
		
			
				|  |  |  |  |         case d_init_nickname::CENTRALIZE: | 
		
	
		
			
				|  |  |  |  |             break; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if (out.length() > 0) | 
		
	
		
			
				|  |  |  |  |             out.append(" "); | 
		
	
		
			
				|  |  |  |  |         out.append(word); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if (!inEnglish) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         if (name->words[0] >= 0 || name->words[1] >= 0) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             word.clear(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             if (name->words[0] >= 0) | 
		
	
		
			
				|  |  |  |  |                 out.append(*world->raws.language.translations[name->language]->words[name->words[0]]); | 
		
	
		
			
				|  |  |  |  |                 word.append(*world->raws.language.translations[name->language]->words[name->words[0]]); | 
		
	
		
			
				|  |  |  |  |             if (name->words[1] >= 0) | 
		
	
		
			
				|  |  |  |  |                 out.append(*world->raws.language.translations[name->language]->words[name->words[1]]); | 
		
	
		
			
				|  |  |  |  |             out[0] = toupper(out[0]); | 
		
	
		
			
				|  |  |  |  |                 word.append(*world->raws.language.translations[name->language]->words[name->words[1]]); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             word[0] = toupper(word[0]); | 
		
	
		
			
				|  |  |  |  |             if (out.length() > 0) | 
		
	
		
			
				|  |  |  |  |                 out.append(" "); | 
		
	
		
			
				|  |  |  |  |             out.append(word); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if (name->words[5] >= 0) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             string word; | 
		
	
		
			
				|  |  |  |  |             word.clear(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             for (int i = 2; i <= 5; i++) | 
		
	
		
			
				|  |  |  |  |                 if (name->words[i] >= 0) | 
		
	
		
			
				|  |  |  |  |                     word.append(*world->raws.language.translations[name->language]->words[name->words[i]]); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             word[0] = toupper(word[0]); | 
		
	
		
			
				|  |  |  |  |             if (out.length() > 0) | 
		
	
		
			
				|  |  |  |  |                 out.append(" "); | 
		
	
	
		
			
				
					|  |  |  | @ -105,7 +139,9 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if (name->words[6] >= 0) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             string word = *world->raws.language.translations[name->language]->words[name->words[6]]; | 
		
	
		
			
				|  |  |  |  |             word.clear(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             word.append(*world->raws.language.translations[name->language]->words[name->words[6]]); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             word[0] = toupper(word[0]); | 
		
	
		
			
				|  |  |  |  |             if (out.length() > 0) | 
		
	
	
		
			
				
					|  |  |  | @ -117,11 +153,17 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         if (name->words[0] >= 0 || name->words[1] >= 0) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             word.clear(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             if (name->words[0] >= 0) | 
		
	
		
			
				|  |  |  |  |                 out.append(world->raws.language.words[name->words[0]]->forms[name->parts_of_speech[0].value]); | 
		
	
		
			
				|  |  |  |  |                 word.append(world->raws.language.words[name->words[0]]->forms[name->parts_of_speech[0].value]); | 
		
	
		
			
				|  |  |  |  |             if (name->words[1] >= 0) | 
		
	
		
			
				|  |  |  |  |                 out.append(world->raws.language.words[name->words[1]]->forms[name->parts_of_speech[1].value]); | 
		
	
		
			
				|  |  |  |  |             out[0] = toupper(out[0]); | 
		
	
		
			
				|  |  |  |  |                 word.append(world->raws.language.words[name->words[1]]->forms[name->parts_of_speech[1].value]); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             word[0] = toupper(word[0]); | 
		
	
		
			
				|  |  |  |  |             if (out.length() > 0) | 
		
	
		
			
				|  |  |  |  |                 out.append(" "); | 
		
	
		
			
				|  |  |  |  |             out.append(word); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if (name->words[5] >= 0) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
	
		
			
				
					|  |  |  | @ -133,7 +175,7 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 if (name->words[i] >= 0) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     string word = world->raws.language.words[name->words[i]]->forms[name->parts_of_speech[i].value]; | 
		
	
		
			
				|  |  |  |  |                     word = world->raws.language.words[name->words[i]]->forms[name->parts_of_speech[i].value]; | 
		
	
		
			
				|  |  |  |  |                     word[0] = toupper(word[0]); | 
		
	
		
			
				|  |  |  |  |                     out.append(" " + word); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
	
		
			
				
					|  |  |  | @ -146,10 +188,11 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish | 
		
	
		
			
				|  |  |  |  |             else | 
		
	
		
			
				|  |  |  |  |                 out.append("Of"); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             string word = world->raws.language.words[name->words[6]]->forms[name->parts_of_speech[6].value]; | 
		
	
		
			
				|  |  |  |  |             word = world->raws.language.words[name->words[6]]->forms[name->parts_of_speech[6].value]; | 
		
	
		
			
				|  |  |  |  |             word[0] = toupper(word[0]); | 
		
	
		
			
				|  |  |  |  |             out.append(" " + word); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     return out; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
	
		
			
				
					|  |  |  | 
 |