Есть ли лучший способ управления локализованными строками?

Я работаю над продуктом, где нам нужно немного побеспокоиться о локализации. В настоящее время это рабочий процесс, когда мне нужно использовать (или добавить) локализованную строку:

  1. Найдите файл resources.resx (который содержит сотни элементов)
  2. Если найдете, то скопируйте имя. В противном случае добавьте новую строку и скопируйте имя
  3. Затем используйте ResourceFactory.ResourceMgr.GetString("MY_MAGIC_STRING") (где ResourceMgr — это просто статическое поле для ResourceManager)

Этот трехэтапный процесс для любых строк — настоящая боль. Существуют ли какие-либо шаблоны или способы упростить этот процесс?


person Earlz    schedule 14.01.2013    source источник
comment
Будьте осторожны с повторным использованием одной и той же строки, есть фразы/предложения/слова, которые должны быть переведены по-разному на другие языки, в зависимости от контекста. Например. спряжение глаголов в славянских языках в зависимости от подлежащего предложения.   -  person svick    schedule 14.01.2013
comment
@свик, конечно. Обычно мы стараемся держать все вместе (особенно с помощью строк в стиле String.Format) и позволяем переводчикам сообщать нам, когда нам нужно что-то изменить.   -  person Earlz    schedule 14.01.2013
comment
Если это чистый код или заставить его выполняться быстрее?   -  person paparazzo    schedule 14.01.2013
comment
@Blam в первую очередь для чистого кода (хотя большая производительность никогда не помешает)   -  person Earlz    schedule 18.01.2013


Ответы (2)


Автоматически сгенерированные файлы с доступом к каждой отдельной строке намного проще в использовании — установите «Пользовательский инструмент» для файла RESX на PublicResXFileCodeGenerator.

Код будет выглядеть так:

using MyProject.Resources;
...
localizedText = Resources.SomeReasonableName;

Боковые примечания:

  • Наличие нескольких файлов RESX вместе с автоматически сгенерированными идентификаторами дает дополнительное преимущество Intellisense, предоставляя вам разумное количество вариантов.
  • в зависимости от того, как обрабатывается перевод, вам может быть лучше не беспокоиться о дублирующемся тексте в файле RESX (за исключением, возможно, строк типа OK/cancel). Может быть проще иметь дело с повторяющимися строками во время перевода.
person Alexei Levenkov    schedule 14.01.2013
comment
Но это лишь немного улучшит шаг 3, так что это не такое уж большое улучшение, не так ли? - person svick; 14.01.2013
comment
@svick, твой звонок. Немного похоже на время компиляции и проверки во время выполнения. Кроме того, если строки организованы в файлы по функциям, вы получаете интеллектуальное представление, что при разумном количестве вариантов, если все в одном файле - не так много. Но, по крайней мере, вы получаете ошибки времени компиляции, а не времени выполнения. - person Alexei Levenkov; 14.01.2013