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

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

Голландские пользователи могут написать weekdagen tussen 10 en 11 behalve op de eerste maandag van de maand. В этом случае положение слов кажется совпадающим, но могут быть выражения, в которых положение глаголов / существительных и т. Д. Может быть различным в разных языках.

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

2 ответа

Решение

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

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

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

который будет:

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

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

Они находятся на моей голове и даже не близко, но должно быть достаточно, чтобы начать.

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

Другие вопросы по тегам