如何在 Prolog 中编写键值对?

How can I write key-value pairs in Prolog?

假设我有以下谓词,它声明 ID loc1 指定一个位置。

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

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

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

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

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

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

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

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