@@ -199,6 +199,13 @@ def get_developer_language_code(self) -> Optional[str]:
199199 return None
200200
201201 def optimize_duplicates (self ):
202+ # Check if translation matches value from 'ref' definition.
203+ for key , definition in self .definitions_by_key .items ():
204+ if definition .reference is not None :
205+ ref = definition .reference
206+ definition .translations = {lang :value for lang , value in definition .translations .items ()
207+ if lang not in ref .translations or ref .translations [lang ] != value }
208+
202209 """ Some regional languages have common items. Such as 'en-GB' and 'en'.
203210 Deduplication: for each item and each language search the same translations
204211 within fallback languages. Not all languages have fallbacks.
@@ -217,7 +224,7 @@ def match_fallback_lang(self, translations: dict, lang:str, key:str, value: Any)
217224 return True
218225 return False
219226
220- def fallback_languages (self , language : str ) -> List [str ]:
227+ def fallback_languages (self , language : str , include_default : bool = False ) -> List [str ]:
221228 fallbacks = []
222229
223230 # Check specific mapping
@@ -231,6 +238,9 @@ def fallback_languages(self, language: str) -> List[str]:
231238 generic_language = match .group (1 )
232239 fallbacks .append (generic_language )
233240
241+ if include_default and language != self .get_developer_language_code ():
242+ fallbacks .append (self .get_developer_language_code ())
243+
234244 # Remove duplicates while preserving order
235245 seen = set ()
236246 result = []
0 commit comments