Pontus Lundin
Committed by GitHub

Update root_widget.dart

with fallbacklocale
1 -import 'package:flutter/foundation.dart'; 1 +iimport 'package:flutter/foundation.dart';
2 import 'package:flutter/material.dart'; 2 import 'package:flutter/material.dart';
3 import 'package:get/get.dart'; 3 import 'package:get/get.dart';
4 import 'package:get/src/instance/get_instance.dart'; 4 import 'package:get/src/instance/get_instance.dart';
@@ -30,6 +30,7 @@ class GetMaterialApp extends StatelessWidget { @@ -30,6 +30,7 @@ class GetMaterialApp extends StatelessWidget {
30 this.darkTheme, 30 this.darkTheme,
31 this.themeMode = ThemeMode.system, 31 this.themeMode = ThemeMode.system,
32 this.locale, 32 this.locale,
  33 + this.fallbackLocale,
33 this.localizationsDelegates, 34 this.localizationsDelegates,
34 this.localeListResolutionCallback, 35 this.localeListResolutionCallback,
35 this.localeResolutionCallback, 36 this.localeResolutionCallback,
@@ -83,6 +84,7 @@ class GetMaterialApp extends StatelessWidget { @@ -83,6 +84,7 @@ class GetMaterialApp extends StatelessWidget {
83 final Map<String, Map<String, String>> translationsKeys; 84 final Map<String, Map<String, String>> translationsKeys;
84 final Translations translations; 85 final Translations translations;
85 final Locale locale; 86 final Locale locale;
  87 + final Locale fallbackLocale;
86 final Iterable<LocalizationsDelegate<dynamic>> localizationsDelegates; 88 final Iterable<LocalizationsDelegate<dynamic>> localizationsDelegates;
87 final LocaleListResolutionCallback localeListResolutionCallback; 89 final LocaleListResolutionCallback localeListResolutionCallback;
88 final LocaleResolutionCallback localeResolutionCallback; 90 final LocaleResolutionCallback localeResolutionCallback;
@@ -186,6 +188,10 @@ class GetMaterialApp extends StatelessWidget { @@ -186,6 +188,10 @@ class GetMaterialApp extends StatelessWidget {
186 Get.locale = locale; 188 Get.locale = locale;
187 } 189 }
188 190
  191 + if (fallbackLocale != null) {
  192 + Get.fallbackLocale = fallbackLocale;
  193 + }
  194 +
189 if (translations != null) { 195 if (translations != null) {
190 Get.translations = translations.keys; 196 Get.translations = translations.keys;
191 } else if (translationsKeys != null) { 197 } else if (translationsKeys != null) {
@@ -234,6 +240,7 @@ class GetMaterialApp extends StatelessWidget { @@ -234,6 +240,7 @@ class GetMaterialApp extends StatelessWidget {
234 darkTheme: darkTheme, 240 darkTheme: darkTheme,
235 themeMode: _.themeMode ?? themeMode ?? ThemeMode.system, 241 themeMode: _.themeMode ?? themeMode ?? ThemeMode.system,
236 locale: Get.locale ?? locale, 242 locale: Get.locale ?? locale,
  243 + fallbackLocale: Get.fallbackLocale ?? fallbackLocale,
237 localizationsDelegates: localizationsDelegates, 244 localizationsDelegates: localizationsDelegates,
238 localeListResolutionCallback: localeListResolutionCallback, 245 localeListResolutionCallback: localeListResolutionCallback,
239 localeResolutionCallback: localeResolutionCallback, 246 localeResolutionCallback: localeResolutionCallback,
@@ -275,6 +282,16 @@ extension Trans on String { @@ -275,6 +282,16 @@ extension Trans on String {
275 Get.translations[Get.locale.languageCode].containsKey(this)) { 282 Get.translations[Get.locale.languageCode].containsKey(this)) {
276 return Get.translations[Get.locale.languageCode][this]; 283 return Get.translations[Get.locale.languageCode][this];
277 // If there is no corresponding language or corresponding key, return the key. 284 // If there is no corresponding language or corresponding key, return the key.
  285 + } else if (Get.translations.containsKey(
  286 + "${Get.fallbackLocale.languageCode}_${Get.fallbackLocale.countryCode}") &&
  287 + Get.translations[
  288 + "${Get.fallbackLocale.languageCode}_${Get.fallbackLocale.countryCode}"]
  289 + .containsKey(this)) {
  290 + return Get.translations[
  291 + "${Get.fallbackLocale.languageCode}_${Get.fallbackLocale.countryCode}"]
  292 + [this];
  293 +
  294 + // Checks if there is a callback language in the absence of the specific country, and if it contains that key.
278 } else { 295 } else {
279 return this; 296 return this;
280 } 297 }