diff options
| author | Yuri Sizov <11782833+YuriSizov@users.noreply.github.com> | 2023-03-27 20:14:47 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-27 20:14:47 +0200 |
| commit | 19501f8eb19481b029f67ecf78e711d42f2fc431 (patch) | |
| tree | 933ea3320b35bce6ba65ab1e1d1aa8ad662c90d4 /core/string/translation.cpp | |
| parent | cacf49999e3fb37281d66cc591ca8bebc5712d4d (diff) | |
| parent | 843f5adbc523ad2511322b4f09b5ce5a3fb9e225 (diff) | |
Merge pull request #75397 from YuriSizov/4.0-cherrypicks
Cherry-picks for the 4.0 branch (future 4.0.2) - 1st batch
Diffstat (limited to 'core/string/translation.cpp')
| -rw-r--r-- | core/string/translation.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/core/string/translation.cpp b/core/string/translation.cpp index b9d5d3b538..160bad14ab 100644 --- a/core/string/translation.cpp +++ b/core/string/translation.cpp @@ -712,7 +712,25 @@ String TranslationServer::get_tool_locale() { #else { #endif - return get_locale(); + // Look for best matching loaded translation. + String best_locale = "en"; + int best_score = 0; + + for (const Ref<Translation> &E : translations) { + const Ref<Translation> &t = E; + ERR_FAIL_COND_V(t.is_null(), best_locale); + String l = t->get_locale(); + + int score = compare_locales(locale, l); + if (score > 0 && score >= best_score) { + best_locale = l; + best_score = score; + if (score == 10) { + break; // Exact match, skip the rest. + } + } + } + return best_locale; } } |