Как стать автором
Обновить

Комментарии 19

Орден почётного члена нашего велоклуба этому господину.
Это, собственно, самый простой и прямолинейный способ локализации, который только бывает. По сути, тот же словарь, только с оригиналом фразы в качестве ключа. Причём в вашей реализации даже множественный формы не поддерживаются, в отличие от gettext, которому уже 30 лет и который портирован, наверное, даже на brainfuck.
Основной недостаток у такого подхода — переводы отваливаются, если поменяется ключевая фраза на дефолтном языке.
Да, это самый простой, но какой-то новичек которому нужно будет легкий перевод фраз, не откажеться от столь простого решения.
На счет множественных форм, вполне можно обойтись и аргументами вместо {0},{1]..., самому прописать конечно же.
Если же фраза поменяеться, то можно и поменять в файле с языками.

А мне понравился лёгкий налёт танцев и песен от создателей "Зиты и Гиты" в виде замены TryParse на switch. Есть в этом какая-то незамутнённость и желание побегать по граблям при изменении enum'а (каюсь, остальной код внимательно не осилил, хватило основной идеи, чтобы сразу пролистать до комментариев).


PS. Глянул ещё — постоянное конструирование строк с чередованием константы с её значением тоже выглядит очень мило.


Для автора


все же ексель не умеет читать кирилицу в UTF-8, а в UTF-8 BOM умеет

Excel не умеет определять кодировку без маркера, а не читать файл и, скорее, некорректно сохраняет, после чего .net читат не то, что нужно. Проверьте файл нормальным редактором, который умеет смотреть что там записано без попыток применения "интеллекта".

progamedev.net/localization вот тут мы с Сашей описали основные проблемы локализации. не все, но Ваш подход точно соберет бОльшую часть граблей. :)
в коде же два одинаковых слова на разных кодировках (UTF-8 и UTF-8-BOM) будут не равны

А, что, как? Что такое "слово в кодировке UTF-8-BOM" в коде C#? Вы правда не сумели заставить .net-производное прочитать файл с BOM?

Честно говоря, из-за этого были проблемы, почему-то не всегда считывало, иногда при сравнении слова в BOM и константы выдавало false, на всякий что бы, если бы вдруг не работало, не думали что проблема в коде, а наверное в кодировке.

Что такое "слово в BOM"? Что вообще такое BOM, по вашему?

Для меня это как бы та же кодировка что и UTF8, только без маркера.

Вы не ответили ни на один из двух вопросов.

Формально ответ на второй вопрос был, ответ на первый исходил из второго, «слово в ВОМ» для меня это слово в другой кодировке, а точнее слова, т.к. один файл — одна кодировка, ВОМ — это в вашем подтексте было сокращения UTF8-BOM
Формально ответ на второй вопрос был

Неа, не было. Давайте еще раз. Что такое BOM?

Маркер последовательности байтов или метка порядка байтов (англ. Byte Order Mark, BOM)

Ура. Что такое "слово в BOM"?

Слово имеющее кодировку — UTF8-BOM, т.е. — Маркер последовательности байтов или метка порядка байтов (англ. Byte Order Mark, BOM)

Что такое "кодировка UTF8-BOM"?

Это кодировка в которой четвертый байт содержит информацию о следующим

Нет такой кодировки. Просто нет. Вообще нет кодировки UTF-8-BOM, есть просто UTF-8.

Да, вы будете правы, но черт побери, все же ексель не умеет читать кирилицу в UTF-8, а в UTF-8 BOM умеет
все же ексель не умеет читать кирилицу в UTF-8, а в UTF-8 BOM умеет

Excel не умеет читать файлы в UTF-8, не имеющие BOM. Ну да, бывает. Это не отменяет того, что файлы имеют одну и ту же кодировку вне зависимости от BOM. И, что важнее, .net умеет читать файлы как с BOM, так и без, а в памяти прочитанные строки всегда представляются одинаково — в UTF-8.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории