diff --git a/jest.config.js b/jest.config.js index 9bb382d5..e2cda5c5 100644 --- a/jest.config.js +++ b/jest.config.js @@ -8,7 +8,7 @@ module.exports = { 'ts-jest', { tsconfig: 'tests/tsconfig.json', }, - ] + ], }, transformIgnorePatterns: [], } diff --git a/lib/date.ts b/lib/date.ts index f616431a..3b671e3a 100644 --- a/lib/date.ts +++ b/lib/date.ts @@ -1,6 +1,6 @@ /// -declare var window: Nextcloud.v24.WindowWithGlobals +declare let window: Nextcloud.v24.WindowWithGlobals /** * Get the first day of the week diff --git a/lib/index.ts b/lib/index.ts index 47f95811..9086de37 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,12 +1,11 @@ /** * This module provides all functions for the `OC.L10N` namespace - * + * * @packageDocumentation * @module @nextcloud/l10n * @example * ```js import { translate as t, translatePlural as n } from '@nextcloud/l10n' - console.log(t('my-app', 'Hello {name}', { name: 'J. Doe' })); const count = 2; console.warn(n('my-app', 'Got an error', 'Got multiple errors', 2)); diff --git a/lib/registry.ts b/lib/registry.ts index 7a86bd38..979d1228 100644 --- a/lib/registry.ts +++ b/lib/registry.ts @@ -1,7 +1,7 @@ export type Translations = Record export type PluralFunction = (number: number) => number -declare var window: { +declare let window: { _oc_l10n_registry_translations: Record _oc_l10n_registry_plural_functions: Record } @@ -13,18 +13,20 @@ interface AppTranslations { /** * Check if translations and plural function are set for given app + * * @param {string} appId the app id * @return {boolean} */ export function hasAppTranslations(appId: string) { return ( - window._oc_l10n_registry_translations?.[appId] !== undefined && - window._oc_l10n_registry_plural_functions?.[appId] !== undefined + window._oc_l10n_registry_translations?.[appId] !== undefined + && window._oc_l10n_registry_plural_functions?.[appId] !== undefined ) } /** * Register new, or extend available, translations for an app + * * @param {string} appId the app id * @param {object} translations the translations list * @param {Function} pluralFunction the plural function @@ -43,6 +45,7 @@ export function registerAppTranslations( /** * Unregister all translations and plural function for given app + * * @param {string} appId the app id */ export function unregisterAppTranslations(appId: string) { @@ -52,13 +55,14 @@ export function unregisterAppTranslations(appId: string) { /** * Get translations bundle for given app and current locale + * * @param {string} appId the app id * @return {object} */ export function getAppTranslations(appId: string): AppTranslations { if ( - typeof window._oc_l10n_registry_translations === 'undefined' || - typeof window._oc_l10n_registry_plural_functions === 'undefined' + typeof window._oc_l10n_registry_translations === 'undefined' + || typeof window._oc_l10n_registry_plural_functions === 'undefined' ) { console.warn('No OC L10N registry found') return { @@ -75,6 +79,7 @@ export function getAppTranslations(appId: string): AppTranslations { /** * Set new translations and plural function for an app + * * @param {string} appId the app id * @param {object} translations the translations list * @param {Function} pluralFunction the plural function @@ -90,6 +95,7 @@ function setAppTranslations( /** * Extend translations for an app + * * @param {string} appId the app id * @param {object} translations the translations list * @param {Function} [pluralFunction] the plural function (will override old value if given) diff --git a/lib/translation.ts b/lib/translation.ts index 72e7feb9..1554f9bb 100644 --- a/lib/translation.ts +++ b/lib/translation.ts @@ -98,11 +98,9 @@ export function translate( * @param {string} textSingular the string to translate for exactly one object * @param {string} textPlural the string to translate for n objects * @param {number} number number to determine whether to use singular or plural - * @param {Object} vars of placeholder key to value + * @param {object} vars of placeholder key to value * @param {object} options options object - * @return {string} */ - export function translatePlural( app: string, textSingular: string, @@ -156,17 +154,14 @@ export function loadTranslations(appName: string, callback: (...args: any[]) => }>((resolve, reject) => { const request = new XMLHttpRequest() request.open('GET', url, false) - request.onerror = (event) => { - reject({ status: request.status, statusText: request.statusText }) + request.onerror = () => { + reject(new Error(request.statusText)) } - request.onload = (event) => { + request.onload = () => { if (request.status >= 200 && request.status < 300) { resolve(JSON.parse(request.responseText)) } else { - reject({ - status: request.status, - statusText: request.statusText, - }) + reject(new Error(request.statusText)) } } request.send() @@ -186,7 +181,7 @@ export function loadTranslations(appName: string, callback: (...args: any[]) => * Register an app's translation bundle. * * @param {string} appName name of the app - * @param {object} bundle translation bundle + * @param {Object} bundle translation bundle */ export function register(appName: string, bundle: Translations) { registerAppTranslations(appName, bundle, getPlural) @@ -225,187 +220,187 @@ export function getPlural(number: number) { * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) */ switch (language) { - case 'az': - case 'bo': - case 'dz': - case 'id': - case 'ja': - case 'jv': - case 'ka': - case 'km': - case 'kn': - case 'ko': - case 'ms': - case 'th': - case 'tr': - case 'vi': - case 'zh': - return 0 - - case 'af': - case 'bn': - case 'bg': - case 'ca': - case 'da': - case 'de': - case 'el': - case 'en': - case 'eo': - case 'es': - case 'et': - case 'eu': - case 'fa': - case 'fi': - case 'fo': - case 'fur': - case 'fy': - case 'gl': - case 'gu': - case 'ha': - case 'he': - case 'hu': - case 'is': - case 'it': - case 'ku': - case 'lb': - case 'ml': - case 'mn': - case 'mr': - case 'nah': - case 'nb': - case 'ne': - case 'nl': - case 'nn': - case 'no': - case 'oc': - case 'om': - case 'or': - case 'pa': - case 'pap': - case 'ps': - case 'pt': - case 'so': - case 'sq': - case 'sv': - case 'sw': - case 'ta': - case 'te': - case 'tk': - case 'ur': - case 'zu': - return number === 1 ? 0 : 1 - - case 'am': - case 'bh': - case 'fil': - case 'fr': - case 'gun': - case 'hi': - case 'hy': - case 'ln': - case 'mg': - case 'nso': - case 'xbr': - case 'ti': - case 'wa': - return number === 0 || number === 1 ? 0 : 1 - - case 'be': - case 'bs': - case 'hr': - case 'ru': - case 'sh': - case 'sr': - case 'uk': - return number % 10 === 1 && number % 100 !== 11 - ? 0 - : number % 10 >= 2 && - number % 10 <= 4 && - (number % 100 < 10 || number % 100 >= 20) + case 'az': + case 'bo': + case 'dz': + case 'id': + case 'ja': + case 'jv': + case 'ka': + case 'km': + case 'kn': + case 'ko': + case 'ms': + case 'th': + case 'tr': + case 'vi': + case 'zh': + return 0 + + case 'af': + case 'bn': + case 'bg': + case 'ca': + case 'da': + case 'de': + case 'el': + case 'en': + case 'eo': + case 'es': + case 'et': + case 'eu': + case 'fa': + case 'fi': + case 'fo': + case 'fur': + case 'fy': + case 'gl': + case 'gu': + case 'ha': + case 'he': + case 'hu': + case 'is': + case 'it': + case 'ku': + case 'lb': + case 'ml': + case 'mn': + case 'mr': + case 'nah': + case 'nb': + case 'ne': + case 'nl': + case 'nn': + case 'no': + case 'oc': + case 'om': + case 'or': + case 'pa': + case 'pap': + case 'ps': + case 'pt': + case 'so': + case 'sq': + case 'sv': + case 'sw': + case 'ta': + case 'te': + case 'tk': + case 'ur': + case 'zu': + return number === 1 ? 0 : 1 + + case 'am': + case 'bh': + case 'fil': + case 'fr': + case 'gun': + case 'hi': + case 'hy': + case 'ln': + case 'mg': + case 'nso': + case 'xbr': + case 'ti': + case 'wa': + return number === 0 || number === 1 ? 0 : 1 + + case 'be': + case 'bs': + case 'hr': + case 'ru': + case 'sh': + case 'sr': + case 'uk': + return number % 10 === 1 && number % 100 !== 11 + ? 0 + : number % 10 >= 2 + && number % 10 <= 4 + && (number % 100 < 10 || number % 100 >= 20) ? 1 : 2 - case 'cs': - case 'sk': - return number === 1 ? 0 : number >= 2 && number <= 4 ? 1 : 2 + case 'cs': + case 'sk': + return number === 1 ? 0 : number >= 2 && number <= 4 ? 1 : 2 - case 'ga': - return number === 1 ? 0 : number === 2 ? 1 : 2 + case 'ga': + return number === 1 ? 0 : number === 2 ? 1 : 2 - case 'lt': - return number % 10 === 1 && number % 100 !== 11 - ? 0 - : number % 10 >= 2 && (number % 100 < 10 || number % 100 >= 20) + case 'lt': + return number % 10 === 1 && number % 100 !== 11 + ? 0 + : number % 10 >= 2 && (number % 100 < 10 || number % 100 >= 20) ? 1 : 2 - case 'sl': - return number % 100 === 1 - ? 0 - : number % 100 === 2 + case 'sl': + return number % 100 === 1 + ? 0 + : number % 100 === 2 ? 1 : number % 100 === 3 || number % 100 === 4 - ? 2 - : 3 + ? 2 + : 3 - case 'mk': - return number % 10 === 1 ? 0 : 1 + case 'mk': + return number % 10 === 1 ? 0 : 1 - case 'mt': - return number === 1 - ? 0 - : number === 0 || (number % 100 > 1 && number % 100 < 11) + case 'mt': + return number === 1 + ? 0 + : number === 0 || (number % 100 > 1 && number % 100 < 11) ? 1 : number % 100 > 10 && number % 100 < 20 - ? 2 - : 3 + ? 2 + : 3 - case 'lv': - return number === 0 - ? 0 - : number % 10 === 1 && number % 100 !== 11 + case 'lv': + return number === 0 + ? 0 + : number % 10 === 1 && number % 100 !== 11 ? 1 : 2 - case 'pl': - return number === 1 - ? 0 - : number % 10 >= 2 && - number % 10 <= 4 && - (number % 100 < 12 || number % 100 > 14) + case 'pl': + return number === 1 + ? 0 + : number % 10 >= 2 + && number % 10 <= 4 + && (number % 100 < 12 || number % 100 > 14) ? 1 : 2 - case 'cy': - return number === 1 - ? 0 - : number === 2 + case 'cy': + return number === 1 + ? 0 + : number === 2 ? 1 : number === 8 || number === 11 - ? 2 - : 3 + ? 2 + : 3 - case 'ro': - return number === 1 - ? 0 - : number === 0 || (number % 100 > 0 && number % 100 < 20) + case 'ro': + return number === 1 + ? 0 + : number === 0 || (number % 100 > 0 && number % 100 < 20) ? 1 : 2 - case 'ar': - return number === 0 - ? 0 - : number === 1 + case 'ar': + return number === 0 + ? 0 + : number === 1 ? 1 : number === 2 - ? 2 - : number % 100 >= 3 && number % 100 <= 10 - ? 3 - : number % 100 >= 11 && number % 100 <= 99 - ? 4 - : 5 - - default: - return 0 + ? 2 + : number % 100 >= 3 && number % 100 <= 10 + ? 3 + : number % 100 >= 11 && number % 100 <= 99 + ? 4 + : 5 + + default: + return 0 } } diff --git a/rollup.config.mjs b/rollup.config.mjs index 3acbd176..44917bb4 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,8 +1,8 @@ import typescript from '@rollup/plugin-typescript' -import { createRequire } from 'node:module'; +import { createRequire } from 'node:module' -const require = createRequire(import.meta.url); -const pkg = require('./package.json'); +const require = createRequire(import.meta.url) +const pkg = require('./package.json') const external = [...Object.keys(pkg.dependencies)] @@ -33,5 +33,5 @@ export default [ config('./lib/gettext.ts', { file: 'dist/gettext.js', format: 'cjs', - }) + }), ]