对于I18N,在代码中存储字符串,与表单无关!

时间:2011-06-28 22:30:11

标签: c# string internationalization resx

我们有一个相对较大的dotNet应用程序,并且想知道在我们的代码中存储与表单无关的字符串的最佳位置在哪里?我们不希望在我们的应用程序的解决方案资源管理器窗口中显示数十个un-collapse resx文件。任何意见,将不胜感激。

3 个答案:

答案 0 :(得分:1)

Android有一种有趣的方式 - 基本上有一个默认目录,然后是每个其他语言环境的单独目录。它看起来很干净,并且可以折叠,因为它们每个都有自己的文件夹。

看看这里,看看是否值得在以下代码之后对代码进行建模:

http://developer.android.com/guide/topics/resources/localization.html

答案 1 :(得分:1)

我们在输出之前将所有字符串包裹在i18n()周围。大多数字符串都在代码中。 i18n函数将获取字符串和上下文并在PO文件中查找并返回i18n'd结果,我假设您已经知道。

PERL示例

## we have this handy noop function for putting strings into a PO file
i18n_noop('Some string that needs to be i18n','This is the context'); 

## once our string has been captured in the PO file, we can assign it to a scalar variable
my $str = 'Some String that needs to be i18n';

## before printing the str we pass it i18n, this function will take the $str and find the appropriate translation.
print i18n($str);

## we could also do this.  The first argument is the string to be translated.  the second argument is the context.
i18n('Some string that needs to be i18n','This is the context'); 

答案 2 :(得分:0)

通常人们倾向于为resx文件创建简单的源目录 可以创建LocalizableResources文件夹并将所有可翻译的resx文件放在那里,以及NonLocalizableResources用于不可翻译的resx文件(如果你使用它们;在足够大的项目中,你的机会很高)。