opal-i18next 0.3.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44c564b588879276f62325e8812dcab71272bffbd1c97e5cb122a0ef00039314
4
- data.tar.gz: 0e588fd5cc1a8bc63d5060b52e862b9dbe7375f96673971eb421baca723aaf46
3
+ metadata.gz: 7fcbdd82651c265dc9b07aad0f56ae5dc80b13562e69904c7083d75d297fafed
4
+ data.tar.gz: 31bc9a0cd604bdc2b911290fd3aa7659dde49782ef8f02f2dee0cbd5df3618f1
5
5
  SHA512:
6
- metadata.gz: 76a08af7bd190a3538c98e47112a69cf183d6ec023b959af778e25f7b55effcaa64f34dbb0eff19de8dd674c3017b726c1b09ed92315f1f582d216eb337dd32d
7
- data.tar.gz: c58800b3e827727ccac4ac8d001ca2444ff30e378ee38c1053edc8083f30b84af6cbd6f79b5d48eb6b8112c0a470423eb392d607dcf7d467fb06e4a94d6af578
6
+ metadata.gz: c81f84936adae8165b9519651d66ca0ffc84b472f1315793fd83157fa0c4bf3473760cef76fd500873544a52414de0cbbc0f09c5b423b8988b1078ba1e9bc0e4
7
+ data.tar.gz: 26dd77f60baf03f73791cf3dead57f98a5d8369b8ff60bda0e3c2ebe33767c188580469668b2a3fff08023d4337dfa4f01695053f1d7aacd47462b7704f2b9e4
@@ -8,37 +8,50 @@ module I18next
8
8
 
9
9
  Promise = defined?(PromiseV2) ? PromiseV2 : ::Promise
10
10
 
11
- # {I18next} is a basic wrapper around the JavaScript {https://www.i18next.com i18next module}.
11
+ # {I18next} is a basic wrapper around the JavaScript I18N module {https://www.i18next.com i18next}.
12
12
  #
13
- # It wraps i18next methods {https://www.i18next.com/overview/api#addResource addResource},
14
- # {https://www.i18next.com/overview/api#addResourceBundle addResourceBundle},
15
- # {https://www.i18next.com/overview/api#addResources addResources},
13
+ # It wraps i18next functions {https://www.i18next.com/overview/api#addresource addResource},
14
+ # {https://www.i18next.com/overview/api#addresourcebundle addResourceBundle},
15
+ # {https://www.i18next.com/overview/api#addresources addResources},
16
16
  # {https://www.i18next.com/overview/api#changelanguage changeLanguage},
17
+ # {https://www.i18next.com/overview/api#cloneinstance cloneInstance},
17
18
  # {https://www.i18next.com/overview/api#dir dir},
18
19
  # {https://www.i18next.com/overview/api#exists exists},
19
- # {https://www.i18next.com/overview/api#getDataByLanguage getDataByLanguage},
20
- # {https://www.i18next.com/overview/api#getFixedT getFixedT},
21
- # {https://www.i18next.com/overview/api#getResource getResource},
22
- # {https://www.i18next.com/overview/api#getResourceBundle getResourceBundle},
23
- # {https://www.i18next.com/overview/api#hasResourceBundle hasResourceBundle},
20
+ # {https://www.i18next.com/overview/api#getdatabylanguage getDataByLanguage},
21
+ # {https://www.i18next.com/overview/api#getfixedt getFixedT},
22
+ # {https://www.i18next.com/overview/api#getresource getResource},
23
+ # {https://www.i18next.com/overview/api#getresourcebundle getResourceBundle},
24
+ # {https://www.i18next.com/overview/api#hasresourcebundle hasResourceBundle},
24
25
  # {https://www.i18next.com/overview/api#init init},
25
26
  # {https://www.i18next.com/overview/api#language language},
26
27
  # {https://www.i18next.com/overview/api#languages languages},
27
- # {https://www.i18next.com/overview/api#loadLanguages loadLanguages},
28
- # {https://www.i18next.com/overview/api#loadNamespaces loadNamespaces},
28
+ # {https://www.i18next.com/overview/api#loadlanguages loadLanguages},
29
+ # {https://www.i18next.com/overview/api#loadnamespaces loadNamespaces},
29
30
  # {https://www.i18next.com/overview/api#events off},
30
31
  # {https://www.i18next.com/overview/api#events on},
31
- # {https://www.i18next.com/overview/api#removeResourceBundle removeResourceBundle},
32
- # {https://www.i18next.com/overview/api#resolvedLanguage resolvedLanguage},
33
- # {https://www.i18next.com/overview/api#setDefaultNamespace setDefaultNamespace},
34
- # {https://www.i18next.com/overview/api#https://www.i18next.com/overview/api#store-events store.on},
32
+ # {https://www.i18next.com/overview/api#reloadresources reloadResources},
33
+ # {https://www.i18next.com/overview/api#removeresourcebundle removeResourceBundle},
34
+ # {https://www.i18next.com/overview/api#resolvedlanguage resolvedLanguage},
35
+ # {https://www.i18next.com/overview/api#setdefaultnamespace setDefaultNamespace},
36
+ # {https://www.i18next.com/overview/api#store-events store.on},
35
37
  # {https://www.i18next.com/overview/api#t t}, and
36
38
  # {https://www.i18next.com/overview/api#use use}.
37
39
  #
38
- # It can handle {https://www.i18next.com/overview/api#events i18next events}. See methods on
39
- # and off.
40
+ # Function {https://www.i18next.com/overview/api#createinstance createInstance}
41
+ # is not supported because each I18next::I18next instance has its own
42
+ # JavaScript i18next module instance. To create a new instance use
43
+ # I18next::I18next.new.
40
44
  #
41
- # It also provides method {#import_js_module} for loading {https://www.i18next.com/overview/plugins-and-utils i18next plugins}.
45
+ # Function {https://www.i18next.com/overview/api#format format} is not supported
46
+ # because it is a legacy function that has been superseded by
47
+ # {https://www.i18next.com/translation-function/formatting built-in formatting
48
+ # functions}.
49
+ #
50
+ # It can handle {https://www.i18next.com/overview/api#events i18next events}.
51
+ # See methods {#on} and {#off}.
52
+ #
53
+ # It also provides method {#import_js_module} for loading
54
+ # {https://www.i18next.com/overview/plugins-and-utils i18next plugins}.
42
55
  class I18next
43
56
 
44
57
  # Each I18next instance has its own i18next Javascript module
@@ -54,7 +67,7 @@ module I18next
54
67
  # @param module_path [String] the path to the module's *.js file, may be a
55
68
  # file path or a URL
56
69
  #
57
- # @return [Promise] a promise that resolves to the JavaScript module that can be passed
70
+ # @return [Promise] a promise that resolves to a JavaScript module that can be passed
58
71
  # to the {#use} method
59
72
  #
60
73
  def import_js_module(module_path)
@@ -68,18 +81,19 @@ module I18next
68
81
  promise
69
82
  end
70
83
 
71
- # Loads an {https://www.i18next.com/overview/api#use i18next} plugin
84
+ # Loads an {https://www.i18next.com/overview/plugins-and-utils i18next plugin}
72
85
  #
73
- # @param js_module a plugin's JavaScript module that was imported
86
+ # @param js_module [Object] a plugin's JavaScript module that was imported
74
87
  # by method {#import_js_module}
75
88
  # @return [I18next::I18next] self
89
+ # @see https://www.i18next.com/overview/api#use The i18next use function
76
90
  def use(js_module)
77
91
  `#{@i18next}.use(js_module.default)`
78
92
  self
79
93
  end
80
94
 
81
95
  # Initializes {https://www.i18next.com/overview/api#init i18next}
82
- # @param options [Hash] a hash with keys matching the {https://www.i18next.com/overview/configuration-options i18next options}.
96
+ # @param options [Hash] a hash with keys matching the {https://www.i18next.com/overview/configuration-options i18next options}
83
97
  # @return [Promise] a promise that resolves when i18next has been initialized
84
98
  def init(options = {})
85
99
  promise = Promise.new
@@ -97,6 +111,7 @@ module I18next
97
111
  # @param language [String] the new language
98
112
  # @return [Promise] a promise that resolves when the language's
99
113
  # translations have been loaded
114
+ # @see https://www.i18next.com/overview/api#changelanguage The i18next changeLanguage function
100
115
  def change_language(language)
101
116
  promise = Promise.new
102
117
  `
@@ -108,7 +123,8 @@ module I18next
108
123
  promise
109
124
  end
110
125
 
111
- # @return [String] the current {https://www.i18next.com/overview/api#language i18next} language
126
+ # @return [String] the current language
127
+ # @see https://www.i18next.com/overview/api#language The i18next language function
112
128
  def language
113
129
  `#{@i18next}.language`
114
130
  end
@@ -117,23 +133,25 @@ module I18next
117
133
  # @param [String, Array<String>] key one or more keys that reference translations
118
134
  # @param [Hash] options options for formatters, post processors, etc.
119
135
  # @return [String] the translation associated with the first key that resolves
136
+ # @see https://www.i18next.com/overview/api#t The i18next t function
120
137
  def t(key, options={})
121
138
  `#{@i18next}.t(key, #{options.to_n})`
122
139
  end
123
140
 
124
141
  # @return [Boolean] true if the key exists
142
+ # @see https://www.i18next.com/overview/api#exists The i18next exists function
125
143
  def exists(key)
126
144
  `#{@i18next}.exists(key)`
127
145
  end
128
146
 
129
- # Returns a Proc that acts a +t+ method that defaults to a language and namespace.
130
- # @example When calling the returned Proc, use brackets, not parentheses
147
+ # Returns a Proc that acts as a +t+ method that defaults to a language and namespace.
148
+ # @example When calling the returned Proc, use brackets, not parentheses:
131
149
  # en = get_fixed_t("en")
132
150
  # translation = en["key"]
133
151
  # @param lng [String] language
134
152
  # @param ns [String] namespace
135
153
  # @param key_prefix [String] key prefix
136
- # @see https://www.i18next.com/overview/api#getFixedT The i18next getFixedT method
154
+ # @see https://www.i18next.com/overview/api#getfixedt The i18next getFixedT function
137
155
  def get_fixed_t(lng = nil, ns = nil, key_prefix = nil)
138
156
  if key_prefix && ns && lng
139
157
  `#{@i18next}.getFixedT(lng, ns, key_prefix)`
@@ -146,13 +164,13 @@ module I18next
146
164
  end
147
165
  end
148
166
 
149
- # @see https://www.i18next.com/overview/api#languages The i18next languages method
167
+ # @see https://www.i18next.com/overview/api#languages The i18next languages function
150
168
  # @return language codes that will be used to look up the translation value
151
169
  def languages
152
170
  `#{@i18next}.languages`
153
171
  end
154
172
 
155
- # @see https://www.i18next.com/overview/api#resolvedLanguage The i18next resolvedLanguage method
173
+ # @see https://www.i18next.com/overview/api#resolvedlanguage The i18next resolvedLanguage function
156
174
  # @return the current resolved language
157
175
  def resolved_language
158
176
  `#{@i18next}.resolvedLanguage`
@@ -161,7 +179,7 @@ module I18next
161
179
  # Loads additional namespaces not defined in init options
162
180
  # @param ns [String, Array<String>] one or more namespaces
163
181
  # @return [Promise] a promise that resolves when the namespaces have been loaded
164
- # @see https://www.i18next.com/overview/api#loadNamespaces The i18next loadNamespaces method
182
+ # @see https://www.i18next.com/overview/api#loadnamespaces The i18next loadNamespaces function
165
183
  def load_namespaces(ns)
166
184
  promise = Promise.new
167
185
  `
@@ -177,7 +195,7 @@ module I18next
177
195
  # Loads additional languages not defined in init options (preload).
178
196
  # @param lngs [String, Array<String>] one or more languages
179
197
  # @return [Promise] a promise that resolves when the languages have been loaded
180
- # @see https://www.i18next.com/overview/api#loadLanguages The i18next loadLanguages method
198
+ # @see https://www.i18next.com/overview/api#loadlanguages The i18next loadLanguages function
181
199
  def load_languages(lngs)
182
200
  promise = Promise.new
183
201
  `
@@ -190,14 +208,29 @@ module I18next
190
208
  promise
191
209
  end
192
210
 
193
- # @private
194
- def reload_resources
195
- raise 'Not implemented'
211
+ # Reloads resources on given state.
212
+ #
213
+ # Optionally you can pass an array of languages and/or namespaces as params if
214
+ # you don't want to reload all.
215
+ # @param lng [String, Array<String>] one or more languages
216
+ # @param ns [String, Array<String>] one or more namespaces
217
+ # @return [Promise] a promise that resolves when the resources have been loaded
218
+ # @see https://www.i18next.com/overview/api#reloadresources The i18next reloadResources function
219
+ def reload_resources(lng = nil, ns = nil)
220
+ if !lng && !ns
221
+ reload_all_resources
222
+ elsif lng && !ns
223
+ reload_lng_resources(lng)
224
+ elsif !lng && ns
225
+ reload_ns_resources(ns)
226
+ else
227
+ reload_lng_ns_resources(lng, ns)
228
+ end
196
229
  end
197
230
 
198
231
  # Changes the default namespace.
199
232
  # @param ns [String] new default namespace
200
- # @see https://www.i18next.com/overview/api#setDefaultNamespace The i18next setDefaultNamespace method
233
+ # @see https://www.i18next.com/overview/api#setdefaultnamespace The i18next setDefaultNamespace function
201
234
  def set_default_namespace(ns)
202
235
  `#{@i18next}.setDefaultNamespace(ns)`
203
236
  end
@@ -205,51 +238,40 @@ module I18next
205
238
  # Get a language's reading direction
206
239
  # @param lng [String] the language; if omitted, the current language is used
207
240
  # @return "ltr" or "rtl"
208
- # @see https://www.i18next.com/overview/api#dir The i18next dir method
241
+ # @see https://www.i18next.com/overview/api#dir The i18next dir function
209
242
  def dir(lng)
210
243
  `#{@i18next}.dir(lng)`
211
244
  end
212
245
 
213
- # @private
214
- def format(data, format, lng)
215
- raise 'Not implemented'
216
- end
217
-
218
- # @private
219
- def create_instance(options)
220
- raise 'Not implemented'
221
- end
222
-
223
- # @private
224
- def clone_instance(options)
225
- raise 'Not implemented'
226
- end
227
-
228
246
  # Gets one value by given key.
229
- # @see https://www.i18next.com/overview/api#getResource The i18next getResource method
247
+ # @param lng [String] language
248
+ # @param ns [String] namespace
249
+ # @param key_prefix [String] key prefix
250
+ # @param options [Hash] key separator and ignore JSON structure
251
+ # @see https://www.i18next.com/overview/api#getresource The i18next getResource function
230
252
  def get_resource(lng, ns, key, options = {})
231
253
  `#{@i18next}.getResource(lng, ns, key, options)`
232
254
  end
233
255
 
234
256
  # Adds one key/value.
235
- # @see https://www.i18next.com/overview/api#addResource The i18next addResource method
257
+ # @see https://www.i18next.com/overview/api#addresource The i18next addResource function
236
258
  def add_resource(lng, ns, key, value, options = {})
237
259
  `#{@i18next}.addResource(lng, ns, key, value, options)`
238
260
  end
239
261
 
240
262
  # Adds multiple key/values.
241
263
  # @param resources [Hash] key/value pairs
242
- # @see https://www.i18next.com/overview/api#addResources The i18next addResources method
264
+ # @see https://www.i18next.com/overview/api#addresources The i18next addResources function
243
265
  def add_resources(lng, ns, resources)
244
266
  `#{@i18next}.addResources(lng, ns, #{resources.to_n})`
245
267
  end
246
268
 
247
269
  # Adds a complete bundle
248
270
  # @param lng [String] bundle language
249
- # @param ns [String] bundel namespace
271
+ # @param ns [String] bundle namespace
250
272
  # @param deep [Boolean] if true will extend existing translations in the bundle
251
273
  # @param overwrite [Boolean] if true it will overwrite existing translations in the bundle
252
- # @see https://www.i18next.com/overview/api#addResourceBundle The i18next addResourceBundle method
274
+ # @see https://www.i18next.com/overview/api#addresourcebundle The i18next addResourceBundle function
253
275
  def add_resource_bundle(lng, ns, resources, deep = false, overwrite = false)
254
276
  `#{@i18next}.addResources(lng, ns, #{resources.to_n}, deep, overwrite)`
255
277
  end
@@ -257,21 +279,24 @@ module I18next
257
279
  # Checks if a resource bundle exists
258
280
  # @param lng [String] language
259
281
  # @param ns [String] namespace
282
+ # @return [Boolean] true if the bundle exists
260
283
  def has_resource_bundle(lng, ns)
261
284
  `#{@i18next}.hasResourceBundle(lng, ns)`
262
285
  end
263
286
 
264
287
  # Returns resource data for a language.
265
288
  # @param lng [String] language
266
- # @return resource data
267
- # @see https://www.i18next.com/overview/api#getDataByLanguage The i18next getDataByLanguage method
289
+ # @return [Hash] resource data
290
+ # @see https://www.i18next.com/overview/api#getbatabylanguage The i18next getDataByLanguage function
268
291
  def get_data_by_language(lng)
269
292
  js_obj_to_ruby_hash(`#{@i18next}.getDataByLanguage(lng)`)
270
293
  end
271
294
 
272
295
  # Gets a resource bundle.
296
+ # @param lng [String] language
297
+ # @param ns [String] namespace
273
298
  # @return [Hash] key/value pairs
274
- # @see https://www.i18next.com/overview/api#getResourceBundle The i18next getResourceBundle method
299
+ # @see https://www.i18next.com/overview/api#getresourcebundle The i18next getResourceBundle function
275
300
  def get_resource_bundle(lng, ns)
276
301
  js_obj_to_ruby_hash(`#{@i18next}.getResourceBundle(lng, ns)`)
277
302
  end
@@ -279,6 +304,7 @@ module I18next
279
304
  # Removes a resource bundle exists
280
305
  # @param lng [String] language
281
306
  # @param ns [String] namespace
307
+ # @see https://www.i18next.com/overview/api#removeresourcebundle The i18next removeResourceBundle function
282
308
  def remove_resource_bundle(lng, ns)
283
309
  `#{@i18next}.removeResourceBundle(lng, ns)`
284
310
  end
@@ -286,7 +312,7 @@ module I18next
286
312
  # Create a listener for an i18next event.
287
313
  # @param event [String] event name
288
314
  # @param &listener [block] an event listener that is passed event-dependent arguments
289
- # @return [Proc] the listener, which can be used to unsubscribe it via method off(event, listener)
315
+ # @return [Proc] a listener, which can be used to unsubscribe it via method +off(event, listener)+
290
316
  # @see https://www.i18next.com/overview/api#events The i18next events
291
317
  # @see #off
292
318
  def on(event, &listener)
@@ -305,20 +331,24 @@ module I18next
305
331
 
306
332
  # Create a listener for an i18next store event.
307
333
  #
308
- # Only available after the init call.
334
+ # Only available after the +init+ call.
309
335
  #
310
336
  # @param event [String] event name ("added" or "removed")
311
337
  # @param &listener [block] an event listener that is passed language and namespace arguments
312
- # @return [Proc] the listener, which can be used to unsubscribe it via method off(event, listener)
338
+ # @return [Proc] the listener, which can be unsubscribed via method +off(event, listener)+
313
339
  # @see https://www.i18next.com/overview/api#store-events The i18next store events
314
340
  def store_on(event, &listener)
315
341
  `#{@i18next}.store.on(event, listener)`
316
342
  listener
317
343
  end
318
344
 
319
- # Unsubscribes an event's listener(s)
345
+ # Unsubscribes an event's listener(s).
346
+ #
347
+ # Listeners are created by method {#on}.
320
348
  # @param event [String] event name
321
349
  # @param listener [Proc] the listener to unsubscribe; if absent, unsubscribe all listeners
350
+ # @see https://www.i18next.com/overview/api#events The i18next events
351
+ # @see #on
322
352
  def off(event, listener = nil)
323
353
  if listener
324
354
  `#{@i18next}.off(event, listener)`
@@ -327,8 +357,75 @@ module I18next
327
357
  end
328
358
  end
329
359
 
360
+ # Creates a clone of the current instance.
361
+ #
362
+ # Shares store, plugins and initial configuration. Can be used to create an
363
+ # instance sharing storage but being independent on set language or default namespaces.
364
+ # @param options [Hash] a hash with keys matching the {https://www.i18next.com/overview/configuration-options i18next options}
365
+ # @return [I18next::I18next] a new instance
366
+ # @see https://www.i18next.com/overview/api#cloneinstance The i18next cloneInstance function
367
+ def clone_instance(options = {})
368
+ I18nextClone.new(@i18next, options)
369
+ end
370
+
330
371
  private
331
372
 
373
+ # @private
374
+ class I18nextClone < I18next
375
+ def initialize(js_i18next, options)
376
+ @i18next = `#{js_i18next}.cloneInstance(#{options.to_n})`
377
+ end
378
+ end
379
+
380
+ # @private
381
+ def reload_all_resources
382
+ promise = Promise.new
383
+ `
384
+ #{@i18next}.reloadResources()
385
+ .then(
386
+ () => {
387
+ promise.$resolve()
388
+ });
389
+ `
390
+ promise
391
+ end
392
+
393
+ def reload_lng_resources(lng)
394
+ promise = Promise.new
395
+ `
396
+ #{@i18next}.reloadResources(lng)
397
+ .then(
398
+ () => {
399
+ promise.$resolve()
400
+ });
401
+ `
402
+ promise
403
+ end
404
+
405
+ def reload_ns_resources(ns)
406
+ promise = Promise.new
407
+ `
408
+ #{@i18next}.reloadResources(null, ns)
409
+ .then(
410
+ () => {
411
+ promise.$resolve()
412
+ });
413
+ `
414
+ promise
415
+ end
416
+
417
+ def reload_lng_ns_resources(lng, ns)
418
+ promise = Promise.new
419
+ `
420
+ #{@i18next}.reloadResources(lng, ns)
421
+ .then(
422
+ () => {
423
+ promise.$resolve()
424
+ });
425
+ `
426
+ promise
427
+ end
428
+
332
429
  # @private
333
430
  # Create a listener for the i18next initialized event.
334
431
  # @param &listener [Proc] an event listener block that is passed initialized options Hash
@@ -1,3 +1,3 @@
1
1
  module I18next
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
data/opal-i18next.gemspec CHANGED
@@ -5,12 +5,12 @@ Gem::Specification.new do |spec|
5
5
  spec.version = I18next::VERSION
6
6
  spec.summary = "An Opal wrapper for the JavaScript i18next module."
7
7
  spec.description = <<~DESC
8
- A basic Opal wrapper for the JavaScript i18next module that supports methods
9
- addResource, addResourceBundle, addResources, changeLanguage, dir, exists,
10
- getDataByLanguage, getFixedT, getResource, getResourceBundle, hasResourceBundle,
11
- init, language, languages, loadLanguages, loadNamespaces, off, on,
12
- removeResourceBundle, resolvedLanguage, store.on, t, and use. It also
13
- provides method import_js_module for loading i18next plugins.
8
+ A basic Opal wrapper for the JavaScript I18N module i18next that supports functions
9
+ addResource, addResourceBundle, addResources, changeLanguage, cloneInstance,
10
+ dir, exists, getDataByLanguage, getFixedT, getResource, getResourceBundle,
11
+ hasResourceBundle, init, language, languages, loadLanguages, loadNamespaces,
12
+ off, on, reloadResources, removeResourceBundle, resolvedLanguage, store.on,
13
+ t, and use. It also provides method import_js_module for loading i18next plugins.
14
14
  DESC
15
15
  spec.authors = ["Larry North"]
16
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-i18next
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Larry North
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-07 00:00:00.000000000 Z
11
+ date: 2022-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -25,12 +25,12 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.5.0
27
27
  description: |
28
- A basic Opal wrapper for the JavaScript i18next module that supports methods
29
- addResource, addResourceBundle, addResources, changeLanguage, dir, exists,
30
- getDataByLanguage, getFixedT, getResource, getResourceBundle, hasResourceBundle,
31
- init, language, languages, loadLanguages, loadNamespaces, off, on,
32
- removeResourceBundle, resolvedLanguage, store.on, t, and use. It also
33
- provides method import_js_module for loading i18next plugins.
28
+ A basic Opal wrapper for the JavaScript I18N module i18next that supports functions
29
+ addResource, addResourceBundle, addResources, changeLanguage, cloneInstance,
30
+ dir, exists, getDataByLanguage, getFixedT, getResource, getResourceBundle,
31
+ hasResourceBundle, init, language, languages, loadLanguages, loadNamespaces,
32
+ off, on, reloadResources, removeResourceBundle, resolvedLanguage, store.on,
33
+ t, and use. It also provides method import_js_module for loading i18next plugins.
34
34
  email:
35
35
  - lnorth@swnorth.com
36
36
  executables: []