БудДен написал(а):Вы предлагаете прямо взять и проделать контекстную замену?
MihalNik предлагает провести подробный глубокий разбор задачи и упорядочить подходы к решениям.
Так просто все замены не выйдут. Даже если это потом скомпилируется и будет работать - это не совсем то, что м.б. нужно.
1) м.б. что-то сломается: м.б. литералы, есть границы внешнего взаимодействия.
2) м.б. внесена трудноуловимая ошибка, если захочется два слова перевести одинаково - это м.б. допустимо, а может и нет, может захочется разный перевод одного названия для разных, изначально одноименных сущностей. Нужно удобное (простое и быстрое) управление этим.
3) простой перевод не всегда допустим - местами обрывки слов и отдельные буквы. Нужен разбор идентификаторов и сокращений. Хотя бы вычленение слов/поиск по началам/выборкам согласных.
4) нужны сами средства перевода - подключение словарей, возможно гугла и т.п. И для перевода и для подбора синонимов. Чтобы работа шла быстро.
5) нужно средство разделения труда - Git работает с текстами, а требуется разделение/управление/слияние переводов, т.е. одного слоя текстов соотнесенного с другим переводом. Он не может показать одной строчкой, что мы хотим заменить "release" на "выпуск".
6) лучший уровень работы - поверх AST, а не текста - проще квалифицировать безопасные замены, чего редакторы не умеют.
Основная же боль в том. что работа не обозрима в хорошо измеримом направлении. Чтобы каждая облегчала последующие. А сейчас мы не пожинаем плоды замен. Добавление комментариев не удаляет латиницы. Замазка ключевых слов в VS неярким цветом - это замазка. А замена их - это уровень нескольких десяток строчек кода в одной процедуре лексера (и еще где-то слово MODULE проверялось). Но 1/4 массы латиницы. Грубо говоря, есть 160 страниц на латинице, а должно остаться 40 после 430 замен.
Конечно, это не говорит о всех трудностях: i, например, можно заменить на №, а другие ничего не говорящие однобуквенные идентификаторы вроде x,y,z,n,... - нет.
Хотя и многие из тех можно автоматом заменить на чуть более говорящие имена, хотя бы и о том же порядке входных переменных: вх, вх1, вх2, вх3, ... вых, вых1, вых2, ...вхВых, вх1_Вых, вх2_Вых, .... и т.п. Можно вкл. в такое имя название типа.
Постановка задачи поверхностного перевода
Отредактировано MihalNik (2018-12-28 21:56:42)