Need better fallback logic on missing translation
			
	
						7 years 7 months ago				#2862
		by studenman
	
	
		
			
	
			
			 		
													
	
				Need better fallback logic on missing translation was created by studenman			
			
				Fallback system is nice because you can create translations only for text that needs it, for example:
"The color is blue" (en-US) => "The colour is blue" (en-UK) --- Translation found
"The dog is nice" (en-US) => "" (en-UK) --- This falls back to en-US, which is good, no translation needed.
But for es-MX (Mexico), I would like if it did not fallback to en-US, but to es-ES (Spain, Euro).
I think the Language needs to reference a fallback language code, and then I2.Loc would follow the fallback chain until it finds a translation.
							
					"The color is blue" (en-US) => "The colour is blue" (en-UK) --- Translation found
"The dog is nice" (en-US) => "" (en-UK) --- This falls back to en-US, which is good, no translation needed.
But for es-MX (Mexico), I would like if it did not fallback to en-US, but to es-ES (Spain, Euro).
I think the Language needs to reference a fallback language code, and then I2.Loc would follow the fallback chain until it finds a translation.
Please Log in or Create an account to join the conversation.
			
	
						7 years 7 months ago				#2863
		by Frank
	
	
		
			
					
Are you Give I2L 
	5 stars!
  Give I2L 
	5 stars!
Are you Please lets us know how to improve it!
  Please lets us know how to improve it!
					
	
			
			 		
													
	
				Replied by Frank on topic Need better fallback logic on missing translation			
			
				I like that idea.
The current implementation fallback to the base language, and if not found, then fallback to the first language in the list.
e.g. "es-MX" fallback to "es" which fallback to "en" if not found.
What I think maybe wrong, is that if "es" is not found, then it should fallback to another 'es-XX' language.
The code was design with the idea that you will always have a base language ('es', 'en', etc) and only create variants as needed ('es-Mx', 'en-UK'), and only for those terms that change, and allow the fallback to deal with the terms that are similar between variants.
I will start by adding the check, of falling back to the base language or one other 'es-XX' variant if the base is not found, and only if there is no other variant to fallback to, then go to the first language in the list.
Hope that helps,
Frank
							The current implementation fallback to the base language, and if not found, then fallback to the first language in the list.
e.g. "es-MX" fallback to "es" which fallback to "en" if not found.
What I think maybe wrong, is that if "es" is not found, then it should fallback to another 'es-XX' language.
The code was design with the idea that you will always have a base language ('es', 'en', etc) and only create variants as needed ('es-Mx', 'en-UK'), and only for those terms that change, and allow the fallback to deal with the terms that are similar between variants.
I will start by adding the check, of falling back to the base language or one other 'es-XX' variant if the base is not found, and only if there is no other variant to fallback to, then go to the first language in the list.
Hope that helps,
Frank
Are you
 Give I2L 
	5 stars!
  Give I2L 
	5 stars!
Are you
 Please lets us know how to improve it!
  Please lets us know how to improve it!
To get the betas as soon as they are ready, 
	check this out
				Please Log in or Create an account to join the conversation.
			
	
						7 years 7 months ago				#2864
		by studenman
	
	
		
			
				
Thanks Frank. I'm not sure that's the case. Suppose there's both a base language (say 'es') and region defined (say 'es-ES'). If es-ES exists as a language, but the translation isn't defined (or is blank), it will revert to the code in LanguageSource.TryGetTranslation() where it handles the MissingTranslation.Fallback case. This code just seems to look for the first language that is enabled and use that translation. It doesn't try to look for a logical fallback language, like the base 'es' language.
Thanks for looking into this.
-Stu
							
					
	
			
			 		
													
	
				Replied by studenman on topic Need better fallback logic on missing translation			
			Frank wrote: The current implementation fallback to the base language, and if not found, then fallback to the first language in the list.
e.g. "es-MX" fallback to "es" which fallback to "en" if not found.
Thanks Frank. I'm not sure that's the case. Suppose there's both a base language (say 'es') and region defined (say 'es-ES'). If es-ES exists as a language, but the translation isn't defined (or is blank), it will revert to the code in LanguageSource.TryGetTranslation() where it handles the MissingTranslation.Fallback case. This code just seems to look for the first language that is enabled and use that translation. It doesn't try to look for a logical fallback language, like the base 'es' language.
Thanks for looking into this.
-Stu
Please Log in or Create an account to join the conversation.
			
	
						7 years 7 months ago				#2865
		by Frank
	
	
		
			
					
Are you Give I2L 
	5 stars!
  Give I2L 
	5 stars!
Are you Please lets us know how to improve it!
  Please lets us know how to improve it!
					
	
	
			 		
													
	
				Replied by Frank on topic Need better fallback logic on missing translation			
			
				You are correct. That's a bug for sure.
The fallback process was supposed to use the same as the GetLanguageIndex that allows discarding the language region.
I will correct that.
Thanks for reporting this!
Frank
							The fallback process was supposed to use the same as the GetLanguageIndex that allows discarding the language region.
I will correct that.
Thanks for reporting this!
Frank
Are you
 Give I2L 
	5 stars!
  Give I2L 
	5 stars!
Are you
 Please lets us know how to improve it!
  Please lets us know how to improve it!
To get the betas as soon as they are ready, 
	check this out
				
		The following user(s) said Thank You: studenman 	
			Please Log in or Create an account to join the conversation.
			
	
						7 years 7 months ago				#2866
		by studenman
	
	
		
			
	
			
			 		
													
	
				Replied by studenman on topic Need better fallback logic on missing translation			
			
				Also I wanted to add that in my game I'd like to use these regional languages for the ones my users can select:
en-US
en-GB
es-ES
es-MX
es-CO
ja
zh-CN
zh-TW
etc...
In other words, the user would have to select English US or English UK: a "base" English or Spanish doesn't really make sense from a user experience standpoint. However, I will be picking one of those regions to be a fallback for the other regions, if that makes sense. That way my localization team can just add translations for the terms that change in the region and leave everything else blank.
							
					en-US
en-GB
es-ES
es-MX
es-CO
ja
zh-CN
zh-TW
etc...
In other words, the user would have to select English US or English UK: a "base" English or Spanish doesn't really make sense from a user experience standpoint. However, I will be picking one of those regions to be a fallback for the other regions, if that makes sense. That way my localization team can just add translations for the terms that change in the region and leave everything else blank.
Please Log in or Create an account to join the conversation.
			
	
						7 years 7 months ago				#2868
		by Frank
	
	
		
			
					
Are you Give I2L 
	5 stars!
  Give I2L 
	5 stars!
Are you Please lets us know how to improve it!
  Please lets us know how to improve it!
					
	
			
			 		
													
	
				Replied by Frank on topic Need better fallback logic on missing translation			
			
				BTW, I just uploaded to the beta folder v2.8.5a1 with a fix for this.
In the case you show, if you have a term with the following translations:
en-US:
en-GB: Translation1
es-ES:
es-MX Translation2
es-AR: Translation3
es-CO:
ja
zh-CN
zh-TW: Translation4
the resulting translation using fallbacks are:
en-US: Translation1
en-GB: Translation1
es-ES: Translation2
es-MX Translation2
es-AR: Translation3
es-CO: Translation2
ja: Translation1
zh-CN: Translation4
zh-TW: Translation4
Hope that helps,
Frank
							In the case you show, if you have a term with the following translations:
en-US:
en-GB: Translation1
es-ES:
es-MX Translation2
es-AR: Translation3
es-CO:
ja
zh-CN
zh-TW: Translation4
the resulting translation using fallbacks are:
en-US: Translation1
en-GB: Translation1
es-ES: Translation2
es-MX Translation2
es-AR: Translation3
es-CO: Translation2
ja: Translation1
zh-CN: Translation4
zh-TW: Translation4
Hope that helps,
Frank
Are you
 Give I2L 
	5 stars!
  Give I2L 
	5 stars!
Are you
 Please lets us know how to improve it!
  Please lets us know how to improve it!
To get the betas as soon as they are ready, 
	check this out
				Please Log in or Create an account to join the conversation.
		Time to create page: 0.151 seconds	
 
 
 
			