【问题标题】:How to create a multi-platform localization solution?如何打造多平台本地化解决方案?
【发布时间】:2026-01-07 16:05:02
【问题描述】:

我是 .NET 开发人员,目前正在使用 WPF 和 ASP.NET MVC 4。我应该开始的下一个项目将是一个 Web 应用程序,以后很有机会为桌面/移动/平板电脑创建客户端。换句话说,这个应用程序可以从 Web 浏览器使用,也可以从 Android、iOS、WinPhone8 和 Windows 桌面 (WPF) 上的本机应用程序使用。我在 iOS 开发方面的经验非常有限,在 Android 开发方面没有经验。

我计划在该产品中具有的功能之一是让用户能够选择他们想要使用 GUI 的语言,无论是在 Web 浏览器中还是在任何其他客户端中。因此,我需要创建适用于我计划支持的所有平台的本地化解决方案。由于我开始这个项目时首先在 ASP.NET MVC 中创建 Web 应用程序,因此我对使用 Microsoft 通过资源文件 (.resx) 进行本地化的默认支持不感兴趣,因为它不可移植。

在为各种平台部署的应用程序中创建多语言支持有哪些不同的选项?第一个想法是使用 XML 文件,但我也有兴趣探索其他可能已经存在的解决方案。欢迎任何有关如何解决此问题的想法。

【问题讨论】:

    标签: android .net ios localization multiplatform


    【解决方案1】:

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

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

    P.S 我不知道 Windows phone 操作系统是如何工作的。

    【讨论】:

    • 我并不是说客户必须从网络应用程序中获取语言内容。还可能发生的情况是,移动原生应用程序将具有本地文件以及它们将加载的语言字符串。这样他们就不会依赖网络应用程序。无论如何感谢您的回答,也许我不应该使用 android/ios 标签。
    【解决方案2】:

    据我所知,没有什么东西可以满足你的需求。

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        最近更新 更多