diff --git a/yabause/src/android/jni/yui.c b/yabause/src/android/jni/yui.c index fa84958b81..891668cab1 100644 --- a/yabause/src/android/jni/yui.c +++ b/yabause/src/android/jni/yui.c @@ -498,6 +498,7 @@ Java_org_yabause_android_YabauseRunnable_init( JNIEnv* env, jobject obj, jobject yinit.cdcoretype = CDCORE_ISO; yinit.carttype = GetCartridgeType(); yinit.regionid = 0; + yinit.syslanguageid = 0; yinit.biospath = GetBiosPath(); yinit.cdpath = GetGamePath(); yinit.buppath = GetMemoryPath(); diff --git a/yabause/src/cocoa/YabauseController.m b/yabause/src/cocoa/YabauseController.m index eaaafd2652..df2fe16ecd 100644 --- a/yabause/src/cocoa/YabauseController.m +++ b/yabause/src/cocoa/YabauseController.m @@ -256,6 +256,7 @@ - (void)startEmulationWithCDCore:(int)cdcore CDPath:(const char *)fn yinit.cdcoretype = cdcore; yinit.carttype = [prefs cartType]; yinit.regionid = [prefs region]; + yinit.syslanguageid = [prefs system language]; yinit.biospath = ([bios length] > 0 && ![prefs emulateBios]) ? [bios UTF8String] : NULL; yinit.cdpath = fn; diff --git a/yabause/src/dreamcast/yui.c b/yabause/src/dreamcast/yui.c index f6c539bab6..488c1ee1f3 100644 --- a/yabause/src/dreamcast/yui.c +++ b/yabause/src/dreamcast/yui.c @@ -87,6 +87,7 @@ int YuiInit(int sh2core) { yinit.cdcoretype = CDCORE_ARCH; yinit.carttype = CART_NONE; yinit.regionid = REGION_AUTODETECT; + yinit.syslanguageid = 0; yinit.biospath = emulate_bios ? NULL : bios; yinit.cdpath = NULL; yinit.buppath = NULL; diff --git a/yabause/src/gtk/main.c b/yabause/src/gtk/main.c index 51593090d0..60ffd07e07 100644 --- a/yabause/src/gtk/main.c +++ b/yabause/src/gtk/main.c @@ -134,6 +134,11 @@ GtkWidget * yui; GKeyFile * keyfile; yabauseinit_struct yinit; +char* toLower(char* s) { + for(char *p=s; *p; p++) *p=tolower(*p); + return s; +} + static int yui_main(gpointer data) { PERCore->HandleEvents(); return TRUE; @@ -161,6 +166,7 @@ static void yui_settings_init(void) { yinit.carttype = CART_NONE; yinit.regionid = 0; yinit.biospath = biospath; + yinit.syslanguageid = 0; yinit.cdpath = cdpath; yinit.buppath = buppath; yinit.mpegpath = mpegpath; @@ -225,6 +231,28 @@ static gboolean yui_settings_load(void) { Cs2ChangeCDCore(yinit.cdcoretype, yinit.cdpath); } + /* SystemLanguageID */ + { + char * syslang = g_key_file_get_value(keyfile, "General", "SystemLanguageID", 0); + tmp = yinit.syslanguageid; + if ((syslang == 0) || !strcmp(syslang, "0")) { + yinit.syslanguageid = 0; + } else { + switch(syslang[0]) { + case '0': yinit.syslanguageid = 0; break; + case '1': yinit.syslanguageid = 1; break; + case '2': yinit.syslanguageid = 2; break; + case '3': yinit.syslanguageid = 3; break; + case '4': yinit.syslanguageid = 4; break; + case '5': yinit.syslanguageid = 5; break; + } + } + + if ((YUI_WINDOW(yui)->state & YUI_IS_INIT) && (tmp != yinit.syslanguageid)) { + mustRestart = TRUE; + } + } + /* region */ { char * region = g_key_file_get_value(keyfile, "General", "Region", 0); @@ -493,6 +521,24 @@ int main(int argc, char *argv[]) { g_strlcpy(biospath, argv[i] + strlen("--bios="), 256); yinit.biospath = biospath; } + //set System Language + if (0 == strcmp(argv[i], "-l") && argv[i + 1]) { + g_strlcpy(strsyslangeid, argv[i + 1], 256); + if (toLower(strsyslangeid) == "english") { yinit.syslanguageid = 0; } + if (toLower(strsyslangeid) == "deutsch") { yinit.syslanguageid = 1; } + if (toLower(strsyslangeid) == "french") { yinit.syslanguageid = 2; } + if (toLower(strsyslangeid) == "spanish") { yinit.syslanguageid = 3; } + if (toLower(strsyslangeid) == "italian") { yinit.syslanguageid = 4; } + if (toLower(strsyslangeid) == "japanese") { yinit.syslanguageid = 5; } + } else if (strstr(argv[i], "--language=")) { + g_strlcpy(strsyslangeid, argv[i] + strlen("--language="), 256); + if (toLower(strsyslangeid) == "english") { yinit.syslanguageid = 0; } + if (toLower(strsyslangeid) == "deutsch") { yinit.syslanguageid = 1; } + if (toLower(strsyslangeid) == "french") { yinit.syslanguageid = 2; } + if (toLower(strsyslangeid) == "spanish") { yinit.syslanguageid = 3; } + if (toLower(strsyslangeid) == "italian") { yinit.syslanguageid = 4; } + if (toLower(strsyslangeid) == "japanese") { yinit.syslanguageid = 5; } + } //set iso else if (0 == strcmp(argv[i], "-i") && argv[i + 1]) { g_strlcpy(cdpath, argv[i + 1], 256); diff --git a/yabause/src/gtk/settings.c b/yabause/src/gtk/settings.c index d07056e588..13cf51ad8b 100644 --- a/yabause/src/gtk/settings.c +++ b/yabause/src/gtk/settings.c @@ -80,6 +80,16 @@ YuiRangeItem * osdcores = NULL; YuiRangeItem * sndcores = NULL; YuiRangeItem * percores = NULL; +YuiRangeItem syslanguage[] = { + { "0" , "English" }, + { "1" , "Deutsch" }, + { "2" , "French" }, + { "3" , "Spanish" }, + { "4" , "Italian" }, + { "5" , "Japanese" }, + { 0, 0 } +}; + YuiRangeItem regions[] = { { "Auto" , "Auto-detect" }, { "J" , "Japan (NTSC)" }, @@ -325,6 +335,9 @@ GtkWidget* create_dialog1(void) { box = yui_page_add(YUI_PAGE(general), _("Save States")); gtk_container_add(GTK_CONTAINER(box), yui_file_entry_new(keyfile, "General", "StatePath", YUI_FILE_ENTRY_BROWSE | YUI_FILE_ENTRY_DIRECTORY, NULL)); + box = yui_page_add(YUI_PAGE(general), _("System Language")); + gtk_container_add(GTK_CONTAINER(box), yui_range_new(keyfile, "General", "SystemLanguageID", syslanguage)); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), general, gtk_label_new (_("General"))); gtk_widget_show_all(general); diff --git a/yabause/src/qt/Arguments.cpp b/yabause/src/qt/Arguments.cpp index af0811eb93..44d08d3060 100644 --- a/yabause/src/qt/Arguments.cpp +++ b/yabause/src/qt/Arguments.cpp @@ -23,6 +23,7 @@ namespace Arguments void autostart(const QString& param); void binary(const QString& param); void bios(const QString& param); + void syslangid(const QString& param); void cdrom(const QString& param); void fullscreen(const QString& param); void help(const QString& param); @@ -50,6 +51,7 @@ namespace Arguments { "-a", "--autostart", NULL, "Automatically start emulation.", 1, autostart }, { NULL, "--binary=", "[:ADDRESS]", "Use a binary file.", 1, binary }, { "-b", "--bios=", "", "Choose a bios file.", 3, bios }, + { "-l", "--language=", "","Choose the system language: english, deutsch, french, spanish, italian, japanese", 7, syslangid }, { "-c", "--cdrom=", "", "Choose the cdrom device.", 4, cdrom }, { "-f", "--fullscreen", NULL, "Start the emulator in fullscreen.", 5, fullscreen }, { "-h", "--help", NULL, "Show this help and exit.", 0, help }, @@ -62,8 +64,8 @@ namespace Arguments void parse() { - QVector