Skip to content

Commit 90999f7

Browse files
committed
Fix #30: Add missing keys to default language
1 parent 814462f commit 90999f7

File tree

5 files changed

+34
-22
lines changed

5 files changed

+34
-22
lines changed

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@ app
3333
    | es.js
3434
```
3535

36-
You need to [set the default langage](#how-to-set-the-default-language) and make sure it contains every
37-
needed string by your application, [including the application name](#how-to-localize-the-application-name),
38-
to avoid any error.
36+
You need to [set the default langage](#how-to-set-the-default-language) and make sure it contains
37+
the [application name](#how-to-localize-the-application-name) to avoid any error.
3938

4039
### Angular
4140
#### app.module.ts

demo/app/i18n/fr.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"hello": {
33
"world": "Bonjour le monde !"
4-
}
4+
},
5+
"not found in en.default": "pas trouvé dans en.default"
56
}

hooks/converter.android.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import * as fs from "fs";
22
import * as path from "path";
33

4-
import { ConverterCommon, I18nEntries, SupportedLanguages } from "./converter.common";
4+
import { ConverterCommon, I18nEntries, Languages } from "./converter.common";
55
import { encodeKey, encodeValue } from "../src/resource.android";
66

77
export class ConverterAndroid extends ConverterCommon {
8-
protected cleanObsoleteResourcesFiles(resourcesDirectory: string, supportedLanguages: SupportedLanguages): this {
8+
protected cleanObsoleteResourcesFiles(resourcesDirectory: string, languages: Languages): this {
99
fs.readdirSync(resourcesDirectory).filter(fileName => {
1010
const match = /^values-(.+)$/.exec(fileName);
11-
return match && !supportedLanguages.has(match[1]);
11+
return match && !languages.has(match[1]);
1212
}).map(fileName => {
1313
return path.join(resourcesDirectory, fileName);
1414
}).filter(filePath => {

hooks/converter.common.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export abstract class ConverterCommon extends EventEmitter {
3030

3131
protected abstract cleanObsoleteResourcesFiles(
3232
resourcesDirectory: string,
33-
supportedLanguages: SupportedLanguages
33+
languages: Languages
3434
): this;
3535

3636
protected abstract createLanguageResourcesFiles(
@@ -71,7 +71,7 @@ export abstract class ConverterCommon extends EventEmitter {
7171
}
7272

7373
let defaultLanguage = undefined;
74-
const supportedLanguages: SupportedLanguages = new Map();
74+
const languages: Languages = new Map();
7575

7676
fs.readdirSync(this.i18nDirectoryPath).map(fileName => {
7777
return path.join(this.i18nDirectoryPath, fileName);
@@ -83,37 +83,49 @@ export abstract class ConverterCommon extends EventEmitter {
8383
language = path.basename(language, ".default");
8484
defaultLanguage = language;
8585
}
86-
supportedLanguages.set(language, filePath);
86+
languages.set(language, this.loadLangage(filePath));
8787
});
8888

89-
if (supportedLanguages.size === 0) {
89+
if (languages.size === 0) {
9090
this.logger.warn(`'${this.i18nDirectoryPath}' is empty: nothing to localize`);
9191
return this;
9292
}
9393

9494
if (!defaultLanguage) {
95-
defaultLanguage = supportedLanguages.keys().next().value;
95+
defaultLanguage = languages.keys().next().value;
9696
this.logger.warn(`No file found with the .default extension: default langage set to '${defaultLanguage}'`);
9797
}
9898

99-
const defaultLanguageI18nEntries = this.loadLangage(supportedLanguages.get(defaultLanguage));
100-
this.createLanguageResourcesFiles(defaultLanguage, true, defaultLanguageI18nEntries);
99+
const defaultLanguageI18nEntries = languages.get(defaultLanguage);
101100

102-
supportedLanguages.forEach((filePath, language) => {
101+
languages.forEach((languageI18nEntries, language) => {
102+
if (language !== defaultLanguage) {
103+
languageI18nEntries.forEach((_, key) => {
104+
if (!defaultLanguageI18nEntries.has(key)) {
105+
this.logger.warn(key);
106+
defaultLanguageI18nEntries.set(key, key);
107+
}
108+
});
109+
}
110+
});
111+
112+
languages.forEach((languageI18nEntries, language) => {
103113
if (language !== defaultLanguage) {
104-
const languageI18nEntries = this.loadLangage(filePath);
105114
defaultLanguageI18nEntries.forEach((value, key) => {
106115
if (!languageI18nEntries.has(key)) {
107116
languageI18nEntries.set(key, value);
108117
}
109118
});
110-
this.createLanguageResourcesFiles(language, false, languageI18nEntries);
111119
}
112120
});
113121

122+
languages.forEach((languageI18nEntries, language) => {
123+
this.createLanguageResourcesFiles(language, language === defaultLanguage, languageI18nEntries);
124+
});
125+
114126
[this.appResourcesDirectoryPath, this.appResourcesDestinationDirectoryPath].forEach(resourcesDirectoryPath => {
115127
if (fs.existsSync(resourcesDirectoryPath) && fs.statSync(resourcesDirectoryPath).isDirectory()) {
116-
this.cleanObsoleteResourcesFiles(resourcesDirectoryPath, supportedLanguages);
128+
this.cleanObsoleteResourcesFiles(resourcesDirectoryPath, languages);
117129
}
118130
});
119131

@@ -146,4 +158,4 @@ export abstract class ConverterCommon extends EventEmitter {
146158
}
147159

148160
export type I18nEntries = Map<string, string>;
149-
export type SupportedLanguages = Map<string, string>;
161+
export type Languages = Map<string, I18nEntries>;

hooks/converter.ios.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import * as fs from "fs";
22
import * as path from "path";
33
import * as plist from "simple-plist";
44

5-
import { ConverterCommon, I18nEntries, SupportedLanguages } from "./converter.common";
5+
import { ConverterCommon, I18nEntries, Languages } from "./converter.common";
66
import { encodeKey, encodeValue } from "../src/resource.ios";
77

88
export class ConverterIOS extends ConverterCommon {
9-
protected cleanObsoleteResourcesFiles(resourcesDirectory: string, supportedLanguages: SupportedLanguages): this {
9+
protected cleanObsoleteResourcesFiles(resourcesDirectory: string, languages: Languages): this {
1010
fs.readdirSync(resourcesDirectory).filter(fileName => {
1111
const match = /^(.+)\.lproj$/.exec(fileName);
12-
return match && !supportedLanguages.has(match[1]);
12+
return match && !languages.has(match[1]);
1313
}).map(fileName => {
1414
return path.join(resourcesDirectory, fileName);
1515
}).filter(filePath => {

0 commit comments

Comments
 (0)