C # перевод строки - PullRequest
5 голосов
/ 07 июля 2011

Предлагает ли C# способ перевода строк на лету или что-то похожее?

Сейчас я работаю над некоторым устаревшим кодом, который имееттакие части:

section.AddParagraph(String.Format("Premise: {0}", currentReport.Tenant.Code));
section.AddParagraph(String.Format("Description: {0}", currentReport.Tenant.Name));

section.AddParagraph();

section.AddParagraph(String.Format("Issued: #{0:D5}", currentReport.Id));
section.AddParagraph(String.Format("Date: {0}", currentReport.Timestamp.ToString(
                     "dd MMM yyyy", CultureInfo.InvariantCulture)));
section.AddParagraph(String.Format("Time: {0:HH:mm}", currentReport.Timestamp));

Итак, я хочу реализовать перевод этих строк на лету на основе некоторой таблицы подстановок (например,как это делает Qt).

  • Возможно ли это (возможно, с использованием чего-то, что уже есть у C# или с помощью какой-либо пост-обработки - возможно с PostSharp)?
  • Существует ли какой-либо общий подход к интернализации для приложений, созданных с C# (с нуля) ?

Ответы [ 2 ]

6 голосов
/ 07 июля 2011

Существует ли какой-либо общий подход к интернализации для приложений, созданных с использованием C # (с нуля)?

Да, с использованием файлов ресурсов .А вот еще одна статья на MSDN.

1 голос
/ 07 июля 2011

В проекте C #, над которым я сейчас работаю, мы написали вспомогательную функцию, которая работает следующим образом:

 section.AddParagraph(I18n.Translate("Premise: {0}", currentReport.Tenant.Code));
 section.AddParagraph(I18n.Translate("That's all");

Во время сборки скрипт просматривает все вызовы I18n.Translate, а также все элементы управления пользовательского интерфейса.и заполняет таблицу всеми английскими фразами.Это переводится.

Во время выполнения текст на английском языке ищется в словаре и заменяется переведенным текстом.Нечто подобное происходит с нашими ресурсами Winforms Dialog: они составлены на английском языке, а затем переведены с использованием того же словаря.

Самая большая сила этой схемы, также самая большая слабость: если вы используете одну и ту же строку в двух местах, она переводится одинаково.Это сокращает файл, который вы отправляете переводчику, что помогает снизить стоимость.Если вам когда-либо понадобится заставить другой перевод одного и того же английского слова, вам нужно обойти это.Пока у нас есть система (4 года или около того), у нас никогда не было необходимости в ней.Есть также преимущества: вы читаете текст пользовательского интерфейса на английском языке, встроенный в источник (поэтому не прячется за идентификатором, который вам нужно назвать), и если вы удаляете код, он автоматически удаляется и из переведенных ресурсов.

...