Мои проблемы с файлом ресурсов .resx

При использовании файлов ресурсов .resx для локализации у меня есть следующие болевые точки:

  1. Для каждой метки мне нужно сделать запись в каждом другом языковом файле. Он подвержен человеческим ошибкам при копировании имени записи, и было бы проще добавить разные языковые версии одной и той же метки в одном месте. Например:

    var lbl_Hello = new { en = "Hello, fr = "Bonjour" };

  2. Кажется, я не могу искать имена или значения в визуальном редакторе resx с помощью поиска Visual Studio.

Есть ли альтернативы для их преодоления?


person John L.    schedule 21.12.2016    source источник
comment
Пожалуйста, смотрите редактирование моего ответа. Чао   -  person Vi100    schedule 21.12.2016


Ответы (1)


Я чувствую твою боль. Смешно, что Microsoft не предоставила для этого лучшую альтернативу за столько лет. Даже локализация .NET Core использует файлы .resx. Моя альтернатива для этого — создать таблицу с одним столбцом для каждого языка, который вы хотите отслеживать. Затем вскоре загрузите его в память в конвейере (в .NET Core) или на этапе конфигурации (старый ASP) в виде статической переменной (словарь), или я вставлю его в локальный/общий кеш без даты истечения срока действия.

ИЗМЕНИТЬ

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

Кроме того, иногда у вас не будет всех строк, переведенных на все доступные языки, которые вы хотите предложить. Затем, если у вас есть ресурсы, выделенные в базе данных или внешнем файле, вы можете предоставить пользовательский интерфейс, чтобы позволить некоторым пользователям с необходимыми привилегиями изменять/завершать переводы.

person Vi100    schedule 21.12.2016
comment
Каково ваше мнение о том, чтобы хранить словарь в самом статическом классе, а не использовать для его загрузки базу данных? Это также обеспечит статическую типизацию. - person John L.; 21.12.2016