@sapphire/plugin-i18next 2.0.0-next.9af3e85.0 → 2.0.0-next.9f83c09.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 CHANGED
@@ -10,7 +10,6 @@
10
10
  [![codecov](https://codecov.io/gh/sapphiredev/plugins/branch/main/graph/badge.svg?token=QWL8FB16BR)](https://codecov.io/gh/sapphiredev/plugins)
11
11
  [![npm bundle size](https://img.shields.io/bundlephobia/min/@sapphire/plugin-in17n?logo=webpack&style=flat-square)](https://bundlephobia.com/result?p=@sapphire/plugin-in17n)
12
12
  [![npm](https://img.shields.io/npm/v/@sapphire/plugin-in17n?color=crimson&logo=npm&style=flat-square)](https://www.npmjs.com/package/@sapphire/plugin-in17n)
13
- [![Depfu](https://badges.depfu.com/badges/11bbf7392987e6fd51fc6559e1d42dfc/count.svg)](https://depfu.com/github/sapphiredev/plugins?project_id=15201)
14
13
 
15
14
  </div>
16
15
 
@@ -32,23 +31,124 @@ An implementation of i18next's [filesystem backend] for Sapphire. It allows you
32
31
  `@sapphire/plugin-i18next` depends on the following packages. Be sure to install these along with this package!
33
32
 
34
33
  - [`@sapphire/framework`](https://www.npmjs.com/package/@sapphire/framework)
35
- - [`@sapphire/pieces v1.x`](https://www.npmjs.com/package/@sapphire/pieces/v/1.2.5)
36
34
  - [`discord.js`](https://www.npmjs.com/package/discord.js)
37
35
 
38
36
  You can use the following command to install this package, or replace `npm install` with your package manager of choice.
39
37
 
40
38
  ```sh
41
- npm install @sapphire/plugin-i18next @sapphire/framework @sapphire/pieces@1 discord.js
39
+ npm install @sapphire/plugin-i18next @sapphire/framework discord.js
42
40
  ```
43
41
 
44
42
  ---
45
43
 
46
44
  ## Usage
47
45
 
46
+ This registers the methods and options necessary for message translations in the Sapphire client.
47
+
48
48
  ```typescript
49
+ // Main bot file
50
+ // Be sure to register the plugin before instantiating the client.
49
51
  import '@sapphire/plugin-i18next/register';
50
52
  ```
51
53
 
54
+ The basic structure of a translation file is as follows:
55
+
56
+ ```jsonc
57
+ // languages/en-US/commands/ping.json
58
+ {
59
+ "success": "Pong!",
60
+ "success_with_args": "Pong! Took me {{latency}}ms to reply"
61
+ }
62
+ ```
63
+
64
+ The `resolveKey` function can be used anywhere to get translated text by its key. In this example, it is used in a method to send a message.
65
+
66
+ ```typescript
67
+ import { resolveKey } from '@sapphire/plugin-i18next';
68
+ import { Command, CommandOptions, PieceContext } from '@sapphire/framework';
69
+ import type { Message } from 'discord.js';
70
+
71
+ export class PingCommand extends Command {
72
+ public constructor(context: PieceContext, options: CommandOptions) {
73
+ super(context, {
74
+ ...options,
75
+ description: 'ping pong'
76
+ });
77
+ }
78
+
79
+ public async run(message: Message) {
80
+ await message.channel.send(await resolveKey('commands/ping:success'));
81
+ }
82
+ }
83
+ ```
84
+
85
+ `sendLocalized` will send translated text resolved from a key to a specified channel.
86
+
87
+ ```typescript
88
+ import { sendLocalized } from '@sapphire/plugin-i18next';
89
+ import { Command, CommandOptions, PieceContext } from '@sapphire/framework';
90
+
91
+ import type { Message } from 'discord.js';
92
+
93
+ export class PingCommand extends Command {
94
+ public constructor(context: PieceContext, options: CommandOptions) {
95
+ super(context, {
96
+ ...options,
97
+ description: 'ping pong'
98
+ });
99
+ }
100
+
101
+ public async run(message: Message) {
102
+ await sendLocalized(message, 'commands/ping:success');
103
+ }
104
+ }
105
+ ```
106
+
107
+ `editLocalized` edits a message, replacing its content with translated text resolved from its key.
108
+
109
+ ```typescript
110
+ import { editLocalized } from '@sapphire/plugin-i18next';
111
+ import { Command, CommandOptions, PieceContext } from '@sapphire/framework';
112
+
113
+ import type { Message } from 'discord.js';
114
+
115
+ export class PingCommand extends Command {
116
+ public constructor(context: PieceContext, options: CommandOptions) {
117
+ super(context, {
118
+ ...options,
119
+ description: 'ping pong'
120
+ });
121
+ }
122
+
123
+ public async run(message: Message) {
124
+ await editLocalized(message, 'commands/ping:success_args', { latency: ws.ping });
125
+ }
126
+ }
127
+ ```
128
+
129
+ `fetchLanguage` returns the guild-specific language that the client is using.
130
+
131
+ ```typescript
132
+ import { fetchLanguage } from '@sapphire/plugin-i18next';
133
+ import { Command, CommandOptions, PieceContext } from '@sapphire/framework';
134
+
135
+ import type { Message } from 'discord.js';
136
+
137
+ export class PingCommand extends Command {
138
+ public constructor(context: PieceContext, options: CommandOptions) {
139
+ super(context, {
140
+ ...options,
141
+ description: 'ping pong'
142
+ });
143
+ }
144
+
145
+ public async run(message: Message) {
146
+ return message.channel.send(await fetchLanguage(message));
147
+ // ===> en-US
148
+ }
149
+ }
150
+ ```
151
+
52
152
  ## Sapphire i18next Documentation
53
153
 
54
154
  For the full @sapphire/plugin-i18next documentation please refer to the TypeDoc generated [documentation](https://sapphiredev.github.io/plugins/modules/_sapphire_plugin_i18next.html).
@@ -87,6 +187,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
87
187
  <td align="center"><a href="https://github.com/Nytelife26"><img src="https://avatars1.githubusercontent.com/u/22531310?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tyler J Russell</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=Nytelife26" title="Code">💻</a></td>
88
188
  <td align="center"><a href="https://github.com/Stitch07"><img src="https://avatars.githubusercontent.com/u/29275227?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stitch07</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=Stitch07" title="Code">💻</a> <a href="https://github.com/sapphiredev/plugins/issues?q=author%3AStitch07" title="Bug reports">🐛</a></td>
89
189
  <td align="center"><a href="https://github.com/PlatinBae"><img src="https://avatars.githubusercontent.com/u/50950966?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PlatinBae</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=PlatinBae" title="Documentation">📖</a></td>
190
+ <td align="center"><a href="https://kaname.netlify.app"><img src="https://avatars.githubusercontent.com/u/56084970?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kaname</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=kaname-png" title="Code">💻</a> <a href="https://github.com/sapphiredev/plugins/commits?author=kaname-png" title="Documentation">📖</a></td>
90
191
  </tr>
91
192
  </table>
92
193
 
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./lib/functions"), exports);
5
- tslib_1.__exportStar(require("./lib/InternationalizationHandler"), exports);
6
- tslib_1.__exportStar(require("./lib/types"), exports);
4
+ (0, tslib_1.__exportStar)(require("./lib/functions"), exports);
5
+ (0, tslib_1.__exportStar)(require("./lib/InternationalizationHandler"), exports);
6
+ (0, tslib_1.__exportStar)(require("./lib/types"), exports);
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,0DAAgC;AAChC,4EAAkD;AAClD,sDAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,+DAAgC;AAChC,iFAAkD;AAClD,2DAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"InternationalizationHandler.d.ts","sourceRoot":"","sources":["../../src/lib/InternationalizationHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAc,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClG,OAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAExF;;;GAGG;AACH,qBAAa,2BAA2B;IACvC;;;OAGG;IACI,eAAe,UAAS;IAE/B;;;OAGG;IACI,UAAU,cAAqB;IAEtC;;;OAGG;IACH,SAAgB,SAAS,yBAAgC;IAEzD;;;OAGG;IACH,SAAgB,OAAO,EAAE,2BAA2B,CAAC;IAErD;;;;OAIG;IACH,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAE3C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,uBAAuB,CAAC;IAE5E;;;;OAIG;gBACgB,OAAO,CAAC,EAAE,2BAA2B;IAWxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACI,aAAa,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAc;IAEpG;;;OAGG;IACU,IAAI;IA2BjB;;;;OAIG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM;IAQ1B;;;;;;;;OAQG;IACI,MAAM,CACZ,OAAO,SAAS,eAAe,GAAG,MAAM,EACxC,KAAK,SAAS,aAAa,GAAG,MAAM,EACpC,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAClD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,OAAO;IAavF;;;;;;OAMG;IACU,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,EAAE,OAAO,SAAK;;;;CAoBvF"}
1
+ {"version":3,"file":"InternationalizationHandler.d.ts","sourceRoot":"","sources":["../../src/lib/InternationalizationHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAc,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClG,OAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAExF;;;GAGG;AACH,qBAAa,2BAA2B;IACvC;;;OAGG;IACI,eAAe,UAAS;IAE/B;;;OAGG;IACI,UAAU,cAAqB;IAEtC;;;OAGG;IACH,SAAgB,SAAS,yBAAgC;IAEzD;;;OAGG;IACH,SAAgB,OAAO,EAAE,2BAA2B,CAAC;IAErD;;;;OAIG;IACH,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAE3C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,uBAAuB,CAAC;IAE5E;;;;OAIG;gBACgB,OAAO,CAAC,EAAE,2BAA2B;IAexD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACI,aAAa,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAc;IAEpG;;;OAGG;IACU,IAAI;IA+BjB;;;;OAIG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM;IAQ1B;;;;;;;;OAQG;IACI,MAAM,CACZ,OAAO,SAAS,eAAe,GAAG,MAAM,EACxC,KAAK,SAAS,aAAa,GAAG,MAAM,EACpC,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAClD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,OAAO;IAavF;;;;;;OAMG;IACU,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,EAAE,OAAO,SAAK;;;;CAoBvF"}
@@ -5,8 +5,8 @@ const tslib_1 = require("tslib");
5
5
  const pieces_1 = require("@sapphire/pieces");
6
6
  const utilities_1 = require("@sapphire/utilities");
7
7
  const promises_1 = require("fs/promises");
8
- const i18next_1 = tslib_1.__importDefault(require("i18next"));
9
- const i18next_fs_backend_1 = tslib_1.__importDefault(require("i18next-fs-backend"));
8
+ const i18next_1 = (0, tslib_1.__importDefault)(require("i18next"));
9
+ const i18next_fs_backend_1 = (0, tslib_1.__importDefault)(require("i18next-fs-backend"));
10
10
  const path_1 = require("path");
11
11
  /**
12
12
  * A generalized class for handling `i18next` JSON files and their discovery.
@@ -123,13 +123,16 @@ class InternationalizationHandler {
123
123
  writable: true,
124
124
  value: () => null
125
125
  });
126
- this.options = options ?? {};
127
- this.languagesDirectory = this.options.defaultLanguageDirectory ?? path_1.join(pieces_1.getRootData().root, 'languages');
126
+ this.options = options ?? { i18next: { ignoreJSONStructure: false } };
127
+ this.languagesDirectory = this.options.defaultLanguageDirectory ?? (0, path_1.join)((0, pieces_1.getRootData)().root, 'languages');
128
128
  this.backendOptions = {
129
- loadPath: path_1.join(this.languagesDirectory, '{{lng}}', '{{ns}}.json'),
129
+ loadPath: (0, path_1.join)(this.languagesDirectory, '{{lng}}', '{{ns}}.json'),
130
130
  addPath: this.languagesDirectory,
131
131
  ...this.options.backend
132
132
  };
133
+ if ((0, utilities_1.isFunction)(this.options.fetchLanguage)) {
134
+ this.fetchLanguage = this.options.fetchLanguage;
135
+ }
133
136
  }
134
137
  /**
135
138
  * Initializes the handler by loading in the namespaces, passing the data to i18next, and filling in the {@link InternationalizationHandler#languages}.
@@ -137,7 +140,9 @@ class InternationalizationHandler {
137
140
  */
138
141
  async init() {
139
142
  const { namespaces, languages } = await this.walkLanguageDirectory(this.languagesDirectory);
140
- const userOptions = utilities_1.isFunction(this.options.i18next) ? this.options.i18next(namespaces, languages) : this.options.i18next;
143
+ const userOptions = (0, utilities_1.isFunction)(this.options.i18next) ? this.options.i18next(namespaces, languages) : this.options.i18next;
144
+ const ignoreJSONStructure = userOptions?.ignoreJSONStructure ?? false;
145
+ const skipOnVariables = userOptions?.interpolation?.skipOnVariables ?? false;
141
146
  i18next_1.default.use(i18next_fs_backend_1.default);
142
147
  await i18next_1.default.init({
143
148
  backend: this.backendOptions,
@@ -145,13 +150,15 @@ class InternationalizationHandler {
145
150
  initImmediate: false,
146
151
  interpolation: {
147
152
  escapeValue: false,
148
- ...userOptions?.interpolation
153
+ ...userOptions?.interpolation,
154
+ skipOnVariables
149
155
  },
150
156
  load: 'all',
151
157
  defaultNS: 'default',
152
158
  ns: namespaces,
153
159
  preload: languages,
154
- ...userOptions
160
+ ...userOptions,
161
+ ignoreJSONStructure
155
162
  });
156
163
  this.namespaces = new Set(namespaces);
157
164
  for (const item of languages) {
@@ -200,7 +207,7 @@ class InternationalizationHandler {
200
207
  * @since 1.0.0
201
208
  */
202
209
  async walkLanguageDirectory(dir, namespaces = [], current = '') {
203
- const directory = await promises_1.opendir(dir);
210
+ const directory = await (0, promises_1.opendir)(dir);
204
211
  const languages = [];
205
212
  for await (const entry of directory) {
206
213
  const fn = entry.name;
@@ -210,7 +217,7 @@ class InternationalizationHandler {
210
217
  const isLanguage = fn.includes('-');
211
218
  if (isLanguage)
212
219
  languages.push(fn);
213
- ({ namespaces } = await this.walkLanguageDirectory(path_1.join(dir, fn), namespaces, isLanguage ? '' : `${fn}/`));
220
+ ({ namespaces } = await this.walkLanguageDirectory((0, path_1.join)(dir, fn), namespaces, isLanguage ? '' : `${fn}/`));
214
221
  }
215
222
  else if (entry.name.endsWith('.json')) {
216
223
  namespaces.push(`${current}${fn.substr(0, fn.length - 5)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"InternationalizationHandler.js","sourceRoot":"","sources":["../../src/lib/InternationalizationHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InternationalizationHandler.js","sourceRoot":"","sources":["../../src/lib/InternationalizationHandler.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import { NonNullObject } from '@sapphire/utilities';
2
2
  import { Guild, Message, MessageOptions } from 'discord.js';
3
3
  import type { StringMap, TFunctionKeys, TFunctionResult, TOptions } from 'i18next';
4
4
  import type { DiscordChannel } from './types';
5
- declare type ChannelTarget = Message | DiscordChannel;
6
- declare type Target = ChannelTarget | Guild;
5
+ export declare type ChannelTarget = Message | DiscordChannel;
6
+ export declare type Target = ChannelTarget | Guild;
7
7
  /**
8
8
  * Retrieves the language name for a specific target, using {@link InternationalizationHandler.fetchLanguage}, and if it
9
9
  * returns a nullish value, then it falls back to {@link Guild.preferredLocale}, then
@@ -77,7 +77,7 @@ export declare function sendLocalized<TKeys extends TFunctionKeys = string, TInt
77
77
  * @param options The options to be sent, requiring at least `keys` to be passed.
78
78
  * @example
79
79
  * ```typescript
80
- * await sendLocalized(message, 'commands/ping:success');
80
+ * await editLocalized(message, 'commands/ping:success');
81
81
  * // ➡ "Pong!"
82
82
  * ```
83
83
  */
@@ -105,5 +105,4 @@ export declare function editLocalized<TKeys extends TFunctionKeys = string>(targ
105
105
  * ```
106
106
  */
107
107
  export declare function editLocalized<TKeys extends TFunctionKeys = string, TInterpolationMap extends NonNullObject = StringMap>(target: Message, options: LocalizedMessageOptions<TKeys, TInterpolationMap>): Promise<Message>;
108
- export {};
109
108
  //# sourceMappingURL=functions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/lib/functions.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAwD,MAAM,SAAS,CAAC;AAEpG,aAAK,aAAa,GAAG,OAAO,GAAG,cAAc,CAAC;AAC9C,aAAK,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;AAEpC;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB7D;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,MAAM,wCAE1C;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC/B,OAAO,SAAS,eAAe,GAAG,MAAM,EACxC,KAAK,SAAS,aAAa,GAAG,MAAM,EACpC,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAClD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/F;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,iBAAiB,SAAS,aAAa,GAAG,SAAS,CACjI,SAAQ,8BAA8B,CAAC,iBAAiB,CAAC;IACzD,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B,CAAC,iBAAiB,SAAS,aAAa,GAAG,SAAS,CAAE,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IAC3I,aAAa,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;CAC5C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1I;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAC5H,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,CAAC,GACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AASpB;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACpI;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAC5H,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,CAAC,GACxD,OAAO,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/lib/functions.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAwD,MAAM,SAAS,CAAC;AAEpG,oBAAY,aAAa,GAAG,OAAO,GAAG,cAAc,CAAC;AACrD,oBAAY,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB7D;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,MAAM,wCAE1C;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC/B,OAAO,SAAS,eAAe,GAAG,MAAM,EACxC,KAAK,SAAS,aAAa,GAAG,MAAM,EACpC,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAClD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/F;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,iBAAiB,SAAS,aAAa,GAAG,SAAS,CACjI,SAAQ,8BAA8B,CAAC,iBAAiB,CAAC;IACzD,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B,CAAC,iBAAiB,SAAS,aAAa,GAAG,SAAS,CAAE,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IAC3I,aAAa,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;CAC5C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1I;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAC5H,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,CAAC,GACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AASpB;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACpI;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,GAAG,MAAM,EAAE,iBAAiB,SAAS,aAAa,GAAG,SAAS,EAC5H,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,CAAC,GACxD,OAAO,CAAC,OAAO,CAAC,CAAC"}
@@ -82,7 +82,7 @@ function resolveTextChannel(target) {
82
82
  * @private
83
83
  */
84
84
  async function resolveOverloads(target, options) {
85
- if (utilities_1.isObject(options)) {
85
+ if ((0, utilities_1.isObject)(options)) {
86
86
  const casted = options;
87
87
  return { ...options, content: await resolveKey(target, casted.keys, casted.formatOptions) };
88
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/lib/functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/lib/functions.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Awaited } from '@sapphire/utilities';
1
2
  import type { Guild, Message, StageChannel, StoreChannel, User, VoiceChannel } from 'discord.js';
2
3
  import type { InitOptions } from 'i18next';
3
4
  import type { i18nextFsBackend } from 'i18next-fs-backend';
@@ -46,11 +47,22 @@ export interface InternationalizationOptions {
46
47
  * @since 1.0.0
47
48
  */
48
49
  defaultNS?: string;
50
+ /**
51
+ * A function that is to be used to retrieve the language for the current context.
52
+ * Context exists of a {@link Guild `guild`}, a {@link DiscordChannel `channel`} and a {@link User `user`}.
53
+ *
54
+ * If this is not set, then the language will always be the default language.
55
+ *
56
+ * This will be inserted for {@link InternationalizationHandler.fetchLanguage}.
57
+ * @since 2.0.0
58
+ * @default () => InternationalizationOptions.defaultName
59
+ */
60
+ fetchLanguage?: (context: InternationalizationContext) => Awaited<string | null>;
49
61
  }
50
62
  export declare type TextBasedDiscordChannel = Message['channel'];
51
63
  export declare type DiscordChannel = TextBasedDiscordChannel | StoreChannel | StageChannel | VoiceChannel;
52
64
  /**
53
- * Context for {@link I18nextBaseImplementation.fetchLanguage} functions.
65
+ * Context for {@link InternationalizationHandler.fetchLanguage} functions.
54
66
  * This context enables implementation of per-guild, per-channel, and per-user localization.
55
67
  */
56
68
  export interface InternationalizationContext {
@@ -60,11 +72,5 @@ export interface InternationalizationContext {
60
72
  }
61
73
  export interface InternationalizationClientOptions {
62
74
  i18n?: InternationalizationOptions;
63
- /**
64
- * Hook that returns the name of a language. Should correspond to {@link InternationalizationHandler.fetchLanguage}.
65
- * @since 1.0.0
66
- * @default () => {@link I18nOptions.defaultName}
67
- */
68
- fetchLanguage?: (context: InternationalizationContext) => Promise<string | null> | string | null;
69
75
  }
70
76
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;GAIG;AACH,oBAAY,cAAc,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAErG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC3C;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC,uBAAuB,CAAC;IAEnD;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAEpD;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,oBAAY,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACzD,oBAAY,cAAc,GAAG,uBAAuB,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAElG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,iCAAiC;IACjD,IAAI,CAAC,EAAE,2BAA2B,CAAC;IAEnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;CACjG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;GAIG;AACH,oBAAY,cAAc,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAErG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC3C;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC,uBAAuB,CAAC;IAEnD;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAEpD;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACjF;AAED,oBAAY,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACzD,oBAAY,cAAc,GAAG,uBAAuB,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAElG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,iCAAiC;IACjD,IAAI,CAAC,EAAE,2BAA2B,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iCAAiC,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAEzF,qBAAa,aAAc,SAAQ,MAAM;WAC1B,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;WAKzE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnE;AAKD,OAAO,QAAQ,kBAAkB,CAAC;IACjC,UAAU,SAAS;QAClB,IAAI,EAAE,2BAA2B,CAAC;KAClC;CACD;AAED,OAAO,QAAQ,YAAY,CAAC;IAC3B,UAAiB,aAAc,SAAQ,iCAAiC;KAAG;CAC3E"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iCAAiC,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAEzF,qBAAa,aAAc,SAAQ,MAAM;WAC1B,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;WAIzE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnE;AAKD,OAAO,QAAQ,kBAAkB,CAAC;IACjC,UAAU,SAAS;QAClB,IAAI,EAAE,2BAA2B,CAAC;KAClC;CACD;AAED,OAAO,QAAQ,YAAY,CAAC;IAC3B,UAAiB,aAAc,SAAQ,iCAAiC;KAAG;CAC3E"}
package/dist/register.js CHANGED
@@ -6,8 +6,6 @@ const index_1 = require("./index");
6
6
  class I18nextPlugin extends framework_1.Plugin {
7
7
  static [framework_1.preGenericsInitialization](options) {
8
8
  framework_1.container.i18n = new index_1.InternationalizationHandler(options.i18n);
9
- if (typeof options.fetchLanguage === 'function')
10
- framework_1.container.i18n.fetchLanguage = options.fetchLanguage;
11
9
  }
12
10
  static async [framework_1.preLogin]() {
13
11
  await framework_1.container.i18n.init();
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":";;;AAAA,mDAA6G;AAE7G,mCAAyF;AAEzF,MAAa,aAAc,SAAQ,kBAAM;IACjC,MAAM,CAAC,CAAC,qCAAyB,CAAC,CAAuB,OAAsB;QACrF,qBAAS,CAAC,IAAI,GAAG,IAAI,mCAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU;YAAE,qBAAS,CAAC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IACvG,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAQ,CAAC;QAC7B,MAAM,qBAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;CACD;AATD,sCASC;AAED,0BAAc,CAAC,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,qCAAyB,CAAC,EAAE,mCAAmC,CAAC,CAAC;AACrI,0BAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,oBAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":";;;AAAA,mDAA6G;AAE7G,mCAAyF;AAEzF,MAAa,aAAc,SAAQ,kBAAM;IACjC,MAAM,CAAC,CAAC,qCAAyB,CAAC,CAAuB,OAAsB;QACrF,qBAAS,CAAC,IAAI,GAAG,IAAI,mCAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAQ,CAAC;QAC7B,MAAM,qBAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;CACD;AARD,sCAQC;AAED,0BAAc,CAAC,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,qCAAyB,CAAC,EAAE,mCAAmC,CAAC,CAAC;AACrI,0BAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,oBAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@sapphire/plugin-i18next",
3
- "version": "2.0.0-next.9af3e85.0",
3
+ "version": "2.0.0-next.9f83c09.0",
4
4
  "description": "Plugin for @sapphire/framework to support i18next.",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.mjs",
9
9
  "types": "dist/index.d.ts",
10
+ "typedocMain": "src/index.ts",
10
11
  "exports": {
11
12
  ".": {
12
13
  "import": "./dist/index.mjs",
@@ -35,10 +36,10 @@
35
36
  },
36
37
  "dependencies": {
37
38
  "@sapphire/utilities": "^2.0.1",
38
- "@types/i18next-fs-backend": "^1.0.1",
39
- "i18next": "^19.9.2",
39
+ "@types/i18next-fs-backend": "^1.1.2",
40
+ "i18next": "^21.1.1",
40
41
  "i18next-fs-backend": "^1.1.1",
41
- "tslib": "^2.3.0"
42
+ "tslib": "^2.3.1"
42
43
  },
43
44
  "repository": {
44
45
  "type": "git",
@@ -51,7 +52,7 @@
51
52
  "register.*"
52
53
  ],
53
54
  "engines": {
54
- "node": ">=14",
55
+ "node": ">=v14.18.0",
55
56
  "npm": ">=6"
56
57
  },
57
58
  "keywords": [
@@ -72,5 +73,5 @@
72
73
  "publishConfig": {
73
74
  "access": "public"
74
75
  },
75
- "gitHead": "9af3e85a8641f852eaf114679ceed1e71034d16c"
76
+ "gitHead": "9f83c09d73c30d3e89ca2d14e410c39680fe570d"
76
77
  }