我即将为我的雇主启动一个本地化项目。它涉及一个预先存在的项目,该项目具有许多 Windows 窗体和已建立的代码库,使用 C# 和 ASP.NET 进行编程。我研究了如何在 Visual Studio 中本地化应用程序并找到了资源。
虽然这些是解决问题的充分方法,但我对使用资源的缺点并不完全满意。也就是说,它的占用空间比较大,需要对每个表单文件进行修改。此外,资源文件只能在 Visual Studio 中编辑。我更愿意让没有编程知识的外部翻译人员进行翻译。
所以我想出了一个替代方案:
使用 String 上的扩展方法构建静态本地化实用程序类:
public static String Localize(this String s)
实用程序类在启动时从文件加载本地化字符串。当程序在某处需要一个字符串时,它被调用为
"foo".Localize();
程序会使用字符串本身作为表中的键来查找翻译。 这似乎是一个安全有效的解决方案,我很高兴它在现有代码库上留下的足迹很小。
基本上我想问:
- 我的解决方案是否有我遗漏的缺点?
- 我应该研究哪些本地化数据文件格式(我已经遇到过 .po 文件格式)?
- 偏离资源文件解决方案的理由是否充分?
如果您有任何建议和/或注意事项,我们将不胜感激。
最佳答案
您正在尝试重新发明 MS 很久以前发明的轮子。您可以使用大量可用于资源的工具,甚至可以编写自己的资源提供程序。
一些可用的工具:What tools are available for adding Localization to an ASP.NET project?
如果您想为翻译人员使用数据库:Data Driven Resource provider from Rick Strahl
关于c# - 使用扩展方法的替代本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8242254/