Skip to content

Commit 4e2c051

Browse files
authored
Merge pull request #252 from yuryleb/fr-grammar-proto
Initial French grammar rules to insert articles to way names
2 parents 41f10fa + 2c83d41 commit 4e2c051

File tree

204 files changed

+716
-381
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

204 files changed

+716
-381
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. For change
33

44
## master
55

6+
- Updated French localization with articles and prepositions insertion using grammar rules. [#252](https://github.com/Project-OSRM/osrm-text-instructions/pull/252)
67
- Added a Burmese localization. [#247](https://github.com/Project-OSRM/osrm-text-instructions/pull/247)
78
- Added a Finnish localization. [#239](https://github.com/Project-OSRM/osrm-text-instructions/pull/239)
89
- Added a Korean localization. [#243](https://github.com/Project-OSRM/osrm-text-instructions/pull/243)

languages.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ var instructionsVi = require('./languages/translations/vi.json');
2626
var instructionsZhHans = require('./languages/translations/zh-Hans.json');
2727

2828
// Load all grammar files
29+
var grammarFr = require('./languages/grammar/fr.json');
2930
var grammarRu = require('./languages/grammar/ru.json');
3031

3132
// Load all abbreviations files
@@ -76,6 +77,7 @@ var instructions = {
7677

7778
// Create list of supported grammar
7879
var grammars = {
80+
'fr': grammarFr,
7981
'ru': grammarRu
8082
};
8183

languages/grammar/fr.json

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
{
2+
"meta": {
3+
"regExpFlags": "gi"
4+
},
5+
"v5": {
6+
"article": [
7+
["^ Acc[èe]s ", " l’accès "],
8+
["^ Aire ", " l’aire "],
9+
["^ All[ée]e ", " l’allée "],
10+
["^ Anse ", " l’anse "],
11+
["^ (L['’])?Autoroute ", " l’autoroute "],
12+
["^ Avenue ", " l’avenue "],
13+
["^ Barreau ", " le barreau "],
14+
["^ Boulevard ", " le boulevard "],
15+
["^ Chemin ", " le chemin "],
16+
["^ Petit[\\- ]Chemin ", " le petit chemin "],
17+
["^ Cit[ée] ", " la cité "],
18+
["^ Clos ", " le clos "],
19+
["^ Corniche ", " la corniche "],
20+
["^ Cour ", " la cour "],
21+
["^ Cours ", " le cours "],
22+
["^ D[ée]viation ", " la déviation "],
23+
["^ Entr[ée]e ", " l’entrée "],
24+
["^ Esplanade ", " l’esplanade "],
25+
["^ Galerie ", " la galerie "],
26+
["^ Impasse ", " l’impasse "],
27+
["^ Lotissement ", " le lotissement "],
28+
["^ Mont[ée]e ", " la montée "],
29+
["^ Parc ", " le parc "],
30+
["^ Parvis ", " le parvis "],
31+
["^ Passage ", " le passage "],
32+
["^ Place ", " la place "],
33+
["^ Petit[\\- ]Pont ", " le petit-pont "],
34+
["^ Pont ", " le pont "],
35+
["^ Promenade ", " la promenade "],
36+
["^ Quai ", " le quai "],
37+
["^ Rocade ", " la rocade "],
38+
["^ Rond[\\- ]?Point ", " le rond-point "],
39+
["^ Route ", " la route "],
40+
["^ Rue ", " la rue "],
41+
["^ Grande Rue ", " la grande rue "],
42+
["^ Sente ", " la sente "],
43+
["^ Sentier ", " le sentier "],
44+
["^ Sortie ", " la sortie "],
45+
["^ Souterrain ", " le souterrain "],
46+
["^ Square ", " le square "],
47+
["^ Terrasse ", " la terrasse "],
48+
["^ Traverse ", " la traverse "],
49+
["^ Tunnel ", " le tunnel "],
50+
["^ Viaduc ", " le viaduc "],
51+
["^ Villa ", " la villa "],
52+
["^ Village ", " le village "],
53+
["^ Voie ", " la voie "],
54+
55+
[" ([dl])'", " $1’"]
56+
],
57+
"preposition": [
58+
["^ Le ", " du "],
59+
["^ Les ", " des "],
60+
["^ La ", " de La "],
61+
62+
["^ Acc[èe]s ", " de l’accès "],
63+
["^ Aire ", " de l’aire "],
64+
["^ All[ée]e ", " de l’allée "],
65+
["^ Anse ", " de l’anse "],
66+
["^ (L['’])?Autoroute ", " de l’autoroute "],
67+
["^ Avenue ", " de l’avenue "],
68+
["^ Barreau ", " du barreau "],
69+
["^ Boulevard ", " du boulevard "],
70+
["^ Chemin ", " du chemin "],
71+
["^ Petit[\\- ]Chemin ", " du petit chemin "],
72+
["^ Cit[ée] ", " de la cité "],
73+
["^ Clos ", " du clos "],
74+
["^ Corniche ", " de la corniche "],
75+
["^ Cour ", " de la cour "],
76+
["^ Cours ", " du cours "],
77+
["^ D[ée]viation ", " de la déviation "],
78+
["^ Entr[ée]e ", " de l’entrée "],
79+
["^ Esplanade ", " de l’esplanade "],
80+
["^ Galerie ", " de la galerie "],
81+
["^ Impasse ", " de l’impasse "],
82+
["^ Lotissement ", " du lotissement "],
83+
["^ Mont[ée]e ", " de la montée "],
84+
["^ Parc ", " du parc "],
85+
["^ Parvis ", " du parvis "],
86+
["^ Passage ", " du passage "],
87+
["^ Place ", " de la place "],
88+
["^ Petit[\\- ]Pont ", " du petit-pont "],
89+
["^ Pont ", " du pont "],
90+
["^ Promenade ", " de la promenade "],
91+
["^ Quai ", " du quai "],
92+
["^ Rocade ", " de la rocade "],
93+
["^ Rond[\\- ]?Point ", " du rond-point "],
94+
["^ Route ", " de la route "],
95+
["^ Rue ", " de la rue "],
96+
["^ Grande Rue ", " de la grande rue "],
97+
["^ Sente ", " de la sente "],
98+
["^ Sentier ", " du sentier "],
99+
["^ Sortie ", " de la sortie "],
100+
["^ Souterrain ", " du souterrain "],
101+
["^ Square ", " du square "],
102+
["^ Terrasse ", " de la terrasse "],
103+
["^ Traverse ", " de la traverse "],
104+
["^ Tunnel ", " du tunnel "],
105+
["^ Viaduc ", " du viaduc "],
106+
["^ Villa ", " de la villa "],
107+
["^ Village ", " du village "],
108+
["^ Voie ", " de la voie "],
109+
110+
["^ ([AÂÀEÈÉÊËIÎÏOÔUÙÛÜYŸÆŒ])", " d’$1"],
111+
["^ (\\S)", " de $1"],
112+
[" ([dl])'", " $1’"]
113+
],
114+
"rotary": [
115+
["^ Le ", " le rond-point du "],
116+
["^ Les ", " le rond-point des "],
117+
["^ La ", " le rond-point de La "],
118+
119+
["^ Acc[èe]s ", " le rond-point de l’accès "],
120+
["^ Aire ", " le rond-point de l’aire "],
121+
["^ All[ée]e ", " le rond-point de l’allée "],
122+
["^ Anse ", " le rond-point de l’anse "],
123+
["^ (L['’])?Autoroute ", " le rond-point de l’autoroute "],
124+
["^ Avenue ", " le rond-point de l’avenue "],
125+
["^ Barreau ", " le rond-point du barreau "],
126+
["^ Boulevard ", " le rond-point du boulevard "],
127+
["^ Chemin ", " le rond-point du chemin "],
128+
["^ Petit[\\- ]Chemin ", " le rond-point du petit chemin "],
129+
["^ Cit[ée] ", " le rond-point de la cité "],
130+
["^ Clos ", " le rond-point du clos "],
131+
["^ Corniche ", " le rond-point de la corniche "],
132+
["^ Cour ", " le rond-point de la cour "],
133+
["^ Cours ", " le rond-point du cours "],
134+
["^ D[ée]viation ", " le rond-point de la déviation "],
135+
["^ Entr[ée]e ", " le rond-point de l’entrée "],
136+
["^ Esplanade ", " le rond-point de l’esplanade "],
137+
["^ Galerie ", " le rond-point de la galerie "],
138+
["^ Impasse ", " le rond-point de l’impasse "],
139+
["^ Lotissement ", " le rond-point du lotissement "],
140+
["^ Mont[ée]e ", " le rond-point de la montée "],
141+
["^ Parc ", " le rond-point du parc "],
142+
["^ Parvis ", " le rond-point du parvis "],
143+
["^ Passage ", " le rond-point du passage "],
144+
["^ Place ", " le rond-point de la place "],
145+
["^ Petit[\\- ]Pont ", " le rond-point du petit-pont "],
146+
["^ Pont ", " le rond-point du pont "],
147+
["^ Promenade ", " le rond-point de la promenade "],
148+
["^ Quai ", " le rond-point du quai "],
149+
["^ Rocade ", " le rond-point de la rocade "],
150+
["^ Rond[\\- ]?Point ", " le rond-point "],
151+
["^ Route ", " le rond-point de la route "],
152+
["^ Rue ", " le rond-point de la rue "],
153+
["^ Grande Rue ", " le rond-point de la grande rue "],
154+
["^ Sente ", " le rond-point de la sente "],
155+
["^ Sentier ", " le rond-point du sentier "],
156+
["^ Sortie ", " le rond-point de la sortie "],
157+
["^ Souterrain ", " le rond-point du souterrain "],
158+
["^ Square ", " le rond-point du square "],
159+
["^ Terrasse ", " le rond-point de la terrasse "],
160+
["^ Traverse ", " le rond-point de la traverse "],
161+
["^ Tunnel ", " le rond-point du tunnel "],
162+
["^ Viaduc ", " le rond-point du viaduc "],
163+
["^ Villa ", " le rond-point de la villa "],
164+
["^ Village ", " le rond-point du village "],
165+
["^ Voie ", " le rond-point de la voie "],
166+
167+
["^ ([AÂÀEÈÉÊËIÎÏOÔUÙÛÜYŸÆŒ])", " le rond-point d’$1"],
168+
["^ (\\S)", " le rond-point de $1"],
169+
[" ([dl])'", " $1’"]
170+
],
171+
"arrival": [
172+
["^ Le ", " au "],
173+
["^ Les ", " aux "],
174+
["^ La ", " à La "],
175+
["^ (\\S)", " à $1"],
176+
177+
[" ([dl])'", " $1’"]
178+
]
179+
}
180+
}

languages/overrides/fr.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Add grammar option to {way_name} depending on phrase context
2+
3+
var replaces = [
4+
[' (de )?\{destination\}', ' {destination:preposition}'], // eslint-disable-line no-useless-escape
5+
[' (le rond-point )?\{rotary_name\}', ' {rotary_name:rotary}'], // eslint-disable-line no-useless-escape
6+
[' fin (de )?(la route )?\{way_name\}', ' fin {way_name:preposition}'], // eslint-disable-line no-useless-escape
7+
[' \{way_name\}', ' {way_name:article}'], // eslint-disable-line no-useless-escape
8+
[' (à )?\{waypoint_name\}', ' {waypoint_name:arrival}'] // eslint-disable-line no-useless-escape
9+
];
10+
11+
function optionize(phrase) {
12+
var result = phrase;
13+
replaces.forEach(function(pattern) {
14+
var re = new RegExp(pattern[0], 'gi');
15+
result = result.replace(re, pattern[1]);
16+
});
17+
18+
return result;
19+
}
20+
21+
function iterate(values) {
22+
Object.keys(values).forEach(function (key) {
23+
var value = values[key];
24+
if (typeof value === 'string') {
25+
values[key] = optionize(value);
26+
} else if (typeof value === 'object') {
27+
iterate(value);
28+
}
29+
});
30+
}
31+
32+
module.exports = function(content) {
33+
// Iterate all content string values recursively
34+
iterate(content.v5);
35+
36+
return content;
37+
};

0 commit comments

Comments
 (0)