如何在Mac版Xamarin中用MultilingualPlugin运行时切换至泰语?
Mac版Xamarin应用运行时切换泰语失效的解决方法
问题回顾
在Mac版Xamarin应用中尝试通过代码切换至泰语("th"),已实现TranslateExtension、配置资源文件并在App构造函数中设置文化,但应用仍显示英文。
排查与解决步骤
1. 修正资源文件命名与格式
你的泰语资源文件名存在错误:
- 正确命名应为
AppResources.th.resx(需与默认资源文件AppResources.resx保持前缀一致,且带.resx后缀),而非AppResource.th。 - 确保资源文件的访问修饰符设置为Public(在资源文件设计视图顶部的"访问修饰符"下拉框选择Public),否则ResourceManager无法读取本地化资源。
2. 完善线程文化设置
仅设置CrossMultilingual.Current.CurrentCultureInfo不足以覆盖Mac平台的线程文化,需补充设置线程默认文化:
修改App.cs构造函数代码:
public App() { InitializeComponent(); var thaiCulture = new CultureInfo("th"); // 设置插件文化 CrossMultilingual.Current.CurrentCultureInfo = thaiCulture; // 设置线程默认文化 CultureInfo.DefaultThreadCurrentCulture = thaiCulture; CultureInfo.DefaultThreadCurrentUICulture = thaiCulture; MainPage = new NavigationPage(new LoginPage()); }
3. 验证资源键一致性
确认AppResources.th.resx中存在与英文资源完全匹配的键名(例如你使用的Sign In,需保证拼写、空格完全一致),避免因键名不匹配导致返回原键值(英文)。
4. 配置Mac项目本地化支持
在Mac项目的Info.plist中添加泰语本地化声明:
打开Info.plist,添加CFBundleLocalizations数组类型项,将th作为数组元素加入,确保系统识别应用支持泰语本地化。
5. 调试验证
在Debug模式下运行,若资源键不存在会抛出异常,可快速定位是否存在资源缺失或键名错误问题。
内容的提问来源于stack exchange,提问作者A. WHY
相关产品推荐
相关产品推荐

