The Locale needs to be persistent. Doing Locale.CreateLocale(fallbackLocale) will create a Locale in memory that will be destroyed at some point. Likely causing the type mismatch.
You should assign a Locale asset. Create one in the project and then get to it with LocalizationEditorSettings.GetLocale.