// initialize localization, if no language is passed - use the language specified in the registry void lcl_init(int lang_init) { atexit(lcl_xstr_close); char lang_string[128]; char *ret; int lang, idx; // initialize encryption encrypt_init(); // read the language from the registry if(lang_init < 0){ memset(lang_string, 0, 128); // default to DEFAULT_LANGUAGE (which should be english so we dont have to put German text // in tstrings in the #default section ret = os_config_read_string(NULL, "Language", DEFAULT_LANGUAGE); if(ret == NULL){ Int3(); strcpy(lang_string, DEFAULT_LANGUAGE); } else { strcpy(lang_string, ret); } // look it up lang = -1; for(idx=0; idx<LCL_NUM_LANGUAGES; idx++){ if(!stricmp(Lcl_languages[idx].lang_name, lang_string)){ lang = idx; break; } } if(lang < 0){ lang = 0; } } else { Assert((lang_init >= 0) && (lang_init < LCL_NUM_LANGUAGES)); lang = lang_init; } // language markers Lcl_pointer_count = 0; // associate the table string file lcl_ext_associate(TABLE_STRING_FILENAME); // set the language (this function takes care of setting up file pointers) lcl_set_language(lang); }
// initialize localization, if no language is passed - use the language specified in the registry void lcl_init(int lang_init) { char lang_string[128]; const char *ret; int lang, idx, i; // initialize encryption encrypt_init(); // setup English Lcl_languages.push_back(Lcl_builtin_languages[FS2_OPEN_DEFAULT_LANGUAGE]); // check string.tbl to see which languages we support try { parse_stringstbl_quick("strings.tbl"); } catch (const parse::ParseException& e) { mprintf(("TABLES: Unable to parse '%s'! Error message = %s.\n", "strings.tbl", e.what())); } parse_modular_table(NOX("*-lcl.tbm"), parse_stringstbl_quick); // if the only language we have at this point is English, we need to setup the builtin languages as we might be dealing with an old style strings.tbl // which doesn't support anything beyond the builtin languages. Note, we start at i = 1 because we added English above. if ((int)Lcl_languages.size() == 1) { for (i=1; i<NUM_BUILTIN_LANGUAGES; i++) { Lcl_languages.push_back(Lcl_builtin_languages[i]); } } // read the language from the registry if(lang_init < 0){ memset(lang_string, 0, 128); // default to DEFAULT_LANGUAGE (which should be English so we don't have to put German text // in tstrings in the #default section) ret = os_config_read_string(NULL, "Language", Lcl_languages[FS2_OPEN_DEFAULT_LANGUAGE].lang_name); if(ret == NULL){ Error(LOCATION, "Default language not found."); } strcpy_s(lang_string, ret); // look it up lang = -1; for(idx = 0; idx < (int)Lcl_languages.size(); idx++){ if(!stricmp(Lcl_languages[idx].lang_name, lang_string)){ lang = idx; break; } } if(lang < 0){ lang = 0; } } else { Assert((lang_init >= 0) && (lang_init < (int)Lcl_languages.size())); lang = lang_init; } // set the language (this function takes care of setting up file pointers) lcl_set_language(lang); }