Комментарии 19
Это, собственно, самый простой и прямолинейный способ локализации, который только бывает. По сути, тот же словарь, только с оригиналом фразы в качестве ключа. Причём в вашей реализации даже множественный формы не поддерживаются, в отличие от gettext, которому уже 30 лет и который портирован, наверное, даже на brainfuck.
Основной недостаток у такого подхода — переводы отваливаются, если поменяется ключевая фраза на дефолтном языке.
На счет множественных форм, вполне можно обойтись и аргументами вместо {0},{1]..., самому прописать конечно же.
Если же фраза поменяеться, то можно и поменять в файле с языками.
А мне понравился лёгкий налёт танцев и песен от создателей "Зиты и Гиты" в виде замены TryParse на switch. Есть в этом какая-то незамутнённость и желание побегать по граблям при изменении enum'а (каюсь, остальной код внимательно не осилил, хватило основной идеи, чтобы сразу пролистать до комментариев).
PS. Глянул ещё — постоянное конструирование строк с чередованием константы с её значением тоже выглядит очень мило.
Для автора
все же ексель не умеет читать кирилицу в UTF-8, а в UTF-8 BOM умеет
Excel не умеет определять кодировку без маркера, а не читать файл и, скорее, некорректно сохраняет, после чего .net читат не то, что нужно. Проверьте файл нормальным редактором, который умеет смотреть что там записано без попыток применения "интеллекта".
в коде же два одинаковых слова на разных кодировках (UTF-8 и UTF-8-BOM) будут не равны
А, что, как? Что такое "слово в кодировке UTF-8-BOM" в коде C#? Вы правда не сумели заставить .net-производное прочитать файл с BOM?
Что такое "слово в BOM"? Что вообще такое BOM, по вашему?
Вы не ответили ни на один из двух вопросов.
Формально ответ на второй вопрос был
Неа, не было. Давайте еще раз. Что такое BOM?
Ура. Что такое "слово в BOM"?
Что такое "кодировка UTF8-BOM"?
Нет такой кодировки. Просто нет. Вообще нет кодировки UTF-8-BOM, есть просто UTF-8.
все же ексель не умеет читать кирилицу в UTF-8, а в UTF-8 BOM умеет
Excel не умеет читать файлы в UTF-8, не имеющие BOM. Ну да, бывает. Это не отменяет того, что файлы имеют одну и ту же кодировку вне зависимости от BOM. И, что важнее, .net умеет читать файлы как с BOM, так и без, а в памяти прочитанные строки всегда представляются одинаково — в UTF-8.
Локализация любых текстов