2025.02.13бкрс Это скорее всего от браузера/системы зависит. Максимум, какое-то переключение текста или картинки.
Не понятен смысл pdf/печати, даже если кто-то распечатывает, он это как-то сам делает, а не из браузера. Лучше дать возможность удобно скопировать, например, в текстовый файл с хорошим форматированием (обычным не табличным).
В PDF иногда очень удобно сохранить выборку сделанную результатами поиска или заметками, чтобы лишний раз не обращаться к html.
Хорошая мысль, можно сохранять форматированный текст (нужно подумать над форматированием), в javascript сейчас есть функция чтобы сразу файл сохранить минуя неудобную копипасту
2025.02.12бкрс А есть ли смысл в этой библиотеке? Там же просто прогнать текст через пару регулярок.
Вот мой скрипт на питоне:
Код:
text = text.replace(' /', ' [m1]')
text = text.replace('/', '[/m][m1]')
text = text.replace('[m1]\n', '\n')
text = re.sub(r'^([^ ]+?) ([^ ]+?) \[(.+?)\] ', r'\2\t\3\t', text, flags=re.MULTILINE)
text = re.sub(r'([^一-鶴])([一-鶴]+)\|([一-鶴]+)', r'\1\3', text, flags=re.MULTILINE)
py = {'a1':'ā','a2':'á','a3':'ǎ','a4':'à','a5':'a','ai':'ai','ai1':'āi','ai2':'ái','ai3':'ǎi','ai4':'ài','an1':'ān','an2':'án','an3':'ǎn','an4':'àn','ang1':'āng','ang2':'áng','ang3':'ǎng','ang4':'àng','ao1':'āo','ao2':'áo','ao3':'ǎo','ao4':'ào','ei1':'ēi','ei2':'éi','ei3':'ěi','ei4':'èi','e1':'ē','e2':'é','e3':'ě','e4':'è','en1':'ēn','en2':'én','en3':'ěn','en4':'èn','eng1':'ēng','eng2':'éng','eng3':'ěng','eng4':'èng','o1':'ō','o2':'ó','o3':'ǒ','o4':'ò','ou':'ou','ou1':'ōu','ou2':'óu','ou3':'ǒu','ou4':'òu','i1':'ī','i2':'í','i3':'ǐ','i4':'ì','i5':'i','in1':'īn','in2':'ín','in3':'ǐn','in4':'ìn','ing1':'īng','ing2':'íng','ing3':'ǐng','ing4':'ìng','ian1':'iān','ian2':'ián','ian3':'iǎn','ian4':'iàn','iao1':'iāo','iao2':'iáo','iao3':'iǎo','iao4':'iào','ie1':'iē','ie2':'ié','ie3':'iě','ie4':'iè','ei4':'èi','u1':'ū','u2':'ú','u3':'ǔ','u4':'ù','er1':'ēr','er2':'ér','er3':'ěr','er4':'èr','u:1':'ǖ','u:2':'ǘ','u:3':'ǚ','u:4':'ǜ','ong1':'ōng','ong2':'óng','ong3':'ǒng','ong4':'òng','un1':'ūn','un2':'ún','un3':'ǔn','un4':'ùn','n5':'n','g5':'g','o5':'o','u5':'u','r5':'r','e5':'e'}
for i, j in py.items():
text = text.replace(i, j)
(一-鶴 это прообраз \p{Han})
Тут традиционный удаляется и всё в строку.
Правильно я понял - Py это обычный массив, ключ для поиска значение для замены найденного, а ищем пиньинь в нутрях только в скобках поcле han: han[ ] (или везде) ?
2025.02.14dsx Правильно я понял - Py это обычный массив, ключ для поиска значение для замены найденного, а ищем пиньинь в нутрях только в скобках поcле han: han[ ] (или везде) ?
Да, примитивная глобальная замена по всему тексту.
py - pinyin
Только сейчас заметил, что в цедикте регистр у пиньиня, нужно добавить с А (и может c Е)
2025.02.13dsx Ещё такая проблема, может кто-то знает как её решить - в html страницы для печати/сохранения в PDF режутся прямо по строкам, разделя одну строку по разным страницам :
Дело было в css display:inline-block. Изменил и pdf теперь нормальный.
В следующей версии будет исправлено много. Так-же там: можно сохранить форматированный текст (html), улучшенный и ускоренный в 9 раз парсер cc-cedict, добавочное содержимое в StarDict словарях (по аналогии с существующим для MDict) и надеюсь доделать внутреннее сжатие для MDict словарей (делаю неспешно )
бкрс, парсер питоновский перенести не смог, исправил convertToPinyinDiacritic и только эту функцию из той библиотеки оставил. Парсит хорошо, пропускает только кантонский ютпхин.
Остальное всё, как выше написал ☝️, есть. MDict оснастил внутренним сжатием этого формата; на больших словарях, как 大БКРС+БРуКС+Примеры, экономия на диске больше 200Мб(!). Единственный минус - это плохая сжимаемость (в 7z, zip) уже сжатого внутри словаря. Внутреннее сжатие можно отключить в index.php (по умолчанию включено).
[attachment=17591]
- добавлены отступы в StarDict и MDict,
- добавлено в PHP коде сжатие Dictzip для DSL и StarDict,
- в StarDict изменена разметка с XDXF на HTML,
- улучшено деление DSL,
- в HTML словарях можно сохранить результаты в HTML таблицу с ячейками с атрибутом contentEditable (проще отредактировать и дальше сохранить в любой формат),
- исправления в cc-cedict и dsl адаптерах (экранирование квадратных скобок и отображение ударных гласных).
Если нашли ошибки просьба писать в эту тему. бкрс, файл можно на первый пост, вместо старого.
//DSL
$dsl_numparts = 3; // Деление DSL на части, количество частей, число >= 1.
$dsl_parbalance = 1; // 1 - уравновесить части по размеру; 2 - уровнять части по количеству слов.
$dsl_threshold = 200*1024*1024; // Порог для осуществления деления, - размер исходн. файла(ов) в байтах. Деление будет происходить только если размер исходника больше этого значения.
$dsl_compress = 6; // Сжатие DictZIP (.dsl.dz). Число от 1 до 9, определяющее уровень сжатия. 0 - без сжатия. Для компиляции в Lingvo установить 0.
$dsl_include = true; // Использование директивы #INCLUDE при делении на части. true - использовать, false - не использовать. (Используется для компиляции в Lingvo. Другие программы могут игнорировать директиву.)
$dsl_cn_langindex = 'Chinese'; // English
$dsl_ru_langindex = 'Russian';
$dsl_cn_langcontent = 'Chinese';
$dsl_ru_langcontent = 'Russian';
//MDict
$md_compress = 6; // Внутреннее сжатие. Число от 1 до 9, определяющее уровень сжатия. 0 - без сжатия.
$md_indent = 20; // Отступы в словарных статьях, пиксели. 0 - без отступов.
$md_addcontent = ''; // Добавочное содержимое, помещается в конце каждой страницы. Допустимо использование HTML, CSS и JavaScript.
//StarDict
$sd_compress = 6; // Сжатие GZIP (.idx.gz) и DictZIP (.dict.dz). Число от 1 до 9, определяющее уровень сжатия. 0 - без сжатия.
$sd_indent = 20; // Отступы в словарных статьях, пиксели. 0 - без отступов.
$sd_addcontent = ''; // Добавочное содержимое, помещается в конце каждой страницы. Допустимо использование HTML, CSS и JavaScript*. (*Некоторые программы-просмотрщики JavaScript не выполняют.)
//ZIP
$option_zip = false; // Создание сжатого ZIP-каталога. true - включить, false - обычный каталог.
$zip_password = ''; // Пароль для ZIP-каталога (PHP >= 7.2). Пустая строка '' - без пароля.
$zip_srccatdel = true; // Удаление исходного каталога после получения ZIP-каталога. true - удалить, false - не удалять.
//Тест
$tstnums = 1000; // Количество слов в базах при тестовой конвертации.
mcx_v10 — PHP конвертер словарных баз - DSL, 大БКРС и CC-CEDICT в StarDict, MDict и HTML. dictz_v2 — браузерный dictzip компрессор для словарей (DSL, StarDict и др.)
Цитата:$dsl_parbalance = 1; // 1 - уравновесить части по размеру; 2 - уровнять части по количеству слов.
Я это в ручную подгонял
В марте новую версию буду делать, затестю на сколько лучше моего старого способа, там у меня по сути пол дня уходило, а то и день с учётом моральных подготовок и чаяпитей, только на один dsl.
У старого акка старая аура) Решил - пусть будет новый
mcx_v10 — PHP конвертер словарных баз - DSL, 大БКРС и CC-CEDICT в StarDict, MDict и HTML. dictz_v2 — браузерный dictzip компрессор для словарей (DSL, StarDict и др.)
2025.02.10dsx ...кстати конвертацию из DSL ещё нужно обкатывать на разных словарях и выявлять то что можно исправить/улучшить, у меня из испытуемых DSL только En-Ru-Apresyan.dsl и Ru-En-Smirnitsky.dsl.
Kак выяснилось не всё учтено при конвертации из DSL, встретился экземпляр на котором адаптер ошибается
mcx_v10 — PHP конвертер словарных баз - DSL, 大БКРС и CC-CEDICT в StarDict, MDict и HTML. dictz_v2 — браузерный dictzip компрессор для словарей (DSL, StarDict и др.)
бкрс, рефы в первом скриншоте стоит-ли расположить вертикально в колонку?
mcx_v10 — PHP конвертер словарных баз - DSL, 大БКРС и CC-CEDICT в StarDict, MDict и HTML. dictz_v2 — браузерный dictzip компрессор для словарей (DSL, StarDict и др.)