使用资源文件进行本地化

时间:2011-03-04 09:05:02

标签: c# .net resources localization resx

我使用* .resx文件进行本地化。姓名 - 这是英语中的短语或单词。价值 - 翻译成该短语的另一种语言。我选择这种方法为整个应用程序提供一个本地化文件。拥有此文件的任何人都可以自己进行翻译。

但是在Visual Studio 2010 resx编辑器中,每个名称中都有空格的记录都有一个警告:“资源名称不是有效的标识符。” 虽然它编译和工作,但请告诉我,如果我在这里做错了。

3 个答案:

答案 0 :(得分:4)

使用resx文件进行本地化的强度在于,计算机上的文化决定了应用程序应该使用的语言。如果你保留一个resx文件,根据我的说法,你会忽略它的强大功能。相反,请尝试为要集成的每种语言创建一个resx文件。例如:默认语言是英语,那么你有一个默认页面localization.resx,你只保留英语句子。假设您需要法语翻译,请创建另一个名为localization.fr-FR.resx的resx文件。因此,在计算机上启用了fr-FR文化的用户将在程序中使用该语言,而无需任何特定于代码的工作。如果某个没有集成在您的应用程序中的文化的人启动该程序,它将查找它,如果找不到它,它会选择默认的,即英语的。

所以我认为,不要将1个resx文件用于不同的语言,而是使用框架中给出的权限。

答案 1 :(得分:4)

首先,resx文件的想法是为每个文化设置一个单独的资源文件。您可以通过为相同的键创建具有不同值的新文件来提供新的翻译。

例如,您可以创建Forms.en-GB.resx,Forms.pl-PL.resx,Forms.de-DE.resx,并根据当前的UI文化选择相应的文件,而无需做任何事情(确保确定相关文化)。

Visual Studio将生成一个资源类,其中包含来自资源文件的所有键/值对作为属性 - 这使得在代码中更容易使用。您获得的警告意味着您在资源文件中提供的密钥不是有效的标识符(它们包含空格)。您可能希望在密钥中使用_而不是空格。

如果您不想使用生成的类,可以忽略此警告 - 您的resx文件很好,可以直接使用。您可以从resx文件的“自定义工具”属性中删除ResXFileCodeGenerator(属性窗口),或者如果您不需要生成类,则可以在resx文件编辑器中将“访问修饰符”设置为“无代码生成”,但是您仍然会收到警告。

答案 2 :(得分:1)

我认为它有效,但它并不是你应该遵循的策略。

看看here;基本的想法是你利用.NET中的控件自动获得正确的本地化,所以你不必担心翻译。

尽管如此,我并不是一直使用这个,而且我会像你一样做,但我倾向于使用标识符,所以我可能会:

UserWelcome  Hey, {name}, thanks for dropping by ...

然后我会翻译它。它很有用,因为它允许语言的普遍性(例如,某些语言应该正式受到欢迎,而其他语言则不受欢迎,你不希望被直接翻译所限制,“你”,比如说)。

希望这很清楚。

如果你有什么作品,那么我认为这是一些东西,但这不是“一般”的做法。