Наличие довольно большого проекта с использованием ресурсов для интернационализации (следуя этому руководству: Полное руководство по локализации ASP.NET MVC 2, используя такие вещи, как атрибуты данных и т. Д.), Мы сталкиваемся с необходимостью перевода файлов ресурсов. В начале проекта я выбрал подход, чтобы иметь много небольших файлов ресурсов - для каждого представления, модели представления, контроллера ... Так что в итоге у меня были сотни ресурсов. Во время переводов (что выполняется нашими партнерами с использованием инструмента ResXManager мы сталкиваемся с проблемой определения контекста строки (где она отображается, чтобы выяснить, какая форма перевода имеет смысл при отображении).
Поэтому меня попросили внести изменения в приложение, которые отображают не локализованные значения, а ключи (или имена строк). Например. имея строку в ресурсах TBL_NAME
, используемую где-то в представлении, например @ResX.TBL_NAME
, и переведенную на английский как "Name", я хотел бы показать ее в этой специальной мутации как "TBL_NAME", чтобы переводчик мог видеть контекст - где именно эта строка используется . Лучше всего, если бы это была не специальная сборка приложения, а другой «язык» приложения, доступный для переводчиков, чтобы он мог переключаться между английским и этим «нелокализованным» языками.
Я ищу несколько простых идей, как это сделать. До сих пор я думал об этих подходах:
- Переопределение
ResourceManager.GetString
- нельзя использовать, потому что мы используем сгенерированные классы конструктора для массового доступа к строкам, и пока я не нашел способа изменить созданный ResourceManager (см. ответ). Я что-то пропустил? - Создайте ресурсы для какого-то неиспользуемого языка, который будет содержать пары
string name/translated value
какTBL_NAME/TBL_NAME
- жизнеспособно, но очень утомительно, поскольку у нас есть сотни ресурсов. Также добавление нового ресурса потребует от нас помнить, что нам нужно добавить этот неиспользуемый языковой ресурс, который будет иметь то же имя строки. Вам также придется проделать в два раза больше работы при добавлении одной строки в приложение.
На данный момент мне кажется, что с использованием ресурсов и текущего подхода невозможно решить эту задачу, поэтому я решил задать это как вопрос (и я знаю, что это скорее обсуждение, чем вопрос) здесь, надеясь, что кто-то дайте мне несколько подсказок о другом подходе к решению этой проблемы.