Мой ресурсный файл.resx Болевые точки

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

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

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

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

Есть ли альтернативы, чтобы преодолеть это?

1 ответ

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

РЕДАКТИРОВАТЬ

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

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

Другие вопросы по тегам