0

I am .NET developer and currently working with WPF and ASP.NET MVC 4. The next project I should start will be a web application with good chance to later create clients for desktop/mobile/tablets. In other words, this application could be used from the web browser but also from native applications on Android, iOS, WinPhone8 and Windows Desktop (WPF). I have very limited experience with iOS development and none with Android dev.

One of the features I plan to have in this product is ability for users to select a language on which they want to use GUI, be it in web browser or any other client. Thus I need to create localization solution that would work with all platforms I plan to support. Since I am starting this project with first creating the web app in ASP.NET MVC I am not interested in using Microsoft's default support for localization via resources files (.resx) since that wouldn't be portable.

What are different options out there for creating multi-language support in apps deployed for various platforms? The first idea is to use XML files but I am also interested in exploring other possible solutions that might already exist out there. Any ideas on how to approach this problem are welcome.

4

3 回答 3

1

据我所知,没有什么可以做你想做的事。

  1. 大多数系统都可以很好地使用 JSON。
    您可以做的是使用任何现有的 .resx 到 JSON 解决方案,只需将所有本地化字符串存储在 resx 中,然后自动将它们转换为其他平台的 JSON。

  2. 忘记一个解决方案,只需使用平台提供的任何格式,并使用 Trados 或 Transifex 等工具手动转换不同的格式。

于 2013-06-06T07:02:46.130 回答
1

首先,我不确定您的问题是否应该针对 Android 和 iOs 开发人员(使用 iOs 和 Android 标签),因为如果客户端加载服务器提供的内容,那么最常见的本地化方式(我遇到经常)是为不同的语言提供不同的 URL,可能在 url 中有一个参数,比如国家代码应该在wwww.yourserver.com/en_us/otherstuffhere 哪里,这样客户端可以更改将用于以下请求的 URL。en_us

当然,使用服务器内容本地化所有应用程序是很困难的,尤其是 UI 组件,例如按钮标题、占位符等。对于这些,有适当的方法可以使用 iOS 和 Android 操作系统的本地化功能来本地化它们。

PS 我不知道 Windows 手机操作系统是如何工作的。

于 2013-06-05T19:58:25.487 回答
0

我建议使用给定平台原生的任何格式,否则会给你带来很多额外的麻烦。

然后,您可以使用一些工具来转换和合并这些格式(translate-toolkit在这方面很棒),或者使用一些翻译平台,可以让您在一个界面中翻译所有这些格式。Transifex(服务)、Crowdin(服务)或Weblate(服务或可安装)应该能够做到这一点。

Weblate 也可以帮助您保持同步,我认为其他人没有这样的功能(我是 Weblate 的作者)。

于 2013-06-07T07:31:48.853 回答