mirror of https://github.com/OpenRCT2/OpenRCT2.git
handle RCT2 language encoding properly
This commit is contained in:
parent
2824224710
commit
793e83779f
|
@ -322,6 +322,15 @@ static bool rct2_language_is_multibyte_charset(int languageId)
|
|||
}
|
||||
}
|
||||
|
||||
utf8 *rct2_language_string_to_utf8(const char *src, int languageId)
|
||||
{
|
||||
if (rct2_language_is_multibyte_charset(languageId)) {
|
||||
return convert_multibyte_charset(src, languageId);
|
||||
} else {
|
||||
return win1252_to_utf8_alloc(src);
|
||||
}
|
||||
}
|
||||
|
||||
bool language_get_localised_scenario_strings(const utf8 *scenarioFilename, rct_string_id *outStringIds)
|
||||
{
|
||||
outStringIds[0] = _languageCurrent->GetScenarioOverrideStringId(scenarioFilename, 0);
|
||||
|
|
|
@ -79,6 +79,7 @@ int utf8_length(const utf8 *text);
|
|||
wchar_t *utf8_to_widechar(const utf8 *src);
|
||||
utf8 *widechar_to_utf8(const wchar_t *src);
|
||||
|
||||
utf8 *rct2_language_string_to_utf8(const char *src, int languageId);
|
||||
bool language_get_localised_scenario_strings(const utf8 *scenarioFilename, rct_string_id *outStringIds);
|
||||
rct_string_id language_allocate_object_string(const utf8 * target);
|
||||
void language_free_object_string(rct_string_id stringId);
|
||||
|
|
|
@ -56,17 +56,17 @@ void StringTable::Read(IReadObjectContext * context, IStream * stream, uint8 id)
|
|||
entry.Id = id;
|
||||
entry.LanguageId = languageId;
|
||||
|
||||
char * win1252 = stream->ReadString();
|
||||
if (StringIsBlank(win1252))
|
||||
char * stringAsWin1252 = stream->ReadString();
|
||||
utf8 * stringAsUtf8 = rct2_language_string_to_utf8(stringAsWin1252, languageId);
|
||||
Memory::Free(stringAsWin1252);
|
||||
|
||||
if (StringIsBlank(stringAsUtf8))
|
||||
{
|
||||
entry.LanguageId = RCT2_LANGUAGE_ID_BLANK;
|
||||
}
|
||||
String::Trim(stringAsUtf8);
|
||||
|
||||
entry.Text = win1252_to_utf8_alloc(win1252);
|
||||
Memory::Free(win1252);
|
||||
|
||||
String::Trim(entry.Text);
|
||||
|
||||
entry.Text = stringAsUtf8;
|
||||
_strings.push_back(entry);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue