Перевод 2024-12-09

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
смотритель
Site Admin
Сообщения: 53
Зарегистрирован: 25.04.18 15:17

Перевод 2024-12-09

Сообщение смотритель » 09.12.24 16:33

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

Задача состоит в том, чтобы научиться эффективно сравнивать более новые версии A2 с текущей ЯОС. Первая часть работы состоит в том, чтобы перевести ЯОС на английский. После того, как это сделано, обнаружилось, что много различий вызвано следующим:

* растенение идентификаторов в ЯОС. Это можно решить, добавив соответствующие переводы (убирать растенение при переводе на английский). К сожалению, похоже, что это придётся делать вручную, но хотя бы перевод можно делать на уровне одного модуля, а не всех конфигураций, перевод одного модуля выполняется примерно в тысячу раз быстрее выполняется, чем перевод всей системы, значит, можно довольно быстро привести разницу к минимальной
* кроме того, некоторые имена переведены на русский простой заменой, без словаря. Это также решается правкой словаря переводов.
* т.к. я выкинул кооперативный backend, возникли ещё различия
* также различия произошли из-за добавленя двуязычности

Проблема ещё и в том, что словаря для LisSemanticChecker вовсе не существует. Было бы славно иметь его синтезировать по diff-у из двух переведённых версий. Но неясно, стоит ли ещё и на это отвлекаться.

смотритель
Site Admin
Сообщения: 53
Зарегистрирован: 25.04.18 15:17

Re: Перевод 2024-12-09

Сообщение смотритель » 09.12.24 20:38

Поменял генератор словаря, чтобы он генерировал словарь с отменой растенений. Теперь:
* дублируем модуль FoxSemanticChecker.Mod в русской версии как FoxSemanticCheckerРу.Mod (важно, что с русским именем)
* в переведённой на английский ЯОС генерируем словарь для FoxSemanticChecker
* копируем его в русскую ЯОС под именем FoxSemanticCheckerРу.перев.XML и правим русское имя модуля в нём
* делаем костыль в процедуре ДайЯчейкуСимвола:

Код: Выделить всё

	ИмяРусскоеЛи := считатьВсеВходныеИменаРусскими или ПЭК.НеАнглийскийИдентификатор(имя);

Здесь считатьВсеВходныеИменаРусскими - это константа в модуле, к-рую мы временно определим в истину. В противном случае имена могут не подцепиться правильно, ведь движок рассчитан на причёсывание имён в сторону русского или английского языка, а у нас при отмене растенения оба имени англоязычные. ХОтя надо было просто заменить l0Name на какое-нибудь л0Name и не понадобились бы костыли. Но уже поздно.

* в русской версии - ЗагрузиПереводыЭлементовКода.ИзВсехФайлов
* переводим в русской ЯОС с его помощью модуль FoxSemanticChecker2.Mod на английский

Код: Выделить всё

LisCompiler.Compile --переведиНаАнглийский FoxSemanticCheckerРу.Mod ~
Сохраняем результат как FoxSemanticCheckerEn.Mod
*

Код: Выделить всё

meld /y/a2/source/FoxSemanticChecker.Mod /y/jaos/source/FoxSemanticCheckerEn.Mod

смотритель
Site Admin
Сообщения: 53
Зарегистрирован: 25.04.18 15:17

Re: Перевод 2024-12-09

Сообщение смотритель » 09.12.24 23:05

В общем, ничего не получилось. Слишком далеко отошли ветки исходника друг от друга. Т.е. сам-то перевод получился и ветка main обновлена. Но задача перенести исправления из A2 в ЯОС не решилась. Получился я ССЗБ.

Ответить