Мой ресурсный файл.resx Болевые точки
При использовании файлов ресурсов.resx для локализации у меня есть следующие болевые точки:
Для каждой метки мне нужно сделать запись в каждом другом языковом файле. Это может привести к человеческим ошибкам при копировании названия записи, и было бы проще добавить разные языковые версии одной и той же метки в одном месте. Например:
var lbl_Hello = new { en = "Hello, fr = "Bonjour" };
Я не могу искать имена или значения в визуальном редакторе resx с помощью поиска Visual Studio.
Есть ли альтернативы, чтобы преодолеть это?
1 ответ
Я чувствую твою боль. Смешно, что Microsoft так много лет не предоставляла лучшей альтернативы для этого. Даже в локализации.NET Core используются файлы.resx. Моя альтернатива для этого - создать таблицу с одним столбцом на каждом языке, который вы хотите отслеживать. Затем скоро загрузите его в память в конвейере (в.NET Core) или в фазе конфигурации (более старый ASP) в виде статической переменной (словарь), или я вставлю его в локальный / общий кэш без даты истечения срока действия.
РЕДАКТИРОВАТЬ
Если количество локализуемых строк не очень велико, и у вас есть все они доступны на всех языках, вы можете идеально поместить их встроенными в сам статический класс, а не располагать их на внешнем ресурсе (базе данных или файле). Но наличие этих строк на внешнем ресурсе имеет одно явное преимущество: вы можете заменить их без перекомпиляции приложения.
Кроме того, иногда вам не нужно переводить все строки на все доступные языки, которые вы хотите предложить. Затем, если у вас есть ресурсы, выделенные в базе данных или во внешнем файле, вы можете предоставить пользовательский интерфейс, позволяющий некоторым пользователям с необходимыми привилегиями изменять / завершать переводы.