1:- module(
2 nlp_lang,
3 [
4 current_lrange/1, 5 current_ltag/1, 6 current_ltag/2, 7 month_name/4, 8 nlp_string/2, 9 nlp_string/3, 10 ordinal_suffix/3 11 ]
12).
18:- use_module(library(http/html_write)). 19:- use_module(library(lists)). 20:- use_module(library(settings)). 21
22:- dynamic
23 nlp:nlp_string0/3. 24
25:- setting(
26 nlp:lrange,
27 list(atom),
28 [en],
29 "The default langage range."
30 ). 31
32:- multifile
33 nlp:nlp_string0/3.
41current_lrange(LRange) :-
42 nlp:setting(lrange, LRange).
49current_ltag(LTag) :-
50 current_lrange(LRange),
51 lrange_to_ltag(LRange, LTag).
52
53
54current_ltag(LTags, LTag) :-
55 current_ltag(LTag),
56 memberchk(LTag, LTags).
62lrange_to_ltag(LRange, LTag2) :-
63 member(LTag1, LRange),
64 atomic_list_concat(Subtags, -, LTag1),
65 longest_to_shortest_prefix0(PrefixSubtags, Subtags),
66 PrefixSubtags \== [],
67 atomic_list_concat(PrefixSubtags, -, LTag2).
68
69longest_to_shortest_prefix0(L, L).
70longest_to_shortest_prefix0(Prefix, L1) :-
71 append(L2, [_], L1),
72 longest_to_shortest_prefix0(Prefix, L2).
78month_name(1, en, "Jan", "January").
79month_name(2, en, "Feb", "February").
80month_name(3, en, "Mar", "March").
81month_name(4, en, "Apr", "April").
82month_name(5, en, "May", "May").
83month_name(6, en, "Jun", "June").
84month_name(7, en, "Jul", "July").
85month_name(8, en, "Aug", "Augustus").
86month_name(9, en, "Sep", "September").
87month_name(10, en, "Oct", "October").
88month_name(11, en, "Nov", "November").
89month_name(12, en, "Dec", "December").
90month_name(1, nl, "jan", "januari").
91month_name(2, nl, "feb", "februari").
92month_name(3, nl, "mrt", "maart").
93month_name(4, nl, "apr", "april").
94month_name(5, nl, "mei", "mei").
95month_name(6, nl, "jun", "juni").
96month_name(7, nl, "jul", "juli").
97month_name(8, nl, "aug", "augustus").
98month_name(9, nl, "sep", "september").
99month_name(10, nl, "okt", "oktober").
100month_name(11, nl, "nov", "november").
101month_name(12, nl, "dec", "december").
108nlp_string(Name, String) :-
109 nlp_string(Name, [], String).
110
111
112nlp_string(Name, Args, String) :-
113 current_ltag(LTag),
114 nlp:nlp_string0(LTag, Name, Format),
115 format(string(String), Format, Args).
121ordinal_suffix(1, en, "st").
122ordinal_suffix(2, en, "nd").
123ordinal_suffix(3, en, "rd").
124ordinal_suffix(_, en, "th")
Natural language support
*/