mirror of
https://github.com/kichikuou/system3-sdl2.git
synced 2026-10-10 08:18:21 +03:00
Apply character encoding conversion to hard-coded strings
This fixes an issue where menu items like "戻る" were garbled in Unicode mode.
This commit is contained in:
+28
-32
@@ -1,34 +1,30 @@
|
||||
#include "localization.h"
|
||||
#include "encoding.h"
|
||||
|
||||
namespace strings {
|
||||
|
||||
const char* back[] = {
|
||||
"\x96\xDF\x82\xE9", // "戻る" in SJIS
|
||||
"Back",
|
||||
};
|
||||
const char* next_page[] = {
|
||||
"\x8E\x9F\x82\xCC\x83\x79\x81\x5B\x83\x57", // "次のページ" in SJIS
|
||||
"Next Page",
|
||||
};
|
||||
const char* dps_initial_tvars[][7] = {
|
||||
{
|
||||
"\x83\x4A\x83\x58\x83\x5E\x83\x80", // "カスタム" in SJIS
|
||||
"\x83\x8A\x81\x5B\x83\x69\x83\x58", // "リーナス" in SJIS
|
||||
"\x82\xA9\x82\xC2\x82\xDD", // "かつみ" in SJIS
|
||||
"\x97\x52\x94\xFC\x8E\x71", // "由美子" in SJIS
|
||||
"\x82\xA2\x82\xC2\x82\xDD", // "いつみ" in SJIS
|
||||
"\x82\xD0\x82\xC6\x82\xDD", // "ひとみ" in SJIS
|
||||
"\x90\x5E\x97\x9D\x8E\x71", // "真理子" in SJIS
|
||||
},
|
||||
{
|
||||
"Custom",
|
||||
"Linus",
|
||||
"Katsumi",
|
||||
"Yumiko",
|
||||
"Itsumi",
|
||||
"Hitomi",
|
||||
"Mariko",
|
||||
},
|
||||
};
|
||||
|
||||
} // namespace strings
|
||||
Strings::Strings(Language lang, Encoding* encoding)
|
||||
{
|
||||
switch (lang) {
|
||||
case JAPANESE:
|
||||
back = encoding->fromUtf8(u8"戻る");
|
||||
next_page = encoding->fromUtf8(u8"次のページ");
|
||||
dps_initial_tvars[0] = encoding->fromUtf8(u8"カスタム");
|
||||
dps_initial_tvars[1] = encoding->fromUtf8(u8"リーナス");
|
||||
dps_initial_tvars[2] = encoding->fromUtf8(u8"かつみ");
|
||||
dps_initial_tvars[3] = encoding->fromUtf8(u8"由美子");
|
||||
dps_initial_tvars[4] = encoding->fromUtf8(u8"いつみ");
|
||||
dps_initial_tvars[5] = encoding->fromUtf8(u8"ひとみ");
|
||||
dps_initial_tvars[6] = encoding->fromUtf8(u8"真理子");
|
||||
break;
|
||||
case ENGLISH:
|
||||
back = "Back";
|
||||
next_page = "Next Page";
|
||||
dps_initial_tvars[0] = "Custom";
|
||||
dps_initial_tvars[1] = "Linus";
|
||||
dps_initial_tvars[2] = "Katsumi";
|
||||
dps_initial_tvars[3] = "Yumiko";
|
||||
dps_initial_tvars[4] = "Itsumi";
|
||||
dps_initial_tvars[5] = "Hitomi";
|
||||
dps_initial_tvars[6] = "Mariko";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
#ifndef _LOCALIZATION_H_
|
||||
#define _LOCALIZATION_H_
|
||||
|
||||
class Encoding;
|
||||
|
||||
enum Language {
|
||||
JAPANESE = 0,
|
||||
ENGLISH = 1,
|
||||
};
|
||||
|
||||
namespace strings {
|
||||
struct Strings {
|
||||
Strings(Language lang, Encoding* encoding);
|
||||
|
||||
extern const char* back[];
|
||||
extern const char* next_page[];
|
||||
extern const char* dps_initial_tvars[][7];
|
||||
|
||||
} // namespace strings
|
||||
const char* back;
|
||||
const char* next_page;
|
||||
const char* dps_initial_tvars[7];
|
||||
};
|
||||
|
||||
#endif // _LOCALIZATION_H_
|
||||
|
||||
+2
-2
@@ -23,8 +23,8 @@ NACT::NACT(int sys_ver, uint32 crc32_a, uint32 crc32_b, const Config& config)
|
||||
: sys_ver(sys_ver),
|
||||
crc32_a(crc32_a),
|
||||
crc32_b(crc32_b),
|
||||
lang(get_language()),
|
||||
encoding(Encoding::create(get_encoding_name(config)))
|
||||
encoding(Encoding::create(get_encoding_name(config))),
|
||||
strings(get_language(), encoding.get())
|
||||
{
|
||||
platform_initialize();
|
||||
|
||||
|
||||
+1
-1
@@ -266,8 +266,8 @@ public:
|
||||
int sys_ver;
|
||||
uint32 crc32_a; // ADISK
|
||||
uint32 crc32_b; // BDISK for D.P.S -SG- and Super D.P.S
|
||||
Language lang;
|
||||
std::unique_ptr<Encoding> encoding;
|
||||
Strings strings;
|
||||
|
||||
// for Y27
|
||||
char tvar[10][33];
|
||||
|
||||
@@ -76,7 +76,7 @@ NACT_Sys1::NACT_Sys1(uint32 crc32_a, uint32 crc32_b, const Config& config)
|
||||
case CRC32_DPS_SG3:
|
||||
text_refresh = false;
|
||||
for (int i = 0; i < 7; i++)
|
||||
strcpy(tvar[i], strings::dps_initial_tvars[lang][i]);
|
||||
strcpy(tvar[i], strings.dps_initial_tvars[i]);
|
||||
break;
|
||||
case CRC32_INTRUDER:
|
||||
paint_x = paint_y = map_page = 0;
|
||||
@@ -419,7 +419,7 @@ top2:
|
||||
// 次のページを追加
|
||||
ags->menu_dest_x = 2;
|
||||
ags->menu_dest_y += 2;
|
||||
ags->draw_text(strings::next_page[lang]);
|
||||
ags->draw_text(strings.next_page);
|
||||
id[index++] = -1;
|
||||
ags->menu_dest_y += ags->menu_font_size + 2;
|
||||
}
|
||||
@@ -490,7 +490,7 @@ top:
|
||||
// 戻るを追加
|
||||
ags->menu_dest_x = 2;
|
||||
ags->menu_dest_y += 2;
|
||||
ags->draw_text(strings::back[lang]);
|
||||
ags->draw_text(strings.back);
|
||||
id[index++] = 0;
|
||||
ags->menu_dest_y += ags->menu_font_size + 2;
|
||||
} else {
|
||||
@@ -516,14 +516,14 @@ top2:
|
||||
// 戻るを追加
|
||||
ags->menu_dest_x = 2;
|
||||
ags->menu_dest_y += 2;
|
||||
ags->draw_text(strings::back[lang]);
|
||||
ags->draw_text(strings.back);
|
||||
id[index++] = 0;
|
||||
ags->menu_dest_y += ags->menu_font_size + 2;
|
||||
|
||||
// 次のページを追加
|
||||
ags->menu_dest_x = 2;
|
||||
ags->menu_dest_y += 2;
|
||||
ags->draw_text(strings::next_page[lang]);
|
||||
ags->draw_text(strings.next_page);
|
||||
id[index++] = -1;
|
||||
ags->menu_dest_y += ags->menu_font_size + 2;
|
||||
}
|
||||
|
||||
@@ -490,7 +490,7 @@ void NACT_Sys2::cmd_open_obj(int verb)
|
||||
// 戻るを追加
|
||||
ags->menu_dest_x = 2;
|
||||
ags->menu_dest_y += 2;
|
||||
ags->draw_text(strings::back[lang]);
|
||||
ags->draw_text(strings.back);
|
||||
id[index++] = 0;
|
||||
ags->menu_dest_y += ags->menu_font_size + 2;
|
||||
ags->draw_menu = false;
|
||||
|
||||
@@ -265,7 +265,7 @@ void NACT_Sys3::cmd_open_obj(int verb)
|
||||
// 戻るを追加
|
||||
ags->menu_dest_x = 2;
|
||||
ags->menu_dest_y += 2;
|
||||
ags->draw_text(strings::back[lang]);
|
||||
ags->draw_text(strings.back);
|
||||
id[index++] = 0;
|
||||
ags->menu_dest_y += ags->menu_font_size + 2;
|
||||
ags->draw_menu = false;
|
||||
|
||||
Reference in New Issue
Block a user