poker-html-client
Version:
HTML client for online poker
69 lines (58 loc) • 1.95 kB
text/typescript
declare var messages: any;
export class LanguageManager {
public currentLang: string;
constructor() {
this.currentLang = "ru_RU";
}
public setLang(lang: string): void {
this.currentLang = lang;
}
public getProvider() {
return messages;
}
public setProvider(provider: any) {
messages = provider;
}
public getMessage(message: string, parameters = null): string {
if (message == null) {
return "";
}
const parts: string[] = message.split(".");
let currentProvider = this.getProvider();
for (let i = 0; i < parts.length; i++) {
const propertyName = parts[i];
currentProvider = currentProvider[propertyName];
if (currentProvider == null) {
break;
}
}
if (currentProvider == null) {
return this.bind(message, parameters);
}
return this.bind(currentProvider, parameters);
}
private bind(template: string, parameters: any) {
if (parameters == null) {
return template;
}
let result = template;
for (const propName in parameters) {
if (parameters.hasOwnProperty(propName)) {
let value = parameters[propName];
if (value === null || value === undefined) {
value = "";
} else {
value = value.toString();
}
result = result.replace("#" + propName + "#", value);
// Bind using old syntax.
result = result.replace("#" + propName, value);
}
}
return result;
}
}
export const l = new LanguageManager();
export function _(message: string, parameters = null) {
return l.getMessage(message, parameters);
}