1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-04 13:05:19 +02:00

Add i18n-tasks

This commit is contained in:
Jose Farias 2024-02-02 23:42:52 -06:00
parent c10fab9a7c
commit 532cd08b32
No known key found for this signature in database
GPG key ID: 877CF7E5FFD0FB3F
4 changed files with 87 additions and 0 deletions

View file

@ -60,6 +60,8 @@ group :development, :test do
gem "dotenv" gem "dotenv"
gem "letter_opener" gem "letter_opener"
gem "i18n-tasks"
end end
group :development do group :development do

View file

@ -112,6 +112,13 @@ GEM
ast (2.4.2) ast (2.4.2)
base64 (0.2.0) base64 (0.2.0)
bcrypt (3.1.20) bcrypt (3.1.20)
better_html (2.0.2)
actionview (>= 6.0)
activesupport (>= 6.0)
ast (~> 2.0)
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bigdecimal (3.1.6) bigdecimal (3.1.6)
bindex (0.8.1) bindex (0.8.1)
bootsnap (1.18.3) bootsnap (1.18.3)
@ -142,12 +149,24 @@ GEM
ffi (1.16.3) ffi (1.16.3)
globalid (1.2.1) globalid (1.2.1)
activesupport (>= 6.1) activesupport (>= 6.1)
highline (3.0.1)
hotwire-livereload (1.3.1) hotwire-livereload (1.3.1)
actioncable (>= 6.0.0) actioncable (>= 6.0.0)
listen (>= 3.0.0) listen (>= 3.0.0)
railties (>= 6.0.0) railties (>= 6.0.0)
i18n (1.14.1) i18n (1.14.1)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
i18n-tasks (1.0.13)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
better_html (>= 1.0, < 3.0)
erubi
highline (>= 2.0.0)
i18n
parser (>= 3.2.2.1)
rails-i18n
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
importmap-rails (2.0.1) importmap-rails (2.0.1)
actionpack (>= 6.0.0) actionpack (>= 6.0.0)
activesupport (>= 6.0.0) activesupport (>= 6.0.0)
@ -238,6 +257,9 @@ GEM
rails-html-sanitizer (1.6.0) rails-html-sanitizer (1.6.0)
loofah (~> 2.21) loofah (~> 2.21)
nokogiri (~> 1.14) nokogiri (~> 1.14)
rails-i18n (7.0.8)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rainbow (3.1.1) rainbow (3.1.1)
rake (13.1.0) rake (13.1.0)
rb-fsevent (0.11.2) rb-fsevent (0.11.2)
@ -300,6 +322,7 @@ GEM
rexml (~> 3.2, >= 3.2.5) rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0) rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0) websocket (~> 1.0)
smart_properties (1.17.0)
sorbet-runtime (0.5.11226) sorbet-runtime (0.5.11226)
stimulus-rails (1.3.3) stimulus-rails (1.3.3)
railties (>= 6.0.0) railties (>= 6.0.0)
@ -316,6 +339,8 @@ GEM
railties (>= 6.0.0) railties (>= 6.0.0)
tailwindcss-rails (2.3.0-x86_64-linux) tailwindcss-rails (2.3.0-x86_64-linux)
railties (>= 6.0.0) railties (>= 6.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
thor (1.3.0) thor (1.3.0)
timeout (0.4.1) timeout (0.4.1)
tzinfo (2.0.6) tzinfo (2.0.6)
@ -352,6 +377,7 @@ DEPENDENCIES
debug debug
dotenv dotenv
hotwire-livereload hotwire-livereload
i18n-tasks
importmap-rails importmap-rails
inline_svg inline_svg
jbuilder jbuilder

25
config/i18n-tasks.yml Normal file
View file

@ -0,0 +1,25 @@
base_locale: en
data:
read:
- config/locales/%{locale}.yml
write:
- config/locales/%{locale}.yml
router: conservative_router
search:
paths:
- app/
relative_roots:
- app/controllers
- app/helpers
- app/mailers
- app/presenters
- app/views
strict: true
## Files or `File.fnmatch` patterns to exclude from search. Some files are always excluded regardless of this setting:
## *.jpg *.jpeg *.png *.gif *.svg *.ico *.eot *.otf *.ttf *.woff *.woff2 *.pdf *.css *.sass *.scss *.less
## *.yml *.json *.zip *.tar.gz *.swf *.flv *.mp3 *.wav *.flac *.webm *.mp4 *.ogg *.opus *.webp *.map *.xlsx
exclude:
- app/assets/images
- app/assets/fonts
- app/assets/videos
- app/assets/builds

34
test/i18n_test.rb Normal file
View file

@ -0,0 +1,34 @@
require "i18n/tasks"
class I18nTest < ActiveSupport::TestCase
def setup
@i18n = I18n::Tasks::BaseTask.new
end
def test_no_missing_keys
missing_keys = @i18n.missing_keys
assert_empty missing_keys,
"Missing #{missing_keys.leaves.count} i18n keys, run `i18n-tasks missing' to show them"
end
def test_no_unused_keys
unused_keys = @i18n.unused_keys
assert_empty unused_keys,
"#{unused_keys.leaves.count} unused i18n keys, run `i18n-tasks unused' to show them"
end
def test_files_are_normalized
non_normalized = @i18n.non_normalized_paths
error_message = "The following files need to be normalized:\n" \
"#{non_normalized.map { |path| " #{path}" }.join("\n")}\n" \
"Please run `i18n-tasks normalize' to fix"
assert_empty non_normalized, error_message
end
def test_no_inconsistent_interpolations
inconsistent_interpolations = @i18n.inconsistent_interpolations
error_message = "#{inconsistent_interpolations.leaves.count} i18n keys have inconsistent interpolations.\n" \
"Please run `i18n-tasks check-consistent-interpolations' to show them"
assert_empty inconsistent_interpolations, error_message
end
end