c# - 使用扩展方法的替代本地化

标签 c# resources localization extension-methods

我即将为我的雇主启动一个本地化项目。它涉及一个预先存在的项目,该项目具有许多 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/

相关文章:

c# - 为什么我在发送 SMTP 电子邮件时收到“"' 属性无法分配”?

web-services - 休息给我的妻子 - 有人可以解释这个短语吗?

Reporting Services 本地化报告(.rdl/.rdlc 文件)

java - 阅读除英语以外其他语言的短信

iPhone 本地化 - 获取手机的语言代码?

c# - ASP.NET Core 2.2 SignalR 缓冲调用而不是异步调用

c# - 使用 Moq 设置解决不明确的调用,方法首先返回,第二个抛出异常

c# - Windows 8 商店应用程序 - 滑动手势进行导航

maven - 如何在执行 maven-resources-plugin :copy-resources 时在 Maven 复制资源过程中失败,而不是跳过不存在的资源目录

Android Pluralization 不起作用,需要帮助