opal-i18next 0.1.1
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 +7 -0
- data/lib/opal/i18next.rb +3 -0
- data/lib/opal-i18next.rb +1 -0
- data/opal/i18next/i18next.rb +92 -0
- data/opal/i18next/version.rb +3 -0
- data/opal/opal-i18next.rb +2 -0
- data/opal-i18next.gemspec +32 -0
- metadata +70 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c6e23990c8b1a275471ba5880ea7b75db97794620ef037d28b411c21986b1d6d
|
4
|
+
data.tar.gz: 1ef817b85846c9bb8b7a93321aef9bf15a637bec76947ca6362579ec497cb94b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4288938af6057505cc90f478ff7c366e0a95be8a35257729800c1480b814ffc5f88e8d86b9e3a8a2e0e014933a0e85bbc14b97fba16f578f251d3019d2fb36a6
|
7
|
+
data.tar.gz: ad2988876b8b3dafd899da0949d0380280d85ff564d52eb3be1b187a12d0cd2bd02b69606e48e71e47476f0177cb8750bd256312eed74653ae364f55d80131cc
|
data/lib/opal/i18next.rb
ADDED
data/lib/opal-i18next.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'opal/i18next'
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require "opal"
|
2
|
+
require "native"
|
3
|
+
|
4
|
+
# Uses PromiseV2 if present
|
5
|
+
# @see https://opalrb.com/docs/guides/v1.5.1/async PromiseV2
|
6
|
+
module I18next
|
7
|
+
|
8
|
+
Promise = defined?(PromiseV2) ? PromiseV2 : ::Promise
|
9
|
+
|
10
|
+
# {I18next} is a basic wrapper around the JavaScript {https://www.i18next.com i18next module}.
|
11
|
+
#
|
12
|
+
# It wraps i18next methods {https://www.i18next.com/overview/api#init init},
|
13
|
+
# {https://www.i18next.com/overview/api#use use},
|
14
|
+
# {https://www.i18next.com/overview/api#t t},
|
15
|
+
# {https://www.i18next.com/overview/api#changelanguage changeLanguage}, and
|
16
|
+
# {https://www.i18next.com/overview/api#language language}.
|
17
|
+
# It also provides method {#import_js_module} for loading {https://www.i18next.com/overview/plugins-and-utils i18next plugins}.
|
18
|
+
class I18next
|
19
|
+
|
20
|
+
# Imports a JavaScript module (ESM)
|
21
|
+
#
|
22
|
+
# Use this method to import {https://www.i18next.com/overview/plugins-and-utils i18next JavaScript plugins}
|
23
|
+
# that can be passed to the {#use} method.
|
24
|
+
#
|
25
|
+
# @param module_path [String] the path to the module's *.js file, may be a
|
26
|
+
# file path or a URL
|
27
|
+
#
|
28
|
+
# @return [Promise] a promise that resolves to the JavaScript module that can be passed
|
29
|
+
# to the {#use} method
|
30
|
+
#
|
31
|
+
def import_js_module(module_path)
|
32
|
+
promise = Promise.new
|
33
|
+
`
|
34
|
+
import(module_path).then(
|
35
|
+
module => {
|
36
|
+
promise.$resolve(module);
|
37
|
+
});
|
38
|
+
`
|
39
|
+
promise
|
40
|
+
end
|
41
|
+
|
42
|
+
# Loads an {https://www.i18next.com/overview/api#use i18next} plugin
|
43
|
+
#
|
44
|
+
# @param js_module a plugin's JavaScript module that was imported
|
45
|
+
# by method {#import_js_module}
|
46
|
+
def use(js_module)
|
47
|
+
`i18next.use(js_module.default)`
|
48
|
+
end
|
49
|
+
|
50
|
+
# Initializes {https://www.i18next.com/overview/api#init i18next}
|
51
|
+
# @param options [Hash] a hash with keys matching the {https://www.i18next.com/overview/configuration-options i18next options}
|
52
|
+
# @return [Promise] a promise that resolves when i18next has been initialized
|
53
|
+
def init(options)
|
54
|
+
promise = Promise.new
|
55
|
+
`
|
56
|
+
i18next.init(#{options.to_n})
|
57
|
+
.then(
|
58
|
+
t => {
|
59
|
+
promise.$resolve(t);
|
60
|
+
});
|
61
|
+
`
|
62
|
+
promise
|
63
|
+
end
|
64
|
+
|
65
|
+
# Changes the {https://www.i18next.com/overview/api#changelanguage i18next} language
|
66
|
+
# @param language [String] the new language
|
67
|
+
# @return [Promise] a promise that resolves when the language's
|
68
|
+
# translations have been loaded
|
69
|
+
def change_language(language)
|
70
|
+
promise = Promise.new
|
71
|
+
`
|
72
|
+
i18next.changeLanguage(language).then(
|
73
|
+
t => {
|
74
|
+
promise.$resolve(t)
|
75
|
+
});
|
76
|
+
`
|
77
|
+
promise
|
78
|
+
end
|
79
|
+
|
80
|
+
# @return [String] the current {https://www.i18next.com/overview/api#language i18next} language
|
81
|
+
def language
|
82
|
+
`i18next.language`
|
83
|
+
end
|
84
|
+
|
85
|
+
# The {https://www.i18next.com/overview/api#t i18next} translation associated with a key
|
86
|
+
# @param [String] key a key that references a translation, single key only
|
87
|
+
# @return [String] the translation associated with the key
|
88
|
+
def t(key)
|
89
|
+
`i18next.t(key)`
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative "opal/i18next/version"
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "opal-i18next"
|
5
|
+
spec.version = I18next::VERSION
|
6
|
+
spec.summary = "An Opal wrapper for the JavaScript i18next module."
|
7
|
+
spec.description = <<~DESC
|
8
|
+
A basic Opal wrapper for the JavaScript i18next module that supports methods
|
9
|
+
init, use, t, changeLanguage, and language. Is also provides method
|
10
|
+
import_js_module for loading i18next plugins.
|
11
|
+
DESC
|
12
|
+
spec.authors = ["Larry North"]
|
13
|
+
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.email = ["lnorth@swnorth.com"]
|
16
|
+
spec.homepage = "https://github.com/LarryNorth/opal-i18next"
|
17
|
+
spec.metadata = {
|
18
|
+
"bug_tracker_uri" => "https://github.com/LarryNorth/opal-i18next/issues",
|
19
|
+
"documentation_uri" => "https://www.rubydoc.info/gems/opal-i18next",
|
20
|
+
"homepage_uri" => spec.homepage,
|
21
|
+
"source_code_uri" => "https://github.com/LarryNorth/opal-i18next"
|
22
|
+
}
|
23
|
+
|
24
|
+
spec.files += Dir["*.gemspec"]
|
25
|
+
spec.files += Dir["lib/**/*"]
|
26
|
+
spec.files += Dir["opal/**/*"]
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.required_ruby_version = ">= 3.1"
|
30
|
+
|
31
|
+
spec.add_dependency 'opal', '~> 1.5.0'
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: opal-i18next
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Larry North
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: opal
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.5.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.5.0
|
27
|
+
description: |
|
28
|
+
A basic Opal wrapper for the JavaScript i18next module that supports methods
|
29
|
+
init, use, t, changeLanguage, and language. Is also provides method
|
30
|
+
import_js_module for loading i18next plugins.
|
31
|
+
email:
|
32
|
+
- lnorth@swnorth.com
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- lib/opal-i18next.rb
|
38
|
+
- lib/opal/i18next.rb
|
39
|
+
- opal-i18next.gemspec
|
40
|
+
- opal/i18next/i18next.rb
|
41
|
+
- opal/i18next/version.rb
|
42
|
+
- opal/opal-i18next.rb
|
43
|
+
homepage: https://github.com/LarryNorth/opal-i18next
|
44
|
+
licenses:
|
45
|
+
- MIT
|
46
|
+
metadata:
|
47
|
+
bug_tracker_uri: https://github.com/LarryNorth/opal-i18next/issues
|
48
|
+
documentation_uri: https://www.rubydoc.info/gems/opal-i18next
|
49
|
+
homepage_uri: https://github.com/LarryNorth/opal-i18next
|
50
|
+
source_code_uri: https://github.com/LarryNorth/opal-i18next
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '3.1'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubygems_version: 3.3.7
|
67
|
+
signing_key:
|
68
|
+
specification_version: 4
|
69
|
+
summary: An Opal wrapper for the JavaScript i18next module.
|
70
|
+
test_files: []
|