2
0
Эх сурвалжийг харах

Change set_locale to fallback to the global language (#6910)

(cherry picked from commit 470ead74dbc3d6ea7133ab90c0d09ed637e7a5f5)
Damon Myers 8 жил өмнө
parent
commit
68b6b50d28
1 өөрчлөгдсөн 27 нэмэгдсэн , 6 устгасан
  1. 27 6
      core/translation.cpp

+ 27 - 6
core/translation.cpp

@@ -779,6 +779,11 @@ Vector<String> TranslationServer::get_all_locale_names(){
 }
 
 
+static String get_trimmed_locale(const String& p_locale) {
+
+	return p_locale.substr(0,2);
+}
+
 static bool is_valid_locale(const String& p_locale) {
 
 	const char **ptr=locale_list;
@@ -839,9 +844,17 @@ void Translation::_set_messages(const DVector<String>& p_messages){
 
 void Translation::set_locale(const String& p_locale) {
 
-	ERR_EXPLAIN("Invalid Locale: "+p_locale);
-	ERR_FAIL_COND(!is_valid_locale(p_locale));
-	locale=p_locale;
+	if(!is_valid_locale(p_locale)) {
+		String trimmed_locale = get_trimmed_locale(p_locale);
+		
+		ERR_EXPLAIN("Invalid Locale: "+trimmed_locale);
+		ERR_FAIL_COND(!is_valid_locale(trimmed_locale));
+		
+		locale=trimmed_locale;
+	}
+	else {
+		locale=p_locale;
+	}
 }
 
 void Translation::add_message( const StringName& p_src_text, const StringName& p_xlated_text ) {
@@ -906,9 +919,17 @@ Translation::Translation() {
 
 void TranslationServer::set_locale(const String& p_locale) {
 
-	ERR_EXPLAIN("Invalid Locale: "+p_locale);
-	ERR_FAIL_COND(!is_valid_locale(p_locale));
-	locale=p_locale;
+	if(!is_valid_locale(p_locale)) {
+		String trimmed_locale = get_trimmed_locale(p_locale);
+		
+		ERR_EXPLAIN("Invalid Locale: "+trimmed_locale);
+		ERR_FAIL_COND(!is_valid_locale(trimmed_locale));
+		
+		locale=trimmed_locale;
+	}
+	else {
+		locale=p_locale;
+	}
 }
 
 String TranslationServer::get_locale() const {