| 5724 | int Localization_GetLanguage(void); |
| 5725 | |
| 5726 | char *LocalizeLevelName(char *level) { |
| 5727 | static char local_name[101]; |
| 5728 | |
| 5729 | char **english_names; |
| 5730 | int num_english_names; |
| 5731 | |
| 5732 | char **local_names; |
| 5733 | int num_local_names; |
| 5734 | |
| 5735 | local_name[0] = 0; |
| 5736 | |
| 5737 | // Don't waste our time if we're already in english |
| 5738 | int save_lang = Localization_GetLanguage(); |
| 5739 | if (LANGUAGE_ENGLISH == save_lang) { |
| 5740 | strcpy(local_name, level); |
| 5741 | return local_name; |
| 5742 | } |
| 5743 | |
| 5744 | Localization_SetLanguage(LANGUAGE_ENGLISH); |
| 5745 | // Save the current language, then bash it to english |
| 5746 | if (!CreateStringTable("level_names.str", &english_names, &num_english_names)) { |
| 5747 | mprintf(0, "Couldn't open level_names stringtable!\n"); |
| 5748 | Localization_SetLanguage(save_lang); |
| 5749 | strcpy(local_name, level); |
| 5750 | return local_name; |
| 5751 | } |
| 5752 | |
| 5753 | // Restore the correct language |
| 5754 | Localization_SetLanguage(save_lang); |
| 5755 | |
| 5756 | if (!CreateStringTable("level_names.str", &local_names, &num_local_names)) { |
| 5757 | mprintf(0, "Couldn't open level_names stringtable!\n"); |
| 5758 | // destroy the english stringtable... |
| 5759 | DestroyStringTable(english_names, num_english_names); |
| 5760 | |
| 5761 | strcpy(local_name, level); |
| 5762 | return local_name; |
| 5763 | } |
| 5764 | |
| 5765 | // Now search for the correct level |
| 5766 | for (int i = 0; i < num_english_names; i++) { |
| 5767 | if (0 == stricmp(level, english_names[i])) { |
| 5768 | // Ok, we found a match. So return the local text. |
| 5769 | strcpy(local_name, local_names[i]); |
| 5770 | DestroyStringTable(english_names, num_english_names); |
| 5771 | DestroyStringTable(local_names, num_local_names); |
| 5772 | return local_name; |
| 5773 | } |
| 5774 | } |
| 5775 | |
| 5776 | // We didn't find it, so just use the english |
| 5777 | strcpy(local_name, level); |
| 5778 | return local_name; |
| 5779 | } |
no test coverage detected