First time applying language jumbles translations
6 years 7 months ago #3028
by shcipwa
Replied by shcipwa on topic First time applying language jumbles translations
I just upgraded to the latest version and have the same issue. We do not use google spreadsheet sync and have set update frequency to never and the problem persists. All translation data is loaded into the prefab at runtime via CSV files, initial load is fine, changing languages mismatches keys and values sometimes even mismatches languages. Need a fix for this asap!
Please Log in or Create an account to join the conversation.
6 years 7 months ago #3029
by Frank
Are you Give I2L 5 stars!
Are you Please lets us know how to improve it!
Replied by Frank on topic First time applying language jumbles translations
Hi,
When you start the game, I2 Localization, saves all the languages data into temporal files, then it deletes from memory all the localization, except for the current language.
That way, it saves memory at runtime, when you change languages, it unloads the current language and loads the new language from the file.
In your case, you are modifying the translations after they are already saved to the temporal file. So, when you change languages, the old data is restored. But because you also added/removed terms, then the translations will also look shifted.
In general, when you modify the translation data at runtime, you should either:
1- Save the new data to the file by calling source.SaveLanguages()
or
2- Disable Unloading of languages by adding the following class to your project
Hope that helps,
Frank
When you start the game, I2 Localization, saves all the languages data into temporal files, then it deletes from memory all the localization, except for the current language.
That way, it saves memory at runtime, when you change languages, it unloads the current language and loads the new language from the file.
In your case, you are modifying the translations after they are already saved to the temporal file. So, when you change languages, the old data is restored. But because you also added/removed terms, then the translations will also look shifted.
In general, when you modify the translation data at runtime, you should either:
1- Save the new data to the file by calling source.SaveLanguages()
var I2LanguagesPrefab = LocalizationManager.Sources[0];
I2LanguagesPrefab.Import_CSV( data );
I2LanguagesPrefab.SaveLanguages(true);
or
2- Disable Unloading of languages by adding the following class to your project
public partial class I2CustomPersistentStorage : I2BasePersistentStorage
{
public virtual bool CanAccessFiles()
{
return false;
}
}
Hope that helps,
Frank
Are you Give I2L 5 stars!
Are you 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.
6 years 7 months ago #3030
by shcipwa
Replied by shcipwa on topic First time applying language jumbles translations
Thanks for the quick reply, disabling unloading fixed the issue thanks.
I would suggest some work needs to be done around that unloading from memory feature. Seems like a lot of complication to remove some tiny text arrays from memory.
Either way, thanks for solving the problem quickly
I would suggest some work needs to be done around that unloading from memory feature. Seems like a lot of complication to remove some tiny text arrays from memory.
Either way, thanks for solving the problem quickly
Please Log in or Create an account to join the conversation.
6 years 7 months ago #3031
by Frank
I'm always looking for ways to improve the plugin, so I will really appreciate if you could elaborate in that you said.
Do you mean, that unloading the languages seems unnecessary memory wise?
Most of the games using I2 localization have 300-1500 terms, some of them with plurals and variants which increases the memory usage. And they have translations for 4-10 languages. So, the memory adds up pretty quickly.
For PC games, that its minuscule compared with all you have available and the OS automatic paging into disk, but for mobile, freeing this memory is really important.
Or do you mean that there are more steps than needed for doing the unloading/loading?
That system had to be kept very generic given that several platforms require different approaches (In some you can write temp files, in others the file access is locked and the PlayerPrefs has to be used instead, others allow saving into the Streaming folder but not the temp cache folder, and others there is no runtime file access at all). That's why there are a few checks to handle all those cases. Plus some developers are using their own storage systems (file access + custom playerPrefs) and the system needs to reroute to those.
Please, if you could elaborate a bit on what part is the complicated or that looks weird to your, please, let me know, and that will help me improve the plugin for future versions.
Are you Give I2L 5 stars!
Are you Please lets us know how to improve it!
Replied by Frank on topic First time applying language jumbles translations
Great!disabling unloading fixed the issue thanks.
I would suggest some work needs to be done around that unloading from memory feature. Seems like a lot of complication to remove some tiny text arrays from memory.
I'm always looking for ways to improve the plugin, so I will really appreciate if you could elaborate in that you said.
Do you mean, that unloading the languages seems unnecessary memory wise?
Most of the games using I2 localization have 300-1500 terms, some of them with plurals and variants which increases the memory usage. And they have translations for 4-10 languages. So, the memory adds up pretty quickly.
For PC games, that its minuscule compared with all you have available and the OS automatic paging into disk, but for mobile, freeing this memory is really important.
Or do you mean that there are more steps than needed for doing the unloading/loading?
That system had to be kept very generic given that several platforms require different approaches (In some you can write temp files, in others the file access is locked and the PlayerPrefs has to be used instead, others allow saving into the Streaming folder but not the temp cache folder, and others there is no runtime file access at all). That's why there are a few checks to handle all those cases. Plus some developers are using their own storage systems (file access + custom playerPrefs) and the system needs to reroute to those.
Please, if you could elaborate a bit on what part is the complicated or that looks weird to your, please, let me know, and that will help me improve the plugin for future versions.
Are you Give I2L 5 stars!
Are you 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.
6 years 7 months ago #3032
by shcipwa
What I mean is, that for the benefits of at most 1mb of memory saved in best case scenarios, the feature (which is on by default) adds a lot of technical complexity that can lead to nasty bugs like the ones reported in this thread. I can see how mobile devices combined with a game with lots of localized strings would benefit from this, maybe simply making this feature an opt in setting rather than an opt out by code would make cause less headaches.
Obviously you would know your user base best, just from personal experience all I need from the tool is key value pair lookups at runtime and the ability to auto translate from google. I lost a day to the old autotranslate not working anymore (hence the upgrade), and lost half a day to jumbling of key/value pairs for a feature I don't need.
Replied by shcipwa on topic First time applying language jumbles translations
Frank wrote: Please, if you could elaborate a bit on what part is the complicated or that looks weird to your, please, let me know, and that will help me improve the plugin for future versions.
What I mean is, that for the benefits of at most 1mb of memory saved in best case scenarios, the feature (which is on by default) adds a lot of technical complexity that can lead to nasty bugs like the ones reported in this thread. I can see how mobile devices combined with a game with lots of localized strings would benefit from this, maybe simply making this feature an opt in setting rather than an opt out by code would make cause less headaches.
Obviously you would know your user base best, just from personal experience all I need from the tool is key value pair lookups at runtime and the ability to auto translate from google. I lost a day to the old autotranslate not working anymore (hence the upgrade), and lost half a day to jumbling of key/value pairs for a feature I don't need.
Please Log in or Create an account to join the conversation.
Time to create page: 0.194 seconds