|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace TheIconic\NameParser\Language; |
|
4
|
|
|
|
|
5
|
|
|
use TheIconic\NameParser\LanguageInterface; |
|
6
|
|
|
|
|
7
|
|
|
class Dutch implements LanguageInterface |
|
8
|
|
|
{ |
|
9
|
|
|
// https://nl.wikipedia.org/wiki/Titulatuur_in_het_Nederlands_hoger_onderwijs |
|
10
|
|
|
const SUFFIXES = [ |
|
11
|
|
|
'doctor' => 'dr.', |
|
12
|
|
|
'meester in de rechten' => 'mr.', |
|
13
|
|
|
'ingenieur' => 'ir.', |
|
14
|
|
|
'doctorandus' => 'drs.', |
|
15
|
|
|
'bacc.alaureus' => 'bacc.', |
|
16
|
|
|
'kandidaats' => 'kand.', |
|
17
|
|
|
'doctor honoris causa' => 'dr.h.c.', |
|
18
|
|
|
'hoogleraar' => 'prof.', |
|
19
|
|
|
'dominee' => 'ds.', |
|
20
|
|
|
'ing.enieur' => 'ing.', |
|
21
|
|
|
'baccalaureus' => 'bc.', |
|
22
|
|
|
'Bachelor of Arts' => 'B.A.', |
|
23
|
|
|
'Bachelor of Science' => 'B.Sc.', |
|
24
|
|
|
'Bachelor of Laws' => 'LL.B.', |
|
25
|
|
|
'Master of Laws' => 'LL.M.', |
|
26
|
|
|
'Master of Arts' => 'M.A.', |
|
27
|
|
|
'Master of Science' => 'M.Sc.', |
|
28
|
|
|
'Master of Philosophy' => 'M.Phil.', |
|
29
|
|
|
'Doctor.Philosophy' => 'Ph.D.', |
|
30
|
|
|
'Doctor of Philosophy' => 'PhD.', |
|
31
|
|
|
'Doctor' => 'D.', |
|
32
|
|
|
|
|
33
|
|
|
'junior' => 'Junior', |
|
34
|
|
|
'jr' => 'Jr.', |
|
35
|
|
|
'senior' => 'Senior', |
|
36
|
|
|
'sr' => 'Sr.', |
|
37
|
|
|
]; |
|
38
|
|
|
|
|
39
|
|
|
// Source: https://nl.wikipedia.org/wiki/Burgerlijke_titulatuur |
|
40
|
|
|
const SALUTATIONS = [ |
|
41
|
|
|
// De Heer, Heer, Mijnheer (officieel), Mevrouw, Mejuffrouw |
|
42
|
|
|
// Weledele Heer (archaïsch), Mevrouw |
|
43
|
|
|
// Weledelgeboren Heer, Vrouwe |
|
44
|
|
|
'Dhr.', |
|
45
|
|
|
'De Heer', |
|
46
|
|
|
'Heer', |
|
47
|
|
|
'Mijnheer', |
|
48
|
|
|
'Meneer', |
|
49
|
|
|
'Mw.', |
|
50
|
|
|
'Mevrouw', |
|
51
|
|
|
'Vrouwe', |
|
52
|
|
|
'Mejuffrouw', |
|
53
|
|
|
'Weledele', |
|
54
|
|
|
'Weledelgeboren', |
|
55
|
|
|
]; |
|
56
|
|
|
|
|
57
|
|
|
// Source (official list): https://nl.wikipedia.org/wiki/Tussenvoegsel |
|
|
|
|
|
|
58
|
|
|
const LASTNAME_PREFIXES = [ |
|
59
|
|
|
"’S", |
|
60
|
|
|
"Aus m", |
|
61
|
|
|
"De las", |
|
62
|
|
|
"In den", |
|
63
|
|
|
"Op gen", |
|
64
|
|
|
"Uijt de", |
|
65
|
|
|
"van la", |
|
66
|
|
|
"’s", |
|
67
|
|
|
"aus m", |
|
68
|
|
|
"de las", |
|
69
|
|
|
"in den", |
|
70
|
|
|
"op gen", |
|
71
|
|
|
"uijt de", |
|
72
|
|
|
"Van t", |
|
73
|
|
|
"’T", |
|
74
|
|
|
"Ben", |
|
75
|
|
|
"De le", |
|
76
|
|
|
"In der", |
|
77
|
|
|
"Op het", |
|
78
|
|
|
"Uijt den", |
|
79
|
|
|
"van t", |
|
80
|
|
|
"’t", |
|
81
|
|
|
"ben", |
|
82
|
|
|
"de le", |
|
83
|
|
|
"in der", |
|
84
|
|
|
"op het", |
|
85
|
|
|
"uijt den", |
|
86
|
|
|
"Van ter", |
|
87
|
|
|
"A", |
|
88
|
|
|
"Bij", |
|
89
|
|
|
"De van der", |
|
90
|
|
|
"In het", |
|
91
|
|
|
"Op t", |
|
92
|
|
|
"Uijt te de", |
|
93
|
|
|
"van ter", |
|
94
|
|
|
"a", |
|
95
|
|
|
"bij", |
|
96
|
|
|
"de van der", |
|
97
|
|
|
"in het", |
|
98
|
|
|
"op t", |
|
99
|
|
|
"uijt te de", |
|
100
|
|
|
"Van van de", |
|
101
|
|
|
"Aan", |
|
102
|
|
|
"Bij ’t", |
|
103
|
|
|
"Deca", |
|
104
|
|
|
"In t", |
|
105
|
|
|
"Op ten", |
|
106
|
|
|
"Uijt ten", |
|
107
|
|
|
"van van de", |
|
108
|
|
|
"aan", |
|
109
|
|
|
"bij ’t", |
|
110
|
|
|
"deca", |
|
111
|
|
|
"in t", |
|
112
|
|
|
"op ten", |
|
113
|
|
|
"uijt ten", |
|
114
|
|
|
"Ver", |
|
115
|
|
|
"Aan ’t", |
|
116
|
|
|
"Bij de", |
|
117
|
|
|
"Degli", |
|
118
|
|
|
"L", |
|
119
|
|
|
"Over", |
|
120
|
|
|
"Uit", |
|
121
|
|
|
"ver", |
|
122
|
|
|
"aan ’t", |
|
123
|
|
|
"bij de", |
|
124
|
|
|
"degli", |
|
125
|
|
|
"l", |
|
126
|
|
|
"over", |
|
127
|
|
|
"uit", |
|
128
|
|
|
"Vom", |
|
129
|
|
|
"Aan de", |
|
130
|
|
|
"Bij den", |
|
131
|
|
|
"Dei", |
|
132
|
|
|
"L’", |
|
133
|
|
|
"Over ’t", |
|
134
|
|
|
"Uit ’t", |
|
135
|
|
|
"vom", |
|
136
|
|
|
"aan de", |
|
137
|
|
|
"bij den", |
|
138
|
|
|
"dei", |
|
139
|
|
|
"l’", |
|
140
|
|
|
"over ’t", |
|
141
|
|
|
"uit ’t", |
|
142
|
|
|
"Von", |
|
143
|
|
|
"Aan den", |
|
144
|
|
|
"Bij het", |
|
145
|
|
|
"Del", |
|
146
|
|
|
"La", |
|
147
|
|
|
"Over de", |
|
148
|
|
|
"Uit de", |
|
149
|
|
|
"von", |
|
150
|
|
|
"aan den", |
|
151
|
|
|
"bij het", |
|
152
|
|
|
"del", |
|
153
|
|
|
"la", |
|
154
|
|
|
"over de", |
|
155
|
|
|
"uit de", |
|
156
|
|
|
"Von ’t", |
|
157
|
|
|
"Aan der", |
|
158
|
|
|
"Bij t", |
|
159
|
|
|
"Della", |
|
160
|
|
|
"Las", |
|
161
|
|
|
"Over den", |
|
162
|
|
|
"Uit den", |
|
163
|
|
|
"von ’t", |
|
164
|
|
|
"aan der", |
|
165
|
|
|
"bij t", |
|
166
|
|
|
"della", |
|
167
|
|
|
"las", |
|
168
|
|
|
"over den", |
|
169
|
|
|
"uit den", |
|
170
|
|
|
"Von dem", |
|
171
|
|
|
"Aan het", |
|
172
|
|
|
"Bin", |
|
173
|
|
|
"Den", |
|
174
|
|
|
"Le", |
|
175
|
|
|
"Over het", |
|
176
|
|
|
"Uit het", |
|
177
|
|
|
"von dem", |
|
178
|
|
|
"aan het", |
|
179
|
|
|
"bin", |
|
180
|
|
|
"den", |
|
181
|
|
|
"le", |
|
182
|
|
|
"over het", |
|
183
|
|
|
"uit het", |
|
184
|
|
|
"Von den", |
|
185
|
|
|
"Aan t", |
|
186
|
|
|
"Boven d", |
|
187
|
|
|
"Der", |
|
188
|
|
|
"Les", |
|
189
|
|
|
"Over t", |
|
190
|
|
|
"Uit t", |
|
191
|
|
|
"von den", |
|
192
|
|
|
"aan t", |
|
193
|
|
|
"boven d", |
|
194
|
|
|
"der", |
|
195
|
|
|
"les", |
|
196
|
|
|
"over t", |
|
197
|
|
|
"uit t", |
|
198
|
|
|
"Von der", |
|
199
|
|
|
"Af", |
|
200
|
|
|
"Boven d’", |
|
201
|
|
|
"Des", |
|
202
|
|
|
"Lo", |
|
203
|
|
|
"S", |
|
204
|
|
|
"Uit te de", |
|
205
|
|
|
"von der", |
|
206
|
|
|
"af", |
|
207
|
|
|
"boven d’", |
|
208
|
|
|
"des", |
|
209
|
|
|
"lo", |
|
210
|
|
|
"s", |
|
211
|
|
|
"uit te de", |
|
212
|
|
|
"Von t", |
|
213
|
|
|
"Al", |
|
214
|
|
|
"D", |
|
215
|
|
|
"Di", |
|
216
|
|
|
"Los", |
|
217
|
|
|
"S’", |
|
218
|
|
|
"Uit ten", |
|
219
|
|
|
"von t", |
|
220
|
|
|
"al", |
|
221
|
|
|
"d", |
|
222
|
|
|
"di", |
|
223
|
|
|
"los", |
|
224
|
|
|
"s’", |
|
225
|
|
|
"uit ten", |
|
226
|
|
|
"Voor", |
|
227
|
|
|
"Am", |
|
228
|
|
|
"D’", |
|
229
|
|
|
"Die le", |
|
230
|
|
|
"Of", |
|
231
|
|
|
"T", |
|
232
|
|
|
"Unter", |
|
233
|
|
|
"voor", |
|
234
|
|
|
"am", |
|
235
|
|
|
"d’", |
|
236
|
|
|
"die le", |
|
237
|
|
|
"of", |
|
238
|
|
|
"t", |
|
239
|
|
|
"unter", |
|
240
|
|
|
"Voor ’t", |
|
241
|
|
|
"Am de", |
|
242
|
|
|
"Da", |
|
243
|
|
|
"Do", |
|
244
|
|
|
"Onder", |
|
245
|
|
|
"Te", |
|
246
|
|
|
"Van", |
|
247
|
|
|
"voor ’t", |
|
248
|
|
|
"am de", |
|
249
|
|
|
"da", |
|
250
|
|
|
"do", |
|
251
|
|
|
"onder", |
|
252
|
|
|
"te", |
|
253
|
|
|
"van", |
|
254
|
|
|
"Voor de", |
|
255
|
|
|
"Auf", |
|
256
|
|
|
"Dal", |
|
257
|
|
|
"Don", |
|
258
|
|
|
"Onder ’t", |
|
259
|
|
|
"Ten", |
|
260
|
|
|
"Van ’t", |
|
261
|
|
|
"voor de", |
|
262
|
|
|
"auf", |
|
263
|
|
|
"dal", |
|
264
|
|
|
"don", |
|
265
|
|
|
"onder ’t", |
|
266
|
|
|
"ten", |
|
267
|
|
|
"van ’t", |
|
268
|
|
|
"Voor den", |
|
269
|
|
|
"Auf dem", |
|
270
|
|
|
"Dal’", |
|
271
|
|
|
"Dos", |
|
272
|
|
|
"Onder de", |
|
273
|
|
|
"Ter", |
|
274
|
|
|
"Van de", |
|
275
|
|
|
"voor den", |
|
276
|
|
|
"auf dem", |
|
277
|
|
|
"dal’", |
|
278
|
|
|
"dos", |
|
279
|
|
|
"onder de", |
|
280
|
|
|
"ter", |
|
281
|
|
|
"van De", |
|
282
|
|
|
"Voor in ’t", |
|
283
|
|
|
"Auf den", |
|
284
|
|
|
"Dalla", |
|
285
|
|
|
"Du", |
|
286
|
|
|
"Onder den", |
|
287
|
|
|
"Tho", |
|
288
|
|
|
"van de", |
|
289
|
|
|
"voor in ’t", |
|
290
|
|
|
"auf den", |
|
291
|
|
|
"dalla", |
|
292
|
|
|
"du", |
|
293
|
|
|
"onder den", |
|
294
|
|
|
"tho", |
|
295
|
|
|
"Van de l", |
|
296
|
|
|
"Voor in t", |
|
297
|
|
|
"Auf der", |
|
298
|
|
|
"Das", |
|
299
|
|
|
"El", |
|
300
|
|
|
"Onder het", |
|
301
|
|
|
"Thoe", |
|
302
|
|
|
"van de l", |
|
303
|
|
|
"voor in t", |
|
304
|
|
|
"auf der", |
|
305
|
|
|
"das", |
|
306
|
|
|
"el", |
|
307
|
|
|
"onder het", |
|
308
|
|
|
"thoe", |
|
309
|
|
|
"Van de l’", |
|
310
|
|
|
"Vor", |
|
311
|
|
|
"Auf ter", |
|
312
|
|
|
"De", |
|
313
|
|
|
"Het", |
|
314
|
|
|
"Onder t", |
|
315
|
|
|
"Thor", |
|
316
|
|
|
"van de l’", |
|
317
|
|
|
"vor", |
|
318
|
|
|
"auf ter", |
|
319
|
|
|
"de", |
|
320
|
|
|
"het", |
|
321
|
|
|
"onder t", |
|
322
|
|
|
"thor", |
|
323
|
|
|
"Van Den", |
|
324
|
|
|
"Vor der", |
|
325
|
|
|
"Aus", |
|
326
|
|
|
"De die", |
|
327
|
|
|
"I", |
|
328
|
|
|
"Op", |
|
329
|
|
|
"To", |
|
330
|
|
|
"Van den", |
|
331
|
|
|
"vor der", |
|
332
|
|
|
"aus", |
|
333
|
|
|
"de die", |
|
334
|
|
|
"i", |
|
335
|
|
|
"op", |
|
336
|
|
|
"to", |
|
337
|
|
|
"van den", |
|
338
|
|
|
"Zu", |
|
339
|
|
|
"Aus ’m", |
|
340
|
|
|
"De die le", |
|
341
|
|
|
"Im", |
|
342
|
|
|
"Op ’t", |
|
343
|
|
|
"Toe", |
|
344
|
|
|
"Van Der", |
|
345
|
|
|
"zu", |
|
346
|
|
|
"aus ’m", |
|
347
|
|
|
"de die le", |
|
348
|
|
|
"im", |
|
349
|
|
|
"op ’t", |
|
350
|
|
|
"toe", |
|
351
|
|
|
"Van der", |
|
352
|
|
|
"Zum", |
|
353
|
|
|
"Aus dem", |
|
354
|
|
|
"De l", |
|
355
|
|
|
"In", |
|
356
|
|
|
"Op de", |
|
357
|
|
|
"Tot", |
|
358
|
|
|
"van der", |
|
359
|
|
|
"zum", |
|
360
|
|
|
"aus dem", |
|
361
|
|
|
"de l", |
|
362
|
|
|
"in", |
|
363
|
|
|
"op de", |
|
364
|
|
|
"tot", |
|
365
|
|
|
"Van gen", |
|
366
|
|
|
"Zur", |
|
367
|
|
|
"Aus den", |
|
368
|
|
|
"De l’", |
|
369
|
|
|
"In ’t", |
|
370
|
|
|
"Op den", |
|
371
|
|
|
"Uijt", |
|
372
|
|
|
"van gen", |
|
373
|
|
|
"zur", |
|
374
|
|
|
"aus den", |
|
375
|
|
|
"de l’", |
|
376
|
|
|
"in ’t", |
|
377
|
|
|
"op den", |
|
378
|
|
|
"uijt", |
|
379
|
|
|
"Van het", |
|
380
|
|
|
"Aus der", |
|
381
|
|
|
"De la", |
|
382
|
|
|
"In de", |
|
383
|
|
|
"Op der", |
|
384
|
|
|
"Uijt ’t", |
|
385
|
|
|
"van het", |
|
386
|
|
|
"aus der", |
|
387
|
|
|
"de la", |
|
388
|
|
|
"in de", |
|
389
|
|
|
"op der", |
|
390
|
|
|
"uijt ’t", |
|
391
|
|
|
"Van la", |
|
392
|
|
|
]; |
|
393
|
|
|
|
|
394
|
|
|
public function getSuffixes(): array |
|
395
|
|
|
{ |
|
396
|
|
|
return self::SUFFIXES; |
|
397
|
|
|
} |
|
398
|
|
|
|
|
399
|
|
|
public function getSalutations(): array |
|
400
|
|
|
{ |
|
401
|
|
|
return array_combine(self::SALUTATIONS, self::SALUTATIONS); |
|
402
|
|
|
} |
|
403
|
|
|
|
|
404
|
|
|
public function getLastnamePrefixes(): array |
|
405
|
|
|
{ |
|
406
|
|
|
$prefixMap = []; |
|
407
|
|
|
foreach(self::LASTNAME_PREFIXES as $prefix){ |
|
408
|
|
|
$key = strtolower($prefix); |
|
409
|
|
|
// $key = str_replace(' ', '-', $key); |
|
|
|
|
|
|
410
|
|
|
// $key = str_replace('’', '', $key); |
|
411
|
|
|
$prefixMap[$key] = $prefix; |
|
412
|
|
|
|
|
413
|
|
|
// add version with ' instead of ’ |
|
414
|
|
|
if(strpos($prefix, '’') !== false){ |
|
415
|
|
|
$keyVariation = str_replace('’', '\'', $key); |
|
416
|
|
|
$prefixVariation = str_replace('’', '\'', $prefix); |
|
417
|
|
|
$prefixMap[$keyVariation] = $prefixVariation; |
|
418
|
|
|
} |
|
419
|
|
|
} |
|
420
|
|
|
|
|
421
|
|
|
return $prefixMap; |
|
422
|
|
|
} |
|
423
|
|
|
} |
|
424
|
|
|
|
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.