我继承了一个Xamarin跨平台项目(仅限于Android),该项目有一个“strings.xml”文件,其中包含一些按钮名。
需要找到一种方法来轻松地添加更多的语言,并将代码-字符串转换为可翻译的 to (>300+),而不仅仅是组件-文本。
到目前为止,我已经尝试过许多,但是没有任何事情像预期的那样起作用:*
(大多数示例和帮助只适用于Xamarin.Forms。)
1.)安装了ResX管理器
2.)创建了第二个strings.xml >>放在值中-hu文件夹,>>复制了XML内容,>>翻译在XML中。
3.)安装了多语言App 4.0
4.)已安装的Nuget>GetText + POEdit
5.)升级到VS2017
6.)在一个地方论坛上被问到,但没有人回答。
7.)搜索了大约100个主题在这里>> ..。它们大多是关于.但这对机器人来说似乎是无效的。
*根据expected,我想象过有一个简单的向导,在这里我可以:
所以..。现在我完全糊涂了。我花了整整一周的时间在混乱中看到某种“秩序”,但却找不到一篇恰当的文章来解释,人们应该用什么方法轻松地完成的机器人翻译,为什么呢?谢谢!
发布于 2017-07-27 09:20:08
我同意您的第二种方法,因为它使用了Android内置的本地化系统。使用它的一个好处是,如果找不到一种语言或一种语言的键,那么它已经包含了一个后备解决方案。
您可以在布局文件中使用它:
<Button
android:text="@string/LogOn_Login"或内部代码:
var progressDialog = new ProgressDialog(this);
progressDialog.Indeterminate = true;
progressDialog.SetCancelable(false);
progressDialog.SetMessage(GetString(Resource.String.LogOn_ProgressMessage));但是你需要知道一个活动和一个片段之间的区别。在一个活动中,只需调用GetString()即可。这需要一个从Resource.String.YOUR_KEY获得的int。但是在一个片段中,你必须给出上下文。调用更改为Activity.GetString()。
新语言或字符串可以很容易地添加。我通常先在值-文件夹中向strings.xml添加新的字符串。这样我就能确定我已经准备好撤退了。新字符串具有以下语义:
<string name="KEY">VALUE</string>充满了真实数据:
<string name="LogOn_ProgressMessage">Authenticating...</string>保存strings.xml文件后,重新构建项目以确保Resource.designer.cs被更新是很好的。有时,我会看到新添加的键在Resource.Strings无法访问的情况下的行为。
在编辑strings.xml时,我和您一样认为没有“翻译器窗口”,您必须将每个新键复制到所有受支持的语言中。为了克服这个问题,我们构建了一个工具来创建所有这些文件,以便在每次构建时使用。通过这种方式,我们支持一个拥有超过21种语言的大型应用程序。
发布于 2017-07-25 07:46:56
有了Xamarin,我就沿着.Resx文件路线走下去。string.xml文件是安卓的解决方案,不能很好地适应.NET世界。
这里很好地解释了如何本地化您的代码:
https://developer.xamarin.com/guides/xamarin-forms/advanced/localization/
使用Reshaper,您可以从代码中提取所有字符串:https://www.jetbrains.com/resharper/features/internationalization.html
是的,您必须转换XML文件。它们的格式是什么?您可能可以使用此工具:
http://converter.webtranslateit.com/
要在库中使用.NET资源文件,您必须先将资源添加到项目中,然后按照以下方式配置它们:

现在您可以使用它们了,例如:
BillManagement.ResourceManager.GetString("TaxSetupWrong")或
LibraryName.Resources.BillManagement.TaxSetupWronghttps://stackoverflow.com/questions/45287888
复制相似问题