Terms are stored inside a list in the languageSource because unity 4 doesn't support serializing Dictionaries. But to speed up accessing the localization Data, I2L uses a dictionary that links to the correct TermData.
That way, terms are shared between the list and the dictionary to keep the memory usage low but we get both benefits: unity can serialize our data, and its fast to access it at runtime.
However, if you change the term's name, it will be updated in the list, but the dictionary will not know about that.
You will have to call the method UpdateDictionary() in the LocalizationManager. That will synchronize the dictionary with the list's content.
Alternatively, if you are modifying lot of terms every frame, you can access the dictionary directly and remove the term by using the old name, and add it again using the new name without calling UpdateSource or other expensive method.
Hope that helps,
Are you Give I2L 5 stars!
Are you Please lets us know how to improve it!