@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.
- package/README.md +73 -0
- package/i18n.d.ts +55 -0
- 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
|
+
}
|