1

想象一下,我有以下谓词,它指出 IDloc1指定了一个位置。

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

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

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

下面的符号可以在 SWI Prolog 之外工作吗?

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

1 回答 1

3

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

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

这种基本结构当然需要根据要求进行一些改进。

于 2016-02-15T07:49:34.043 回答