如何在Prolog中编写键值对?

时间:2016-02-15 05:16:55

标签: prolog iso-prolog tuprolog

想象一下,我有以下谓词,其中指出ID loc1指定了一个位置。

isLocation('loc1', 'Location 1').

我想为第二个文本(Location 1)提供翻译,i。即键值对,例如en='Location 1', de='Ort 1', ru='Местоположение 1'

在Prolog中编码此类数据的正确方法是什么,尤其是TuProlog(理想情况下是标准化的Prolog)?

下面的符号是否可以在SWI Prolog之外使用?

isLocation('loc1', ['en'-'Location 1', 'de'-'Ort 1', 'ru'-'Местоположение 1']]).

1 个答案:

答案 0 :(得分:3)

最简单的方法,在任何Prolog中工作,使用member / 2来检索键值对。例如

l10n(MessageId, Country, Translated) :-
  isLocation(MessageId, Localized),
  member(Country-Translated, Localized).

这种基本结构当然需要多项改进,具体取决于要求。