Xamarin.Android 中基于 RESX 的本地化
Posted
技术标签:
【中文标题】Xamarin.Android 中基于 RESX 的本地化【英文标题】:RESX-based localization in Xamarin.Android 【发布时间】:2015-07-25 14:01:27 【问题描述】:我正在尝试研究该主题,但仍不清楚 Xamarin.android 中是否可以使用基于 RESX 的本地化。在我的个人尝试中,我无法获得任何本地化字符串,而只能获得中性文化字符串。
我还可以看到像 this one 这样的帖子,其中指出它应该适用于 Android:
这适用于 Android 和 windows phone。
但我也可以看到像 that one 这样的帖子,其中本地化不起作用。
所以我的问题很简单。如何在 Xamarin 中为 Android 构建基于 RESX 的本地化应用程序?
【问题讨论】:
developer.xamarin.com/guides/android/application_fundamentals/… @Jason,我目前正在将我们的 WPF 应用程序迁移到 Android 上,如果我可以重用 BL(包括模型和视图模型),但不能重用 resx,那将非常难过 【参考方案1】:[回答我自己的问题]
嗯,首先,是的,Xamarin.Android 中基于 RESX 的本地化是可能的,并且可以按预期工作。
其次,由于缺乏对细节的关注,我已经浪费了很多时间来尝试使其正常工作。我已经多次阅读文章Localizing Xamarin.Forms Apps with RESX Resource Files,但我总是忽略故障排除部分。确实有一把钥匙:
在调试模式下不起作用(仅限 Android)
如果翻译后的字符串 在您的 RELEASE Android 版本中工作,但在调试时不工作, 右键单击 Android 项目并选择选项 > 构建 > Android Build 并确保快速组装部署不是 打勾。此选项会导致加载资源出现问题,并且应该 如果您正在测试本地化的应用程序,则不要使用。
第三,在尝试寻找一些替代方法来解决我的问题时,我发现文章Generating Localized Resources in Mono for Android Using T4 中描述的方法很有趣。与文章 How to transform T4 templates on build without installing a Visual Studio SDK 中描述的来自 Daniel Cazzulino 的酷 NuGet 包配合使用,我能够基于我的 WPF 项目中的 RESX 为 Android 平台构建一个简单的替代方案。
希望它可以帮助某人。
【讨论】:
这是 Resx 的替代品,如果有人感兴趣的话:github.com/xleon/I18N-Portable 等等,您回答“是”但最终使用 T4 创建可能的 xml 文件以进行翻译?虽然我为 web 应用程序创建 .json 文件做了同样的事情,但您自己的问题的答案实际上是“不,但是……您可以使用 T4”。还是我错了?我仍然没有关于如何在 Xamarin.Android 的 axml(不是 xaml)文件中使用翻译的答案 请您告诉我您实现的最终解决方案以及您如何在 XML 和活动中访问字符串?以上是关于Xamarin.Android 中基于 RESX 的本地化的主要内容,如果未能解决你的问题,请参考以下文章