/* AMX Mod X Backwards Compatibility * * by the AMX Mod X Development Team * * This file is provided as is (no warranties). */ #if defined _amxmod_translator_included #endinput #endif #define _amxmod_translator_included #define _translator_included #include #include #include //From AMX Mod. This is implemented in Core due to the nature of the // translation engine and what AMX Mod did. /* Translation backend, used by _T (since natives can't return arrays). */ native translate(const string[], destid=-1, forcelang=-1); stock _T(const string[], destid=-1, forcelang=-1) { new TranslationResult[2] = {0, 0} TranslationResult[0] = translate(string, destid, forcelang) return TranslationResult } stock load_translations(const file[]) { static dir[255], path[255]; get_datadir(dir, 254); format(path, 254, "%s/amxmod-lang/%s.txt", dir, file); new fp if (!(fp=fopen(path, "r"))) { abort(AMX_ERR_NATIVE, "Could not find file: %s", path); return 0; } static buffer[1024]; new lang[3]; new TransKey:bad_key = TransKey:-1; new TransKey:cur_key = bad_key; new len; while (!feof(fp)) { buffer[0] = 0; fgets(fp, buffer, 1023); len = strlen(buffer); if (len == 0) { continue; } if (isspace(buffer[len-1])) { buffer[--len] = 0; } if (buffer[0] == '"') { remove_quotes(buffer); cur_key = CreateLangKey(buffer); AddTranslation("en", cur_key, buffer); continue; } if (isspace(buffer[0])) { continue; } if ((cur_key != bad_key) && (buffer[2] == ':' && buffer[3] == '"')) { lang[0] = buffer[0]; lang[1] = buffer[1]; lang[2] = 0; remove_quotes(buffer[3]); AddTranslation(lang, cur_key, buffer[3]); } } fclose(fp); return 1; }