New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Не выводит карточку, если в заголовке пустая строка

Сообщаем о найденных ошибках сюда

Не выводит карточку, если в заголовке пустая строка

Postby Novikov » Mon Jan 23, 2012 8:56 pm

В DSL-словарях у одной карточки может быть несколько заголовков, разделяемых переводом строки. Это бывает нужно в случаях синонимов или в таких словарях, как Longman Language Activator, заточенных для изучения множества значений множества слов со множеством синонимов.

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

Я немного потестировал разные случаи и выявил закономерность. Проиллюстрирую примером кода словаря:

Code: Select all
quock / quack
shmack
KNOW
KNOW/NOT KNOW

noknow
   

      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]
      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]
      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]

quock / quack
shmack
KNOW
KNOW/NOT KNOW
noknow


      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]
      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]
      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]

quock / quack
shmack
KNOW
KNOW/NOT KNOW
   
noknow
      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]
      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]
      [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]


Вот что выводит по запросу KNOW:

KNOW
KNOW
....See ↑WELL-DRESSED 2, ↑WASH 1
....See ↑WELL-DRESSED 2, ↑WASH 1
....See ↑WELL-DRESSED 2, ↑WASH 1
KNOW


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


Goldendict 1.0.1
Windows 7 Pro 64-bit
Тестировал только на DSL-словаре.
Баг воспроизводится как при подключении лишь тестового "словаря", так и при подключении кучи других.
Дополнительно подключены словари морфологии, без них не проверял.
Никаких плагинов и т.п. к Goldendict не ставил.
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Не выводит карточку, если в заголовке пустая строка

Postby ikm » Mon Jan 23, 2012 10:02 pm

А почему вы решили, что это баг?
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Не выводит карточку, если в заголовке пустая строка

Postby Novikov » Mon Jan 23, 2012 11:37 pm

Потому что такое поведение, на мой взгляд, нелогично, а также делает невозможной полноценную работу со многими доступными в сети словарями.

Поясню насчет "нелогичности". Насколько мне известно, в DSL-словарях карточка начинается с заголовка, в котором каждое слово идет с первой позиции. Карточка же определяется тем, что строки начинаются с пробела или табуляции.

Пустая же строка, таким образом, не является разделителем заголовка и тела карточки (но может использоваться для удобства). И вот, исходя из этого, непонятно, почему пустые строки в заголовке карточки "отрывают" от нее часть слов. По логике, если пустая строка не является разделителем, такого "отрывания" происходить не должно.

Кстати, по-моему, еще не работают DSL-подкарточки (которые начинаются с символа @).
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Не выводит карточку, если в заголовке пустая строка

Postby ikm » Tue Jan 24, 2012 12:11 am

Хорошо это или плохо, но для нас эталоном "логичности" является ABBYY Lingvo. Вы пробовали, как данный словарь работает в нём? Если в линго он работает по-одному, а у нас - по-другому, то это баг. Иначе - фича :)
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Не выводит карточку, если в заголовке пустая строка

Postby Novikov » Tue Jan 24, 2012 12:19 am

Не пробовал, попробую. Но, все-таки, если рассуждать логически? ;)
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Не выводит карточку, если в заголовке пустая строка

Postby ikm » Tue Jan 24, 2012 12:33 am

dsl - это формат одной реализации одного производителя. Наша задача - выводить dsl один в один как в лингве, с "эмуляцией" всех артефактов, если таковые есть.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Не выводит карточку, если в заголовке пустая строка

Postby Novikov » Tue Jan 24, 2012 1:05 am

Если "со всеми артефактами", то вот только что установленный мной триальный Lingvo X5 вообще не читает DSL, только LSD :) Так что об артефактах отображения собственно DSL в Lingvo говорить и смысла нет.

Если же попробовать компилировать, то из файла ошибок мы узнаем, например, что теги [m1]-[m9] компилятор не пропускает, хотя Goldendict их обрабатывает:

[m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m1]{{Ошибка: Использование расширения имени для тега "[/m]" запрещено. (Файл: "D:\Users\Алексей\Downloads\English\Словари\StarDict\test\test.dsl", Строка: 15)}}


Получается, если следовать принципу "со всеми артефактами", то надо выбрасывать эту фичу. Но я предлагаю, поскольку Lingvo в чистом виде DSL все равно не показывает, принцип "со всеми артефактами" применять только к LSD.

Кстати, давно хотел спросить, какой формат будет оптимален с точки зрения быстродействия словаря и занимаемых ресурсов? Особенно интересует этот вопрос применительно к версии под Android, которую я с удовольствием купил.
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Не выводит карточку, если в заголовке пустая строка

Postby Novikov » Tue Jan 24, 2012 1:13 am

Скомилировал и потестировал в Lingvo X5 следующий код:

Code: Select all
#NAME   "test"
#INDEX_LANGUAGE   "English"
#CONTENTS_LANGUAGE   "English"

spruce (yourself) up

spruce (yourself) up/get spruced up
   [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m]
   [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m]

quock / quack
shmack
KNOW
KNOW/NOT KNOW
   blablabla

krible

krable
   booms


Тестировал следующее:

1. Как будет обрабатываться ситуация с пустыми строками между несколькими словами в заголовке одной карточки.
2. Что будет говорить компилятор, если тег [m1] замкнуть не как [/m1] (на что он ругается), а как [/m]

Оказывается, Lingvo обрабатывает пустые строки между словами в заголовке одной карточки по тому логическому принципу, который я и озвучивал, а именно -- не отрывает слова до пустой строки от остальной карточки. Вот список слов:
Image

Выяснилось, что компилятор перестает ругаться, если замкнуть теги как [/m], Goldendict теги с таким замыканием обрабатывает корректно.
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Не выводит карточку, если в заголовке пустая строка

Postby ikm » Tue Jan 24, 2012 1:29 am

Два вопроса по поводу данного эксперимента с Lingvo:

1) как выглядит карточка для krible?
2) что будет со статьей, если в её середину вставить пустую строку? Станет ли результирующая карточка выглядеть в программе по-другому?
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Не выводит карточку, если в заголовке пустая строка

Postby Novikov » Tue Jan 24, 2012 1:33 am

Карточка для krible, как видите, не обманул, работает в соответствии с описанным мной логичным принципом:

Image

Если в тело карточки вставить пустую строку, то компилятор ругается на "пустой заголовок карточки". На мой взгляд, это нелогично.

Code: Select all
spruce (yourself) up

spruce (yourself) up/get spruced up
   [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m]{{Предупреждение: Подвешенная ссылка "WELL-DRESSED". (Файл: "D:\Users\Алексей\Downloads\English\Словари\StarDict\test\test.dsl", Строка: 8)}} {{Предупреждение: Подвешенная ссылка "WASH". (Файл: "D:\Users\Алексей\Downloads\English\Словари\StarDict\test\test.dsl", Строка: 8)}}


   [m1]See ↑<<WELL-DRESSED>> 2, ↑<<WASH>> 1[/m]{{Ошибка: Пустой заголовок карточки. (Файл: "D:\Users\Алексей\Downloads\English\Словари\StarDict\test\test.dsl", Строка: 10)}}


{{Ошибок: 1. Предупреждений: 2.}}


{{Количество заголовков: 10. Количество карточек: 3.}}
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Next

Return to Ошибки

Who is online

Users browsing this forum: No registered users and 1 guest

cron