Можно ли локализовать доменно-ориентированный язык (DSL) (т.перевел)?

StackOverflow https://stackoverflow.com/questions/2457513

  •  20-09-2019
  •  | 
  •  

Вопрос

Я никогда не писал DSL, но рассматриваю его как возможность для нового проекта (гипотетического).Конечные пользователи должны были бы иметь возможность выражать концепции естественного языка, такие как будние дни с 10 до 11, кроме первого понедельника месяца.

Голландские пользователи могут написать Weekdagen Tussen 10 и 11 от первого дня недели.В этом случае положение слов вроде бы совпадает, но могут быть выражения, в которых положение глаголов/существительных и т. д.может быть разным в разных языках.

Я понимаю очевидный ответ(это зависит).Я разработчик .NET и рассматриваю возможность использования Boo, но открыт для предложений.Мне нужно понять, требует ли каждый перевод переписывания части реализации (какой части) или есть способ выполнить реальные переводы, возможно, в каком-то препроцессоре.

Это было полезно?

Решение

Вы не найдете переводчика, способного сделать это более чем для нескольких языков (скажем, между одним или двумя языками и английским), особенно учитывая английский, который сам по себе может иметь как минимум 3 способа написания.

Если вы хотите написать DSL, вам нужно сначала придумать правила производства (какие может вы пишете), а затем переработайте это так, чтобы выразить это на английском/голландском/марсианском/и т. д.

Например:Расписание := Включение кадра [Исключение]

что будет:

  • Рамка:Месяц, год, неделя, будние дни, выходные дни, дни месяца, праздники и т. д.
  • Включение:Между, Не внутри, Вокруг, Содержащий и т. д.
  • Исключение:Кроме [Расписания], Но Не [Расписания], Если только [Расписание]

Затем вы можете беспокоиться о лексере/парсере, который исправляет конкретную грамматику и помещает ее в эту форму продукции.

Это не пришло мне в голову и даже не близко, но должно быть достаточно, чтобы начать.

Другие советы

DSL, созданный с помощью Языковые инструменты, специфичные для предметной области может быть локализован.Они помещают все строки в файлы .resx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top