Changing the key doesn't do anything. You need to tell the script to localize its value after changing the key.
You shouldn't be changing the key at all. The key should remain constant.
Localization.Localize is an obsolete function in the current version. Furthermore, it returns a 'string' value of the localized key. In your code you just call it and do nothing with the returned value, which is wrong. To localize text via code, do this:
label.value = Localization.Get("Tm_default2");
You need to update your NGUI.