Skip to content

Commit c2d981a

Browse files
committed
feat: dynamic locales
1 parent 64195cd commit c2d981a

8 files changed

Lines changed: 54 additions & 11 deletions

File tree

solution/localesModules/fr.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"locales":[ {
3+
"languages": [
4+
"fr",
5+
"fr-FR"
6+
],
7+
"intl": "fr-FR",
8+
"fileNames": "fr"
9+
}],
10+
"fePackages":["LanguageFrModule"]
11+
}

solution/modules/dhis2_etl.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"menus": [],
3+
"bePackages": ["dhis2_etl"],
4+
"roles": []
5+
}

solution/solutions/HF.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"./formal-sector-bundle.json",
77
"./healthfinancing-bundle.json",
88
"./core-bundle.json",
9-
"../sources/main-menus.json"
9+
"../sources/main-menus.json",
10+
"../localesModules/fr.json"
1011
],
1112
"services":["db"],
1213
"fePackageSource":{

solution/solutions/SR.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
},
1111
"solutions": [
1212
"./core-bundle.json",
13-
"../sources/main-menus.json"
13+
"../sources/main-menus.json",
14+
"../localesModules/fr.json"
1415
],
1516
"services":["db"],
1617
"moduleConfiguration": {

solution/solutions/claim-ai.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,4 @@
1212
"./claim-ai-bundle.json",
1313
"../sources/main-menus.json"
1414
],
15-
"services": ["db"],
16-
"fePackageSource": {}
17-
}
15+
"services": ["db"]}

solution/solutions/core-bundle.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,14 @@
1515
],
1616
"moduleConfiguration": {
1717
"logo": "./sources/logo/openIMIS.png"
18-
}
18+
},
19+
"locales": [
20+
{
21+
"languages": [
22+
"en",
23+
"en-GB"
24+
],
25+
"intl": "en-GB",
26+
"fileNames": "en"
27+
}]
1928
}

solution/solutions/coreMIS.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"./social-protection-bundle.json",
88
"./good-distribution-bundle.json",
99
"./core-bundle.json",
10-
"../sources/main-menus.json"
10+
"../sources/main-menus.json",
11+
"../localesModules/fr.json"
1112
],
1213
"services":["db"],
1314
"moduleConfiguration": {

solutionBuilder.js

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,9 @@ async function processSolutions(
368368
Array.prototype.push.apply(merged.bePackagesList,result.bePackagesList);
369369
Object.assign(merged.bePackagesDefDict, result.bePackagesDefDict);
370370
Array.prototype.push.apply(merged.fePackagesList,result.fePackagesList);
371+
Array.prototype.push.apply(merged.locales,result.locales);
372+
373+
371374
Object.assign(merged.fePackagesDefDict, result.fePackagesDefDict);
372375
Array.prototype.push.apply(merged.servicesList,result.servicesList);
373376
for (let idx in result.servicesDefDict){
@@ -391,6 +394,7 @@ async function processSolutions(
391394
}
392395
let NPMModules = new Set()
393396
merged.fePackagesList = merged.fePackagesList.filter((item, index) => merged.fePackagesList.indexOf(item) === index)
397+
394398
for (let idx in merged.fePackagesList){
395399
fePackage = merged.fePackagesList[idx]
396400
NPMModules.add(getFePackageConf(fePackage, merged.fePackagesDefDict[fePackage], branch))
@@ -406,10 +410,7 @@ async function processSolutions(
406410
if(NPMModules.size>0){
407411
output['fe-openimis.json'] ={
408412
"modules": [...NPMModules],
409-
"locales": [
410-
{ "languages": ["en", "en-GB"], "intl": "en-GB", "fileNames": "en" },
411-
{ "languages": ["fr", "fr-FR"], "intl": "fr-FR", "fileNames": "fr" }
412-
]
413+
"locales": [...merged.locales]
413414
};
414415
}
415416
if(services){
@@ -458,6 +459,7 @@ async function mergeSolutions(
458459
moduleRefDict = {},
459460
bePackagesList = new Set(), bePackagesDefDict = {},
460461
fePackagesList = new Set(), fePackagesDefDict = {},
462+
locales = new Set(),
461463
servicesList = new Set(), servicesDefDict = {},
462464
initData = new Set())
463465
{
@@ -493,6 +495,7 @@ async function mergeSolutions(
493495
moduleRefDict,
494496
bePackagesList, bePackagesDefDict,
495497
fePackagesList, fePackagesDefDict,
498+
locales,
496499
servicesList, servicesDefDict,
497500
initData,
498501
);
@@ -502,6 +505,7 @@ async function mergeSolutions(
502505
bePackagesList = result.bePackagesList;
503506
bePackagesDefDict = result.bePackagesDefDict;
504507
fePackagesList = result.fePackagesList;
508+
locales = result.locales;
505509
fePackagesDefDict = result.fePackagesDefDict;
506510
servicesList = result.servicesList;
507511
servicesDefDict = result.servicesDefDict;
@@ -522,6 +526,18 @@ async function mergeSolutions(
522526
for (let key in solution.bePackageDefinitions || {}) {
523527
bePackagesDefDict[key] = solution.bePackageDefinitions[key];
524528
}
529+
// Merge arrays and remove duplicates based on locale.intl
530+
locales = [...(solution.locales || []), ...locales];
531+
532+
// Use reduce to create a dictionary with intl as the key
533+
const localesDict = locales.reduce((dict, locale) => {
534+
dict[locale.intl] = locale;
535+
return dict;
536+
}, {});
537+
538+
// Convert dictionary values back to an array
539+
locales = Object.values(localesDict);
540+
525541
servicesList = [...(solution.services || []), ...servicesList]
526542
for (let key in solution.serviceDefinitions || {}) {
527543
servicesDefDict[key] = solution.serviceDefinitions[key];
@@ -541,6 +557,7 @@ async function mergeSolutions(
541557
moduleRefDict,
542558
bePackagesList, bePackagesDefDict,
543559
fePackagesList, fePackagesDefDict,
560+
locales,
544561
servicesList, servicesDefDict,
545562
initData
546563
};

0 commit comments

Comments
 (0)