Page 3 of 5

Re: Некорректность отображения текста на иврите

PostPosted: Sat Jul 06, 2013 9:55 pm
by Abs62

Re: Некорректность отображения текста на иврите

PostPosted: Sun Jul 07, 2013 5:32 am
by Michael72

Работает.
Проблема №4 решена, проблема №3 - нет.

Re: Некорректность отображения текста на иврите

PostPosted: Sun Jul 07, 2013 7:09 am
by Abs62
Michael72 wrote:Проблема №4 решена, проблема №3 - нет.

Добавьте в qt-style.css нужный шрифт для "MainWindow #historyList".

Некорректность отображения текста на иврите (проблема №4)

PostPosted: Tue Jul 09, 2013 12:56 pm
by Michael72
Проблема №4 решена только для словарей в формате DICT. Для словарей формата StarDict и Sdictionary эта проблема остаётся не решённой:

goldendict3.jpeg
GoldenDict, версия 1.5.0-RC-69-ge80d3aa. Для словарей DICT, StarDict и Sdict
goldendict3.jpeg (128.74 KiB) Viewed 18721 times

А также эта проблема не решена для Словарей Он-Лайн Wikipedia:

goldendict4.jpeg
GoldenDict, версия 1.5.0-RC-69-ge80d3aa. Для Hebrew Wikipedia
goldendict4.jpeg (13.17 KiB) Viewed 18721 times

Наличие в тексте слова на английском языке (cruiser) явилось причиной сильного искажения текста. Текст должен отображаться следующим образом:

Wikipedia.jpeg
Словарь Он-Лайн Hebrew Wikipedia
Wikipedia.jpeg (12.58 KiB) Viewed 18721 times

Шаги для воспроизведения проблемы
Словарь: "Hebrew-Russian Dictionary" (StarDict), "Hebrew-Russian Dictionary" (Sdictionary)
Действия: В поле "Искать" напечатайте "אשרה (2)" и нажмите на Enter.
Для воспроизведения проблемы со Словарём Он-Лайн Hebrew Wikipedia в поле "Искать" напечатайте "סיירת (אונייה)" и нажмите на Enter.

Re: Некорректность отображения текста на иврите

PostPosted: Tue Jul 09, 2013 5:39 pm
by Abs62
Ох уж эти мне левосторонние языки. :)
Насчёт википедии есть проблема - отдавая статью, она, ЕМНИМС, не указывает ни направление текста, ни язык.
Насчёт остального будем посмотреть. Только упомянутый sdict-овский словарь всё равно кривой. У него входной язык указан как "iw", а такого кода в стандарте не существует. Код иврита - "he".

Re: Некорректность отображения текста на иврите

PostPosted: Tue Jul 09, 2013 7:43 pm
by Michael72
Abs62 wrote:Ох уж эти мне левосторонние языки. :)
Насчёт википедии есть проблема - отдавая статью, она, ЕМНИМС, не указывает ни направление текста, ни язык.

Я посмотрел исходный код страницы и обнаружил следующий тэг:
Code: Select all
<div id="mw-content-text" lang="he" dir="rtl" class="mw-content-rtl">

Атрибут dir="rtl" указывает на направление справа налево. Именно этот атрибут обеспечивает правильное отображение текста.
Abs62 wrote:Только упомянутый sdict-овский словарь всё равно кривой. У него входной язык указан как "iw", а такого кода в стандарте не существует. Код иврита - "he".

sdict-овский словарь есть возможность переделать. Вот словарь с правильными указателями языка: "Hebrew-Russian Dictionary" (Sdictionary)

Решение проблемы №4 для словарей в формате DICT реализована неверным способом. Проблема остаётся. Слово, которое состоит из неивритских символов располагается правильно, слева от предшествующего ему ивритского слова, но само оно претерпевает зеркальный переворот, или другими словами, отображается по правилам написания справа налево. Вот как сейчас у GoldenDict:

goldendict5.jpeg
GoldenDict, версия 1.5.0-RC-69-ge80d3aa. Для словаря DICT.
goldendict5.jpeg (135.18 KiB) Viewed 18721 times

Вот как должно быть:

gnome-dictionary3.jpeg
GNOME Dictionary, версия 3.6.0
gnome-dictionary3.jpeg (30.57 KiB) Viewed 18721 times

Из скрин-шотов видно, что у GoldenDict вместо "мэрхак" отображается "кахрэм".

Шаги для воспроизведения проблемы
Словарь: "Russian-Hebrew Dictionary" (DICT)
Действия: В поле "Искать" напечатайте слово "расстояние" и нажмите на Enter.

Re: Некорректность отображения текста на иврите

PostPosted: Wed Jul 10, 2013 2:26 pm
by Abs62
Пробуем - goldendict-1.5.0-RC-70-gc1cfbae(EXE only).7z - 996.60 KB
Чтобы механизм работал, языки словаря должны быть заданы правильно. Если GD не знает язык, он использует умолчательное направление текста, слева направо.

Re: Некорректность отображения текста на иврите

PostPosted: Thu Jul 11, 2013 8:22 am
by Michael72
Abs62 wrote:Пробуем - goldendict-1.5.0-RC-70-gc1cfbae(EXE only).7z - 996.60 KB
Чтобы механизм работал, языки словаря должны быть заданы правильно. Если GD не знает язык, он использует умолчательное направление текста, слева направо.

Теперь проблема №4 решена полноценно для:
  • Sdictionary словарей
  • DSL словарей
  • Словарей Он-Лайн
Для Babylon Glossary возможности проверить пока не нашёл.
Для словарей в формате DICT и StarDict проблема остаётся не решённой. Предлагаю научить GoldenDict узнавать язык для каждой строки отдельно по первому алфавитному символу. Примерно так себя ведёт текстовый редактор Kate. Стоит появиться в начале строки первому алфавитному символу не из ивритского диапазона символов [\u05D0-\u05EA] как редактор тут же переключается на отображение всей строки как текста с написанием слева направо. Свой алгоритм мне легче выразить на языке JavaScript:
Code: Select all
string=string.replace(/^[\x00-\x40\x5B-\x60\x7B-\x7F]+/, '');  // удаление в начале строки неалфавитных символов
if (string.charCodeAt(0)>1487&&string.charCodeAt(0)<1515) lang="he"; // если первый символ в диапазоне [\u05D0-\u05EA], то язык he

По большому счёту в данном случае нужно научить узнавать не конкретный язык, а является ли первый алфавитный символ из алфавита языков с написанием справа налево, т.е. не только иврит, но и другие. Мне кажется тяжело разобраться со всеми такими языками, но тогда хотя бы для двух, где это точно так: иврит и арабский.

Re: Некорректность отображения текста на иврите

PostPosted: Thu Jul 11, 2013 1:57 pm
by Abs62
Michael72 wrote:Для словарей в формате DICT и StarDict проблема остаётся не решённой.

Для DictD и Stardict языковая пара задаётся в названии файлов. Двух- или трёхбуквенными кодами через дефис.
То бишь не "Russian-Hebrew Dictionary.dict", к примеру, а "Ru-He_Russian-Hebrew Dictionary.dict".
В Stardict ту же операцию можно провернуть через имя словаря в .ifo.
Michael72 wrote:Предлагаю научить GoldenDict узнавать язык для каждой строки отдельно по первому алфавитному символу.

Да научить-то не проблема, в списках и заголовках вкладок и главного окна именно этот алгоритм и используется. Вопрос в том, насколько это корректно и к скольким глюкам может привести. Для списков и заголовков просто другого выбора нет - они работают сразу на все словари, а не на какой-то один с известными языками.

Re: Некорректность отображения текста на иврите

PostPosted: Sat Jul 13, 2013 9:23 am
by Michael72
Abs62 wrote:Да научить-то не проблема, в списках и заголовках вкладок и главного окна именно этот алгоритм и используется. Вопрос в том, насколько это корректно и к скольким глюкам может привести.

Интересный вопрос.
В данный момент при таком подходе, когда GoldenDict отображает всю словарную статью в соответствии с тем языком, который она для неё определила, решение проблемы №4 выглядит всё таки неполноценным. Есть случаи, когда в словарной статье могут быть комментарии или примеры. Эти комментарии могут приводиться не на том языке, который GoldenDict определяет для всей словарной статьи. Приведу пример на скрин-шоте:

goldendict6.jpeg
GoldenDict, версия 1.5.0-RC-70-gc1cfbae (открыт с помощью Wine). Для словаря DICT.
goldendict6.jpeg (194.15 KiB) Viewed 18721 times

На скрин-шоте видно два варианта отображения одной и той же словарной статьи. Сверху - это тот вариант, когда в кодовом имени словаря (имена файлов .index, .dict) присутствует указатель исходного и целевого языков: rus-heb. Внизу - это этот же словарь, но в кодовом имени словаря отсутствует указание на исходный/целевой язык, понятное для GoldenDict. В верхней словарной статье наблюдается некорректное отображение русского текста. Теперь скрин-шот одного из DICT-клиентов:

Xfce4-dict1.jpeg
Xfce4 Dictionary, версия 0.6.0.
Xfce4-dict1.jpeg (33.64 KiB) Viewed 18721 times

Я думаю, что не стоит приводить скрин-шоты других DICT-клиентов или аналогичных словарей, потому что сам принцип работы этих словарей можно увидеть из предыдущих скрин-шотов. У GNOME Dictionary отображение данной словарной статьи идентичное, а для StarDict мне лень создавать новый словарь в этом формате. Я делаю вывод, что в настоящий момент поведение GoldenDict уникальное, отличное от общепринятого. Если GoldenDict откажется от того алгоритма, который он использует сейчас и это приведёт к каким-либо глюкам, то я думаю, что эти глюки будут общими для всех словарей и тогда это задача для автора словаря, чтобы привести свой словарь в надлежащий вид.

Шаги для воспроизведения проблемы
Словарь: "Русско-ивритский словарь: Рыба и морепродукты" (DICT)
Действия: Переименуйте файл rushebfi.dict.dz в rus-heb_fi.dict.dz, а rushebfi.index в rus-heb_fi.index. В поле "Искать" напечатайте "лосось стальноголовый" и нажмите на Enter.