Sha256: 4408dfee62468034cc4c5d1f7604c801959f1a7d6b24d70d67280b7860a0b0ed

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

module Telegram
  module Bot
    class UpdatesController
      # Provides helpers similar to AbstractController::Translation
      # but by default uses `action_name_i18n_key` in lazy translation keys
      # which strips `!` from action names by default. This makes translating
      # strings for commands more convenient.
      #
      # To disable this behaviour use `alias_method :action_name_i18n_key, :action_name`.
      module Translation
        extend ActiveSupport::Concern

        module ClassMethods
          # Class-level helper for lazy translations.
          def translate(key, **options)
            key = "#{controller_path.tr('/', '.')}#{key}" if key.to_s.start_with?('.')
            I18n.translate(key, **options)
          end
          alias :t :translate
        end

        # See toplevel description.
        def translate(key, **options)
          if key.to_s.start_with?('.')
            path = controller_path.tr('/', '.')
            defaults = [:"#{path}#{key}"]
            defaults << options[:default] if options[:default]
            options[:default] = defaults.flatten
            key = "#{path}.#{action_name_i18n_key}#{key}"
          end
          I18n.translate(key, **options)
        end
        alias :t :translate

        # Strips trailing `!` from action_name.
        def action_name_i18n_key
          action_name.chomp('!')
        end

        def localize(*args)
          I18n.localize(*args)
        end
        alias :l :localize
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
telegram-bot-0.16.5 lib/telegram/bot/updates_controller/translation.rb
telegram-bot-0.16.4 lib/telegram/bot/updates_controller/translation.rb
telegram-bot-0.16.3 lib/telegram/bot/updates_controller/translation.rb