12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- export interface Options {
- locale?: string;
- cacheLanguageResolution?: boolean;
- }
- export interface LocalizeInfo {
- key: string;
- comment: string[];
- }
- export interface LocalizeFunc {
- (info: LocalizeInfo, message: string, ...args: any[]): string;
- (key: string, message: string, ...args: any[]): string;
- }
- export interface LoadFunc {
- (file?: string): LocalizeFunc;
- }
- function format(message: string, args: any[]): string {
- let result: string;
- if (args.length === 0) {
- result = message;
- } else {
- result = message.replace(/\{(\d+)\}/g, (match, rest) => {
- let index = rest[0];
- return typeof args[index] !== 'undefined' ? args[index] : match;
- });
- }
- return result;
- }
- function localize(key: string | LocalizeInfo, message: string, ...args: any[]): string {
- return format(message, args);
- }
- export function loadMessageBundle(file?: string): LocalizeFunc {
- return localize;
- }
- export function config(opt?: Options | string): LoadFunc {
- return loadMessageBundle;
- }
|