Может ли язык домена (DSL) быть локализован (т.е. переведен)? - PullRequest
2 голосов
/ 16 марта 2010

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

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

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

Ответы [ 2 ]

2 голосов
/ 16 марта 2010

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

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

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

что будет:

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

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

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

1 голос
/ 16 марта 2010

DSL, созданный с помощью Domain-Specific Language Tools , может быть локализован. Они помещают все строки в файлы .resx.

...