Альтернативная локализация с методами расширения - PullRequest
2 голосов
/ 23 ноября 2011

Я собираюсь начать проект локализации для моего работодателя.Это касается уже существующего проекта с множеством оконных форм и установленной кодовой базой, запрограммированной на C # и ASP.NET.Я провел исследование о том, как локализовать приложение в визуальной студии и нашел ресурсы.

Хотя это адекватное решение проблемы, я не совсем доволен недостатками использования ресурсов.Это означает, что он имеет довольно большую площадь, требующую изменений в каждом из файлов форм.Кроме того, файлы ресурсов доступны для редактирования только из Visual Studio.Я бы предпочел включить внешние переводчики без знаний в области программирования для выполнения перевода.

Поэтому я предложил альтернативное решение:

Создание класса утилит статической локализации с методом расширения для String:

public static String Localize(this String s)

Служебный класс загружает строки локализации из файла при запуске.Когда программе где-то нужна строка, она называется

"foo".Localize();

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

В основном я хочу спросить:

  • Есть ли недостатки умое решение, которое я пропустил?
  • Какие форматы файлов для данных локализации мне следует рассмотреть (я уже сталкивался с форматом файла .po)?
  • Это достаточно веская причинаотклониться от решения с использованием файлов ресурсов?

Будем благодарны за любые советы и / или соображения.

Ответы [ 3 ]

3 голосов
/ 23 ноября 2011

Вы пытаетесь заново изобрести колесо, которое MS изобрела давно. Вы можете использовать множество инструментов, доступных для ресурсов, или даже написать собственного поставщика ресурсов.

Доступны некоторые инструменты: Какие инструменты доступны для добавления локализации в проект ASP.NET?

Если вы хотите использовать базу данных для переводчиков: Поставщик управляемых данными ресурсов от Рика Страля

0 голосов
/ 24 ноября 2011

Есть ли у моего решения недостатки, которые я пропустил?

Стандартные файлы ресурсов выходят за рамки изменения текста.

Возможно, вам придется изменить размеры определенных элементовчтобы соответствовать новому тексту (если вы не используете существующий механизм управления макетом).А для некоторых языков вам потребуется изменить размеры шрифтов / шрифтов (например, китайский, японский, корейский) или выравнивание (например, языки справа налево, такие как арабский и иврит).

Кроме того, перевод стандартных файлов означаетчто с помощью редактора, который знает формат, можно увидеть диалог «как есть», поэтому он дает больше контекста, чем автономные строки, что приводит к лучшему качеству перевода.

0 голосов
/ 23 ноября 2011

Есть ли у моего решения недостатки, которые я пропустил?

Я могу указать на некоторые тексты в файлах aspx. Собираетесь ли вы сделать свой метод расширения доступным для них? Это было бы сложно, я думаю.

например. <asp:Label Text="Title"> - как вы собираетесь перевести это?

Кроме того, некоторые из ваших утверждений не совсем верны.

файлы ресурсов доступны для редактирования только из Visual Studio

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

...