/* ============ Trans_Init ============ */ void Trans_Init( void ) { char langList[ MAX_TOKEN_CHARS ] = ""; char encList[ MAX_TOKEN_CHARS ] = ""; std::set<Language> langs; Language lang; Cmd_AddCommand( "updatelanguage", Trans_UpdateLanguage_f ); language = Cvar_Get( "language", "", CVAR_ARCHIVE ); trans_debug = Cvar_Get( "trans_debug", "0", CVAR_ARCHIVE ); trans_languages = Cvar_Get( "trans_languages", "", CVAR_ROM ); trans_encodings = Cvar_Get( "trans_encodings", "", CVAR_ROM ); // set tinygettext log callbacks Log::set_log_error_callback( &Trans_Error ); Log::set_log_warning_callback( &Trans_Warning ); Log::set_log_info_callback( &Trans_Info ); trans_manager.set_filesystem( std::auto_ptr<FileSystem>( new DaemonFileSystem ) ); trans_managergame.set_filesystem( std::auto_ptr<FileSystem>( new DaemonFileSystem ) ); trans_manager.add_directory( "translation/client" ); trans_managergame.add_directory( "translation/game" ); langs = trans_manager.get_languages(); for( std::set<Language>::iterator p = langs.begin(); p != langs.end(); p++ ) { Q_strcat( langList, sizeof( langList ), va( "\"%s\" ", p->get_name().c_str() ) ); Q_strcat( encList, sizeof( encList ), va( "\"%s%s%s\" ", p->get_language().c_str(), p->get_country().c_str()[0] ? "_" : "", p->get_country().c_str() ) ); } Cvar_Set( "trans_languages", langList ); Cvar_Set( "trans_encodings", encList ); Com_Printf( P_( "Loaded %u language\n", "Loaded %u languages\n", langs.size() ), ( int )langs.size() ); }
/* ============ Trans_Init ============ */ extern "C" void Trans_Init( void ) { char langList[ MAX_TOKEN_CHARS ] = ""; char encList[ MAX_TOKEN_CHARS ] = ""; FL_Locale *locale; std::set<Language> langs; Language lang; Cmd_AddCommand( "updatelanguage", Trans_UpdateLanguage_f ); language = Cvar_Get( "language", "", CVAR_ARCHIVE ); trans_debug = Cvar_Get( "trans_debug", "0", CVAR_ARCHIVE ); trans_languages = Cvar_Get( "trans_languages", "", CVAR_ROM ); trans_encodings = Cvar_Get( "trans_encodings", "", CVAR_ROM ); // set tinygettext log callbacks Log::set_log_error_callback( &Trans_Error ); Log::set_log_warning_callback( &Trans_Warning ); Log::set_log_info_callback( &Trans_Info ); trans_manager.set_filesystem( std::auto_ptr<FileSystem>( new DaemonFileSystem ) ); trans_managergame.set_filesystem( std::auto_ptr<FileSystem>( new DaemonFileSystem ) ); trans_manager.add_directory( "translation/client" ); trans_managergame.add_directory( "translation/game" ); langs = trans_manager.get_languages(); for( std::set<Language>::iterator p = langs.begin(); p != langs.end(); p++ ) { Q_strcat( langList, sizeof( langList ), va( "\"%s\" ", p->get_name().c_str() ) ); Q_strcat( encList, sizeof( encList ), va( "\"%s%s%s\" ", p->get_language().c_str(), p->get_country().c_str()[0] ? "_" : "", p->get_country().c_str() ) ); } Cvar_Set( "trans_languages", langList ); Cvar_Set( "trans_encodings", encList ); // Only detect locale if no previous language set. if( !language->string[0] ) { FL_FindLocale( &locale, FL_MESSAGES ); // Invalid or not found. Just use builtin language. if( !locale->lang || !locale->lang[0] || !locale->country || !locale->country[0] ) { Cvar_Set( "language", "en" ); } else { Cvar_Set( "language", va( "%s%s%s", locale->lang, locale->country[0] ? "_" : "", locale->country ) ); } FL_FreeLocale( &locale ); } Trans_SetLanguage( language->string ); Com_Printf( P_( "Loaded %u language\n", "Loaded %u languages\n", langs.size() ), ( int )langs.size() ); }