АРМ переводчика

Операционная система, написанная на языке Оберон и проект её перевода на русский язык. Только технические вопросы.
БудДен
Сообщения: 1315
Зарегистрирован: 07.10.18 14:01

Re: АРМ переводчика

Сообщение БудДен » 11.01.21 16:30

Перевод слова не может быть однозначным. То, что было однозначным, я уже перевёл, а именно, ключевые слова, встроенные типы и встроенные функции (ну, так скажем, большинство из них).

Павиа
Сообщения: 108
Зарегистрирован: 23.05.19 21:28

Re: АРМ переводчика

Сообщение Павиа » 12.01.21 06:14

БудДен писал(а):
11.01.21 16:30
Перевод слова не может быть однозначным.
Если это разные идентификаторы с одной лексемой то да. Для этого и нужен парсер который такое выявит. Он же у вас уже есть и Вы с его устройством разобрались. Вам нужно просто сделать выгрузку и загрузку.

У вас максимальная единица перевода это слово, а не фраза. Поэтому для таких искусственного языка перевод идентификаторов будет однозначным.

БудДен
Сообщения: 1315
Зарегистрирован: 07.10.18 14:01

Re: АРМ переводчика

Сообщение БудДен » 12.01.21 17:30

Конечно, разные идентификаторы с одной лексемой. Да, парсер есть. Но работа-то не исчезает. Вот у меня есть, допустим, 100 переменных "file". Мне нужно в каждую зайти и понять, как её перевести, как ИмяФайла, ОткрытыйФайл или УпоминаниеФайла, для примера. Вот именно эта работа - заходить и понимать смысл - не лишняя, избавиться от неё нельзя, автоматизировать её полностью нельзя и у неё большой объём, учитывая, что в коде миллион строк.

Я могу её всегда назвать "файл" и тогда будет не хуже, чем было - т.е разбираться придётся тому, кто будет читать код. Я не могу вспомнить ситуацию, когда так сделать нельзя, но такие ситуации есть. Вспомню - напишу. Разве только Term сразу приходит на ум. Переведу я Term как "баня" и что? Лучше будет? Такой перевод вообще не нужен, лучше тогда вообще не переводить. Ну и в целом известно, что английские слова не превращаются в русские однозначно - одному английскому соответствует несколько русских вариантов. Без понимания контекста выбрать его невозможно. И если одно и то же имя переменной встречается много раз (это разные, но одноимённые переменные), то окажется, что в разных случаях нужно переводить по-разному.

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

Павиа
Сообщения: 108
Зарегистрирован: 23.05.19 21:28

Re: АРМ переводчика

Сообщение Павиа » 12.01.21 19:32

Конечно, разные идентификаторы с одной лексемой. Да, парсер есть. Но работа-то не исчезает. Вот у меня есть, допустим, 100 переменных "file". Мне нужно в каждую зайти и понять, как её перевести, как ИмяФайла, ОткрытыйФайл или УпоминаниеФайла, для примера. Вот именно эта работа - заходить и понимать смысл - не лишняя, избавиться от неё нельзя, автоматизировать её полностью нельзя и у неё большой объём, учитывая, что в коде миллион строк.

Я могу её всегда назвать "файл" и тогда будет не хуже, чем было - т.е разбираться придётся тому, кто будет читать код. Я не могу вспомнить ситуацию, когда так сделать нельзя, но такие ситуации есть.
Просто примите что таких ситуаций нет. File он и есть файл. ИмяФайла это FileName.
УпомнинаниеФайла у вас не будет, так не пишут даже на русском.

Да все 100 переменных надо открыть. Но для перевода достаточно знать контекст. Вы же в парсере можете найти пример присвоения и пример где он используется как параметр функции. Этого контекста из 2-х строк вам хватит.

БудДен
Сообщения: 1315
Зарегистрирован: 07.10.18 14:01

Re: АРМ переводчика

Сообщение БудДен » 12.01.21 19:42

Ну вот пример: NoFile - означает "файл не найден". NoPackages - означает "не задано ни одного пакета". Можно было не париться и перевести как НетФайла и НетПакетов, но это было бы не очень понятно.

БудДен
Сообщения: 1315
Зарегистрирован: 07.10.18 14:01

Re: АРМ переводчика

Сообщение БудДен » 12.01.21 19:44

Ну я могу перевести File всегда как File. Потому что у меня перевод, а не составление объяснения. Тогда работа по переводу ускорится, хотя
качество перевода в целом скорее упадёт. Главное, чтобы перевод не вводил в недоумение, но это проще, чем перевод, который уточняет оригинал.
Видимо, за этот счёт можно ускориться. А УпоминаниеФайла у меня есть, см. исходник:

https://gitlab.com/budden/ja-o-s/-/blob ... С.Mod#L397

Контекста в 2 строки недостаточно. Там часто бывает код, который сначала взяли, потом правили в итоге остановились, недоделав. Например, было нелегко понять, что prefix - Это условная переменная. Хотя он же иногда и приставка, и я до сих пор не на 100% уверен, что эти два применения не взаимосвязаны. Т.е. это такой косяк в исходнике, если его перевести в лоб, то станет ещё хуже. Или там неверно названо INCLUDE, которое должно называться DEFINE, а IMPORT должен называться INCLUDE.

БудДен
Сообщения: 1315
Зарегистрирован: 07.10.18 14:01

Re: АРМ переводчика

Сообщение БудДен » 12.01.21 20:20

target - что это? Оказалась "платформа", хотя это вроде понятно, но поскольку речь идёт о системе сборки, то это могла бы быть и цель для сборки.

Ответить