Можно ли локализовать доменно-ориентированный язык (DSL) (т.перевел)?
-
20-09-2019 - |
Вопрос
Я никогда не писал DSL, но рассматриваю его как возможность для нового проекта (гипотетического).Конечные пользователи должны были бы иметь возможность выражать концепции естественного языка, такие как будние дни с 10 до 11, кроме первого понедельника месяца.
Голландские пользователи могут написать Weekdagen Tussen 10 и 11 от первого дня недели.В этом случае положение слов вроде бы совпадает, но могут быть выражения, в которых положение глаголов/существительных и т. д.может быть разным в разных языках.
Я понимаю очевидный ответ(это зависит).Я разработчик .NET и рассматриваю возможность использования Boo, но открыт для предложений.Мне нужно понять, требует ли каждый перевод переписывания части реализации (какой части) или есть способ выполнить реальные переводы, возможно, в каком-то препроцессоре.
Решение
Вы не найдете переводчика, способного сделать это более чем для нескольких языков (скажем, между одним или двумя языками и английским), особенно учитывая английский, который сам по себе может иметь как минимум 3 способа написания.
Если вы хотите написать DSL, вам нужно сначала придумать правила производства (какие может вы пишете), а затем переработайте это так, чтобы выразить это на английском/голландском/марсианском/и т. д.
Например:Расписание := Включение кадра [Исключение]
что будет:
- Рамка:Месяц, год, неделя, будние дни, выходные дни, дни месяца, праздники и т. д.
- Включение:Между, Не внутри, Вокруг, Содержащий и т. д.
- Исключение:Кроме [Расписания], Но Не [Расписания], Если только [Расписание]
Затем вы можете беспокоиться о лексере/парсере, который исправляет конкретную грамматику и помещает ее в эту форму продукции.
Это не пришло мне в голову и даже не близко, но должно быть достаточно, чтобы начать.
Другие советы
DSL, созданный с помощью Языковые инструменты, специфичные для предметной области может быть локализован.Они помещают все строки в файлы .resx.