roda-i18n 0.4.0 → 0.5.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 +5 -5
- data/.github/dependabot.yml +24 -0
- data/.github/workflows/ruby.yml +37 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +30 -0
- data/.rubocop_todo.yml +34 -0
- data/CHANGELOG.md +20 -0
- data/Gemfile +17 -0
- data/README.md +14 -12
- data/Rakefile +10 -14
- data/lib/roda/i18n/version.rb +3 -3
- data/lib/roda/i18n.rb +2 -0
- data/lib/roda/plugins/i18n.rb +125 -139
- data/roda-i18n.gemspec +22 -28
- metadata +22 -156
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 5c59dec3caf930c42ea639d9d803cd1f96351f4e26de874031d46376ca047b38
         | 
| 4 | 
            +
              data.tar.gz: 39970d149489f36de80048d86c2451d74922ffee54a6df8459b3e278d5bd43d1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ae7c28fff45a8bd38ec31b89843132c1a6fd8c09f248078589f7249d8f5b26e5b32b6a8a2843f3a67bd2c919f14cac25c32fda1c7fd064b208774c735e2c9e5a
         | 
| 7 | 
            +
              data.tar.gz: ed1d0c3bd35f808b89e88c02fac1a3c626d40bb5235a6fa3c540cd893938e749d471c735ce70f2a782a485d067fa640763bc5d4b22d34b59be228b3faee498e6
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # To get started with Dependabot version updates, you'll need to specify which
         | 
| 2 | 
            +
            # package ecosystems to update and where the package manifests are located.
         | 
| 3 | 
            +
            # Please see the documentation for all configuration options:
         | 
| 4 | 
            +
            # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            version: 2
         | 
| 7 | 
            +
            updates:
         | 
| 8 | 
            +
              - package-ecosystem: "github-actions"
         | 
| 9 | 
            +
                directory: "/"
         | 
| 10 | 
            +
                schedule:
         | 
| 11 | 
            +
                  interval: "weekly"
         | 
| 12 | 
            +
                  day: "saturday"
         | 
| 13 | 
            +
                  time: "21:45"
         | 
| 14 | 
            +
                  timezone: "Europe/Berlin"
         | 
| 15 | 
            +
              - package-ecosystem: "bundler" # See documentation for possible values
         | 
| 16 | 
            +
                directory: "/" # Location of package manifests
         | 
| 17 | 
            +
                groups:
         | 
| 18 | 
            +
                  patch-and-minor-dependencies:
         | 
| 19 | 
            +
                    update-types: ["patch", "minor"]
         | 
| 20 | 
            +
                schedule:
         | 
| 21 | 
            +
                  interval: "weekly"
         | 
| 22 | 
            +
                  day: "saturday"
         | 
| 23 | 
            +
                  time: "21:45"
         | 
| 24 | 
            +
                  timezone: "Europe/Berlin"
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            # This workflow uses actions that are not certified by GitHub.
         | 
| 2 | 
            +
            # They are provided by a third-party and are governed by
         | 
| 3 | 
            +
            # separate terms of service, privacy policy, and support
         | 
| 4 | 
            +
            # documentation.
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            # GitHub recommends pinning actions to a commit SHA.
         | 
| 7 | 
            +
            # To get a newer version, you will need to update the SHA.
         | 
| 8 | 
            +
            # You can also reference a tag or branch, but the action may change without warning.
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            name: Ruby
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            on:
         | 
| 13 | 
            +
              pull_request:
         | 
| 14 | 
            +
                branches: [master]
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            jobs:
         | 
| 17 | 
            +
              lint_and_test:
         | 
| 18 | 
            +
                env:
         | 
| 19 | 
            +
                  RACK_ENV: test
         | 
| 20 | 
            +
                strategy:
         | 
| 21 | 
            +
                  fail-fast: false
         | 
| 22 | 
            +
                  matrix:
         | 
| 23 | 
            +
                    # os: [ubuntu-latest, macos-latest]
         | 
| 24 | 
            +
                    os: [ubuntu-latest]
         | 
| 25 | 
            +
                    ruby: ["3.0", "3.1", "3.2", "3.3"]
         | 
| 26 | 
            +
                runs-on: ${{ matrix.os }}
         | 
| 27 | 
            +
                timeout-minutes: 2
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                steps:
         | 
| 30 | 
            +
                  - uses: actions/checkout@v4
         | 
| 31 | 
            +
                  - name: Set up Ruby
         | 
| 32 | 
            +
                    uses: ruby/setup-ruby@v1
         | 
| 33 | 
            +
                    with:
         | 
| 34 | 
            +
                      ruby-version: ${{ matrix.ruby }}
         | 
| 35 | 
            +
                      bundler-cache: true
         | 
| 36 | 
            +
                  - name: Run rake (lint and test)
         | 
| 37 | 
            +
                    run: bundle exec rake
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    ADDED
    
    | @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            inherit_from: .rubocop_todo.yml
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require:
         | 
| 4 | 
            +
              - rubocop-rake
         | 
| 5 | 
            +
              - rubocop-performance
         | 
| 6 | 
            +
              - rubocop-minitest
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # The behavior of RuboCop can be controlled via the .rubocop.yml
         | 
| 9 | 
            +
            # configuration file. It makes it possible to enable/disable
         | 
| 10 | 
            +
            # certain cops (checks) and to alter their behavior if they accept
         | 
| 11 | 
            +
            # any parameters. The file can be placed either in your home
         | 
| 12 | 
            +
            # directory or in some project directory.
         | 
| 13 | 
            +
            #
         | 
| 14 | 
            +
            # RuboCop will start looking for the configuration file in the directory
         | 
| 15 | 
            +
            # where the inspected file is and continue its way up to the root directory.
         | 
| 16 | 
            +
            #
         | 
| 17 | 
            +
            # See https://docs.rubocop.org/rubocop/configuration
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            AllCops:
         | 
| 20 | 
            +
                NewCops: enable
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            Layout/LineLength:
         | 
| 23 | 
            +
              Exclude:
         | 
| 24 | 
            +
                - "roda-i18n.gemspec"
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            Style/Documentation:
         | 
| 27 | 
            +
              Exclude:
         | 
| 28 | 
            +
                - 'spec/**/*'
         | 
| 29 | 
            +
                - 'test/**/*'
         | 
| 30 | 
            +
                - 'lib/roda/plugins/i18n.rb'
         | 
    
        data/.rubocop_todo.yml
    ADDED
    
    | @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            # This configuration was generated by
         | 
| 2 | 
            +
            # `rubocop --auto-gen-config`
         | 
| 3 | 
            +
            # on 2024-09-09 20:36:04 UTC using RuboCop version 1.66.1.
         | 
| 4 | 
            +
            # The point is for the user to remove these configuration records
         | 
| 5 | 
            +
            # one by one as the offenses are removed from the code base.
         | 
| 6 | 
            +
            # Note that changes in the inspected code, or installation of new
         | 
| 7 | 
            +
            # versions of RuboCop, may require this file to be generated again.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # Offense count: 4
         | 
| 10 | 
            +
            # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
         | 
| 11 | 
            +
            Metrics/AbcSize:
         | 
| 12 | 
            +
              Max: 39
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            # Offense count: 15
         | 
| 15 | 
            +
            # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
         | 
| 16 | 
            +
            # AllowedMethods: refine
         | 
| 17 | 
            +
            Metrics/BlockLength:
         | 
| 18 | 
            +
              Max: 639
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            # Offense count: 2
         | 
| 21 | 
            +
            # Configuration parameters: CountComments, CountAsOne.
         | 
| 22 | 
            +
            Metrics/ClassLength:
         | 
| 23 | 
            +
              Max: 641
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            # Offense count: 1
         | 
| 26 | 
            +
            # Configuration parameters: AllowedMethods, AllowedPatterns.
         | 
| 27 | 
            +
            Metrics/CyclomaticComplexity:
         | 
| 28 | 
            +
              Max: 9
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            # Offense count: 8
         | 
| 31 | 
            +
            # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
         | 
| 32 | 
            +
            Metrics/MethodLength:
         | 
| 33 | 
            +
              Max: 22
         | 
| 34 | 
            +
             | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,25 @@ | |
| 1 1 | 
             
            # CHANGELOG
         | 
| 2 2 |  | 
| 3 | 
            +
            ## next (unreleased)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Merge pull request #5 from simonneutert/bump-dependencies - Add/Bump dependencies, minimum Ruby version to 3.0.0
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              * __Breaking Changes:__
         | 
| 8 | 
            +
              * minimum Ruby version is now >= 3.0.0
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              * __Dependencies:__
         | 
| 11 | 
            +
              * Add `date` to `gemspec`
         | 
| 12 | 
            +
              * Bump `r18n-core` to `~> 5.0`
         | 
| 13 | 
            +
              * Bump `roda` to `~> 3.8`
         | 
| 14 | 
            +
              * Bump `rack-test` to `1.1.0`
         | 
| 15 | 
            +
              
         | 
| 16 | 
            +
              * Bump `bundler` to `~> 2.5`
         | 
| 17 | 
            +
              * Bump `rack-test` to `~> 2.1`
         | 
| 18 | 
            +
              * Bump `rake` to `~> 13.2`
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              * __Tests:__
         | 
| 21 | 
            +
              * switched from rack session to roda session (as plugin in test suite)
         | 
| 22 | 
            +
              * fixed failing tests and updated fixtures for proper YAML due to the above changes (Psych was freaking out about the prior YAML formatting)
         | 
| 3 23 |  | 
| 4 24 | 
             
            ## 0.4.0 (2018-05-08)
         | 
| 5 25 |  | 
    
        data/Gemfile
    CHANGED
    
    | @@ -1,4 +1,21 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            source 'https://rubygems.org'
         | 
| 2 4 |  | 
| 3 5 | 
             
            # Specify your gem's dependencies in roda-i18n.gemspec
         | 
| 4 6 | 
             
            gemspec
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            gem 'bundler', '~> 2.5'
         | 
| 9 | 
            +
            gem 'erubis'
         | 
| 10 | 
            +
            gem 'kramdown'
         | 
| 11 | 
            +
            gem 'minitest', '~> 5.7', '>= 5.7.0'
         | 
| 12 | 
            +
            gem 'minitest-hooks', '~> 1.1', '>= 1.1.0'
         | 
| 13 | 
            +
            gem 'minitest-rg'
         | 
| 14 | 
            +
            gem 'nokogiri'
         | 
| 15 | 
            +
            gem 'rack-test', '~> 2.1'
         | 
| 16 | 
            +
            gem 'rake', '~> 13.2'
         | 
| 17 | 
            +
            gem 'rubocop'
         | 
| 18 | 
            +
            gem 'rubocop-minitest'
         | 
| 19 | 
            +
            gem 'rubocop-performance'
         | 
| 20 | 
            +
            gem 'rubocop-rake'
         | 
| 21 | 
            +
            gem 'simplecov'
         | 
    
        data/README.md
    CHANGED
    
    | @@ -14,13 +14,13 @@ Extensively tested and with 100% code test coverage. | |
| 14 14 | 
             
            To use this gem, just do
         | 
| 15 15 |  | 
| 16 16 | 
             
            ```bash
         | 
| 17 | 
            -
             | 
| 17 | 
            +
            $ (sudo) gem install roda-i18n
         | 
| 18 18 | 
             
            ```
         | 
| 19 19 |  | 
| 20 20 | 
             
            or if you use Bundler
         | 
| 21 21 |  | 
| 22 22 | 
             
            ```ruby
         | 
| 23 | 
            -
            gem  | 
| 23 | 
            +
            gem 'roda-i18n'
         | 
| 24 24 | 
             
            ```
         | 
| 25 25 |  | 
| 26 26 | 
             
            <br>
         | 
| @@ -62,7 +62,7 @@ plugin :i18n, :locale => ['de'], :translations => ['absolute/path/2/i18n'] | |
| 62 62 | 
             
             1. You must set `opts[:root]` in your app if you do not define the `:translations` path during 
         | 
| 63 63 | 
             
                plugin configuration.
         | 
| 64 64 |  | 
| 65 | 
            -
              | 
| 65 | 
            +
             2. When overriding `:translations` the **any path(s) given must be absolute**.
         | 
| 66 66 |  | 
| 67 67 |  | 
| 68 68 | 
             
            #### Loading translations from multiple i18n directories
         | 
| @@ -304,7 +304,7 @@ plugin :i18n, :translations => ['app1/i18n', 'app2/i18n', 'app3/i18n'] | |
| 304 304 |  | 
| 305 305 | 
             
            ### Sequel DBLoader for DB based translations support
         | 
| 306 306 |  | 
| 307 | 
            -
             | 
| 307 | 
            +
            Some form of built-in support for storing / loading translations from a Sequel based DB.
         | 
| 308 308 |  | 
| 309 309 |  | 
| 310 310 | 
             
            <br>
         | 
| @@ -327,23 +327,25 @@ Som form of built-in support for storing / loading translations from a Sequel ba | |
| 327 327 |  | 
| 328 328 | 
             
            ## Credits
         | 
| 329 329 |  | 
| 330 | 
            -
            * This plugin  | 
| 330 | 
            +
            * This plugin has been inspired by the `sinatra-i18n` gem available at 
         | 
| 331 331 | 
             
              [github/ai/r18n](http://github.com/ai/r18n) created by [Andrey Sitnik](http://github.com/ai).
         | 
| 332 332 |  | 
| 333 | 
            -
            * Testing code  | 
| 333 | 
            +
            * Testing code has been partly copied from [Forme](https://github.com/jeremyevans/forme).
         | 
| 334 334 |  | 
| 335 | 
            -
            * Inspiration and assistance by [Jeremy Evans](github.com/jeremyevans). Many thanks Jeremy!! 
         | 
| 335 | 
            +
            * Inspiration and assistance by [Jeremy Evans](https://github.com/jeremyevans). Many thanks Jeremy!! 
         | 
| 336 336 |  | 
| 337 337 | 
             
            * Code fixes and improvements by:
         | 
| 338 338 |  | 
| 339 | 
            -
               * [Jonathan Duarte](github.com/jonduarte). Many thanks Jonathan
         | 
| 339 | 
            +
               * [Jonathan Duarte](https://github.com/jonduarte). Many thanks Jonathan for PR [#3](https://github.com/kematzy/roda-i18n/pull/3)
         | 
| 340 340 |  | 
| 341 | 
            +
               * [Adam Daniels](https://github.com/adam12). Many thanks Adam for PR [#4](https://github.com/kematzy/roda-i18n/pull/4), [#5](https://github.com/kematzy/roda-i18n/pull/5) & [#6](https://github.com/kematzy/roda-i18n/pull/6)
         | 
| 342 | 
            +
             | 
| 343 | 
            +
               * [Firas Zaidan](https://github.com/zaidan). Many thanks Firas for PR [#7](https://github.com/kematzy/roda-i18n/pull/7)
         | 
| 344 | 
            +
               
         | 
| 345 | 
            +
               * [Simon Neutert](https://github.com/simonneutert). Many thanks Simon for PR [#8](https://github.com/kematzy/roda-i18n/pull/8)
         | 
| 341 346 |  | 
| 342 347 | 
             
            ## Licence
         | 
| 343 348 |  | 
| 344 349 | 
             
            MIT 
         | 
| 345 350 |  | 
| 346 | 
            -
            Copyright: 2015 Kematzy 
         | 
| 347 | 
            -
             | 
| 348 | 
            -
             | 
| 349 | 
            -
             | 
| 351 | 
            +
            Copyright: 2015 - 2024 Kematzy 
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,29 +1,25 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require 'bundler/gem_tasks'
         | 
| 4 | 
            +
            require 'rubocop/rake_task'
         | 
| 2 5 | 
             
            require 'rake/testtask'
         | 
| 3 6 |  | 
| 7 | 
            +
            RuboCop::RakeTask.new
         | 
| 8 | 
            +
             | 
| 4 9 | 
             
            Rake::TestTask.new(:spec) do |t|
         | 
| 5 10 | 
             
              t.libs << 'spec'
         | 
| 6 11 | 
             
              t.libs << 'lib'
         | 
| 7 12 | 
             
              t.test_files = FileList['spec/**/*_spec.rb']
         | 
| 8 13 | 
             
            end
         | 
| 9 14 |  | 
| 10 | 
            -
            task : | 
| 11 | 
            -
             | 
| 15 | 
            +
            task default: %i[rubocop spec]
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            desc 'alias for spec task'
         | 
| 18 | 
            +
            task test: :spec
         | 
| 12 19 |  | 
| 13 20 | 
             
            desc 'Run specs with coverage'
         | 
| 14 21 | 
             
            task :coverage do
         | 
| 15 22 | 
             
              ENV['COVERAGE'] = '1'
         | 
| 16 23 | 
             
              Rake::Task['spec'].invoke
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            desc 'Run Rubocop report'
         | 
| 21 | 
            -
            task :rubocop do
         | 
| 22 | 
            -
              res = `which rubocop`
         | 
| 23 | 
            -
              if res != ""
         | 
| 24 | 
            -
                `rubocop -f html -o ./rubocop/report.html lib/`
         | 
| 25 | 
            -
                  # `open rubocop/report.html` # if OSX
         | 
| 26 | 
            -
              else
         | 
| 27 | 
            -
                puts "\nERROR: 'rubocop' gem is not installed or available. Please install with 'gem install rubocop'."
         | 
| 28 | 
            -
              end
         | 
| 24 | 
            +
              # `open coverage/index.html` # if OSX
         | 
| 29 25 | 
             
            end
         | 
    
        data/lib/roda/i18n/version.rb
    CHANGED
    
    
    
        data/lib/roda/i18n.rb
    CHANGED
    
    
    
        data/lib/roda/plugins/i18n.rb
    CHANGED
    
    | @@ -1,217 +1,210 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require 'r18n-core'
         | 
| 2 4 |  | 
| 3 | 
            -
            # 
         | 
| 4 5 | 
             
            class Roda
         | 
| 5 | 
            -
              
         | 
| 6 | 
            -
              # 
         | 
| 7 6 | 
             
              module RodaPlugins
         | 
| 8 | 
            -
                
         | 
| 9 7 | 
             
                # The i18n plugin allows you to easily add internationalisation (i18n) and
         | 
| 10 8 | 
             
                # localisation support to your Roda app, by adding the following:
         | 
| 11 | 
            -
                # | 
| 9 | 
            +
                #
         | 
| 12 10 | 
             
                #    plugin :i18n
         | 
| 13 | 
            -
                # | 
| 14 | 
            -
                # By default the default locale is set to <tt>'en'</tt> and the translations directory | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
                # By default the default locale is set to <tt>'en'</tt> and the translations directory
         | 
| 15 13 | 
             
                # is set to <tt>'i18n'</tt> in the rooot of your app.
         | 
| 16 | 
            -
                # | 
| 14 | 
            +
                #
         | 
| 17 15 | 
             
                # Both <tt>:locale</tt> and <tt>:translations</tt> can be overridden during configuration:
         | 
| 18 | 
            -
                # | 
| 16 | 
            +
                #
         | 
| 19 17 | 
             
                #    plugin :i18n, :locale => ['de'], :translations => ['absolute/path/2/i18n']
         | 
| 20 | 
            -
                # | 
| 21 | 
            -
                # Please note! | 
| 18 | 
            +
                #
         | 
| 19 | 
            +
                # Please note!
         | 
| 22 20 | 
             
                #  1) You must set +opts[:root]+ in your app if you don't define the +:translations+ path.
         | 
| 23 | 
            -
                # | 
| 21 | 
            +
                #
         | 
| 24 22 | 
             
                # 2) When overriding <tt>:translations</tt> the path given <b>must be absolute</b>.
         | 
| 25 | 
            -
                # | 
| 23 | 
            +
                #
         | 
| 26 24 | 
             
                # The path supports 'wildcards', ie: path/**/i18n so you can load translations from multiple
         | 
| 27 25 | 
             
                # combined apps each with their own <tt>i18n</tt> folder with translations.
         | 
| 28 | 
            -
                # | 
| 29 | 
            -
                # Note! when loading translations from multiple sources and the same translation key is used | 
| 30 | 
            -
                # in both files, the first loaded file takes precedence, ie: <tt>./i18n/en.yml</tt> takes | 
| 26 | 
            +
                #
         | 
| 27 | 
            +
                # Note! when loading translations from multiple sources and the same translation key is used
         | 
| 28 | 
            +
                # in both files, the first loaded file takes precedence, ie: <tt>./i18n/en.yml</tt> takes
         | 
| 31 29 | 
             
                # precedence over <tt>./apps/app1/i18n/en.yml</tt>
         | 
| 32 | 
            -
                # | 
| 30 | 
            +
                #
         | 
| 33 31 | 
             
                # == USAGE
         | 
| 34 | 
            -
                # | 
| 32 | 
            +
                #
         | 
| 35 33 | 
             
                # The i18n plugin depends upon simple YAML based translations files:
         | 
| 36 | 
            -
                # | 
| 34 | 
            +
                #
         | 
| 37 35 | 
             
                #     # app/i18n/en.yml
         | 
| 38 | 
            -
                # | 
| 36 | 
            +
                #
         | 
| 39 37 | 
             
                #     user:
         | 
| 40 38 | 
             
                #       edit: Edit user
         | 
| 41 39 | 
             
                #       name: User name is %1
         | 
| 42 40 | 
             
                #       count: !!pl
         | 
| 43 41 | 
             
                #         1: There is 1 user
         | 
| 44 42 | 
             
                #         n: There are %1 users
         | 
| 45 | 
            -
                # | 
| 46 | 
            -
                # | 
| 43 | 
            +
                #
         | 
| 44 | 
            +
                #
         | 
| 47 45 | 
             
                # and the <tt>:t</tt> instance method to output the translations:
         | 
| 48 | 
            -
                # | 
| 49 | 
            -
                # | 
| 46 | 
            +
                #
         | 
| 47 | 
            +
                #
         | 
| 50 48 | 
             
                #     t.user.edit         #=> "Edit user"
         | 
| 51 49 | 
             
                #     t.user.name('John') #=> "User name is John"
         | 
| 52 50 | 
             
                #     t.user.count(5)     #=> "There are 5 users"
         | 
| 53 | 
            -
                # | 
| 51 | 
            +
                #
         | 
| 54 52 | 
             
                #     t.does.not.exist | 'default' #=> "default"
         | 
| 55 | 
            -
                # | 
| 56 | 
            -
                # | 
| 53 | 
            +
                #
         | 
| 54 | 
            +
                #
         | 
| 57 55 | 
             
                # the <tt>:l</tt> instance method provides built-in localisations support:
         | 
| 58 | 
            -
                # | 
| 56 | 
            +
                #
         | 
| 59 57 | 
             
                #      l Time.now           #=> "03/01/2010 18:54"
         | 
| 60 58 | 
             
                #      l Time.now, :human   #=> "now"
         | 
| 61 59 | 
             
                #      l Time.now, :full    #=> "3rd of January, 2010 18:54"
         | 
| 62 | 
            -
                # | 
| 60 | 
            +
                #
         | 
| 63 61 | 
             
                # Both the +:t+ and +:l+ methods are available in the route and template (erb) scopes. ie:
         | 
| 64 | 
            -
                # | 
| 62 | 
            +
                #
         | 
| 65 63 | 
             
                #     route do |r|
         | 
| 66 64 | 
             
                #       r.root do
         | 
| 67 65 | 
             
                #         t.welcome.message
         | 
| 68 66 | 
             
                #       end
         | 
| 69 67 | 
             
                #     end
         | 
| 70 | 
            -
                # | 
| 68 | 
            +
                #
         | 
| 71 69 | 
             
                #     # app/views/layout.erb
         | 
| 72 70 | 
             
                #     <snip...>
         | 
| 73 71 | 
             
                #       <h1><%= t.welcome.message %></h1>
         | 
| 74 72 | 
             
                #     <snip...>
         | 
| 75 | 
            -
                # | 
| 76 | 
            -
                # | 
| 77 | 
            -
                # | 
| 73 | 
            +
                #
         | 
| 74 | 
            +
                #
         | 
| 75 | 
            +
                #
         | 
| 78 76 | 
             
                # Visit [R18n](https://github.com/ai/r18n/tree/master/r18n-core) for more information.
         | 
| 79 | 
            -
                # | 
| 80 | 
            -
                # | 
| 77 | 
            +
                #
         | 
| 78 | 
            +
                #
         | 
| 81 79 | 
             
                # The i18n plugin also makes it easy to handle locales:
         | 
| 82 | 
            -
                # | 
| 83 | 
            -
                # | 
| 80 | 
            +
                #
         | 
| 81 | 
            +
                #
         | 
| 84 82 | 
             
                # === <tt>:locale</tt> RequestMethod
         | 
| 85 | 
            -
                # | 
| 83 | 
            +
                #
         | 
| 86 84 | 
             
                # This request method makes it to handle translations based upon the :locale prefix on a URL,
         | 
| 87 85 | 
             
                #  ie: <tt>blog.com/de/posts</tt>, just use the following code:
         | 
| 88 | 
            -
                # | 
| 86 | 
            +
                #
         | 
| 89 87 | 
             
                #     route do |r|
         | 
| 90 | 
            -
                # | 
| 88 | 
            +
                #
         | 
| 91 89 | 
             
                #       r.locale do    # or r.i18n_locale
         | 
| 92 | 
            -
                #         r.is 'posts' do | 
| 90 | 
            +
                #         r.is 'posts' do
         | 
| 93 91 | 
             
                #           t.posts.header
         | 
| 94 92 | 
             
                #         end
         | 
| 95 93 | 
             
                #       end
         | 
| 96 | 
            -
                # | 
| 94 | 
            +
                #
         | 
| 97 95 | 
             
                #     end
         | 
| 98 | 
            -
                # | 
| 99 | 
            -
                # | 
| 96 | 
            +
                #
         | 
| 97 | 
            +
                #
         | 
| 100 98 | 
             
                # === <tt>:i18n_set_locale_from</tt> RequestMethod
         | 
| 101 | 
            -
                # | 
| 99 | 
            +
                #
         | 
| 102 100 | 
             
                # Obtains the locale from either ENV, HTTP (browser), Params or Session values
         | 
| 103 | 
            -
                # | 
| 104 | 
            -
                # | 
| 101 | 
            +
                #
         | 
| 102 | 
            +
                #
         | 
| 105 103 | 
             
                # Naturally we can allow browsers to override the default locale within routes, like this:
         | 
| 106 | 
            -
                # | 
| 104 | 
            +
                #
         | 
| 107 105 | 
             
                #     route do |r|
         | 
| 108 106 | 
             
                #       i18n_set_locale_from(:http)  #=> set to the browser's default locale (en-US)
         | 
| 109 107 | 
             
                #       r.get '' do
         | 
| 110 108 | 
             
                #         t.hello  #=> 'Howdy, I speak American English'
         | 
| 111 109 | 
             
                #       end
         | 
| 112 110 | 
             
                #     end
         | 
| 113 | 
            -
                # | 
| 111 | 
            +
                #
         | 
| 114 112 | 
             
                # The def
         | 
| 115 | 
            -
                # | 
| 116 | 
            -
                # | 
| 113 | 
            +
                #
         | 
| 114 | 
            +
                #
         | 
| 117 115 | 
             
                #     route do |r|
         | 
| 118 116 | 
             
                #       i18n_set_locale('de')
         | 
| 119 117 | 
             
                #       r.get 'in-german' do
         | 
| 120 118 | 
             
                #         t.hello  #=> 'Guten tag, ich spreche deutsch'
         | 
| 121 119 | 
             
                #       end
         | 
| 122 120 | 
             
                #     end
         | 
| 123 | 
            -
                # | 
| 124 | 
            -
                # | 
| 125 | 
            -
                # | 
| 126 | 
            -
                # | 
| 121 | 
            +
                #
         | 
| 122 | 
            +
                #
         | 
| 123 | 
            +
                #
         | 
| 124 | 
            +
                #
         | 
| 127 125 | 
             
                module RodaI18n
         | 
| 128 | 
            -
                  
         | 
| 129 126 | 
             
                  # default options
         | 
| 130 127 | 
             
                  OPTS = {
         | 
| 131 128 | 
             
                    # set the default locale
         | 
| 132 | 
            -
                    locale: | 
| 129 | 
            +
                    locale: 'en',
         | 
| 133 130 | 
             
                    # set the default fallback locale
         | 
| 134 | 
            -
                    default_locale: | 
| 131 | 
            +
                    default_locale: 'en',
         | 
| 135 132 | 
             
                    # set the default translations.
         | 
| 136 | 
            -
                    translations: | 
| 133 | 
            +
                    translations: nil
         | 
| 137 134 | 
             
                  }.freeze
         | 
| 138 | 
            -
             | 
| 139 | 
            -
                        
         | 
| 135 | 
            +
             | 
| 140 136 | 
             
                  def self.configure(app, opts = OPTS)
         | 
| 141 | 
            -
                    if app.opts[:i18n]
         | 
| 142 | 
            -
             | 
| 143 | 
            -
             | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 146 | 
            -
             | 
| 137 | 
            +
                    opts = if app.opts[:i18n]
         | 
| 138 | 
            +
                             app.opts[:i18n][:orig_opts].merge(opts)
         | 
| 139 | 
            +
                           else
         | 
| 140 | 
            +
                             OPTS.merge(opts)
         | 
| 141 | 
            +
                           end
         | 
| 142 | 
            +
             | 
| 147 143 | 
             
                    app.opts[:i18n]             = opts.dup
         | 
| 148 144 | 
             
                    app.opts[:i18n][:orig_opts] = opts
         | 
| 149 145 | 
             
                    opts = app.opts[:i18n]
         | 
| 150 | 
            -
             | 
| 146 | 
            +
             | 
| 151 147 | 
             
                    # set the translations path to defaults if nil
         | 
| 152 148 | 
             
                    opts[:translations] = File.expand_path('i18n', app.opts[:root]) if opts[:translations].nil?
         | 
| 153 149 | 
             
                    ::R18n.default_places = opts[:translations]
         | 
| 154 | 
            -
             | 
| 155 | 
            -
                    # default_locale is either 'en' or the set value, so reset :default_locale if | 
| 150 | 
            +
             | 
| 151 | 
            +
                    # default_locale is either 'en' or the set value, so reset :default_locale if
         | 
| 156 152 | 
             
                    # it is somehow nil or an empty string ' '
         | 
| 157 | 
            -
                    if opts[:default_locale].nil? || opts[:default_locale] =~ /^\s*$/
         | 
| 158 | 
            -
                      opts[:default_locale] = 'en'
         | 
| 159 | 
            -
                    end
         | 
| 153 | 
            +
                    opts[:default_locale] = 'en' if opts[:default_locale].nil? || opts[:default_locale] =~ /^\s*$/
         | 
| 160 154 | 
             
                    ::R18n::I18n.default = opts[:default_locale]
         | 
| 161 | 
            -
             | 
| 155 | 
            +
             | 
| 162 156 | 
             
                    ::R18n.clear_cache! if ENV['RACK_ENV'] != 'production'
         | 
| 163 | 
            -
                    i18n | 
| 164 | 
            -
                      opts[:locale], | 
| 157 | 
            +
                    i18n = R18n::I18n.new(
         | 
| 158 | 
            +
                      opts[:locale],
         | 
| 165 159 | 
             
                      ::R18n.default_places,
         | 
| 166 | 
            -
                      off_filters: | 
| 167 | 
            -
                      on_filters: | 
| 160 | 
            +
                      off_filters: :untranslated,
         | 
| 161 | 
            +
                      on_filters: :untranslated_html
         | 
| 168 162 | 
             
                    )
         | 
| 169 163 | 
             
                    ::R18n.set(i18n)
         | 
| 170 164 | 
             
                  end
         | 
| 171 | 
            -
             | 
| 165 | 
            +
             | 
| 172 166 | 
             
                  # methods used within Roda's route block
         | 
| 173 | 
            -
                  # | 
| 167 | 
            +
                  #
         | 
| 174 168 | 
             
                  module RequestMethods
         | 
| 175 | 
            -
                    
         | 
| 176 169 | 
             
                    # Obtains the locale from either ENV, HTTP (browser), Params or Session
         | 
| 177 170 | 
             
                    # values.
         | 
| 178 | 
            -
                    # | 
| 171 | 
            +
                    #
         | 
| 179 172 | 
             
                    #   route do |r|
         | 
| 180 173 | 
             
                    #     # A): set from URL params ie: GET /posts?locale=de
         | 
| 181 174 | 
             
                    #     r.i18n_set_locale_from(:params)
         | 
| 182 | 
            -
                    # | 
| 175 | 
            +
                    #
         | 
| 183 176 | 
             
                    #       /url?locale=de
         | 
| 184 177 | 
             
                    #       <%= t.one %>    #=> Ein
         | 
| 185 178 | 
             
                    #       /url?locale=es
         | 
| 186 179 | 
             
                    #       <%= t.one %>    #=> Uno
         | 
| 187 | 
            -
                    # | 
| 180 | 
            +
                    #
         | 
| 188 181 | 
             
                    #     # B): set from session[:locale] (if present)
         | 
| 189 182 | 
             
                    #     r.i18n_set_locale_from(:session)
         | 
| 190 | 
            -
                    # | 
| 183 | 
            +
                    #
         | 
| 191 184 | 
             
                    #       session[:locale] = 'de'
         | 
| 192 185 | 
             
                    #       <%= t.one %>    #=> Ein
         | 
| 193 186 | 
             
                    #       session[:locale] = 'es'
         | 
| 194 187 | 
             
                    #       <%= t.one %>    #=> Uno
         | 
| 195 | 
            -
                    # | 
| 188 | 
            +
                    #
         | 
| 196 189 | 
             
                    #     # C): set from the browser's HTTP request locale
         | 
| 197 190 | 
             
                    #     r.i18n_set_locale_from(:http)
         | 
| 198 | 
            -
                    # | 
| 191 | 
            +
                    #
         | 
| 199 192 | 
             
                    #       HTTP_ACCEPT_LANGUAGE = 'sv-se;q=1,es;q=0.8,en;q=0.6'
         | 
| 200 193 | 
             
                    #       <%= t.one %>    #=> Ett
         | 
| 201 | 
            -
                    # | 
| 194 | 
            +
                    #
         | 
| 202 195 | 
             
                    #     # D): set from the server ENV['LANG'] variable
         | 
| 203 196 | 
             
                    #     r.i18n_set_locale_from(:ENV)
         | 
| 204 | 
            -
                    # | 
| 197 | 
            +
                    #
         | 
| 205 198 | 
             
                    #       ENV['LANG'] = 'en_US.UTF8'
         | 
| 206 199 | 
             
                    #         <%= t.one %>    #=> One
         | 
| 207 200 | 
             
                    #       ENV['LANG'] = 'es'
         | 
| 208 201 | 
             
                    #         <%= t.one %>    #=> Uno
         | 
| 209 | 
            -
                    # | 
| 210 | 
            -
                    #     r.is 'posts' do | 
| 202 | 
            +
                    #
         | 
| 203 | 
            +
                    #     r.is 'posts' do
         | 
| 211 204 | 
             
                    #       t.posts.header # use translations
         | 
| 212 205 | 
             
                    #     end
         | 
| 213 206 | 
             
                    #   end
         | 
| 214 | 
            -
                    # | 
| 207 | 
            +
                    #
         | 
| 215 208 | 
             
                    def i18n_set_locale_from(type)
         | 
| 216 209 | 
             
                      case type.to_sym
         | 
| 217 210 | 
             
                      when :http
         | 
| @@ -228,73 +221,73 @@ class Roda | |
| 228 221 | 
             
                      end
         | 
| 229 222 | 
             
                      # sanity check: set to default locale if not set above
         | 
| 230 223 | 
             
                      loc = ::R18n::I18n.default.to_s if loc.nil?
         | 
| 231 | 
            -
             | 
| 224 | 
            +
             | 
| 232 225 | 
             
                      i18n = ::R18n::I18n.new(
         | 
| 233 | 
            -
                        loc, | 
| 226 | 
            +
                        loc,
         | 
| 234 227 | 
             
                        ::R18n.default_places,
         | 
| 235 | 
            -
                        off_filters: | 
| 236 | 
            -
                        on_filters: | 
| 228 | 
            +
                        off_filters: :untranslated,
         | 
| 229 | 
            +
                        on_filters: :untranslated_html
         | 
| 237 230 | 
             
                      )
         | 
| 238 231 | 
             
                      ::R18n.set(i18n)
         | 
| 239 232 | 
             
                    end
         | 
| 240 | 
            -
             | 
| 233 | 
            +
             | 
| 241 234 | 
             
                    # Enables setting temporary :locale blocks within the routing block.
         | 
| 242 | 
            -
                    # | 
| 235 | 
            +
                    #
         | 
| 243 236 | 
             
                    #   route do |r|
         | 
| 244 | 
            -
                    # | 
| 237 | 
            +
                    #
         | 
| 245 238 | 
             
                    #     r.i18n_set_locale('de') do
         | 
| 246 239 | 
             
                    #       # within this block the locale is DE (German)
         | 
| 247 240 | 
             
                    #     end
         | 
| 248 | 
            -
                    # | 
| 241 | 
            +
                    #
         | 
| 249 242 | 
             
                    #     r.i18n_set_locale('es') do
         | 
| 250 243 | 
             
                    #       # within this block the locale is ES (Spanish)
         | 
| 251 244 | 
             
                    #     end
         | 
| 252 | 
            -
                    # | 
| 245 | 
            +
                    #
         | 
| 253 246 | 
             
                    #   end
         | 
| 254 | 
            -
                    # | 
| 255 | 
            -
                    def i18n_set_locale(locale | 
| 247 | 
            +
                    #
         | 
| 248 | 
            +
                    def i18n_set_locale(locale)
         | 
| 256 249 | 
             
                      locale = ::R18n::I18n.default.to_s if locale.nil?
         | 
| 257 | 
            -
             | 
| 250 | 
            +
             | 
| 258 251 | 
             
                      i18n = ::R18n::I18n.new(
         | 
| 259 | 
            -
                        locale, | 
| 260 | 
            -
                        ::R18n.default_places, | 
| 261 | 
            -
                        off_filters: | 
| 262 | 
            -
                        on_filters: | 
| 252 | 
            +
                        locale,
         | 
| 253 | 
            +
                        ::R18n.default_places,
         | 
| 254 | 
            +
                        off_filters: :untranslated,
         | 
| 255 | 
            +
                        on_filters: :untranslated_html
         | 
| 263 256 | 
             
                      )
         | 
| 264 257 | 
             
                      ::R18n.set(i18n)
         | 
| 265 258 | 
             
                      yield if block_given?
         | 
| 266 259 | 
             
                      # return # NB!! needed to enable routes below to work
         | 
| 267 260 | 
             
                    end
         | 
| 268 | 
            -
             | 
| 261 | 
            +
             | 
| 269 262 | 
             
                    # Match only paths that contain one available locale from the ::R18n.available_locales
         | 
| 270 263 | 
             
                    # list, otherwise skip it.
         | 
| 271 264 | 
             
                    #
         | 
| 272 265 | 
             
                    # This custom matcher allows us to have other routes below the r.locale .. declaration
         | 
| 273 266 | 
             
                    def _match_available_locales_only
         | 
| 274 | 
            -
             | 
| 275 | 
            -
             | 
| 276 | 
            -
             | 
| 277 | 
            -
             | 
| 278 | 
            -
             | 
| 279 | 
            -
             | 
| 280 | 
            -
             | 
| 267 | 
            +
                      lambda do
         | 
| 268 | 
            +
                        locale = remaining_path.split('/').reject(&:empty?).first.to_s
         | 
| 269 | 
            +
                        if ::R18n.available_locales.map { |locale| locale.code.downcase }.include?(locale.downcase)
         | 
| 270 | 
            +
                          @captures.push(locale)
         | 
| 271 | 
            +
                          @remaining_path = remaining_path.sub("/#{locale}", '')
         | 
| 272 | 
            +
                        end
         | 
| 273 | 
            +
                      end
         | 
| 281 274 | 
             
                    end
         | 
| 282 | 
            -
             | 
| 275 | 
            +
             | 
| 283 276 | 
             
                    # Sets the locale based upon <tt>:locale</tt> prefixed routes
         | 
| 284 | 
            -
                    # | 
| 277 | 
            +
                    #
         | 
| 285 278 | 
             
                    #   route do |r|
         | 
| 286 279 | 
             
                    #     r.locale do
         | 
| 287 280 | 
             
                    #       # all routes are prefixed with '/:locale'
         | 
| 288 281 | 
             
                    #       # ie: GET /de/posts  => will use DE translations
         | 
| 289 282 | 
             
                    #       # ie: GET /es/posts  => will use ES translations
         | 
| 290 | 
            -
                    #       r.is 'posts' do | 
| 283 | 
            +
                    #       r.is 'posts' do
         | 
| 291 284 | 
             
                    #         t.posts.header # use translations or locales
         | 
| 292 285 | 
             
                    #       end
         | 
| 293 286 | 
             
                    #     end
         | 
| 294 287 | 
             
                    #     r.get(:about) { erb(:about) }
         | 
| 295 288 | 
             
                    #   end
         | 
| 296 289 | 
             
                    #
         | 
| 297 | 
            -
                    def locale(opts = {} | 
| 290 | 
            +
                    def locale(opts = {})
         | 
| 298 291 | 
             
                      on(_match_available_locales_only, opts) do |l|
         | 
| 299 292 | 
             
                        loc = l || Roda.opts[:locale]
         | 
| 300 293 | 
             
                        ::R18n.set(loc)
         | 
| @@ -302,25 +295,20 @@ class Roda | |
| 302 295 | 
             
                        return # NB!! needed to enable routes below to work
         | 
| 303 296 | 
             
                      end
         | 
| 304 297 | 
             
                    end
         | 
| 305 | 
            -
                     | 
| 306 | 
            -
                  
         | 
| 307 | 
            -
             | 
| 308 | 
            -
                  
         | 
| 309 | 
            -
                  
         | 
| 298 | 
            +
                    alias i18n_locale locale
         | 
| 299 | 
            +
                  end
         | 
| 300 | 
            +
             | 
| 310 301 | 
             
                  module ClassMethods
         | 
| 311 | 
            -
                    
         | 
| 312 302 | 
             
                    # Return the i18n options for this plugin.
         | 
| 313 303 | 
             
                    def i18n_opts
         | 
| 314 304 | 
             
                      opts[:i18n]
         | 
| 315 305 | 
             
                    end
         | 
| 316 | 
            -
             | 
| 317 | 
            -
             | 
| 318 | 
            -
                  
         | 
| 319 | 
            -
                  
         | 
| 306 | 
            +
                  end
         | 
| 307 | 
            +
             | 
| 320 308 | 
             
                  # defines method available within the views / routing block
         | 
| 321 309 | 
             
                  module InstanceMethods
         | 
| 322 310 | 
             
                    include ::R18n::Helpers
         | 
| 323 | 
            -
             | 
| 311 | 
            +
             | 
| 324 312 | 
             
                    def i18n_available_locales
         | 
| 325 313 | 
             
                      @available_locales = []
         | 
| 326 314 | 
             
                      ::R18n.available_locales.each do |l|
         | 
| @@ -328,15 +316,13 @@ class Roda | |
| 328 316 | 
             
                      end
         | 
| 329 317 | 
             
                      @available_locales
         | 
| 330 318 | 
             
                    end
         | 
| 331 | 
            -
             | 
| 319 | 
            +
             | 
| 332 320 | 
             
                    def i18n_default_places
         | 
| 333 321 | 
             
                      ::R18n.default_places
         | 
| 334 322 | 
             
                    end
         | 
| 335 | 
            -
                    
         | 
| 336 323 | 
             
                  end
         | 
| 337 | 
            -
             | 
| 338 | 
            -
             | 
| 339 | 
            -
                
         | 
| 324 | 
            +
                end
         | 
| 325 | 
            +
             | 
| 340 326 | 
             
                register_plugin(:i18n, RodaI18n)
         | 
| 341 | 
            -
              end | 
| 342 | 
            -
            end | 
| 327 | 
            +
              end
         | 
| 328 | 
            +
            end
         | 
    
        data/roda-i18n.gemspec
    CHANGED
    
    | @@ -1,19 +1,20 @@ | |
| 1 | 
            -
            #  | 
| 2 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            lib = File.expand_path('lib', __dir__)
         | 
| 3 4 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 5 | 
             
            require 'roda/i18n/version'
         | 
| 5 6 |  | 
| 6 7 | 
             
            Gem::Specification.new do |spec|
         | 
| 7 8 | 
             
              spec.name           = 'roda-i18n'
         | 
| 8 | 
            -
              spec.version        =  | 
| 9 | 
            +
              spec.version        = Roda::I18n::VERSION
         | 
| 9 10 | 
             
              spec.authors        = ['Kematzy']
         | 
| 10 11 | 
             
              spec.email          = ['kematzy@gmail.com']
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
              spec.summary        = 'Roda Internationalisation plugin'
         | 
| 13 | 
            -
              spec.description    =  | 
| 14 | 
            +
              spec.description    = 'The Roda-i18n plugin enables easy addition of internationalisation (i18n) and localisation support in Roda apps'
         | 
| 14 15 | 
             
              spec.homepage       = 'http://github.com/kematzy/roda-i18n'
         | 
| 15 16 | 
             
              spec.license        = 'MIT'
         | 
| 16 | 
            -
             | 
| 17 | 
            +
             | 
| 17 18 | 
             
              # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
         | 
| 18 19 | 
             
              # delete this section to allow pushing this gem to any host.
         | 
| 19 20 | 
             
              # if spec.respond_to?(:metadata)
         | 
| @@ -23,28 +24,21 @@ Gem::Specification.new do |spec| | |
| 23 24 | 
             
              # end
         | 
| 24 25 |  | 
| 25 26 | 
             
              spec.files          = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         | 
| 26 | 
            -
              spec.bindir         =  | 
| 27 | 
            +
              spec.bindir         = 'exe'
         | 
| 27 28 | 
             
              spec.executables    = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 28 | 
            -
              spec.require_paths  = [ | 
| 29 | 
            -
             | 
| 29 | 
            +
              spec.require_paths  = ['lib']
         | 
| 30 | 
            +
             | 
| 30 31 | 
             
              spec.platform         = Gem::Platform::RUBY
         | 
| 31 | 
            -
              spec. | 
| 32 | 
            -
              spec. | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
              spec. | 
| 36 | 
            -
             | 
| 37 | 
            -
              spec. | 
| 38 | 
            -
              
         | 
| 39 | 
            -
              spec. | 
| 40 | 
            -
              spec. | 
| 41 | 
            -
             | 
| 42 | 
            -
              spec. | 
| 43 | 
            -
              spec.add_development_dependency 'minitest', '~> 5.7', '>= 5.7.0'
         | 
| 44 | 
            -
              spec.add_development_dependency 'minitest-hooks', '~> 1.1', '>= 1.1.0'
         | 
| 45 | 
            -
              spec.add_development_dependency 'minitest-rg'
         | 
| 46 | 
            -
              spec.add_development_dependency 'rack-test', '~> 1.0'
         | 
| 47 | 
            -
              spec.add_development_dependency 'nokogiri'
         | 
| 48 | 
            -
              spec.add_development_dependency 'simplecov'
         | 
| 49 | 
            -
              
         | 
| 32 | 
            +
              spec.extra_rdoc_files = ['README.md', 'MIT-LICENSE']
         | 
| 33 | 
            +
              spec.rdoc_options += ['--quiet', '--line-numbers', '--inline-source', '--title',
         | 
| 34 | 
            +
                                    'Roda-i18n: internationalisation plugin', '--main', 'README.md']
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              spec.required_ruby_version = '>= 3.0.0'
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              spec.add_dependency 'date'
         | 
| 39 | 
            +
              spec.add_dependency 'r18n-core', '~> 5.0'
         | 
| 40 | 
            +
              spec.add_dependency 'roda', '~> 3.8'
         | 
| 41 | 
            +
              spec.add_dependency 'tilt'
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              spec.metadata['rubygems_mfa_required'] = 'true'
         | 
| 50 44 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,31 +1,17 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: roda-i18n
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kematzy
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-09-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 15 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            -
                requirements:
         | 
| 17 | 
            -
                - - "~>"
         | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '3.7'
         | 
| 20 | 
            -
              type: :runtime
         | 
| 21 | 
            -
              prerelease: false
         | 
| 22 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            -
                requirements:
         | 
| 24 | 
            -
                - - "~>"
         | 
| 25 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '3.7'
         | 
| 27 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name: tilt
         | 
| 14 | 
            +
              name: date
         | 
| 29 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 16 | 
             
                requirements:
         | 
| 31 17 | 
             
                - - ">="
         | 
| @@ -44,160 +30,36 @@ dependencies: | |
| 44 30 | 
             
                requirements:
         | 
| 45 31 | 
             
                - - "~>"
         | 
| 46 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 33 | 
            +
                    version: '5.0'
         | 
| 48 34 | 
             
              type: :runtime
         | 
| 49 35 | 
             
              prerelease: false
         | 
| 50 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 37 | 
             
                requirements:
         | 
| 52 38 | 
             
                - - "~>"
         | 
| 53 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 55 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name: bundler
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - "~>"
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '1.10'
         | 
| 62 | 
            -
              type: :development
         | 
| 63 | 
            -
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                requirements:
         | 
| 66 | 
            -
                - - "~>"
         | 
| 67 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '1.10'
         | 
| 69 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name: rake
         | 
| 71 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            -
                requirements:
         | 
| 73 | 
            -
                - - "~>"
         | 
| 74 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: '12.3'
         | 
| 76 | 
            -
              type: :development
         | 
| 77 | 
            -
              prerelease: false
         | 
| 78 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            -
                requirements:
         | 
| 80 | 
            -
                - - "~>"
         | 
| 81 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: '12.3'
         | 
| 83 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name: erubis
         | 
| 85 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            -
                requirements:
         | 
| 87 | 
            -
                - - ">="
         | 
| 88 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: '0'
         | 
| 90 | 
            -
              type: :development
         | 
| 91 | 
            -
              prerelease: false
         | 
| 92 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            -
                requirements:
         | 
| 94 | 
            -
                - - ">="
         | 
| 95 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '0'
         | 
| 97 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name: kramdown
         | 
| 99 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            -
                requirements:
         | 
| 101 | 
            -
                - - ">="
         | 
| 102 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: '0'
         | 
| 104 | 
            -
              type: :development
         | 
| 105 | 
            -
              prerelease: false
         | 
| 106 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            -
                requirements:
         | 
| 108 | 
            -
                - - ">="
         | 
| 109 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: '0'
         | 
| 111 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            -
              name: minitest
         | 
| 113 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 | 
            -
                requirements:
         | 
| 115 | 
            -
                - - "~>"
         | 
| 116 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: '5.7'
         | 
| 118 | 
            -
                - - ">="
         | 
| 119 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 120 | 
            -
                    version: 5.7.0
         | 
| 121 | 
            -
              type: :development
         | 
| 122 | 
            -
              prerelease: false
         | 
| 123 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 124 | 
            -
                requirements:
         | 
| 125 | 
            -
                - - "~>"
         | 
| 126 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 127 | 
            -
                    version: '5.7'
         | 
| 128 | 
            -
                - - ">="
         | 
| 129 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 130 | 
            -
                    version: 5.7.0
         | 
| 40 | 
            +
                    version: '5.0'
         | 
| 131 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 132 | 
            -
              name:  | 
| 133 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 134 | 
            -
                requirements:
         | 
| 135 | 
            -
                - - "~>"
         | 
| 136 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 137 | 
            -
                    version: '1.1'
         | 
| 138 | 
            -
                - - ">="
         | 
| 139 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 140 | 
            -
                    version: 1.1.0
         | 
| 141 | 
            -
              type: :development
         | 
| 142 | 
            -
              prerelease: false
         | 
| 143 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 144 | 
            -
                requirements:
         | 
| 145 | 
            -
                - - "~>"
         | 
| 146 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 147 | 
            -
                    version: '1.1'
         | 
| 148 | 
            -
                - - ">="
         | 
| 149 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 150 | 
            -
                    version: 1.1.0
         | 
| 151 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 152 | 
            -
              name: minitest-rg
         | 
| 153 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 154 | 
            -
                requirements:
         | 
| 155 | 
            -
                - - ">="
         | 
| 156 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 157 | 
            -
                    version: '0'
         | 
| 158 | 
            -
              type: :development
         | 
| 159 | 
            -
              prerelease: false
         | 
| 160 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 161 | 
            -
                requirements:
         | 
| 162 | 
            -
                - - ">="
         | 
| 163 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 164 | 
            -
                    version: '0'
         | 
| 165 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 166 | 
            -
              name: rack-test
         | 
| 42 | 
            +
              name: roda
         | 
| 167 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 168 44 | 
             
                requirements:
         | 
| 169 45 | 
             
                - - "~>"
         | 
| 170 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 171 | 
            -
                    version: ' | 
| 172 | 
            -
              type: : | 
| 47 | 
            +
                    version: '3.8'
         | 
| 48 | 
            +
              type: :runtime
         | 
| 173 49 | 
             
              prerelease: false
         | 
| 174 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 175 51 | 
             
                requirements:
         | 
| 176 52 | 
             
                - - "~>"
         | 
| 177 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 178 | 
            -
                    version: ' | 
| 179 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 180 | 
            -
              name: nokogiri
         | 
| 181 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 182 | 
            -
                requirements:
         | 
| 183 | 
            -
                - - ">="
         | 
| 184 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 185 | 
            -
                    version: '0'
         | 
| 186 | 
            -
              type: :development
         | 
| 187 | 
            -
              prerelease: false
         | 
| 188 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 189 | 
            -
                requirements:
         | 
| 190 | 
            -
                - - ">="
         | 
| 191 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 192 | 
            -
                    version: '0'
         | 
| 54 | 
            +
                    version: '3.8'
         | 
| 193 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 194 | 
            -
              name:  | 
| 56 | 
            +
              name: tilt
         | 
| 195 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 196 58 | 
             
                requirements:
         | 
| 197 59 | 
             
                - - ">="
         | 
| 198 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 199 61 | 
             
                    version: '0'
         | 
| 200 | 
            -
              type: : | 
| 62 | 
            +
              type: :runtime
         | 
| 201 63 | 
             
              prerelease: false
         | 
| 202 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 203 65 | 
             
                requirements:
         | 
| @@ -214,7 +76,11 @@ extra_rdoc_files: | |
| 214 76 | 
             
            - README.md
         | 
| 215 77 | 
             
            - MIT-LICENSE
         | 
| 216 78 | 
             
            files:
         | 
| 79 | 
            +
            - ".github/dependabot.yml"
         | 
| 80 | 
            +
            - ".github/workflows/ruby.yml"
         | 
| 217 81 | 
             
            - ".gitignore"
         | 
| 82 | 
            +
            - ".rubocop.yml"
         | 
| 83 | 
            +
            - ".rubocop_todo.yml"
         | 
| 218 84 | 
             
            - ".travis.yml"
         | 
| 219 85 | 
             
            - CHANGELOG.md
         | 
| 220 86 | 
             
            - Gemfile
         | 
| @@ -228,8 +94,9 @@ files: | |
| 228 94 | 
             
            homepage: http://github.com/kematzy/roda-i18n
         | 
| 229 95 | 
             
            licenses:
         | 
| 230 96 | 
             
            - MIT
         | 
| 231 | 
            -
            metadata: | 
| 232 | 
            -
             | 
| 97 | 
            +
            metadata:
         | 
| 98 | 
            +
              rubygems_mfa_required: 'true'
         | 
| 99 | 
            +
            post_install_message:
         | 
| 233 100 | 
             
            rdoc_options:
         | 
| 234 101 | 
             
            - "--quiet"
         | 
| 235 102 | 
             
            - "--line-numbers"
         | 
| @@ -244,16 +111,15 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 244 111 | 
             
              requirements:
         | 
| 245 112 | 
             
              - - ">="
         | 
| 246 113 | 
             
                - !ruby/object:Gem::Version
         | 
| 247 | 
            -
                  version:  | 
| 114 | 
            +
                  version: 3.0.0
         | 
| 248 115 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 249 116 | 
             
              requirements:
         | 
| 250 117 | 
             
              - - ">="
         | 
| 251 118 | 
             
                - !ruby/object:Gem::Version
         | 
| 252 119 | 
             
                  version: '0'
         | 
| 253 120 | 
             
            requirements: []
         | 
| 254 | 
            -
             | 
| 255 | 
            -
             | 
| 256 | 
            -
            signing_key: 
         | 
| 121 | 
            +
            rubygems_version: 3.5.11
         | 
| 122 | 
            +
            signing_key:
         | 
| 257 123 | 
             
            specification_version: 4
         | 
| 258 124 | 
             
            summary: Roda Internationalisation plugin
         | 
| 259 125 | 
             
            test_files: []
         |