@enonic-types/lib-i18n 0.1.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.
Files changed (3) hide show
  1. package/README.md +73 -0
  2. package/i18n.d.ts +55 -0
  3. package/package.json +36 -0
package/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # Enonic XP lib-i18n TS types
2
+
3
+ > TypeScript definitions for `lib-i18n` library of Enonic XP
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm i --save-dev @enonic/lib-i18n
9
+ ```
10
+
11
+ ## Use
12
+
13
+ Add the corresponding types to your `tsconfig.json` file that is used for application's server-side TypeScript code.
14
+
15
+ `tsconfig.json`
16
+ ```json
17
+ {
18
+ "compilerOptions": {
19
+ "types": [
20
+ "@enonic-types/lib-i18n"
21
+ ]
22
+ }
23
+ }
24
+ ```
25
+
26
+ ### Require and custom imports
27
+
28
+ To make `require` work out of box, you must install and add the `@enonic-types/global` types. Aside from providing definitions for XP global objects, e.g. `log`, `app`, `__`, etc, requiring library by the default path will return typed object.
29
+
30
+ `tsconfig.json`
31
+ ```diff
32
+ {
33
+ "compilerOptions": {
34
+ "types": [
35
+ + "@enonic-types/global"
36
+ "@enonic-types/lib-i18n"
37
+ ]
38
+ }
39
+ }
40
+ ```
41
+
42
+ `example.ts`
43
+ ```ts
44
+ const {localize, getPhrases, getSupportedLocales} = require('/lib/xp/i18n');
45
+ ```
46
+
47
+ More detailed explanation on how it works and how to type custom import function can be found [here](https://github.com/enonic/xp/tree/master/modules/lib/typescript/README.md).
48
+
49
+ ### ES6-style import
50
+
51
+ If you are planning to use `import` in your code and transpile it with the default `tsc` TypeScript compiler, you'll need to add proper types mapping to your configuration.
52
+
53
+ `tsconfig.json`
54
+ ```diff
55
+ {
56
+ "compilerOptions": {
57
+ "types": [
58
+ "@enonic-types/lib-i18n"
59
+ ]
60
+ + "baseUrl": "./",
61
+ + "paths": {
62
+ + "/lib/xp/i18n": ["node_modules/@enonic-types/lib-i18n"],
63
+ + }
64
+ }
65
+ }
66
+ ```
67
+
68
+ `example.ts`
69
+ ```ts
70
+ import {localize, getPhrases, getSupportedLocales} from '/lib/xp/i18n';
71
+ ```
72
+
73
+ Setting `baseUrl` and `paths` will allow the `tsc` to keep the valid paths in the resulting JavaScript files.
package/i18n.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ declare global {
2
+ interface XpLibraries {
3
+ '/lib/xp/i18n': typeof import('./i18n');
4
+ }
5
+ }
6
+ export interface LocalizeParams {
7
+ key: string;
8
+ locale?: string | string[];
9
+ values?: string[];
10
+ bundles?: string[];
11
+ application?: string;
12
+ }
13
+ /**
14
+ * Internationalization functions.
15
+ *
16
+ * @example
17
+ * var i18nLib = require('/lib/xp/i18n');
18
+ *
19
+ * @module i18n
20
+ */
21
+ /**
22
+ * This function localizes a phrase.
23
+ *
24
+ * @example-ref examples/i18n/localize.js
25
+ *
26
+ * @param {object} params JSON with the parameters.
27
+ * @param {string} params.key The property key.
28
+ * @param {string|string[]} [params.locale] A string-representation of a locale, or an array of locales in preferred order. If the locale is not set, the site language is used.
29
+ * @param {string[]} [params.values] Optional placeholder values.
30
+ * @param {string[]} [params.bundles] Optional list of bundle names.
31
+ * @param {string} [params.application] Application key where to find resource bundles. Defaults to current application.
32
+ *
33
+ * @returns {string} The localized string.
34
+ */
35
+ export declare function localize(params: LocalizeParams): string;
36
+ /**
37
+ * This function returns all phrases for the given locale and bundles.
38
+ *
39
+ * @param {string|string[]} locale A string-representation of a locale, or an array of locales in preferred order.
40
+ * @param {string[]} bundles List of bundle names. Bundle names are specified as paths, relative to the `src/main/resources` folder.
41
+ *
42
+ * @returns {object} An object of all phrases.
43
+ *
44
+ * @example
45
+ * i18nLib.getPhrases('en', ['i18n/phrases'])
46
+ */
47
+ export declare function getPhrases(locale: string | string[], bundles: string[]): Record<string, string>;
48
+ /**
49
+ * This function returns the list of supported locale codes for the specified bundles.
50
+ *
51
+ * @param {string[]} bundles List of bundle names.
52
+ *
53
+ * @returns {string[]} A list of supported locale codes for the specified bundles.
54
+ */
55
+ export declare function getSupportedLocales(bundles: string[]): string[];
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@enonic-types/lib-i18n",
3
+ "version": "0.1.0",
4
+ "description": "Type definitions for lib-i18n.",
5
+ "types": "i18n.d.ts",
6
+ "files": [
7
+ "i18n.d.ts"
8
+ ],
9
+ "scripts": {
10
+ "pre": "npm run --prefix ../ pre",
11
+ "packlist": "npx npm-packlist"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/enonic/xp.git#master"
16
+ },
17
+ "keywords": [
18
+ "enonic",
19
+ "enonic-xp",
20
+ "lib-i18n",
21
+ "i18n",
22
+ "types",
23
+ "typescript"
24
+ ],
25
+ "contributors": [
26
+ "Mikita Taukachou <edloidas@gmail.com> (https://edloidas.github.io/)"
27
+ ],
28
+ "license": "Apache-2.0",
29
+ "bugs": {
30
+ "url": "https://github.com/enonic/xp/issues"
31
+ },
32
+ "homepage": "https://github.com/enonic/xp/tree/master#readme",
33
+ "publishConfig": {
34
+ "access": "public"
35
+ }
36
+ }