我正在开发一个 .Net 软件产品,该产品由各种大小的多个应用程序和数十个(可能数百个)程序集组成。一切都必须翻译成多种语言。
无论我在哪里看,在 .NET 中本地化字符串的建议方法是使用资源字符串创建附属程序集。当然,所有这些示例都只是展示了一个程序集,以及如何在技术上使本地化工作。我的问题是,在实践中我看不出这应该如何扩展到大量的程序集。
如果我只是为每个程序集复制该方法,我最终会得到大量的附属程序集来维护和部署,并且我必须在每个需要它的程序集中跟踪一个相同的字符串/翻译。每次翻译发生变化时,我都必须在我的所有程序集中找到该字符串的所有用途,并对其进行修改。
每次我需要更新我的翻译时,我都需要从大量资源文件中提取所有内容,将其发送给翻译人员,然后将他们的结果再次传播到正确的资源中。这当然可以完成,我假设其中一些可以(并且必须)编写脚本。然而,它并没有让我觉得特别顺利和高效。
我能想到的一种替代方法是创建一个专用的翻译程序集(带有附属程序集),作为本地化字符串的中央存储库。所有程序集的所有字符串的所有翻译都会到那里,并且每个程序集都会依次引用它以吐出翻译。
这似乎使维护变得更加容易,但是当然,这个具有大量资源字符串的中央程序集必须与我的最小应用程序一起部署,而实际上只需要其中的一小部分。此外,许多开发人员必须经常更改此组件,这将导致冲突的高风险。
我的问题是:
通过卫星程序集进行本地化的方法应该如何扩展到具有许多程序集的大型软件项目?建议的策略和最佳实践是什么?