remote_i18n_extension 1.0.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 +7 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +3 -0
- data/README.md +9 -0
- data/Rakefile +7 -0
- data/lib/generators/remote_i18n_extension/install_generator.rb +13 -0
- data/lib/generators/templates/remote_i18n_extension_config.rb +25 -0
- data/lib/remote_i18n_extension/backend/remote.rb +43 -0
- data/lib/remote_i18n_extension/version.rb +3 -0
- data/lib/remote_i18n_extension.rb +44 -0
- data/remote_i18n_extension.gemspec +25 -0
- metadata +124 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7534fa537c20f856e3ad95d19b8108731289d5966a2fdde6b72d90420e7f1652
|
4
|
+
data.tar.gz: 4a974f71c326f864d06d76aa3c00f6b7a06733386081693b0e16a193bad8272f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 42d66376720540baff95b4f1de7556eaa3a920750fc73912f5162db4e6d68a2b89a978a655bd754ffcbc6f0ae8db82c685497b8f4777d6fd29a49cb418c564f9
|
7
|
+
data.tar.gz: '08f0700de67562a9a619306c6b10f5f2339d04571698a93ca199de5e18990e3b80d09d5b2f6911abb9b19b4c687b238f3d70f642f868a170e8f06200a39e55e6'
|
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# Remote-I18n-Extension-Hcc
|
2
|
+
|
3
|
+
This gem provides an extension to the exsiting url(https://github.com/ruby-i18n/i18n)[I18n] gem by providing the ability to fetch locales from remote files
|
4
|
+
|
5
|
+
|
6
|
+
# Getting Started
|
7
|
+
|
8
|
+
# Requirements
|
9
|
+
This gem requires `ruby 3.1.3` and `Rails 7.0.4.3`
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module RemoteI18nExtensionHcc
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __dir__)
|
6
|
+
|
7
|
+
desc 'Creates config file for RemoteI18nExtensionHcc'
|
8
|
+
|
9
|
+
def copy_config
|
10
|
+
template 'remote_i18n_extension_config.rb', "#{Rails.root}/config/remote_i18n_extension.rb"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'remote_i18n_extension'
|
2
|
+
|
3
|
+
RemoteI18nExtensionHcc.config do |config|
|
4
|
+
# All the configurations are mandatory
|
5
|
+
|
6
|
+
# URL to your remote locales folder housing all the translations
|
7
|
+
# Please make sure the file structure inside this folder mirrors your local locales folder
|
8
|
+
# for fallback
|
9
|
+
# e.g. https://github.com/Gooner91/locales-repo/tree/master/locales
|
10
|
+
# config.remote_host = ENV['LOCALES_REMOTE_HOST']
|
11
|
+
|
12
|
+
|
13
|
+
# Below configurations are for the ruby I18n module
|
14
|
+
|
15
|
+
# List of available locales
|
16
|
+
# config.available_locales = [:en, :de]
|
17
|
+
|
18
|
+
|
19
|
+
# config.locale = :en
|
20
|
+
|
21
|
+
# Paths to the translation files
|
22
|
+
# Please make sure the paths to the translation files is same for local and remote locales folder
|
23
|
+
# %w[locales/devise.de.yml locales/devise.en.yml ]
|
24
|
+
# config.load_path = %w[]
|
25
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module RemoteI18nExtensionHcc
|
4
|
+
module Backend
|
5
|
+
class Remote < I18n::Backend::Simple
|
6
|
+
protected
|
7
|
+
|
8
|
+
# Overrides load_yml method in Simple backend to load translation from
|
9
|
+
# the provided remote host otherwise return hash to suppress any error and
|
10
|
+
# fallback to Simple backend fetching translations from locale files.
|
11
|
+
def load_yml(filename)
|
12
|
+
YAML.load(load_remote_locales(filename))
|
13
|
+
rescue TypeError, ScriptError, StandardError
|
14
|
+
{}
|
15
|
+
end
|
16
|
+
|
17
|
+
# Overrides load_json method in Simple backend to load translation from
|
18
|
+
# the provided remote host otherwise return hash to suppress any error and
|
19
|
+
# fallback to Simple backend fetching translations from locale files.
|
20
|
+
def load_json(filename)
|
21
|
+
JSON.parse(load_remote_locales(filename))
|
22
|
+
rescue TypeError, StandardError
|
23
|
+
{}
|
24
|
+
end
|
25
|
+
|
26
|
+
# Overrides load_rb method in Simple backend to load translation from
|
27
|
+
# the provided remote host otherwise return hash to suppress any error and
|
28
|
+
# fallback to Simple backend fetching translations from locale files.
|
29
|
+
def load_rb(filename)
|
30
|
+
eval(load_remote_locales(filename), binding, filename)
|
31
|
+
rescue StandardError
|
32
|
+
{}
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def load_remote_locales(filename)
|
38
|
+
remote_host = RemoteI18nExtensionHcc.remote_host
|
39
|
+
URI.parse("#{remote_host}/#{filename}").read
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'i18n'
|
2
|
+
require_relative 'remote_i18n_extension/backend/remote'
|
3
|
+
|
4
|
+
module RemoteI18nExtensionHcc
|
5
|
+
I18n.backend = I18n::Backend::Chain.new(
|
6
|
+
RemoteI18nExtensionHcc::Backend::Remote.new,
|
7
|
+
I18n::Backend::Simple.new
|
8
|
+
)
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_reader :load_path, :available_locales, :locale
|
12
|
+
attr_accessor :remote_host
|
13
|
+
|
14
|
+
def config
|
15
|
+
yield self
|
16
|
+
end
|
17
|
+
|
18
|
+
def locale=(locale)
|
19
|
+
I18n.locale = locale || :en
|
20
|
+
end
|
21
|
+
|
22
|
+
def load_path=(paths_array)
|
23
|
+
I18n.load_path += paths_array
|
24
|
+
end
|
25
|
+
|
26
|
+
def available_locales=(locales_array)
|
27
|
+
I18n.available_locales = locales_array ? locales_array : [:en]
|
28
|
+
end
|
29
|
+
|
30
|
+
def translate(*args)
|
31
|
+
I18n.t(*args)
|
32
|
+
end
|
33
|
+
alias :t :translate
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def init_i18n_backend
|
39
|
+
I18n.backend = I18n::Backend::Chain.new(
|
40
|
+
RemoteI18nExtensionHcc::Backend::Remote.new,
|
41
|
+
I18n::Backend::Simple.new
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path('lib/remote_i18n_extension/version', __dir__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = 'remote_i18n_extension'
|
5
|
+
spec.version = RemoteI18nExtensionHcc::VERSION
|
6
|
+
spec.authors = ['Hassan Ahmed']
|
7
|
+
spec.email = ['hassan91ahmed@gmail.com']
|
8
|
+
spec.summary = 'Support remote fetching of locales'
|
9
|
+
spec.description = 'Support remote fetching of locales'
|
10
|
+
spec.homepage = 'https://github.com/Gooner91/remoteI18nExtensionHcc'
|
11
|
+
spec.license = 'MIT'
|
12
|
+
spec.platform = Gem::Platform::RUBY
|
13
|
+
spec.required_ruby_version = '>=3.1.3'
|
14
|
+
spec.files = Dir['README.md', 'LICENSE',
|
15
|
+
'CHANGELOG.md', 'lib/**/*.rb',
|
16
|
+
'lib/**/*.rake',
|
17
|
+
'remote_i18n_extension.gemspec', '.github/*.md',
|
18
|
+
'Gemfile', 'Rakefile']
|
19
|
+
spec.add_dependency 'i18n', '~> 1.13.0'
|
20
|
+
spec.add_dependency 'rubocop-performance', '~> 1.17.1'
|
21
|
+
spec.add_dependency 'rubocop-rails', '~> 2.19.1'
|
22
|
+
spec.add_dependency 'rubocop-rspec', '~> 2.21.0'
|
23
|
+
spec.add_dependency 'rspec-rails', '~> 6.0.2'
|
24
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: remote_i18n_extension
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hassan Ahmed
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-05-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: i18n
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.13.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.13.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rubocop-performance
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.17.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.17.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop-rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.19.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.19.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop-rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.21.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.21.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-rails
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 6.0.2
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 6.0.2
|
83
|
+
description: Support remote fetching of locales
|
84
|
+
email:
|
85
|
+
- hassan91ahmed@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- CHANGELOG.md
|
91
|
+
- Gemfile
|
92
|
+
- README.md
|
93
|
+
- Rakefile
|
94
|
+
- lib/generators/remote_i18n_extension/install_generator.rb
|
95
|
+
- lib/generators/templates/remote_i18n_extension_config.rb
|
96
|
+
- lib/remote_i18n_extension.rb
|
97
|
+
- lib/remote_i18n_extension/backend/remote.rb
|
98
|
+
- lib/remote_i18n_extension/version.rb
|
99
|
+
- remote_i18n_extension.gemspec
|
100
|
+
homepage: https://github.com/Gooner91/remoteI18nExtensionHcc
|
101
|
+
licenses:
|
102
|
+
- MIT
|
103
|
+
metadata:
|
104
|
+
rubygems_mfa_required: 'true'
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 3.1.3
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
requirements: []
|
120
|
+
rubygems_version: 3.4.12
|
121
|
+
signing_key:
|
122
|
+
specification_version: 4
|
123
|
+
summary: Support remote fetching of locales
|
124
|
+
test_files: []
|