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:
kichikuou
2021-09-05 15:10:22 +09:00
parent f4799161a9
commit ccd99dab07
7 changed files with 46 additions and 48 deletions
+28 -32
View File
@@ -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;
}
}
+8 -6
View File
@@ -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
View File
@@ -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
View File
@@ -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];
+5 -5
View File
@@ -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;
}
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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;