mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-09 07:29:44 +00:00
Change: treat languages as finished, if translations are 75% completed.
Unfinished translations are not auto-picked from the locale. In release builds, unfinished translations are not offered in the GUI. Unfinished translations are available in non-release builds, or by editing openttd.cfg.
This commit is contained in:
parent
a9740cef82
commit
37222c3fa2
@ -58,6 +58,7 @@ struct LanguagePackHeader {
|
|||||||
char cases[MAX_NUM_CASES][CASE_GENDER_LEN]; ///< the cases used by this translation
|
char cases[MAX_NUM_CASES][CASE_GENDER_LEN]; ///< the cases used by this translation
|
||||||
|
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
|
bool IsReasonablyFinished() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the index for the given gender.
|
* Get the index for the given gender.
|
||||||
|
@ -218,6 +218,8 @@ struct GameOptionsWindow : Window {
|
|||||||
|
|
||||||
case WID_GO_LANG_DROPDOWN: { // Setup interface language dropdown
|
case WID_GO_LANG_DROPDOWN: { // Setup interface language dropdown
|
||||||
for (uint i = 0; i < _languages.size(); i++) {
|
for (uint i = 0; i < _languages.size(); i++) {
|
||||||
|
bool hide_language = IsReleasedVersion() && !_languages[i].IsReasonablyFinished();
|
||||||
|
if (hide_language) continue;
|
||||||
bool hide_percentage = IsReleasedVersion() || _languages[i].missing < _settings_client.gui.missing_strings_threshold;
|
bool hide_percentage = IsReleasedVersion() || _languages[i].missing < _settings_client.gui.missing_strings_threshold;
|
||||||
auto item = new DropDownListParamStringItem(hide_percentage ? STR_JUST_RAW_STRING : STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE, i, false);
|
auto item = new DropDownListParamStringItem(hide_percentage ? STR_JUST_RAW_STRING : STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE, i, false);
|
||||||
if (&_languages[i] == _current_language) {
|
if (&_languages[i] == _current_language) {
|
||||||
|
@ -1716,6 +1716,15 @@ bool LanguagePackHeader::IsValid() const
|
|||||||
StrValid(this->digit_decimal_separator, lastof(this->digit_decimal_separator));
|
StrValid(this->digit_decimal_separator, lastof(this->digit_decimal_separator));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether a translation is sufficiently finished to offer it to the public.
|
||||||
|
*/
|
||||||
|
bool LanguagePackHeader::IsReasonablyFinished() const
|
||||||
|
{
|
||||||
|
/* "Less than 25% missing" is "sufficiently finished". */
|
||||||
|
return 4 * this->missing < LANGUAGE_TOTAL_STRINGS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a particular language.
|
* Read a particular language.
|
||||||
* @param lang The metadata about the language.
|
* @param lang The metadata about the language.
|
||||||
@ -1969,6 +1978,10 @@ void InitializeLanguagePacks()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp (lng.isocode, "en_GB") == 0) en_GB_fallback = &lng;
|
if (strcmp (lng.isocode, "en_GB") == 0) en_GB_fallback = &lng;
|
||||||
|
|
||||||
|
/* Only auto-pick finished translations */
|
||||||
|
if (!lng.IsReasonablyFinished()) continue;
|
||||||
|
|
||||||
if (strncmp(lng.isocode, lang, 5) == 0) chosen_language = &lng;
|
if (strncmp(lng.isocode, lang, 5) == 0) chosen_language = &lng;
|
||||||
if (strncmp(lng.isocode, lang, 2) == 0) language_fallback = &lng;
|
if (strncmp(lng.isocode, lang, 2) == 0) language_fallback = &lng;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user