internationalization.dart 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter/foundation.dart';
  4. import 'package:shared_preferences/shared_preferences.dart';
  5. const _kLocaleStorageKey = '__locale_key__';
  6. class FFLocalizations {
  7. FFLocalizations(this.locale);
  8. final Locale locale;
  9. static FFLocalizations of(BuildContext context) =>
  10. Localizations.of<FFLocalizations>(context, FFLocalizations)!;
  11. static List<String> languages() => ['nl', 'en'];
  12. static late SharedPreferences _prefs;
  13. static Future initialize() async =>
  14. _prefs = await SharedPreferences.getInstance();
  15. static Future storeLocale(String locale) =>
  16. _prefs.setString(_kLocaleStorageKey, locale);
  17. static Locale? getStoredLocale() {
  18. final locale = _prefs.getString(_kLocaleStorageKey);
  19. return locale != null && locale.isNotEmpty ? createLocale(locale) : null;
  20. }
  21. String get languageCode => locale.toString();
  22. String? get languageShortCode =>
  23. _languagesWithShortCode.contains(locale.toString())
  24. ? '${locale.toString()}_short'
  25. : null;
  26. int get languageIndex => languages().contains(languageCode)
  27. ? languages().indexOf(languageCode)
  28. : 0;
  29. String getText(String key) =>
  30. (kTranslationsMap[key] ?? {})[locale.toString()] ?? '';
  31. String getVariableText({
  32. String? nlText = '',
  33. String? enText = '',
  34. }) =>
  35. [nlText, enText][languageIndex] ?? '';
  36. static const Set<String> _languagesWithShortCode = {
  37. 'ar',
  38. 'az',
  39. 'ca',
  40. 'cs',
  41. 'da',
  42. 'de',
  43. 'dv',
  44. 'en',
  45. 'es',
  46. 'et',
  47. 'fi',
  48. 'fr',
  49. 'gr',
  50. 'he',
  51. 'hi',
  52. 'hu',
  53. 'it',
  54. 'km',
  55. 'ku',
  56. 'mn',
  57. 'ms',
  58. 'no',
  59. 'pt',
  60. 'ro',
  61. 'ru',
  62. 'rw',
  63. 'sv',
  64. 'th',
  65. 'uk',
  66. 'vi',
  67. };
  68. }
  69. /// Used if the locale is not supported by GlobalMaterialLocalizations.
  70. class FallbackMaterialLocalizationDelegate
  71. extends LocalizationsDelegate<MaterialLocalizations> {
  72. const FallbackMaterialLocalizationDelegate();
  73. @override
  74. bool isSupported(Locale locale) => _isSupportedLocale(locale);
  75. @override
  76. Future<MaterialLocalizations> load(Locale locale) async =>
  77. SynchronousFuture<MaterialLocalizations>(
  78. const DefaultMaterialLocalizations(),
  79. );
  80. @override
  81. bool shouldReload(FallbackMaterialLocalizationDelegate old) => false;
  82. }
  83. /// Used if the locale is not supported by GlobalCupertinoLocalizations.
  84. class FallbackCupertinoLocalizationDelegate
  85. extends LocalizationsDelegate<CupertinoLocalizations> {
  86. const FallbackCupertinoLocalizationDelegate();
  87. @override
  88. bool isSupported(Locale locale) => _isSupportedLocale(locale);
  89. @override
  90. Future<CupertinoLocalizations> load(Locale locale) =>
  91. SynchronousFuture<CupertinoLocalizations>(
  92. const DefaultCupertinoLocalizations(),
  93. );
  94. @override
  95. bool shouldReload(FallbackCupertinoLocalizationDelegate old) => false;
  96. }
  97. class FFLocalizationsDelegate extends LocalizationsDelegate<FFLocalizations> {
  98. const FFLocalizationsDelegate();
  99. @override
  100. bool isSupported(Locale locale) => _isSupportedLocale(locale);
  101. @override
  102. Future<FFLocalizations> load(Locale locale) =>
  103. SynchronousFuture<FFLocalizations>(FFLocalizations(locale));
  104. @override
  105. bool shouldReload(FFLocalizationsDelegate old) => false;
  106. }
  107. Locale createLocale(String language) => language.contains('_')
  108. ? Locale.fromSubtags(
  109. languageCode: language.split('_').first,
  110. scriptCode: language.split('_').last,
  111. )
  112. : Locale(language);
  113. bool _isSupportedLocale(Locale locale) {
  114. final language = locale.toString();
  115. return FFLocalizations.languages().contains(
  116. language.endsWith('_')
  117. ? language.substring(0, language.length - 1)
  118. : language,
  119. );
  120. }
  121. final kTranslationsMap = <Map<String, Map<String, String>>>[
  122. // login
  123. {
  124. 'd507d3b9': {
  125. 'nl': 'TextField',
  126. 'en': '',
  127. },
  128. 't8h5f8ir': {
  129. 'nl': 'TextField',
  130. 'en': '',
  131. },
  132. 'gkx4luhw': {
  133. 'nl': 'Inloggen',
  134. 'en': 'Inloggen',
  135. },
  136. 'utppw2si': {
  137. 'nl': 'Wachtwoord vergeten?',
  138. 'en': '',
  139. },
  140. 'la56ozbq': {
  141. 'nl': 'HorecagelegenhedenOverzichtPage',
  142. 'en': 'HorecagelegenhedenOverzichtPage',
  143. },
  144. 'ropfvhyi': {
  145. 'nl': 'selectprovinciegemeent',
  146. 'en': 'selectprovinciegemeent',
  147. },
  148. 'fts8juzc': {
  149. 'nl': 'horecagelegenheid 57897',
  150. 'en': '57897',
  151. },
  152. '9rijjab8': {
  153. 'nl': 'puitgaan',
  154. 'en': 'puitgaan',
  155. },
  156. 'ym0dczsr': {
  157. 'nl': 'kanwegtest',
  158. 'en': 'kanwegtest',
  159. },
  160. 'bokhk9vk': {
  161. 'nl': 'Home',
  162. 'en': '',
  163. },
  164. },
  165. // horecagelegenheidCurrent
  166. {
  167. 'pj545url': {
  168. 'nl': 'Favoriet',
  169. 'en': '',
  170. },
  171. 'pedeshok': {
  172. 'nl': 'Info',
  173. 'en': 'Info',
  174. },
  175. 'q5nwrlms': {
  176. 'nl': 'Links',
  177. 'en': 'Links',
  178. },
  179. 's1b6yp7v': {
  180. 'nl': 'Bezorgen',
  181. 'en': 'Bezorgen',
  182. },
  183. 'ukbd1ac9': {
  184. 'nl': 'Alle horecagelegenheden',
  185. 'en': '',
  186. },
  187. '6gfap72a': {
  188. 'nl': 'Home',
  189. 'en': '',
  190. },
  191. },
  192. // home
  193. {
  194. 'eor4c9rz': {
  195. 'nl': 'Uitgaan',
  196. 'en': '',
  197. },
  198. 'mx7sn4ne': {
  199. 'nl': 'Activiteiten',
  200. 'en': '',
  201. },
  202. 'e6xyyt74': {
  203. 'nl': 'Cultuur',
  204. 'en': '',
  205. },
  206. 'uxy2nfok': {
  207. 'nl': 'Films',
  208. 'en': '',
  209. },
  210. 'lx77xfrn': {
  211. 'nl': 'Jeugd',
  212. 'en': '',
  213. },
  214. 'g8ll2g7i': {
  215. 'nl': 'Home',
  216. 'en': '',
  217. },
  218. },
  219. // selectprovinciegemeente
  220. {
  221. 's2fmjpdd': {
  222. 'nl': 'Select gemeente/provincie',
  223. 'en': '',
  224. },
  225. 'vg44lbt3': {
  226. 'nl': 'Home',
  227. 'en': '',
  228. },
  229. },
  230. // PUitgaanPage
  231. {
  232. 'qkpwprwx': {
  233. 'nl': 'Home',
  234. 'en': '',
  235. },
  236. },
  237. // Event
  238. {
  239. '6gnwjxxh': {
  240. 'nl': 'Home',
  241. 'en': '',
  242. },
  243. },
  244. // EventCurrent
  245. {
  246. 'z63o5kzf': {
  247. 'nl': 'Delen',
  248. 'en': '',
  249. },
  250. '4qrjs6hg': {
  251. 'nl': 'Home',
  252. 'en': '',
  253. },
  254. },
  255. // HorecagelegenhedenOverzicht
  256. {
  257. 'cfmj0g86': {
  258. 'nl': 'Activiteiten',
  259. 'en': 'Activiteiten',
  260. },
  261. 'od4c0ph1': {
  262. 'nl': 'Cultuur',
  263. 'en': 'Cultuur',
  264. },
  265. 'i9cdclh1': {
  266. 'nl': 'Eetgelegenheden',
  267. 'en': 'Eetgelegenheden',
  268. },
  269. '9s07bzb1': {
  270. 'nl': 'Overnachten',
  271. 'en': 'Overnachten',
  272. },
  273. 'egcnfi7k': {
  274. 'nl': 'Uitgaan',
  275. 'en': 'Uitgaan',
  276. },
  277. '3i8p2r6z': {
  278. 'nl': 'Verhuur, catering',
  279. 'en': 'Verhuur, catering',
  280. },
  281. '9eldyvgz': {
  282. 'nl': 'Home',
  283. 'en': '',
  284. },
  285. },
  286. // HorecagelegenhedenOverzichtPageDataType
  287. {
  288. 'mgbxk04v': {
  289. 'nl': 'Activiteiten',
  290. 'en': 'Activiteiten',
  291. },
  292. '7x2d53vo': {
  293. 'nl': 'Cultuur',
  294. 'en': 'Cultuur',
  295. },
  296. '07bu84h3': {
  297. 'nl': 'Eetgelegenheden',
  298. 'en': 'Eetgelegenheden',
  299. },
  300. 'yyib9rhy': {
  301. 'nl': 'Overnachten',
  302. 'en': 'Overnachten',
  303. },
  304. 'ttz76cwu': {
  305. 'nl': 'Uitgaan',
  306. 'en': 'Uitgaan',
  307. },
  308. 'mqz8ig8q': {
  309. 'nl': 'Verhuur, catering',
  310. 'en': 'Verhuur, catering',
  311. },
  312. '3qshlxj5': {
  313. 'nl': 'Home',
  314. 'en': '',
  315. },
  316. },
  317. // HorecagelegenhedenOverzichtSortPage
  318. {
  319. 't070hi8b': {
  320. 'nl': 'Uitgaan',
  321. 'en': 'Uitgaan',
  322. },
  323. '8hepgmal': {
  324. 'nl': 'Select...',
  325. 'en': '',
  326. },
  327. 'af6l6apy': {
  328. 'nl': 'Search...',
  329. 'en': '',
  330. },
  331. 'ghh8wctj': {
  332. 'nl': 'Option 1',
  333. 'en': '',
  334. },
  335. '4wn3tgt9': {
  336. 'nl': 'Option 2',
  337. 'en': '',
  338. },
  339. 'df6v152s': {
  340. 'nl': 'Option 3',
  341. 'en': '',
  342. },
  343. 'goypqo1h': {
  344. 'nl': 'Cultuur',
  345. 'en': 'Cultuur',
  346. },
  347. 'eorww74c': {
  348. 'nl': 'Eetgelegenheden',
  349. 'en': 'Eetgelegenheden',
  350. },
  351. 'vikrjk5s': {
  352. 'nl': 'Overnachten',
  353. 'en': 'Overnachten',
  354. },
  355. '48955ibf': {
  356. 'nl': 'Activiteiten',
  357. 'en': 'Activiteiten',
  358. },
  359. 'onrokcg9': {
  360. 'nl': 'Verhuur, catering',
  361. 'en': 'Verhuur, catering',
  362. },
  363. 'g70lknj3': {
  364. 'nl': 'Home',
  365. 'en': '',
  366. },
  367. },
  368. // wachtwoordVergeten
  369. {
  370. 'vrbz9a3l': {
  371. 'nl': 'Wachtwoord vergeten',
  372. 'en': '',
  373. },
  374. '503u6v73': {
  375. 'nl':
  376. 'Vul je gebruikersnaam of e-mailadres in. Je ontvangt een e-mail om je wachtwoord opnieuw in te stellen.',
  377. 'en': '',
  378. },
  379. 'ush5uxz1': {
  380. 'nl': 'Gebruikersnaam of e-mailadres',
  381. 'en': '',
  382. },
  383. '0gfuq6i7': {
  384. 'nl': 'Verstuur',
  385. 'en': '',
  386. },
  387. 's7n2u93z': {
  388. 'nl': 'Home',
  389. 'en': '',
  390. },
  391. },
  392. // favorieten
  393. {
  394. 'txq7zl0f': {
  395. 'nl': 'Persoonlijke agenda',
  396. 'en': '',
  397. },
  398. '1y5w12fr': {
  399. 'nl':
  400. 'Je persoonlijke agenda met evenementen van je favoriete gelegenheden en gemeenten.',
  401. 'en': '',
  402. },
  403. '9wq117bv': {
  404. 'nl': 'Favoriete gemeenten',
  405. 'en': '',
  406. },
  407. 'o7pt2vls': {
  408. 'nl': 'De gemeentes die je hebt gemarkeerd als favoriet.',
  409. 'en': '',
  410. },
  411. 'ygk8aifq': {
  412. 'nl': 'Favoriete Gelegenheden',
  413. 'en': '',
  414. },
  415. 'gyuds6ee': {
  416. 'nl': 'Hello World',
  417. 'en': '',
  418. },
  419. 'xyig2ny4': {
  420. 'nl': 'Home',
  421. 'en': '',
  422. },
  423. },
  424. // kanweg
  425. {
  426. '3f7lzegf': {
  427. 'nl': 'Home',
  428. 'en': '',
  429. },
  430. },
  431. // PUitgaantabelKaartComponent
  432. {
  433. '4lehigdg': {
  434. 'nl': ', ',
  435. 'en': ', ',
  436. },
  437. },
  438. // SelectStateDropDownComponent
  439. {
  440. 'duloakue': {
  441. 'nl': 'Select...',
  442. 'en': '',
  443. },
  444. 'suwn4gos': {
  445. 'nl': 'Search...',
  446. 'en': '',
  447. },
  448. 'xtp0toaj': {
  449. 'nl': 'Option 1',
  450. 'en': '',
  451. },
  452. 'sfmdjcb4': {
  453. 'nl': 'Option 2',
  454. 'en': '',
  455. },
  456. 'pbmts7dk': {
  457. 'nl': 'Option 3',
  458. 'en': '',
  459. },
  460. '1rva6d4m': {
  461. 'nl': 'Select...',
  462. 'en': '',
  463. },
  464. 'um0h0p25': {
  465. 'nl': 'Search...',
  466. 'en': '',
  467. },
  468. 'fjaz0tsc': {
  469. 'nl': 'Option 1',
  470. 'en': '',
  471. },
  472. '8hcfb8cu': {
  473. 'nl': 'Option 2',
  474. 'en': '',
  475. },
  476. 'cpdux64t': {
  477. 'nl': 'Option 3',
  478. 'en': '',
  479. },
  480. 'p3ia66ku': {
  481. 'nl': 'Toepassen',
  482. 'en': '',
  483. },
  484. },
  485. // drawerComponent
  486. {
  487. 'j0ompw01': {
  488. 'nl': 'Zoek stad',
  489. 'en': 'Zoek stad',
  490. },
  491. 'm5il5pqx': {
  492. 'nl': '',
  493. 'en': '',
  494. },
  495. '5xqi2sto': {
  496. 'nl': 'Home',
  497. 'en': 'Home',
  498. },
  499. 'zorwzjtq': {
  500. 'nl': '',
  501. 'en': '',
  502. },
  503. '7pacsyhe': {
  504. 'nl': 'Favorieten',
  505. 'en': 'Home',
  506. },
  507. 'm8h5x9ts': {
  508. 'nl': '',
  509. 'en': '',
  510. },
  511. '4u9vsobq': {
  512. 'nl': 'Provincie',
  513. 'en': 'Provincie',
  514. },
  515. 'scozdjf2': {
  516. 'nl': '',
  517. 'en': '',
  518. },
  519. '8luezemw': {
  520. 'nl': 'Uitgaan',
  521. 'en': 'Uitgaan',
  522. },
  523. 'f2n2zs5x': {
  524. 'nl': '',
  525. 'en': '',
  526. },
  527. 'rb8etfad': {
  528. 'nl': 'Activiteiten',
  529. 'en': 'Activiteiten',
  530. },
  531. '9hgqcibm': {
  532. 'nl': '',
  533. 'en': '',
  534. },
  535. 'l4upasn8': {
  536. 'nl': 'Cultuur',
  537. 'en': 'Cultuur',
  538. },
  539. '5unk9wxy': {
  540. 'nl': '',
  541. 'en': '',
  542. },
  543. '0zbg44er': {
  544. 'nl': 'Films',
  545. 'en': 'Films',
  546. },
  547. 'gy0c8dfg': {
  548. 'nl': '',
  549. 'en': '',
  550. },
  551. 'zguubv8h': {
  552. 'nl': 'Jeugd',
  553. 'en': 'Jeugd',
  554. },
  555. 'bmdhe1w3': {
  556. 'nl': '',
  557. 'en': '',
  558. },
  559. 'mqf3caeh': {
  560. 'nl': 'Horeca',
  561. 'en': 'Horeca',
  562. },
  563. 'ypp8cg7h': {
  564. 'nl': '',
  565. 'en': '',
  566. },
  567. 'qoszyexg': {
  568. 'nl': 'Gemeente',
  569. 'en': 'Gemeente',
  570. },
  571. 'dpn5svdo': {
  572. 'nl': '',
  573. 'en': '',
  574. },
  575. 'f2xucb65': {
  576. 'nl': 'Uitgaan',
  577. 'en': 'Uitgaan',
  578. },
  579. '0rcz22fx': {
  580. 'nl': '',
  581. 'en': '',
  582. },
  583. 'aco5j6v5': {
  584. 'nl': 'Activiteiten',
  585. 'en': 'Activiteiten',
  586. },
  587. 'mkcafscy': {
  588. 'nl': '',
  589. 'en': '',
  590. },
  591. 'u6kma8y1': {
  592. 'nl': 'Cultuur',
  593. 'en': 'Cultuur',
  594. },
  595. '6hdsapmc': {
  596. 'nl': '',
  597. 'en': '',
  598. },
  599. 'hpm7mxhj': {
  600. 'nl': 'Films',
  601. 'en': 'Films',
  602. },
  603. 'wfmu8ldt': {
  604. 'nl': '',
  605. 'en': '',
  606. },
  607. 'clxcjmfh': {
  608. 'nl': 'Jeugd',
  609. 'en': 'Jeugd',
  610. },
  611. 'fuiykay7': {
  612. 'nl': '',
  613. 'en': '',
  614. },
  615. 'mk70rozo': {
  616. 'nl': 'Horeca',
  617. 'en': 'Horeca',
  618. },
  619. 'kknwn00s': {
  620. 'nl': '',
  621. 'en': '',
  622. },
  623. 't46xiboh': {
  624. 'nl': 'Thuis bezorgen',
  625. 'en': 'Thuis bezorgen',
  626. },
  627. '18zxga44': {
  628. 'nl': '',
  629. 'en': '',
  630. },
  631. '0xszp35t': {
  632. 'nl': 'Mijn Account',
  633. 'en': 'Mijn Account',
  634. },
  635. 'vmbtb6ah': {
  636. 'nl': 'Terug',
  637. 'en': '',
  638. },
  639. '7qpu1l01': {
  640. 'nl': 'v0001',
  641. 'en': 'v0001',
  642. },
  643. },
  644. // EvenementComponent
  645. {
  646. 'nghx1743': {
  647. 'nl': 'entreetoelichting',
  648. 'en': '',
  649. },
  650. 'y02m0qh0': {
  651. 'nl': '15 euro',
  652. 'en': '',
  653. },
  654. 'izrkv2a9': {
  655. 'nl': 'Website',
  656. 'en': '',
  657. },
  658. 'lrjms1by': {
  659. 'nl': 'Hello World Contactveld',
  660. 'en': '',
  661. },
  662. },
  663. // EvenementHorecagelegenheid
  664. {
  665. 'ubuux42u': {
  666. 'nl': 'Info',
  667. 'en': 'Info',
  668. },
  669. 'lo8ciqtb': {
  670. 'nl': 'Entree',
  671. 'en': '',
  672. },
  673. 'au8x5mei': {
  674. 'nl': 'Contact',
  675. 'en': '',
  676. },
  677. '8tvvqu63': {
  678. 'nl': 'Facebook',
  679. 'en': '',
  680. },
  681. 'kp1lfaac': {
  682. 'nl': 'Instagram',
  683. 'en': '',
  684. },
  685. 'ktqsytma': {
  686. 'nl': 'X/Twitter',
  687. 'en': '',
  688. },
  689. 'vkwayrhq': {
  690. 'nl': 'Website',
  691. 'en': '',
  692. },
  693. 'cxpo1x6d': {
  694. 'nl': 'Website',
  695. 'en': '',
  696. },
  697. 'mlojriz0': {
  698. 'nl': 'Openingstijden',
  699. 'en': 'Openingstijden',
  700. },
  701. 'axwdkgtg': {
  702. 'nl': 'Hello World',
  703. 'en': '',
  704. },
  705. '5tdut8bf': {
  706. 'nl': 'Bezorgen',
  707. 'en': 'Bezorgen',
  708. },
  709. },
  710. // EvenementInfo
  711. {
  712. 'gpbaiwi9': {
  713. 'nl': 'Entree: ',
  714. 'en': '',
  715. },
  716. 'khjv0wcp': {
  717. 'nl': 'Website',
  718. 'en': '',
  719. },
  720. },
  721. // HorecagelegenheidoverzichtKaart
  722. {
  723. 'ujd0p09x': {
  724. 'nl': 'MessageFavoriet...',
  725. 'en': '',
  726. },
  727. },
  728. // GeenEvenementenComponent
  729. {
  730. '0zgufytz': {
  731. 'nl':
  732. 'Geen evenementen gevonden. Kijk bij de provincie of er iets bij u in de buurt is!',
  733. 'en': '',
  734. },
  735. },
  736. // HeaderButtonsComponent
  737. {
  738. '17msrach': {
  739. 'nl': 'Menu openen',
  740. 'en': '',
  741. },
  742. 'f8ay39rg': {
  743. 'nl': 'Terug',
  744. 'en': '',
  745. },
  746. },
  747. // HomeUitgaantabelKaartComponent
  748. {
  749. 's4nkp0pb': {
  750. 'nl': ', ',
  751. 'en': ', ',
  752. },
  753. },
  754. // Miscellaneous
  755. {
  756. '95e9zpp5': {
  757. 'nl': '',
  758. 'en': '',
  759. },
  760. 'hi047wuv': {
  761. 'nl': '',
  762. 'en': '',
  763. },
  764. '3vfdatr8': {
  765. 'nl': '',
  766. 'en': '',
  767. },
  768. '00waee4o': {
  769. 'nl': '',
  770. 'en': '',
  771. },
  772. 'pv9kzkyy': {
  773. 'nl': '',
  774. 'en': '',
  775. },
  776. 'pnj7ud5u': {
  777. 'nl': '',
  778. 'en': '',
  779. },
  780. '6gi5ggfb': {
  781. 'nl': '',
  782. 'en': '',
  783. },
  784. 'r2ktdanq': {
  785. 'nl': '',
  786. 'en': '',
  787. },
  788. 'baxrlb7e': {
  789. 'nl': '',
  790. 'en': '',
  791. },
  792. '91wp95hv': {
  793. 'nl': '',
  794. 'en': '',
  795. },
  796. '3g8g1qpr': {
  797. 'nl': '',
  798. 'en': '',
  799. },
  800. 'z7adjbl8': {
  801. 'nl': '',
  802. 'en': '',
  803. },
  804. '4mmqjh9z': {
  805. 'nl': '',
  806. 'en': '',
  807. },
  808. '9fvdbrm6': {
  809. 'nl': '',
  810. 'en': '',
  811. },
  812. 'vtu2d65x': {
  813. 'nl': '',
  814. 'en': '',
  815. },
  816. '6653976d': {
  817. 'nl': '',
  818. 'en': '',
  819. },
  820. '16p7r73f': {
  821. 'nl': '',
  822. 'en': '',
  823. },
  824. '35po7r81': {
  825. 'nl': '',
  826. 'en': '',
  827. },
  828. '87zjalze': {
  829. 'nl': '',
  830. 'en': '',
  831. },
  832. 'fikchxg8': {
  833. 'nl': '',
  834. 'en': '',
  835. },
  836. 'rzevhc69': {
  837. 'nl': '',
  838. 'en': '',
  839. },
  840. '6f0en17o': {
  841. 'nl': '',
  842. 'en': '',
  843. },
  844. '5419dptj': {
  845. 'nl': '',
  846. 'en': '',
  847. },
  848. 'xbrp633k': {
  849. 'nl': '',
  850. 'en': '',
  851. },
  852. 'wqfb29ed': {
  853. 'nl': '',
  854. 'en': '',
  855. },
  856. },
  857. ].reduce((a, b) => a..addAll(b));