@lingui/core 3.17.1 → 4.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/index.js +6 -17
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +6 -17
- package/build/esm/index.js.map +1 -1
- package/build/index.d.ts +3 -5
- package/package.json +6 -3
- package/CHANGELOG.md +0 -411
package/build/cjs/index.js
CHANGED
|
@@ -264,38 +264,27 @@ class I18n extends EventEmitter {
|
|
|
264
264
|
let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
265
265
|
let {
|
|
266
266
|
message,
|
|
267
|
-
formats
|
|
268
|
-
context
|
|
267
|
+
formats
|
|
269
268
|
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
270
269
|
if (!isString(id)) {
|
|
271
270
|
values = id.values || values;
|
|
272
271
|
message = id.message;
|
|
273
|
-
context = id.context;
|
|
274
272
|
id = id.id;
|
|
275
273
|
}
|
|
276
|
-
const messageMissing = !
|
|
277
|
-
const contextualMessageMissing = context && !this.messages[context][id];
|
|
278
|
-
const messageUnreachable = contextualMessageMissing || messageMissing;
|
|
274
|
+
const messageMissing = !this.messages[id];
|
|
279
275
|
|
|
280
276
|
// replace missing messages with custom message for debugging
|
|
281
277
|
const missing = this._missing;
|
|
282
|
-
if (missing &&
|
|
283
|
-
return isFunction(missing) ? missing(this._locale, id
|
|
278
|
+
if (missing && messageMissing) {
|
|
279
|
+
return isFunction(missing) ? missing(this._locale, id) : missing;
|
|
284
280
|
}
|
|
285
|
-
if (
|
|
281
|
+
if (messageMissing) {
|
|
286
282
|
this.emit("missing", {
|
|
287
283
|
id,
|
|
288
|
-
context,
|
|
289
284
|
locale: this._locale
|
|
290
285
|
});
|
|
291
286
|
}
|
|
292
|
-
let translation;
|
|
293
|
-
if (context && !contextualMessageMissing) {
|
|
294
|
-
// context is like a subdirectory of other keys
|
|
295
|
-
translation = this.messages[context][id] || message || id;
|
|
296
|
-
} else {
|
|
297
|
-
translation = this.messages[id] || message || id;
|
|
298
|
-
}
|
|
287
|
+
let translation = this.messages[id] || message || id;
|
|
299
288
|
if (process.env.NODE_ENV !== "production") {
|
|
300
289
|
translation = isString(translation) ? compile.compileMessage(translation) : translation;
|
|
301
290
|
}
|
package/build/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(locales?: string | string[], options: T = {} as T) {\n const localeKey = Array.isArray(locales) ? locales.sort().join(\"-\") : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, LocaleData, Locales, Values } from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(\n `Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`\n )\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) =>\n number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) =>\n date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(locale, locales, values, formats, localeData)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type { PluralCategory } from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n context?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n context?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n context?: string\n}\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: string | ((message: string, id: string, context: string) => string)\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: string | ((message, id, context) => string)\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats, context }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n context = id.context\n id = id.id\n }\n\n const messageMissing = !context && !this.messages[id]\n const contextualMessageMissing = context && !this.messages[context][id]\n const messageUnreachable = contextualMessageMissing || messageMissing\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageUnreachable) {\n return isFunction(missing) ? missing(this._locale, id, context) : missing\n }\n\n if (messageUnreachable) {\n this.emit(\"missing\", { id, context, locale: this._locale })\n }\n\n let translation\n\n if (context && !contextualMessageMissing) {\n // context is like a subdirectory of other keys\n translation = this.messages[context][id] || message || id\n } else {\n translation = this.messages[id] || message || id\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","_locale","_locales","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","warn","_","id","messageMissing","contextualMessageMissing","messageUnreachable","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(locales?: string | string[], options: T = {} as T) {\n const localeKey = Array.isArray(locales) ? locales.sort().join(\"-\") : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, LocaleData, Locales, Values } from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(\n `Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`\n )\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) =>\n number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) =>\n date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(locale, locales, values, formats, localeData)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type { PluralCategory } from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n}\n\ntype MissingHandler = string | ((locale: string, id: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: MissingHandler\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: MissingHandler\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n id = id.id\n }\n\n const messageMissing = !this.messages[id]\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing\n }\n\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale })\n }\n\n let translation = this.messages[id] || message || id\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","_locale","_locales","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","warn","_","id","messageMissing","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
package/build/esm/index.js
CHANGED
|
@@ -262,38 +262,27 @@ class I18n extends EventEmitter {
|
|
|
262
262
|
let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
263
263
|
let {
|
|
264
264
|
message,
|
|
265
|
-
formats
|
|
266
|
-
context
|
|
265
|
+
formats
|
|
267
266
|
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
268
267
|
if (!isString(id)) {
|
|
269
268
|
values = id.values || values;
|
|
270
269
|
message = id.message;
|
|
271
|
-
context = id.context;
|
|
272
270
|
id = id.id;
|
|
273
271
|
}
|
|
274
|
-
const messageMissing = !
|
|
275
|
-
const contextualMessageMissing = context && !this.messages[context][id];
|
|
276
|
-
const messageUnreachable = contextualMessageMissing || messageMissing;
|
|
272
|
+
const messageMissing = !this.messages[id];
|
|
277
273
|
|
|
278
274
|
// replace missing messages with custom message for debugging
|
|
279
275
|
const missing = this._missing;
|
|
280
|
-
if (missing &&
|
|
281
|
-
return isFunction(missing) ? missing(this._locale, id
|
|
276
|
+
if (missing && messageMissing) {
|
|
277
|
+
return isFunction(missing) ? missing(this._locale, id) : missing;
|
|
282
278
|
}
|
|
283
|
-
if (
|
|
279
|
+
if (messageMissing) {
|
|
284
280
|
this.emit("missing", {
|
|
285
281
|
id,
|
|
286
|
-
context,
|
|
287
282
|
locale: this._locale
|
|
288
283
|
});
|
|
289
284
|
}
|
|
290
|
-
let translation;
|
|
291
|
-
if (context && !contextualMessageMissing) {
|
|
292
|
-
// context is like a subdirectory of other keys
|
|
293
|
-
translation = this.messages[context][id] || message || id;
|
|
294
|
-
} else {
|
|
295
|
-
translation = this.messages[id] || message || id;
|
|
296
|
-
}
|
|
285
|
+
let translation = this.messages[id] || message || id;
|
|
297
286
|
if (process.env.NODE_ENV !== "production") {
|
|
298
287
|
translation = isString(translation) ? compileMessage(translation) : translation;
|
|
299
288
|
}
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(locales?: string | string[], options: T = {} as T) {\n const localeKey = Array.isArray(locales) ? locales.sort().join(\"-\") : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, LocaleData, Locales, Values } from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(\n `Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`\n )\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) =>\n number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) =>\n date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(locale, locales, values, formats, localeData)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type { PluralCategory } from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n context?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n context?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n context?: string\n}\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: string | ((message: string, id: string, context: string) => string)\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: string | ((message, id, context) => string)\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats, context }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n context = id.context\n id = id.id\n }\n\n const messageMissing = !context && !this.messages[id]\n const contextualMessageMissing = context && !this.messages[context][id]\n const messageUnreachable = contextualMessageMissing || messageMissing\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageUnreachable) {\n return isFunction(missing) ? missing(this._locale, id, context) : missing\n }\n\n if (messageUnreachable) {\n this.emit(\"missing\", { id, context, locale: this._locale })\n }\n\n let translation\n\n if (context && !contextualMessageMissing) {\n // context is like a subdirectory of other keys\n translation = this.messages[context][id] || message || id\n } else {\n translation = this.messages[id] || message || id\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","_locale","_locales","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","warn","_","id","messageMissing","contextualMessageMissing","messageUnreachable","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(locales?: string | string[], options: T = {} as T) {\n const localeKey = Array.isArray(locales) ? locales.sort().join(\"-\") : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, LocaleData, Locales, Values } from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(\n `Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`\n )\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) =>\n number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) =>\n date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(locale, locales, values, formats, localeData)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type { PluralCategory } from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n}\n\ntype MissingHandler = string | ((locale: string, id: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: MissingHandler\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: MissingHandler\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n id = id.id\n }\n\n const messageMissing = !this.messages[id]\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing\n }\n\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale })\n }\n\n let translation = this.messages[id] || message || id\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","_locale","_locales","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","warn","_","id","messageMissing","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -12,7 +12,6 @@ declare class EventEmitter<Events extends {
|
|
|
12
12
|
|
|
13
13
|
type MessageOptions = {
|
|
14
14
|
message?: string;
|
|
15
|
-
context?: string;
|
|
16
15
|
formats?: Formats;
|
|
17
16
|
};
|
|
18
17
|
type Locale = string;
|
|
@@ -34,20 +33,19 @@ type MessageDescriptor = {
|
|
|
34
33
|
id?: string;
|
|
35
34
|
comment?: string;
|
|
36
35
|
message?: string;
|
|
37
|
-
context?: string;
|
|
38
36
|
values?: Record<string, unknown>;
|
|
39
37
|
};
|
|
40
38
|
type MissingMessageEvent = {
|
|
41
39
|
locale: Locale;
|
|
42
40
|
id: string;
|
|
43
|
-
context?: string;
|
|
44
41
|
};
|
|
42
|
+
type MissingHandler = string | ((locale: string, id: string) => string);
|
|
45
43
|
type setupI18nProps = {
|
|
46
44
|
locale?: Locale;
|
|
47
45
|
locales?: Locales;
|
|
48
46
|
messages?: AllMessages;
|
|
49
47
|
localeData?: AllLocaleData;
|
|
50
|
-
missing?:
|
|
48
|
+
missing?: MissingHandler;
|
|
51
49
|
};
|
|
52
50
|
type Events = {
|
|
53
51
|
change: () => void;
|
|
@@ -71,7 +69,7 @@ declare class I18n extends EventEmitter<Events> {
|
|
|
71
69
|
load(allMessages: AllMessages): void;
|
|
72
70
|
load(locale: Locale, messages: Messages): void;
|
|
73
71
|
activate(locale: Locale, locales?: Locales): void;
|
|
74
|
-
_(id: MessageDescriptor | string, values?: Values | undefined, { message, formats
|
|
72
|
+
_(id: MessageDescriptor | string, values?: Values | undefined, { message, formats }?: MessageOptions | undefined): string;
|
|
75
73
|
date(value: string | Date, format?: Intl.DateTimeFormatOptions): string;
|
|
76
74
|
number(value: number, format?: Intl.NumberFormatOptions): string;
|
|
77
75
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingui/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-next.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"description": "I18n tools for javascript",
|
|
6
6
|
"main": "./build/cjs/index.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"url": "https://github.com/lingui/js-lingui/issues"
|
|
28
28
|
},
|
|
29
29
|
"engines": {
|
|
30
|
-
"node": ">=
|
|
30
|
+
"node": ">=16.0.0"
|
|
31
31
|
},
|
|
32
32
|
"exports": {
|
|
33
33
|
".": {
|
|
@@ -63,5 +63,8 @@
|
|
|
63
63
|
"@messageformat/parser": "^5.0.0",
|
|
64
64
|
"make-plural": "^6.2.2"
|
|
65
65
|
},
|
|
66
|
-
"
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@lingui/jest-mocks": "^3.0.3"
|
|
68
|
+
},
|
|
69
|
+
"gitHead": "637f5cf6beda9d4ebce4e15cd9fdaa23e404b660"
|
|
67
70
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
-
|
|
6
|
-
## [3.17.1](https://github.com/lingui/js-lingui/compare/v3.17.0...v3.17.1) (2023-02-07)
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @lingui/core
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# [3.17.0](https://github.com/lingui/js-lingui/compare/v3.16.1...v3.17.0) (2023-02-01)
|
|
15
|
-
|
|
16
|
-
**Note:** Version bump only for package @lingui/core
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## [3.16.1](https://github.com/lingui/js-lingui/compare/v3.16.0...v3.16.1) (2023-01-24)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### Bug Fixes
|
|
26
|
-
|
|
27
|
-
* **core:** sub entry export for react-native ([#1350](https://github.com/lingui/js-lingui/issues/1350)) ([c178ce3](https://github.com/lingui/js-lingui/commit/c178ce3cc91e64d190965dc684df74162cc17d02))
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# [3.16.0](https://github.com/lingui/js-lingui/compare/v3.15.0...v3.16.0) (2023-01-18)
|
|
34
|
-
|
|
35
|
-
**Note:** Version bump only for package @lingui/core
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
# [3.15.0](https://github.com/lingui/js-lingui/compare/v3.14.0...v3.15.0) (2022-11-07)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
### Bug Fixes
|
|
45
|
-
|
|
46
|
-
* Pass formatter to pluralization function ([#1294](https://github.com/lingui/js-lingui/issues/1294)) ([33af3ba](https://github.com/lingui/js-lingui/commit/33af3ba3dc22bd4128d98e061cb9d97f75c6503a))
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# [3.14.0](https://github.com/lingui/js-lingui/compare/v3.13.3...v3.14.0) (2022-06-22)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
### Bug Fixes
|
|
56
|
-
|
|
57
|
-
* Add extra package.json under `/esm` ([#1258](https://github.com/lingui/js-lingui/issues/1258)) ([80cd337](https://github.com/lingui/js-lingui/commit/80cd3378ceb5677bfa50b14f67e4e31703392298))
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
## [3.13.3](https://github.com/lingui/js-lingui/compare/v3.13.2...v3.13.3) (2022-04-24)
|
|
64
|
-
|
|
65
|
-
**Note:** Version bump only for package @lingui/core
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
## [3.13.2](https://github.com/lingui/js-lingui/compare/v3.13.1...v3.13.2) (2022-01-24)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
### Bug Fixes
|
|
75
|
-
|
|
76
|
-
* localeData interpolation broken ([457735b](https://github.com/lingui/js-lingui/commit/457735bb61f0a75d0ce176874b1c67a65c4b3084))
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
## [3.13.1](https://github.com/lingui/js-lingui/compare/v3.13.0...v3.13.1) (2022-01-21)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
### Bug Fixes
|
|
86
|
-
|
|
87
|
-
* i18n.activate should load instantly new messages ([#1182](https://github.com/lingui/js-lingui/issues/1182)) ([f8f47a2](https://github.com/lingui/js-lingui/commit/f8f47a2385fe3d8dd3395c493027de2492509325))
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
# [3.13.0](https://github.com/lingui/js-lingui/compare/v3.12.1...v3.13.0) (2021-11-26)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
### Features
|
|
97
|
-
|
|
98
|
-
* msgctxt support ([#1094](https://github.com/lingui/js-lingui/issues/1094)) ([8ee42cb](https://github.com/lingui/js-lingui/commit/8ee42cbfe26bc6d055748dcf2713ab8ade7ec827))
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
## [3.12.1](https://github.com/lingui/js-lingui/compare/v3.12.0...v3.12.1) (2021-09-28)
|
|
105
|
-
|
|
106
|
-
**Note:** Version bump only for package @lingui/core
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
# [3.12.0](https://github.com/lingui/js-lingui/compare/v3.11.1...v3.12.0) (2021-09-28)
|
|
113
|
-
|
|
114
|
-
**Note:** Version bump only for package @lingui/core
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
## [3.11.1](https://github.com/lingui/js-lingui/compare/v3.11.0...v3.11.1) (2021-09-07)
|
|
121
|
-
|
|
122
|
-
**Note:** Version bump only for package @lingui/core
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
# [3.11.0](https://github.com/lingui/js-lingui/compare/v3.10.4...v3.11.0) (2021-09-07)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
### Bug Fixes
|
|
132
|
-
|
|
133
|
-
* sideEffects to false for shrinking bundle size ([#1129](https://github.com/lingui/js-lingui/issues/1129)) ([57cd2e5](https://github.com/lingui/js-lingui/commit/57cd2e576945ba30aea30d5cf5bcb27d1f77fe4c))
|
|
134
|
-
* unicode chars were removed from .po files when extracting ([#1125](https://github.com/lingui/js-lingui/issues/1125)) ([d688329](https://github.com/lingui/js-lingui/commit/d688329c0457a080d5cd485a95e94ffa5e00c5ae))
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
## [3.10.4](https://github.com/lingui/js-lingui/compare/v3.10.3...v3.10.4) (2021-06-16)
|
|
141
|
-
|
|
142
|
-
**Note:** Version bump only for package @lingui/core
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
## [3.10.3](https://github.com/lingui/js-lingui/compare/v3.10.2...v3.10.3) (2021-06-14)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
### Bug Fixes
|
|
152
|
-
|
|
153
|
-
* add string return type to i18n._ ([#1081](https://github.com/lingui/js-lingui/issues/1081)) ([68d32d6](https://github.com/lingui/js-lingui/commit/68d32d63899c9a0b2c66891070831c6488a7d013))
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
## [3.10.2](https://github.com/lingui/js-lingui/compare/v3.10.1...v3.10.2) (2021-06-08)
|
|
160
|
-
|
|
161
|
-
**Note:** Version bump only for package @lingui/core
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
## [3.10.1](https://github.com/lingui/js-lingui/compare/v3.10.0...v3.10.1) (2021-06-08)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
### Bug Fixes
|
|
171
|
-
|
|
172
|
-
* reverts reduce size of ESM packages ([#1066](https://github.com/lingui/js-lingui/issues/1066)) ([3a057e0](https://github.com/lingui/js-lingui/commit/3a057e0c61224b98c93203e0d88136fa48f309ba))
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
# [3.10.0](https://github.com/lingui/js-lingui/compare/v3.9.0...v3.10.0) (2021-06-08)
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
### Bug Fixes
|
|
182
|
-
|
|
183
|
-
* reduce size of ESM packages ([#1066](https://github.com/lingui/js-lingui/issues/1066)) ([9990eba](https://github.com/lingui/js-lingui/commit/9990ebaa9d30f7e218c106a2abfd7ddbcf0e0170))
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
# [3.9.0](https://github.com/lingui/js-lingui/compare/v3.8.10...v3.9.0) (2021-05-18)
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
### Bug Fixes
|
|
193
|
-
|
|
194
|
-
* ESM dev entrypoint was causing unexpected behaviors ([#1059](https://github.com/lingui/js-lingui/issues/1059)) ([2b8d70b](https://github.com/lingui/js-lingui/commit/2b8d70b35ed103d94a2f88ea7c6813a29a1d5635))
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
## [3.8.10](https://github.com/lingui/js-lingui/compare/v3.8.9...v3.8.10) (2021-04-19)
|
|
201
|
-
|
|
202
|
-
**Note:** Version bump only for package @lingui/core
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
## [3.8.9](https://github.com/lingui/js-lingui/compare/v3.8.8...v3.8.9) (2021-04-09)
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
### Bug Fixes
|
|
212
|
-
|
|
213
|
-
* event emitter refactor (reverted) ([#1038](https://github.com/lingui/js-lingui/issues/1038)) ([f299493](https://github.com/lingui/js-lingui/commit/f299493999299fe9a7d0e01b9045e7f0a9813c6a))
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
## [3.8.8](https://github.com/lingui/js-lingui/compare/v3.8.7...v3.8.8) (2021-04-09)
|
|
220
|
-
|
|
221
|
-
**Note:** Version bump only for package @lingui/core
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
## [3.8.7](https://github.com/lingui/js-lingui/compare/v3.8.6...v3.8.7) (2021-04-09)
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
### Bug Fixes
|
|
231
|
-
|
|
232
|
-
* unicode chars in native environments + event emitter refactor ([#1036](https://github.com/lingui/js-lingui/issues/1036)) ([39fa90d](https://github.com/lingui/js-lingui/commit/39fa90d95c08f105f3f7feb17b65d9b8f916b73a))
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
## [3.8.6](https://github.com/lingui/js-lingui/compare/v3.8.5...v3.8.6) (2021-04-08)
|
|
239
|
-
|
|
240
|
-
**Note:** Version bump only for package @lingui/core
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
## [3.8.5](https://github.com/lingui/js-lingui/compare/v3.8.4...v3.8.5) (2021-04-08)
|
|
247
|
-
|
|
248
|
-
**Note:** Version bump only for package @lingui/core
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
## [3.8.4](https://github.com/lingui/js-lingui/compare/v3.8.3...v3.8.4) (2021-04-08)
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
### Bug Fixes
|
|
258
|
-
|
|
259
|
-
* undefined interpolation on t macro ([#1030](https://github.com/lingui/js-lingui/issues/1030)) ([194f9b3](https://github.com/lingui/js-lingui/commit/194f9b318434bcaf4b68af549a6ed246fed2be02))
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
## [3.8.3](https://github.com/lingui/js-lingui/compare/v3.8.2...v3.8.3) (2021-04-05)
|
|
266
|
-
|
|
267
|
-
**Note:** Version bump only for package @lingui/core
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
## [3.8.2](https://github.com/lingui/js-lingui/compare/v3.8.1...v3.8.2) (2021-03-31)
|
|
274
|
-
|
|
275
|
-
**Note:** Version bump only for package @lingui/core
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
## [3.8.1](https://github.com/lingui/js-lingui/compare/v3.8.0...v3.8.1) (2021-03-23)
|
|
282
|
-
|
|
283
|
-
**Note:** Version bump only for package @lingui/core
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
# [3.8.0](https://github.com/lingui/js-lingui/compare/v3.7.2...v3.8.0) (2021-03-23)
|
|
290
|
-
|
|
291
|
-
**Note:** Version bump only for package @lingui/core
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
## [3.7.2](https://github.com/lingui/js-lingui/compare/v3.7.1...v3.7.2) (2021-03-14)
|
|
298
|
-
|
|
299
|
-
**Note:** Version bump only for package @lingui/core
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
## [3.7.1](https://github.com/lingui/js-lingui/compare/v3.7.0...v3.7.1) (2021-03-07)
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
### Bug Fixes
|
|
309
|
-
|
|
310
|
-
* exports attribute on package.json, expo compat ([#997](https://github.com/lingui/js-lingui/issues/997)) ([79aa509](https://github.com/lingui/js-lingui/commit/79aa50998185847064d80f2a38be0ebcb64424f9))
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
# [3.7.0](https://github.com/lingui/js-lingui/compare/v3.6.0...v3.7.0) (2021-03-04)
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
### Features
|
|
320
|
-
|
|
321
|
-
* raise event on missing translation ([#993](https://github.com/lingui/js-lingui/issues/993)) ([ecf83c3](https://github.com/lingui/js-lingui/commit/ecf83c37e177cb10f157fb8913d73e18662e3ca4))
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
# [3.6.0](https://github.com/lingui/js-lingui/compare/v3.5.1...v3.6.0) (2021-02-23)
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
### Features
|
|
331
|
-
|
|
332
|
-
* ship universal modules with ESM ([#979](https://github.com/lingui/js-lingui/issues/979)) ([6cd5fe0](https://github.com/lingui/js-lingui/commit/6cd5fe0a71dd5cf7e0832bd3e9902a2f6ba789f6))
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
## [3.5.1](https://github.com/lingui/js-lingui/compare/v3.5.0...v3.5.1) (2021-02-09)
|
|
339
|
-
|
|
340
|
-
**Note:** Version bump only for package @lingui/core
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
# [3.5.0](https://github.com/lingui/js-lingui/compare/v3.4.0...v3.5.0) (2021-02-02)
|
|
347
|
-
|
|
348
|
-
**Note:** Version bump only for package @lingui/core
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
# [3.4.0](https://github.com/lingui/js-lingui/compare/v3.3.0...v3.4.0) (2021-01-13)
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
### Bug Fixes
|
|
358
|
-
|
|
359
|
-
* added return type to i18n._ ([#922](https://github.com/lingui/js-lingui/issues/922)) ([249c486](https://github.com/lingui/js-lingui/commit/249c486d258a4fb44bae1e3da1765e00003429a7))
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
# [3.3.0](https://github.com/lingui/js-lingui/compare/v3.2.3...v3.3.0) (2020-12-08)
|
|
366
|
-
|
|
367
|
-
**Note:** Version bump only for package @lingui/core
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
## [3.2.3](https://github.com/lingui/js-lingui/compare/v3.2.2...v3.2.3) (2020-11-22)
|
|
374
|
-
|
|
375
|
-
**Note:** Version bump only for package @lingui/core
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
## [3.2.2](https://github.com/lingui/js-lingui/compare/v3.2.1...v3.2.2) (2020-11-20)
|
|
382
|
-
|
|
383
|
-
**Note:** Version bump only for package @lingui/core
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
# [3.2.0](https://github.com/lingui/js-lingui/compare/v3.1.0...v3.2.0) (2020-11-12)
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
### Bug Fixes
|
|
393
|
-
|
|
394
|
-
* MessageDescriptor values type ([#848](https://github.com/lingui/js-lingui/issues/848)) ([9712d94](https://github.com/lingui/js-lingui/commit/9712d94d043c8d40cbc5d017474b5938eb02f8d6))
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
# [3.1.0](https://github.com/lingui/js-lingui/compare/v3.0.3...v3.1.0) (2020-11-10)
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
### Bug Fixes
|
|
404
|
-
|
|
405
|
-
* improved performance of formatters ([#818](https://github.com/lingui/js-lingui/issues/818)) ([22667ad](https://github.com/lingui/js-lingui/commit/22667adba5b07cc94abacff8e8b5f5b19202576c))
|
|
406
|
-
* show error when plurals aren't loaded ([#824](https://github.com/lingui/js-lingui/issues/824)) ([296b6a1](https://github.com/lingui/js-lingui/commit/296b6a1a1f332064f040cc987c4359411d307258))
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
### Features
|
|
410
|
-
|
|
411
|
-
* use fallback locales from cldr ([#820](https://github.com/lingui/js-lingui/issues/820)) ([2d9e124](https://github.com/lingui/js-lingui/commit/2d9e124b91f1ba7a65e9f997a3ba952679c6c23a))
|