2011-07-18 87 views
1

我的Android应用程序连接到asp.net web服务以注册用户。当用户注册时,我会从服务器向用户发送一封欢迎邮件。由于我们在许多国家拥有客户,因此需要将电子邮件翻译成正确的语言。我用下面的代码(C#)的服务器上获得电子邮件的正文:从Android连接时出现错误的asp.net web服务翻译

string mailbody = (string)HttpContext.GetGlobalResourceObject("Resource", "mailbody"); 

在我的App_GlobalResources文件夹我有一个包含名为Resource.resx和瑞典语翻译资源英文翻译的文件。 sv.resx。

许多英语用户现在抱怨他们拿到的是瑞典语翻译而不是英文翻译。每次我在我的Android手机上测试时,我都会得到正确的翻译,所以我很难跟踪这个错误。当从iPhone连接时,这也一直很好。任何想法可能是错误的?有没有人看到过这样的问题?

+0

你如何确定他们应该使用哪种语言?你在做Geo-IP查询还是询问用户他们想要哪种语言? –

+0

我让asp.net根据请求来决定,在我的web.config中使用<全球化requestEncoding =“utf-8”responseEncoding =“utf-8”culture =“auto”uiCulture =“auto”/>所以该asp.net将使用基于浏览器语言的正确翻译。也许这不适用于Android? – Martin

回答

1

你描述的行为看起来很奇怪。它似乎与Web服务中的文化检测有关,当然web.config可能在这里起作用。
但是,将文化和uiCulture设置为“自动”应该能够从网络浏览器中检测到最期望的文化,也就是说,我认为它对于英语用户来说不应该是瑞典语......我会怀疑一些奇怪的后退规则。
你确定你的中立文化资源(Resource.resx)是英文的(只是为了仔细检查)?
也许你在Global.asax有一些覆盖?

如果两个问题的答案都是“没关系”,也许尝试将设置修改为uiCulture =“auto:en-US”,以便语言直接回退到英语(美国)。在英语中没有其他资源和中性文化资源,它应该,但是...

+0

是的Resource.resx是英文的,在Global.asax中也不重写。我们一直在我们的网站和iPhone应用上使用这种网络服务一年多。当Android应用程序连接到相同的服务时,问题就开始了,但正如我所说我无法重现问题,我得到的只是愤怒的电子邮件:)设置uiCulture =“auto:en-US”如果我的电脑仍然显示瑞典语用户是瑞典人还是会一直显示英文?也许我应该尝试添加一个Resource.en-US.resx? – Martin

+0

如果用户的主要语言是瑞典语,它应显示瑞典语。将Resource.resx复制为Resource.en-US.resx也是有道理的,尽管理论上它不应该有任何区别。 –

+0

添加Resource.en-US.resx似乎也有用。添加后没有任何报告。谢谢你的帮助! – Martin

相关问题