remote_i18n_extension 1.0.8 → 1.0.9
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 +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +85 -5
- data/lib/generators/templates/remote_i18n_extension_config.rb +2 -4
- data/lib/remote_i18n_extension/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d39598ad005dbd539128eee44e2268057997da793b9b4d02dd5e21833b2ddd3
|
4
|
+
data.tar.gz: dd65bf84f074976cec0dc388b5c7747fbd8515fe8790fc653f1b2460cbca53d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e188c887f2bfd729a4052aaecf932108f74297a734944b16e4da63f60f115d07823c2b3e85688eb91f38a340c9481bd5516eac42d640d0cee9c8d3dcf66526fd
|
7
|
+
data.tar.gz: 3190ea3504cc94f43a3a7ae52933e84b6eddb246c0529ed5ae859744500096f201bf8d6ebf26cf6a1c83151db6765830745568d0fcfc235884126bc6db2602a8
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,89 @@
|
|
1
|
-
# Remote-I18n-Extension
|
1
|
+
# Remote-I18n-Extension
|
2
2
|
|
3
|
-
This gem
|
3
|
+
This gem is built on top of the popular [I18n](https://github.com/ruby-i18n/i18n) gem providing the ability to fetch translations from remotely hosted locale files. In case of a missing translation the gem fallbacks to serving translations from local files(present under `config/locales`) folder of your rails project.
|
4
4
|
|
5
|
+
## Requirements
|
5
6
|
|
6
|
-
|
7
|
+
This gem requires `ruby 3.1.3` and `Rails 7.0.4.3`
|
7
8
|
|
8
|
-
|
9
|
-
|
9
|
+
## Installation
|
10
|
+
To get started paste the following inside your Gemfile and run `bundle`
|
11
|
+
```
|
12
|
+
gem 'remote_i18n_extension', '~> 1.0', '>= 1.0.9'
|
13
|
+
```
|
14
|
+
or install via terminal using the following command:
|
15
|
+
```
|
16
|
+
gem install remote_i18n_extension
|
17
|
+
```
|
18
|
+
|
19
|
+
After that run the following command to generate the config file
|
20
|
+
```
|
21
|
+
rails g remote_i18n_extension:install
|
22
|
+
```
|
23
|
+
This will create the following config file `config/initializers/remote_i18n_extension.rb`
|
24
|
+
|
25
|
+
### Generated Configuration File
|
26
|
+
```
|
27
|
+
require 'remote_i18n_extension'
|
28
|
+
|
29
|
+
RemoteI18nExtension.config do |config|
|
30
|
+
# All the configurations are mandatory
|
31
|
+
|
32
|
+
# URL to your remote locales folder housing all the translations
|
33
|
+
# For now the library expects all the locales to be stored in a single (root) folder
|
34
|
+
# e.g. https://raw.githubusercontent.com/Gooner91/locales-repo/master/locales
|
35
|
+
# config.remote_host = ENV['LOCALES_REMOTE_HOST']
|
36
|
+
|
37
|
+
|
38
|
+
# Below configurations are for the ruby I18n module
|
39
|
+
|
40
|
+
# List of available locales
|
41
|
+
# config.available_locales = [:en, :de]
|
42
|
+
|
43
|
+
|
44
|
+
# config.locale = :en
|
45
|
+
|
46
|
+
# Paths to the translation files (in your local rails project for fallback)
|
47
|
+
# e.g. Dir[Rails.root.join("config", "locales", "*.{rb,yml}")]
|
48
|
+
# config.load_path = %w[]
|
49
|
+
end
|
50
|
+
|
51
|
+
```
|
52
|
+
|
53
|
+
### Configurations values
|
54
|
+
#### remote_host
|
55
|
+
- base URL/URL to the folder hosting the remote files
|
56
|
+
- an example URL would be `https://raw.githubusercontent.com/Gooner91/locales-repo/master/locales` if all the translation files are uploaded in side the `locales` folder provided in the above URL
|
57
|
+
#### available_locales
|
58
|
+
- the standard I18n configuration option e.g. `%i[:en :de]`
|
59
|
+
#### locale
|
60
|
+
- the standard I18n configuration option e.g. `:en`
|
61
|
+
#### load_path
|
62
|
+
- the standard I18n configuration option e.g. ` Dir[Rails.root.join("config", "locales", "*.yml")]`
|
63
|
+
|
64
|
+
## Usage
|
65
|
+
Fire up the server and you should be able to reference translations using the following method:
|
66
|
+
```
|
67
|
+
RemoteI18nExtension.t('activerecord.attributes.user.confirmation_sent_at')
|
68
|
+
```
|
69
|
+
|
70
|
+
## Demo Video
|
71
|
+
A demo of the working of this gem can be seen on the following loom link:
|
72
|
+
https://www.loom.com/share/78825da1d74248f1b80949bf4e72b1cc
|
73
|
+
|
74
|
+
## Constraints:
|
75
|
+
|
76
|
+
This gem facilitates fetching the `locales` that are hosted online. For that purpose the gem expects all the `locales`/`translation` files to be stored at one place.
|
77
|
+
|
78
|
+
|
79
|
+
## Future Aspects:
|
80
|
+
|
81
|
+
Since this was a time bound activity, there are some improvments/fine tuning that can be done even further:
|
82
|
+
|
83
|
+
- Better look up support, nested file structure support for remote locales
|
84
|
+
- Increasing the overall test coverage of the gem, for now just a few basic unit test cases are added to check the behavior of the `Remote` backend, test coverage should be increased
|
85
|
+
- During testing with a demo Rails project, sometimes the gem behaves inconsistently when it comes to fallback behavior, understanding the edge cases and consistencies better and handle those as well
|
86
|
+
- Improving code quality, fixing offences pointed out by rubocop as well as properly setting up rubocop rules
|
87
|
+
- Better error handling
|
88
|
+
- Tools for measuring test coverage should be integrated i.e. simplecov
|
89
|
+
- Enforcing validation on configurations, in case some configuration is missing (raising appropriate errors)
|
@@ -4,8 +4,7 @@ RemoteI18nExtension.config do |config|
|
|
4
4
|
# All the configurations are mandatory
|
5
5
|
|
6
6
|
# URL to your remote locales folder housing all the translations
|
7
|
-
#
|
8
|
-
# to avoid fallbacks to local
|
7
|
+
# For now the library expects all the locales to be stored in a single (root) folder
|
9
8
|
# e.g. https://raw.githubusercontent.com/Gooner91/locales-repo/master/locales
|
10
9
|
# config.remote_host = ENV['LOCALES_REMOTE_HOST']
|
11
10
|
|
@@ -18,8 +17,7 @@ RemoteI18nExtension.config do |config|
|
|
18
17
|
|
19
18
|
# config.locale = :en
|
20
19
|
|
21
|
-
# Paths to the translation files
|
22
|
-
# Please make sure the paths to the translation files is same for local and remote locales folder
|
20
|
+
# Paths to the translation files (in your local rails project for fallback)
|
23
21
|
# e.g. Dir[Rails.root.join("config", "locales", "*.{rb,yml}")]
|
24
22
|
# config.load_path = %w[]
|
25
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remote_i18n_extension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hassan Ahmed
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|