Как мне создать многоязычный редактор перевода текста в VS 2010?

#c# #visual-studio-2010 #asp.net-mvc-3 #globalization #dynamics-ax-2009

#c# #visual-studio-2010 #asp.net-mvc-3 #глобализация #dynamics-ax-2009

Вопрос:

Функция, описанная ниже, доступна в Microsoft Dynamics AX (ранее известная как Axapta), приложении ERP. Однако мой вопрос связан с Visual Studio 2010 и приложением MVC 3. Пожалуйста, найдите мои вопросы после объяснения этой функции.

  1. На скриншоте # 1 показан метод, написанный на X (языке, используемом в Microsoft Dynamics AX), с использованием редактора MorphX. Если я выделю текст в двойных кавычках и щелкну по нему правой кнопкой мыши, я получу параметры, как показано на скриншоте. Это верно, если текст начинается с символа @ и является допустимым идентификатором, найденным в файле label.
  2. Если я нажму на опцию Lookup Properties/Methods , появится всплывающая подсказка, показывающая фактический текст, связанный с выбранным идентификатором метки. Здесь в данном случае идентификатор метки является @SYS67 , а связанный с ним текст метки — Transaction date . Смотрите скриншот # 2.
  3. Если я нажму на эту опцию Lookup Label/Text , появится редактор меток с предварительно отфильтрованным идентификатором метки наряду с другими выбранными языками в нижней части редактора. Я могу изменять текст перевода на разных языках с помощью редактора. Смотрите скриншот # 3.
  4. В Dynamics AX тексты меток хранятся в текстовых файлах с идентификатором метки и разделяются табуляцией. Идентификаторы меток всегда начинаются с символа @. Здесь, в показанном примере, @SYS — это префикс группы, а заданный номер — последовательный индекс. Смотрите скриншот # 4, на котором отображается текст, найденный в en-us файле label.

Я понимаю, что это похоже на редактор ресурсов в Visual Studio, где текст перевода хранится в файлах .resx для каждого языка. Я хотел бы сделать что-то подобное для ASP.NET Приложение MVC 3, использующее базу данных SQL Server в качестве хранилища данных для текста перевода.

Вот мои вопросы:

  1. Что мне нужно создать в Visual Studio 2010 для достижения этой функциональности, чтобы я мог вызвать редактор перевода в IDE? Это будет плагин или расширение?

  2. Возможно ли создать аналогичный поставщик ресурсов в ASP.NET Приложение MVC, где я могу просто указать идентификатор метки в двойных кавычках и заставить provider model извлекать данные из базы данных во время выполнения? Является ли синтаксис Resources.MyResource.GetLabel("@SYS67"); единственным доступным вариантом в ASP.NET ? Извините, если синтаксис ресурсов неверен.

  3. Существует ли какой-либо аналогичный набор инструментов (плагин / расширение), уже доступный для Visual Studio?

  4. Я полагаю, что один из терминов для выполнения перевода в ASP.NET приложение использует Resource Provider Model . Существуют ли какие-либо другие термины? Мне интересно узнать термин того, чего я пытаюсь достичь, чтобы я мог выполнить поиск в Интернете, чтобы прочитать больше об этом.

Любые входные данные будут действительно оценены.

Заранее спасибо.

Скриншот # 1:

1

Скриншот # 2:

2

Скриншот # 3:

3

Скриншот # 4:

4

Комментарии:

1. Есть ли причина, по которой вам абсолютно необходимо создать инструмент, подобный вашему скриншоту, вместо того, чтобы просто использовать встроенный способ использования ресурсов? Даже для такого инструмента, как MS Dynamic, вам все равно придется проходить внутри каждого из ваших представлений, в то время как использование Resource может предложить другие преимущества, чем просто перевод «метки», проверка правильности, приходят на ум изображения.

2. Я понимаю, что вы имеете в виду, я из Квебека, Канада (у нас здесь два официальных языка, поэтому приложения ML распространены). Я вижу потенциал в наличии расширения в IDE для просмотра всего перевода сразу. Хотя время (деньги?) вы вложите средства в создание инструмента, все ваше приложение может быть переведено с использованием встроенных файлов ресурсов. Ничто не мешает вам создать веб-интерфейс для пользователей, чтобы изменять эти .resx, в конце концов, это просто XML-файл. Это мой .2c 😉 Уже есть пара редакторов ресурсов с открытым исходным кодом, с которых вы можете начать.

Ответ №1:

Я собираюсь перейти к этому и рассказать вам то, что я знаю. Прошу прощения, если это не дает полного ответа на ваш вопрос, но я не хочу слишком далеко отходить от того, с чем я знаком, и таким образом давать вам плохой совет.

Судя по тому, как вы описываете свою проблему, кажется, что вы могли бы использовать файлы ресурсов (RESX) для переводов, проблема скорее в том, что вы хотите знать, как редактировать их удобным для пользователя способом. Кроме того, некоторые пользователи могут захотеть отредактировать переводы в Интернете.

Чтобы ответить на эту часть вашего вопроса, я бы рекомендовал вам ознакомиться с этой статьей:

http://blog .lavablast.com/post/2008/02/07/RESX-file-Web-Editor.aspx

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

Если вы собираетесь создать свой собственный редактор, я бы посоветовал вам выбрать один интерфейс и придерживаться его. В противном случае вы увеличите время разработки чего-то, что не является вашим реальным продуктом. Поскольку вы хотите, чтобы Веб был доступен для некоторых пользователей, я бы посоветовал вам использовать Веб для всех. Однако, если вы действительно хотите использовать плагин для Visual Studio, я бы рекомендовал вам поместить как можно больше кода в центральный уровень бизнес-логики, чтобы ваши слои представления не занимали много вашего времени.

Что касается доступных в настоящее время опций, я не думаю, что что-либо из нижеперечисленного является плагинами Visual Studio, но все они хорошо справляются с локализацией:

Если вы хотите узнать больше о терминологии и практике локализации, я бы порекомендовал следующий сайт:

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/localization/localization.aspx

Если вы хотите хранить информацию в базе данных вместо .resx файла, вот ресурс, который покажет вам, как это сделать:

http://msdn.microsoft.com/en-us/library/aa905797.aspx

Комментарии:

1. @Siva — вы правы насчет перезапуска приложения после внесения изменений в .resx файл. Я обновил свой ответ выше, включив информацию о том, как использовать базу данных для локализации.