| 822 | } |
| 823 | |
| 824 | void Translator::RebuildLanguageDatabase() |
| 825 | { |
| 826 | /* Erase everything we have */ |
| 827 | m_LCodeLookup.clear(); |
| 828 | m_LAliases.clear(); |
| 829 | m_pStringTab->Reset(); |
| 830 | |
| 831 | for (size_t i=0; i<m_Languages.size(); i++) |
| 832 | { |
| 833 | delete m_Languages[i]; |
| 834 | } |
| 835 | m_Languages.clear(); |
| 836 | |
| 837 | /* Start anew */ |
| 838 | char path[PLATFORM_MAX_PATH]; |
| 839 | g_pSM->BuildPath(Path_SM, path, sizeof(path), "configs/languages.cfg"); |
| 840 | |
| 841 | SMCError err; |
| 842 | SMCStates states; |
| 843 | if ((err=textparsers->ParseFile_SMC(path, this, &states)) != SMCError_Okay) |
| 844 | { |
| 845 | const char *str_err = textparsers->GetSMCErrorString(err); |
| 846 | if (!str_err) |
| 847 | { |
| 848 | str_err = m_CustomError.c_str(); |
| 849 | } |
| 850 | |
| 851 | logger->LogError("[SM] Failed to parse language header file: \"%s\"", path); |
| 852 | logger->LogError("[SM] Parse error (line %d, column %d): %s", states.line, states.col, str_err); |
| 853 | } |
| 854 | |
| 855 | if (!m_LCodeLookup.retrieve(m_InitialLang, &m_ServerLang)) |
| 856 | { |
| 857 | logger->LogError("Server language was set to bad language \"%s\" -- reverting to English", m_InitialLang); |
| 858 | |
| 859 | strncopy(m_InitialLang, "en", sizeof(m_InitialLang)); |
| 860 | m_ServerLang = SOURCEMOD_LANGUAGE_ENGLISH; |
| 861 | } |
| 862 | |
| 863 | if (!m_Languages.size()) |
| 864 | { |
| 865 | logger->LogError("[SM] Fatal error, no languages found! Translation will not work."); |
| 866 | } |
| 867 | |
| 868 | for (size_t i=0; i<m_Files.size(); i++) |
| 869 | { |
| 870 | m_Files[i]->ReparseFile(); |
| 871 | } |
| 872 | } |
| 873 | |
| 874 | void Translator::ReadSMC_ParseStart() |
| 875 | { |
nothing calls this directly
no test coverage detected