1
0
mirror of https://github.com/bitwarden/browser synced 2026-01-04 09:33:27 +00:00

i18n placeholder support. 2fa options selection.

This commit is contained in:
Kyle Spearrin
2018-02-02 12:01:55 -05:00
parent fd15c09406
commit 3e408c4ea7
17 changed files with 254 additions and 30 deletions

View File

@@ -41,17 +41,33 @@ export class I18nService implements I18nServiceAbstraction {
}
}
t(id: string): string {
return this.translate(id);
t(id: string, p1?: string, p2?: string, p3?: string): string {
return this.translate(id, p1, p2, p3);
}
translate(id: string): string {
translate(id: string, p1?: string, p2?: string, p3?: string): string {
let result: string;
if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {
return this.localeMessages[id];
result = this.localeMessages[id];
} else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {
return this.defaultMessages[id];
result = this.defaultMessages[id];
} else {
result = '';
}
return '';
if (result !== '') {
if (p1 != null) {
result = result.split('__$1__').join(p1);
}
if (p2 != null) {
result = result.split('__$2__').join(p2);
}
if (p3 != null) {
result = result.split('__$3__').join(p3);
}
}
return result;
}
private loadMessages(locale: string, messagesObj: any): Promise<any> {
@@ -59,8 +75,25 @@ export class I18nService implements I18nServiceAbstraction {
const filePath = path.join(__dirname, this.localesDirectory + '/' + formattedLocale + '/messages.json');
const locales = (window as any).require(filePath);
for (const prop in locales) {
if (locales.hasOwnProperty(prop)) {
messagesObj[prop] = locales[prop].message;
if (!locales.hasOwnProperty(prop)) {
continue;
}
messagesObj[prop] = locales[prop].message;
if (locales[prop].placeholders) {
for (const placeProp in locales[prop].placeholders) {
if (!locales[prop].placeholders.hasOwnProperty(placeProp) ||
!locales[prop].placeholders[placeProp].content) {
continue;
}
const replaceToken = '\\$' + placeProp.toUpperCase() + '\\$';
let replaceContent = locales[prop].placeholders[placeProp].content;
if (replaceContent === '$1' || replaceContent === '$2' || replaceContent === '$3') {
replaceContent = '__' + replaceContent + '__';
}
messagesObj[prop] = messagesObj[prop].replace(new RegExp(replaceToken, 'g'), replaceContent);
}
}
}