translation 1.35 → 1.37
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1aa63e584ea2e2064a46f87fdba20f387135bb3379c7ab85eaf6383a312cca59
|
|
4
|
+
data.tar.gz: d77f0d69b67ab0e112a7f27da673199fe091df0230643893356b38a67653145b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 483b2b4f922ed667b465d2a6ac551f0df46188c52859c2dc93951c2ea7f595af79055161e09ca88260bf23849514e0282257a02834455d768e264dcd6b39a5a3
|
|
7
|
+
data.tar.gz: 9b0fe16f145640b20add0c2476e01f335be0692c31b53041b4768c366c45ec80dd0be7fa13354895335afc5073ec95a457b193f86827a45f792ccbcb55395df6
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# [Translation.io](https://translation.io) client for Ruby on Rails
|
|
1
|
+
# [Translation.io](https://translation.io/rails) client for Ruby on Rails
|
|
2
2
|
|
|
3
3
|
[](LICENSE)
|
|
4
4
|
[](https://github.com/translation/rails/actions/workflows/test.yml)
|
|
@@ -10,7 +10,7 @@ Add this gem to localize your **Ruby on Rails** application.
|
|
|
10
10
|
|
|
11
11
|
Use the official Rails syntax (with [YAML](#i18n-yaml) files) or use the [GetText](#gettext) syntax.
|
|
12
12
|
|
|
13
|
-
Write only the source text, and keep it synchronized with your translators on [Translation.io](https://translation.io).
|
|
13
|
+
Write only the source text, and keep it synchronized with your translators on [Translation.io](https://translation.io/rails).
|
|
14
14
|
|
|
15
15
|
<a href="https://translation.io/rails">
|
|
16
16
|
<img width="720px" alt="Translation.io interface" src="https://translation.io/gifs/translation.gif">
|
|
@@ -65,7 +65,7 @@ Need help? [contact@translation.io](mailto:contact@translation.io)
|
|
|
65
65
|
|
|
66
66
|
### I18n (YAML)
|
|
67
67
|
|
|
68
|
-
The default [Rails Internationalization API](
|
|
68
|
+
The default [Rails Internationalization API](https://guides.rubyonrails.org/i18n.html).
|
|
69
69
|
|
|
70
70
|
~~~ruby
|
|
71
71
|
# Regular
|
|
@@ -128,7 +128,7 @@ More information about GetText syntax [here](https://github.com/ruby-gettext/get
|
|
|
128
128
|
gem 'translation'
|
|
129
129
|
~~~
|
|
130
130
|
|
|
131
|
-
2. Create a new translation project [from the UI](https://translation.io).
|
|
131
|
+
2. Create a new translation project [from the UI](https://translation.io/rails).
|
|
132
132
|
3. Copy the initializer into your Rails app (`config/initializers/translation.rb`)
|
|
133
133
|
|
|
134
134
|
The initializer looks like this:
|
|
@@ -144,7 +144,7 @@ end
|
|
|
144
144
|
4. Initialize your project and push existing translations to Translation.io with:
|
|
145
145
|
|
|
146
146
|
~~~bash
|
|
147
|
-
|
|
147
|
+
bundle exec rake translation:init
|
|
148
148
|
~~~
|
|
149
149
|
|
|
150
150
|
If you need to add or remove languages in the future, please read our
|
|
@@ -157,7 +157,7 @@ If you need to add or remove languages in the future, please read our
|
|
|
157
157
|
To send new translatable keys/strings and get new translations from Translation.io, simply run:
|
|
158
158
|
|
|
159
159
|
~~~bash
|
|
160
|
-
|
|
160
|
+
bundle exec rake translation:sync
|
|
161
161
|
~~~
|
|
162
162
|
|
|
163
163
|
### Sync and Show Purgeable
|
|
@@ -165,7 +165,7 @@ $ bundle exec rake translation:sync
|
|
|
165
165
|
If you need to find out what are the unused keys/strings from Translation.io, using the current branch as reference:
|
|
166
166
|
|
|
167
167
|
~~~bash
|
|
168
|
-
|
|
168
|
+
bundle exec rake translation:sync_and_show_purgeable
|
|
169
169
|
~~~
|
|
170
170
|
|
|
171
171
|
As the name says, this operation will also perform a sync at the same time.
|
|
@@ -175,7 +175,7 @@ As the name says, this operation will also perform a sync at the same time.
|
|
|
175
175
|
If you need to remove unused keys/strings from Translation.io, using the current branch as reference:
|
|
176
176
|
|
|
177
177
|
~~~bash
|
|
178
|
-
|
|
178
|
+
bundle exec rake translation:sync_and_purge
|
|
179
179
|
~~~
|
|
180
180
|
|
|
181
181
|
As the name says, this operation will also perform a sync at the same time.
|
|
@@ -274,7 +274,7 @@ The `set_locale` code is [here](https://github.com/translation/rails/blob/master
|
|
|
274
274
|
feel free to override it with your own locale management.
|
|
275
275
|
|
|
276
276
|
Don't forget to define your available locales with
|
|
277
|
-
[I18n.available_locales](
|
|
277
|
+
[I18n.available_locales](https://guides.rubyonrails.org/i18n.html#setup-the-rails-application-for-internationalization).
|
|
278
278
|
|
|
279
279
|
More examples here: https://translation.io/blog/set-current-locale-in-your-rails-app
|
|
280
280
|
|
|
@@ -348,7 +348,7 @@ In both case, in your React component, you can simply call
|
|
|
348
348
|
### Using our official React & JavaScript package
|
|
349
349
|
|
|
350
350
|
As Translation.io is directly integrated in the great
|
|
351
|
-
[Lingui](https://lingui.
|
|
351
|
+
[Lingui](https://lingui.dev/) internationalization framework,
|
|
352
352
|
you can also consider frontend localization as a completely different
|
|
353
353
|
localization project.
|
|
354
354
|
|
|
@@ -368,7 +368,7 @@ a queue but it returns an error under heavy load), we implemented this
|
|
|
368
368
|
threadsafe readonly task:
|
|
369
369
|
|
|
370
370
|
~~~bash
|
|
371
|
-
|
|
371
|
+
bundle exec rake translation:sync_readonly
|
|
372
372
|
~~~
|
|
373
373
|
|
|
374
374
|
This task will prevent your CI from failing and still provide new translations. But
|
|
@@ -442,7 +442,7 @@ with percent signs or spaces) that he might break.
|
|
|
442
442
|
We think localization is part of the configuration of the app and it should not reach the translator UI at all.
|
|
443
443
|
That's why these localization keys are detected and separated on a dedicated YAML file with Translation.io.
|
|
444
444
|
|
|
445
|
-
We automatically treat [known localization keys](lib/translation_io/yaml_entry.rb), but if you would like
|
|
445
|
+
We automatically treat [known localization keys](https://github.com/translation/rails/blob/master/lib/translation_io/yaml_entry.rb), but if you would like
|
|
446
446
|
to add some more, use the `localization_key_prefixes` option.
|
|
447
447
|
|
|
448
448
|
For example:
|
|
@@ -461,8 +461,8 @@ If you are using GetText and you want to manage other file formats than:
|
|
|
461
461
|
|
|
462
462
|
* `rb`, `ruby` and `rabl` for Ruby.
|
|
463
463
|
* `erb` and `inky` for Ruby templating.
|
|
464
|
-
* `haml` and `mjmlhaml` for [HAML](
|
|
465
|
-
* `slim` and `mjmlslim` for [SLIM](
|
|
464
|
+
* `haml` and `mjmlhaml` for [HAML](https://haml.info/).
|
|
465
|
+
* `slim` and `mjmlslim` for [SLIM](https://github.com/slim-template/slim).
|
|
466
466
|
|
|
467
467
|
Just add them in your configuration file like this:
|
|
468
468
|
|
|
@@ -587,7 +587,7 @@ This gem was created specifically for Rails, but you can also use it in a pure R
|
|
|
587
587
|
To run the specs:
|
|
588
588
|
|
|
589
589
|
~~~bash
|
|
590
|
-
|
|
590
|
+
bundle exec rspec
|
|
591
591
|
~~~
|
|
592
592
|
|
|
593
593
|
## Contributing
|
|
@@ -626,7 +626,7 @@ Credits: [@armandsar](https://github.com/armandsar), [@michaelhoste](https://git
|
|
|
626
626
|
Officially supported on [https://translation.io/lingui](https://translation.io/lingui)
|
|
627
627
|
|
|
628
628
|
Translation.io is directly integrated in the great
|
|
629
|
-
[Lingui](https://lingui.
|
|
629
|
+
[Lingui](https://lingui.dev/) internationalization project.
|
|
630
630
|
|
|
631
631
|
* GitHub: https://github.com/translation/lingui
|
|
632
632
|
* NPM: https://www.npmjs.com/package/@translation/lingui
|
|
@@ -656,6 +656,6 @@ if you need some help or if you want to share your library.
|
|
|
656
656
|
## License
|
|
657
657
|
|
|
658
658
|
The [translation gem](https://rubygems.org/gems/translation) in released under MIT license by
|
|
659
|
-
[Aurélien Malisart](
|
|
659
|
+
[Aurélien Malisart](https://aurelien.malisart.be) and [Michaël Hoste](https://80limit.com) (see [LICENSE](LICENSE) file).
|
|
660
660
|
|
|
661
661
|
(c) [https://translation.io](https://translation.io) / [contact@translation.io](mailto:contact@translation.io)
|
|
@@ -12,30 +12,28 @@ module TranslationIO
|
|
|
12
12
|
def run
|
|
13
13
|
@yaml_file_paths.each do |locale_file_path|
|
|
14
14
|
if locale_file_removable?(locale_file_path)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
source_content_hash = content_hash.select { |k| k.to_s == @source_locale.to_s }
|
|
15
|
+
content_hash = TranslationIO.yaml_load(File.read(locale_file_path)) || {}
|
|
16
|
+
source_content_hash = content_hash.reject { |k| k.to_s.in?(@target_locales.collect(&:to_s)) }
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
if source_content_hash.empty?
|
|
19
|
+
TranslationIO.info "Removing #{locale_file_path}", 2, 2
|
|
20
|
+
FileUtils.rm(locale_file_path)
|
|
21
|
+
elsif content_hash != source_content_hash # in case of mixed languages in source YAML file
|
|
22
|
+
TranslationIO.info "Rewriting #{locale_file_path}", 2, 2
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
if TranslationIO.config.yaml_line_width
|
|
25
|
+
file_content = source_content_hash.to_yaml(:line_width => TranslationIO.config.yaml_line_width)
|
|
26
|
+
else
|
|
27
|
+
file_content = source_content_hash.to_yaml
|
|
28
|
+
end
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
file_content = file_content.gsub(/ $/, '') # remove trailing spaces
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
else
|
|
37
|
-
# don't touch source
|
|
32
|
+
File.open(locale_file_path, 'wb') do |file|
|
|
33
|
+
file.write(file_content)
|
|
38
34
|
end
|
|
35
|
+
else
|
|
36
|
+
# don't touch source
|
|
39
37
|
end
|
|
40
38
|
end
|
|
41
39
|
end
|
|
@@ -44,6 +42,7 @@ module TranslationIO
|
|
|
44
42
|
private
|
|
45
43
|
|
|
46
44
|
def locale_file_removable?(locale_file_path)
|
|
45
|
+
exists = File.exist?(locale_file_path)
|
|
47
46
|
in_project = locale_file_path_in_project?(locale_file_path)
|
|
48
47
|
|
|
49
48
|
protected_file = @target_locales.any? do |target_locale|
|
|
@@ -55,7 +54,7 @@ module TranslationIO
|
|
|
55
54
|
paths.include?(TranslationIO.normalize_path(locale_file_path))
|
|
56
55
|
end
|
|
57
56
|
|
|
58
|
-
in_project && !protected_file
|
|
57
|
+
exists && in_project && !protected_file
|
|
59
58
|
end
|
|
60
59
|
|
|
61
60
|
def locale_file_path_in_project?(locale_file_path)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module TranslationIO
|
|
2
2
|
module Extractor
|
|
3
3
|
# visual: https://www.debuggex.com/r/fYSQ-jwQfTjhhE6T
|
|
4
|
-
# .*? is non-greedy (lazy) match :
|
|
4
|
+
# .*? is non-greedy (lazy) match : https://stackoverflow.com/a/1919995/1243212
|
|
5
5
|
REGEXP_INSIDE_1 = '\s*(?:\[?(?:(?:(?:".*?")|(?:\'.*?\'))\s*?,?\s*?){1}\]?)\s*?'
|
|
6
6
|
REGEXP_INSIDE_2 = '\s*(?:\[?(?:(?:(?:".*?")|(?:\'.*?\'))\s*?,?\s*?){2}\]?),?\s*?.*?\s*'
|
|
7
7
|
REGEXP_INSIDE_2B = '\s*(?:\[?(?:(?:(?:".*?")|(?:\'.*?\'))\s*?,?\s*?){2}\]?)\s*?'
|
data/lib/translation_io/tasks.rb
CHANGED
|
@@ -50,7 +50,7 @@ namespace :translation do
|
|
|
50
50
|
true
|
|
51
51
|
else
|
|
52
52
|
TranslationIO.info("[Error] Can't configure client. Did you set up the initializer?\n"\
|
|
53
|
-
"Read usage instructions here :
|
|
53
|
+
"Read usage instructions here : https://translation.io/rails/usage")
|
|
54
54
|
false
|
|
55
55
|
end
|
|
56
56
|
end
|
|
@@ -39,9 +39,7 @@ module TranslationIO
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def localization_prefix?(key)
|
|
42
|
-
localization_key_prefixes.any?
|
|
43
|
-
key_without_locale(key).match(/^#{Regexp.escape(prefix)}\b/) != nil
|
|
44
|
-
end
|
|
42
|
+
localization_key_prefixes.any? { |prefix| key_without_locale(key).match(/^#{Regexp.escape(prefix)}\b/) != nil }
|
|
45
43
|
end
|
|
46
44
|
|
|
47
45
|
private
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: translation
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.37'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Hoste
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2023-
|
|
12
|
+
date: 2023-06-27 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: gettext
|
|
@@ -23,7 +23,7 @@ dependencies:
|
|
|
23
23
|
version: 3.2.5
|
|
24
24
|
- - "<="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 3.4.
|
|
26
|
+
version: 3.4.4
|
|
27
27
|
type: :runtime
|
|
28
28
|
prerelease: false
|
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -36,7 +36,7 @@ dependencies:
|
|
|
36
36
|
version: 3.2.5
|
|
37
37
|
- - "<="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 3.4.
|
|
39
|
+
version: 3.4.4
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: rake
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -131,7 +131,7 @@ licenses:
|
|
|
131
131
|
metadata:
|
|
132
132
|
bug_tracker_uri: https://github.com/translation/rails/issues
|
|
133
133
|
changelog_uri: https://github.com/translation/rails/blob/master/CHANGELOG.md
|
|
134
|
-
documentation_uri: https://translation.io/usage
|
|
134
|
+
documentation_uri: https://translation.io/rails/usage
|
|
135
135
|
homepage_uri: https://translation.io
|
|
136
136
|
source_code_uri: https://github.com/translation/rails
|
|
137
137
|
post_install_message:
|