Где хранить строки в коде, не связанном с формами, для I18N! - PullRequest
0 голосов
/ 29 июня 2011

У нас относительно большое приложение dotNet, и мы задаемся вопросом, где лучше всего хранить строки в нашем коде, которые не связаны с формами? Мы не хотим, чтобы в окне обозревателя решений нашего приложения отображались десятки неразрезанных файлов resx. Любой совет будет принят во внимание.

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Мы обертываем все строки вокруг 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'); 
1 голос
/ 29 июня 2011

У Android есть интересный способ сделать это - обычно есть каталог по умолчанию, а затем отдельный каталог для каждой локали. Это выглядит довольно чисто и может быть разборным, так как у каждого из них есть свои собственные папки.

Посмотрите здесь и посмотрите, стоит ли моделировать ваш код после:

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

0 голосов
/ 29 июня 2011

Обычно люди, как правило, создают простые исходные каталоги для файлов resx.
Можно создать папку LocalizableResources и поместить туда все переводимые файлы resx, а также NonLocalizableResources для непереводимых файлов resx (если вы их используете; в достаточно больших проектах вероятность высока, что вы делаете).

...