我目前正在寻找本地化一个编写C#.NET 4.5.1的ASP.NET网站。现在我知道了本地资源文件和全局资源文件,但是我希望能够更清楚地了解人们如何做到这一点以使其更加实用,因为我发现不必创建一个或多个本地资源特别好每个网页的文件。
例如,该网站有超过100个.aspx网页。对于我需要支持的每种语言,我需要创建一个单独的.resx文件。所以在我的主页上支持英语,法语和德语看起来像这样:
default.aspx.resx
default.aspx.fr.resx
default.aspx.de.resx
制作所有这些文件将是一个艰难的过程。我在考虑的是为什么我不能只为我的所有页面使用全局资源文件?如果我使用页面名称和文本描述恰当地为每个资源添加前缀,那么管理页面的本地化维护是一种稍微简单的方法。
例如,我的英文全球资源文件将包含:
Default-TitleText - My Web Page Title
Default-BodyText - This is some example text for the body of my home page.
Login-TitleText - Enter your login details:
Login-UsernameText - Username
Login-PasswordText - Password
Login-SubmitButton - Login
User-Default-TitleText - Welcome to your personal page.
User-Default-Username - Hello {0}
User-Default-Logout - Click here to logout
正如您所看到的,我将在资源键前添加页面名称和文本描述。对于子目录中的文件,我只在页面名称前加上目录名称(即User-Default-Logout)。
对我来说,这是一个更简单的解决方案。是的,文件会变得很大,但一切都在一个地方。
我希望得到一些关于其他人实际做什么的反馈,以及这是否是一个实际的想法。
答案 0 :(得分:2)
那么表单上不同元素的本地化呢?如果使它们可以本地化,则无法将此信息存储在全局资源文件中。
.NET继承了文化支持,为什么不利用它。您只需使用适当的命名约定在资源文件中创建新的语言翻译,并在更改用户文化时获取相应的资源。你必须手动管理它,否则,发生这种开销的重点是什么?此外,资源被编译成附属程序集,这意味着添加新文化可能意味着仅重新启动应用程序而不是应用程序重新编译(如果资源是在外部编辑的,而不必修复映射)。
另外我猜测大多数工具都会依赖于这些惯例。我最近使用了一个名为Babylon.NET的工具(这不是一个插件),并与德国的transaltor合作开发了一个最初使用英语的应用程序。他能够编写适当的翻译,将它们反馈给我们,我们可以根据需要发布更改。默认结构是此工具必须工作的,我确定其他人也有这种依赖。结果是,如果你采取定制的方式,你可能会限制你的选择。