Как определить локаль / язык, если у локали нет кодовой страницы?

Мне нужно определить язык по широкому кругу Unicode. Я попытался использовать интерфейс iMultiLang2, и это правильно работает, если локаль имеет кодовую страницу. Некоторые локали / языки не имеют кодовых страниц и отображаются только в юникоде. Как я могу получить lcid для тех? Грузинский, хинди и многие другие языки не имеют кодовых страниц и являются только юникодными сопоставлениями

Я использую Delphi7 Enterprise.

Буду очень признателен за любую помощь

С уважением

2 ответа

Решение

Вопрос основан на недопонимании юникода. Unicode - это способ представления систем письма, а не языков. Представьте себе строку в кодировке Unicode, состоящую из трех кодовых точек U+0073, U+0069 и U+006e, то есть "sin". Это английский? Это испанское слово "без"? Это "то" на каком-нибудь из нескольких скандинавских языков? Кто знает.

Вы упоминаете грузинский и хинди. Грузинский шрифт (ქართული დამწერლობა) может быть использован, чтобы представлять грузинский, конечно, но также и мегрельский, сванский и некоторые другие, еще более редкие языки. Там нет сценария "хинди", равно как и "английские" буквы. Поскольку английский написан латинскими буквами, которые мы унаследовали от наших латиноязычных носителей, хинди написан на деванагари (देवनागरी), прекрасном шрифте, который также используется для древнего санскрита и современного маратхи, непальского и десятков других языков. И не заводи меня на китайский.

Если вы нажали и должны принять хакерское близкое решение, вы можете сделать приближения: "так как этот персонаж из диапазона Деванагари (U+0900–U+097F) или грузинского диапазона (U+10A0–U+10FC и U+2D00–U+2D25), я предполагаю, что это, вероятно, хинди или грузин ". Такой метод был бы подвержен ошибкам и расплывчат, но вы могли бы начать с таблицы диапазонов здесь.

Я обычно не даю такого рода ответов, но в любом случае Вы не даёте !, Это такая задача, которую вы не можете решить. Слишком много случаев, когда вы не можете определить язык.

Кстати, единственное место, где я наблюдал такую ​​функцию, было в Google Translator, и я работал, только если длина текста достаточно велика и даже в этом случае нет гарантии.

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