Sha256: 5175ecfa1a46d2fdda4435a0cd5abecff9c11e0312694721db787a302ab2a22e

Contents?: true

Size: 1.72 KB

Versions: 15

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

require "rails/generators"

module RailsTemplate18f
  module Generators
    class I18nJsGenerator < ::Rails::Generators::Base
      include Base

      desc <<~DESC
        Description:
          Install and configure i18n-js gem to provide translations to JS code.

          By default, will only export translations with keys that match `*.js.*`
      DESC

      def install_gem_and_tasks
        return if gem_installed?("i18n-js")
        gem "i18n-js", "~> 3.9"
        bundle_install do
          run "yarn add i18n-js"
          generate "i18n:js:config"
        end
      end

      def configure_translation_yaml
        append_to_file "config/i18n-js.yml", <<~EOYAML
          # remove `only` to include all translations
          translations:
            - file: "app/assets/builds/translations.js"
              only: "*.js.*"
        EOYAML
      end

      def configure_asset_pipeline
        copy_file "lib/tasks/i18n.rake"
        environment "config.middleware.use I18n::JS::Middleware", env: :development
        insert_into_file "app/views/layouts/application.html.erb", indent(<<~EOHTML, 4), after: /<%= stylesheet_link_tag "application".*$\n/
          <%= javascript_include_tag "i18n", "data-turbo-track": "reload" %>
          <%= javascript_include_tag "translations", "data-turbo-track": "reload" %>
        EOHTML
        append_to_file "app/assets/config/manifest.js", <<~EOJS
          //= link i18n.js
          //= link translations.js
        EOJS
      end

      def ignore_generated_file
        unless skip_git?
          append_to_file ".gitignore", <<~EOM

            # Generated by i18n-js
            /public/javascripts/i18n.js
          EOM
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
rails_template_18f-1.2.0 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-1.1.0 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-1.0.0 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.8.2 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.8.1 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.8.0 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.7.2 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.7.1 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.7.0 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.6.0 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.5.3 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.5.2 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.5.1 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.5.0 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
rails_template_18f-0.4.1 lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb