1
0

vscode-nls.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*---------------------------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Licensed under the MIT License. See License.txt in the project root for license information.
  4. *--------------------------------------------------------------------------------------------*/
  5. export interface Options {
  6. locale?: string;
  7. cacheLanguageResolution?: boolean;
  8. }
  9. export interface LocalizeInfo {
  10. key: string;
  11. comment: string[];
  12. }
  13. export interface LocalizeFunc {
  14. (info: LocalizeInfo, message: string, ...args: any[]): string;
  15. (key: string, message: string, ...args: any[]): string;
  16. }
  17. export interface LoadFunc {
  18. (file?: string): LocalizeFunc;
  19. }
  20. function format(message: string, args: any[]): string {
  21. let result: string;
  22. if (args.length === 0) {
  23. result = message;
  24. } else {
  25. result = message.replace(/\{(\d+)\}/g, (match, rest) => {
  26. let index = rest[0];
  27. return typeof args[index] !== 'undefined' ? args[index] : match;
  28. });
  29. }
  30. return result;
  31. }
  32. function localize(key: string | LocalizeInfo, message: string, ...args: any[]): string {
  33. return format(message, args);
  34. }
  35. export function loadMessageBundle(file?: string): LocalizeFunc {
  36. return localize;
  37. }
  38. export function config(opt?: Options | string): LoadFunc {
  39. return loadMessageBundle;
  40. }