Как определить локаль / язык, если у локали нет кодовой страницы? - PullRequest
1 голос
/ 26 декабря 2009

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

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

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

Привет

Ответы [ 2 ]

9 голосов
/ 26 декабря 2009

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

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

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

3 голосов
/ 26 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...