Various things:
- Fixed inline translations when using %T - "Improved" caching of server language - Renamed Translator::GetServerLanguageCode() to GetServerLanguage() - Added some more comments to sm_globals.h - Natives folder in project file mysteriously was moved inside Interfaces, so moved it back o_O - DS hates empty if statements :o --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40675
This commit is contained in:
		
							parent
							
								
									5ee48f60a2
								
							
						
					
					
						commit
						e677d5d5de
					
				| @ -47,13 +47,13 @@ void CoreConfig::OnRootConsoleCommand(const char *command, unsigned int argcount | ||||
| 
 | ||||
| 		char error[255]; | ||||
| 
 | ||||
| 		ConfigResult err = SetConfigOption(option, value, ConfigSource_Console, error, sizeof(error)); | ||||
| 		ConfigResult res = SetConfigOption(option, value, ConfigSource_Console, error, sizeof(error)); | ||||
| 
 | ||||
| 		if (err == ConfigResult_Reject) | ||||
| 		if (res == ConfigResult_Reject) | ||||
| 		{ | ||||
| 			g_RootMenu.ConsolePrint("Could not set config option \"%s\" to \"%s\" (%s)", option, value, error); | ||||
| 		} else if (err == ConfigResult_Ignore) { | ||||
| 			g_RootMenu.ConsolePrint("No such config option \"%s\" exists.", option); | ||||
| 			g_RootMenu.ConsolePrint("[SM] Could not set config option \"%s\" to \"%s\" (%s)", option, value, error); | ||||
| 		} else if (res == ConfigResult_Ignore) { | ||||
| 			g_RootMenu.ConsolePrint("[SM] No such config option \"%s\" exists.", option); | ||||
| 		} else { | ||||
| 			g_RootMenu.ConsolePrint("Config option \"%s\" successfully set to \"%s.\"", option, value); | ||||
| 		} | ||||
| @ -82,8 +82,7 @@ void CoreConfig::Initialize() | ||||
| 	g_LibSys.PathFormat(filePath, sizeof(filePath), "%s/%s", g_SourceMod.GetModPath(), corecfg); | ||||
| 
 | ||||
| 	/* Parse config file */ | ||||
| 	if ((err=g_TextParser.ParseFile_SMC(filePath, this, NULL, NULL)) | ||||
| 		!= SMCParse_Okay) | ||||
| 	if ((err=g_TextParser.ParseFile_SMC(filePath, this, NULL, NULL)) != SMCParse_Okay) | ||||
| 	{ | ||||
|  		/* :TODO: This won't actually log or print anything :( - So fix that somehow */ | ||||
| 		const char *error = g_TextParser.GetSMCErrorString(err); | ||||
|  | ||||
| @ -34,10 +34,11 @@ ConfigResult Logger::OnSourceModConfigChanged(const char *key, | ||||
| { | ||||
| 	if (strcasecmp(key, "Logging") == 0) | ||||
| 	{ | ||||
| 		bool state = true; | ||||
| 		bool state; | ||||
| 
 | ||||
| 		if (strcasecmp(value, "on") == 0) | ||||
| 		{ | ||||
| 			state = true; | ||||
| 		} else if (strcasecmp(value, "off") == 0) { | ||||
| 			state = false; | ||||
| 		} else { | ||||
| @ -47,12 +48,7 @@ ConfigResult Logger::OnSourceModConfigChanged(const char *key, | ||||
| 
 | ||||
| 		if (source == ConfigSource_Console) | ||||
| 		{ | ||||
| 			if (state && !m_Active) | ||||
| 			{ | ||||
| 				EnableLogging(); | ||||
| 			} else if (!state && m_Active) { | ||||
| 				DisableLogging(); | ||||
| 			} | ||||
| 			state ? EnableLogging() : DisableLogging(); | ||||
| 		} else { | ||||
| 			m_InitialState = state; | ||||
| 		} | ||||
| @ -412,7 +408,7 @@ void Logger::EnableLogging() | ||||
| 		return; | ||||
| 	} | ||||
| 	m_Active = true; | ||||
| 	LogMessage("Logging enabled manually by user."); | ||||
| 	LogMessage("[SM] Logging enabled manually by user."); | ||||
| } | ||||
| 
 | ||||
| void Logger::DisableLogging() | ||||
| @ -421,7 +417,7 @@ void Logger::DisableLogging() | ||||
| 	{ | ||||
| 		return; | ||||
| 	} | ||||
| 	LogMessage("Logging disabled manually by user."); | ||||
| 	LogMessage("[SM] Logging disabled manually by user."); | ||||
| 	m_Active = false; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -580,11 +580,11 @@ const char *CPhraseFile::GetFilename() | ||||
|  ** MAIN TRANSLATOR CODE ** | ||||
|  **************************/ | ||||
| 
 | ||||
| Translator::Translator() | ||||
| Translator::Translator() : m_ServerLang(LANGUAGE_ENGLISH) | ||||
| { | ||||
| 	m_pStringTab = new BaseStringTable(2048); | ||||
| 	m_pLCodeLookup = sm_trie_create(); | ||||
| 	strncopy(m_ServerLangCode, "en", sizeof(m_ServerLangCode)); | ||||
| 	strncopy(m_InitialLang, "en", sizeof(m_InitialLang)); | ||||
| } | ||||
| 
 | ||||
| Translator::~Translator() | ||||
| @ -620,9 +620,11 @@ ConfigResult Translator::OnSourceModConfigChanged(const char *key, | ||||
| 				UTIL_Format(error, maxlength, "Language code \"%s\" is not registered", value); | ||||
| 				return ConfigResult_Reject; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		strncopy(m_ServerLangCode, value, sizeof(m_ServerLangCode)); | ||||
| 			m_ServerLang = index; | ||||
| 		} else { | ||||
| 			strncopy(m_InitialLang, value, sizeof(m_InitialLang)); | ||||
| 		} | ||||
| 
 | ||||
| 		return ConfigResult_Accept; | ||||
| 	} | ||||
| @ -712,6 +714,18 @@ void Translator::RebuildLanguageDatabase(const char *lang_header_file) | ||||
| 		g_Logger.LogError("[SM] Parse error (line %d, column %d): %s", line, col, str_err); | ||||
| 	} | ||||
| 
 | ||||
| 	void *serverLang; | ||||
| 
 | ||||
| 	if (!sm_trie_retrieve(m_pLCodeLookup, m_InitialLang, &serverLang)) | ||||
| 	{ | ||||
| 		g_Logger.LogError("Server language was set to bad language \"%s\" -- reverting to English", m_InitialLang); | ||||
| 
 | ||||
| 		strncopy(m_InitialLang, "en", sizeof(m_InitialLang)); | ||||
| 		m_ServerLang = LANGUAGE_ENGLISH; | ||||
| 	} | ||||
| 
 | ||||
| 	m_ServerLang = reinterpret_cast<unsigned int>(serverLang); | ||||
| 
 | ||||
| 	if (!m_Languages.size()) | ||||
| 	{ | ||||
| 		g_Logger.LogError("[SM] Fatal error, no languages found! Translation will not work."); | ||||
| @ -829,15 +843,11 @@ TransError Translator::CoreTrans(int client, | ||||
| 	} | ||||
| 
 | ||||
| 	/* Using server lang temporarily until client lang stuff is implemented */ | ||||
| 	unsigned int serverLang; | ||||
| 	if (!sm_trie_retrieve(m_pLCodeLookup, m_ServerLangCode, (void **)&serverLang)) | ||||
| 	{ | ||||
| 		return Trans_BadLanguage; | ||||
| 	} | ||||
| 	unsigned int serverLang = GetServerLanguage(); | ||||
| 
 | ||||
| 	Translation trans; | ||||
| 	TransError err; | ||||
| 	if ((err=g_pCorePhrases->GetTranslation(phrase, serverLang, &trans)) != Trans_Okay) | ||||
| 	if ((err=g_pCorePhrases->GetTranslation(phrase, m_ServerLang, &trans)) != Trans_Okay) | ||||
| 	{ | ||||
| 		return err; | ||||
| 	} | ||||
| @ -852,20 +862,7 @@ TransError Translator::CoreTrans(int client, | ||||
| 	return Trans_Okay; | ||||
| } | ||||
| 
 | ||||
| unsigned int Translator::GetServerLanguageCode() | ||||
| unsigned int Translator::GetServerLanguage() | ||||
| { | ||||
| 	void *serverLang; | ||||
| 
 | ||||
| 	/* :TODO: there is absolutely no reason this shouldn't be cached
 | ||||
| 	 * I don't even know why it was returning a string originally | ||||
| 	 */ | ||||
| 
 | ||||
| 	if (!sm_trie_retrieve(m_pLCodeLookup, m_ServerLangCode, &serverLang)) | ||||
| 	{ | ||||
| 		g_Logger.LogError("Server language was set to bad language \"%s\" -- reverting to English", m_ServerLangCode); | ||||
| 		strncopy(m_ServerLangCode, "en", sizeof(m_ServerLangCode)); | ||||
| 		return LANGUAGE_ENGLISH; | ||||
| 	} | ||||
| 
 | ||||
| 	return (unsigned int)serverLang; | ||||
| 	return m_ServerLang; | ||||
| } | ||||
|  | ||||
| @ -127,7 +127,7 @@ public: | ||||
| 						 const char *phrase,  | ||||
| 						 void **params,  | ||||
| 						 size_t *outlen=NULL); | ||||
| 	unsigned int GetServerLanguageCode(); | ||||
| 	unsigned int GetServerLanguage(); | ||||
| private: | ||||
| 	bool AddLanguage(const char *langcode, const char *description); | ||||
| private: | ||||
| @ -137,7 +137,8 @@ private: | ||||
| 	Trie *m_pLCodeLookup; | ||||
| 	bool m_InLanguageSection; | ||||
| 	String m_CustomError; | ||||
| 	char m_ServerLangCode[3]; | ||||
| 	unsigned int m_ServerLang; | ||||
| 	char m_InitialLang[3]; | ||||
| }; | ||||
| 
 | ||||
| extern CPhraseFile *g_pCorePhrases; | ||||
|  | ||||
| @ -457,94 +457,6 @@ | ||||
| 				RelativePath="..\..\public\IUserMessages.h" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<Filter | ||||
| 				Name="Natives" | ||||
| 				> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_admin.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_bitbuffer.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_console.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_core.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_datapacks.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_entities.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_events.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_fakenatives.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_filesystem.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_float.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_functions.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_halflife.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_handles.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_keyvalues.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_lang.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_player.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_sorting.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_string.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_textparse.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_timers.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 				<File | ||||
| 					RelativePath="..\smn_usermsgs.cpp" | ||||
| 					> | ||||
| 				</File> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<Filter | ||||
| 			Name="Systems" | ||||
| @ -790,6 +702,94 @@ | ||||
| 				> | ||||
| 			</File> | ||||
| 		</Filter> | ||||
| 		<Filter | ||||
| 			Name="Natives" | ||||
| 			> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_admin.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_bitbuffer.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_console.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_core.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_datapacks.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_entities.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_events.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_fakenatives.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_filesystem.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_float.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_functions.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_halflife.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_handles.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_keyvalues.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_lang.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_player.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_sorting.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_string.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_textparse.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_timers.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\smn_usermsgs.cpp" | ||||
| 				> | ||||
| 			</File> | ||||
| 		</Filter> | ||||
| 	</Files> | ||||
| 	<Globals> | ||||
| 	</Globals> | ||||
|  | ||||
| @ -28,19 +28,22 @@ using namespace SourcePawn; | ||||
| using namespace SourceMod; | ||||
| 
 | ||||
| /**
 | ||||
|  * @brief Lists error codes possible from attempting to set a core configuration option. | ||||
|  * @brief Lists result codes possible from attempting to set a core configuration option. | ||||
|  */ | ||||
| enum ConfigResult | ||||
| { | ||||
| 	ConfigResult_Accept = 0, | ||||
| 	ConfigResult_Reject = 1, | ||||
| 	ConfigResult_Ignore = 2 | ||||
| 	ConfigResult_Accept = 0,	/**< Config option was successfully set */ | ||||
| 	ConfigResult_Reject = 1,	/**< Config option was given an invalid value and was rejected */ | ||||
| 	ConfigResult_Ignore = 2		/**< Config option was invalid, but ignored */ | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  * @brief Lists possible sources of a config option change | ||||
|  */ | ||||
| enum ConfigSource | ||||
| { | ||||
| 	ConfigSource_File = 0, | ||||
| 	ConfigSource_Console = 1, | ||||
| 	ConfigSource_File = 0,		/**< Config option was set from config file (core.cfg) */ | ||||
| 	ConfigSource_Console = 1,	/**< Config option was set from console command (sm config) */ | ||||
| }; | ||||
| 
 | ||||
| /** 
 | ||||
|  | ||||
| @ -73,9 +73,9 @@ size_t Translate(char *buffer, size_t maxlen, IPluginContext *pCtx, const char * | ||||
| try_serverlang: | ||||
| 	if (target == LANG_SERVER) | ||||
| 	{ | ||||
| 		langid = g_Translator.GetServerLanguageCode(); | ||||
| 		langid = g_Translator.GetServerLanguage(); | ||||
|  	} else if ((target >= 1) && (target <= g_Players.GetMaxClients())) { | ||||
| 		langid = g_Translator.GetServerLanguageCode(); | ||||
| 		langid = g_Translator.GetServerLanguage(); | ||||
| 	} else { | ||||
| 		pCtx->ThrowNativeErrorEx(SP_ERROR_PARAM, "Translation failed: invalid client index %d", target); | ||||
| 		goto error_out; | ||||
| @ -736,9 +736,11 @@ reswitch: | ||||
| 				char *key; | ||||
| 				bool error; | ||||
| 				size_t res; | ||||
| 				cell_t target = params[arg++]; | ||||
| 				cell_t *target; | ||||
| 				pCtx->LocalToPhysAddr(params[arg++], &target); | ||||
| 				pCtx->LocalToString(params[arg++], &key); | ||||
| 				res = Translate(buf_p, llen, pCtx, key, target, params, &arg, &error); | ||||
| 				printf("target = %d\n", target); | ||||
| 				res = Translate(buf_p, llen, pCtx, key, *target, params, &arg, &error); | ||||
| 				if (error) | ||||
| 				{ | ||||
| 					return 0; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user