/** * Reads the selected LanguageFile into the cache */ void ReadLanguageFile() { CloseLanguageFile(); LogStartUp(_T("Loading language file")); TCHAR buffer[MAX_PATH], second_buffer[MAX_PATH]; const TCHAR *value = Profile::GetPath(szProfileLanguageFile, buffer) ? buffer : _T(""); if (_tcscmp(value, _T("none")) == 0) return; if (string_is_empty(value) || _tcscmp(value, _T("auto")) == 0) { AutoDetectLanguage(); return; } const TCHAR *base = BaseName(value); if (base == NULL) base = value; if (base == value) { LocalPath(second_buffer, value); value = second_buffer; } if (!LoadLanguageFile(value) && !ReadResourceLanguageFile(base)) AutoDetectLanguage(); }
/** * Reads the selected LanguageFile into the cache */ void ReadLanguageFile() { #ifndef HAVE_NATIVE_GETTEXT CloseLanguageFile(); LogFormat("Loading language file"); TCHAR buffer[MAX_PATH], second_buffer[MAX_PATH]; const TCHAR *value = Profile::GetPath(ProfileKeys::LanguageFile, buffer) ? buffer : _T(""); if (StringIsEqual(value, _T("none"))) return; if (StringIsEmpty(value) || StringIsEqual(value, _T("auto"))) { AutoDetectLanguage(); return; } const TCHAR *base = BaseName(value); if (base == NULL) base = value; if (base == value) { LocalPath(second_buffer, value); value = second_buffer; } if (!LoadLanguageFile(value) && !ReadResourceLanguageFile(base)) AutoDetectLanguage(); #endif }
static void AutoDetectLanguage() { #ifdef HAVE_NATIVE_GETTEXT // Set the current locale to the environment's default setlocale(LC_ALL, ""); // always use a dot as decimal point in printf/scanf() setlocale(LC_NUMERIC, "C"); bindtextdomain("xcsoar", "/usr/share/locale"); textdomain("xcsoar"); #else /* !HAVE_NATIVE_GETTEXT */ // Try to detect the language by calling the OS's corresponding functions const TCHAR *resource = detect_language(); if (resource != NULL) // If a language was detected -> try to load the MO file ReadResourceLanguageFile(resource); #endif /* !HAVE_NATIVE_GETTEXT */ }