# i18n-tasks finds and manages missing and unused translations: https://github.com/glebm/i18n-tasks

# The "main" locale.
base_locale: en
## All available locales are inferred from the data by default. Alternatively, specify them explicitly:
# locales: [es, fr]
## Reporting locale, default: en. Available: en, ru.
# internal_locale: en

# Read and write translations.
data:
  ## Translations are read from the file system. Supported format: YAML, JSON.
  ## Provide a custom adapter:
  # adapter: I18n::Tasks::Data::FileSystem

  # Locale files or `Find.find` patterns where translations are read from:
  read:
    - config/locales/**/en.yml
    - config/locales/phrase-exports/%{locale}.yml
    # - locales/views/zh-CN.yml # These are also in the phrase exports

  # Locale files to write new keys to, based on a list of key pattern => file rules. Matched from top to bottom:
  # `i18n-tasks normalize -p` will force move the keys according to these rules
  write:
    # - 'config/locales/phrase-exports/%{locale}.yml' # Cannot route by language, 'en' files end up in the wrong place
    ## For example, write devise and simple form keys to their respective files:
    # - ['{devise, simple_form}.*', 'config/locales/\1.%{locale}.yml']
    ## Catch-all default:
    # - config/locales/%{locale}.yml

  # External locale data (e.g. gems).
  # This data is not considered unused and is never written to.
  external:
    - <%= %x[bundle info rails-i18n --path].chomp %>/rails/locale/%{locale}.yml

  ## Specify the router (see Readme for details). Valid values: conservative_router, pattern_router, or a custom class.
  # router: conservative_router

  yaml:
    write:
      # do not wrap lines at 80 characters
      line_width: -1

  ## Pretty-print JSON:
  # json:
  #   write:
  #     indent: '  '
  #     space: ' '
  #     object_nl: "\n"
  #     array_nl: "\n"

# Find translate calls
search:
  ## Paths or `Find.find` patterns to search in:
  # paths:
  #  - app/

  ## Root directories for relative keys resolution.
  # relative_roots:
  #   - app/controllers
  #   - app/helpers
  #   - app/mailers
  #   - app/presenters
  #   - app/views

  ## Directories where method names which should not be part of a relative key resolution.
  # By default, if a relative translation is used inside a method, the name of the method will be considered part of the resolved key.
  # Directories listed here will not consider the name of the method part of the resolved key
  #
  # relative_exclude_method_name_paths:
  #  -

  ## 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

  ## Alternatively, the only files or `File.fnmatch patterns` to search in `paths`:
  ## If specified, this settings takes priority over `exclude`, but `exclude` still applies.
  # only: ["*.rb", "*.html.slim"]

  ## If `strict` is `false`, guess usages such as t("categories.#{category}.title"). The default is `true`.
  # strict: true

  ## Allows adding ast_matchers for finding translations using the AST-scanners
  ## The available matchers are:
  ## - RailsModelMatcher
  ##     Matches ActiveRecord translations like
  ##     User.human_attribute_name(:email) and User.model_name.human
  ## - DefaultI18nSubjectMatcher
  ##     Matches ActionMailer's default_i18n_subject method
  ##
  ## To implement your own, please see `I18n::Tasks::Scanners::AstMatchers::BaseMatcher`.
  ast_matchers:
    - 'I18n::Tasks::Scanners::AstMatchers::RailsModelMatcher'
    - 'I18n::Tasks::Scanners::AstMatchers::DefaultI18nSubjectMatcher'

  ## Multiple scanners can be used. Their results are merged.
  ## The options specified above are passed down to each scanner. Per-scanner options can be specified as well.
  ## See this example of a custom scanner: https://github.com/glebm/i18n-tasks/wiki/A-custom-scanner-example

## Translation Services
# translation:
#   # Google Translate
#   # Get an API key and set billing info at https://code.google.com/apis/console to use Google Translate
#   google_translate_api_key: "AbC-dEf5"
#   # DeepL Pro Translate
#   # Get an API key and subscription at https://www.deepl.com/pro to use DeepL Pro
#   deepl_api_key: "48E92789-57A3-466A-9959-1A1A1A1A1A1A"
#   # deepl_host: "https://api.deepl.com"
#   # deepl_version: "v2"

## Do not consider these keys missing:
ignore_missing:
  # File: app/helpers/mailer_helper.rb
  - comment_mailer.subject_for_commentable.subject.{chapter,other,tag}
  # File: app/mailers/comment_mailer.rb
  - mailer_helper.content_for_commentable_html.chapter.{titled,untitled}
  - mailer_helper.content_for_commentable_html.content.{chapter,other,tag}.html
  - mailer_helper.content_for_commentable_text.content.{other,tag}.text
  - mailer_helper.content_for_commentable_text.content.chapter.{titled_text,untitled_text}
  ## All of the following keys are using default values defined in the respective .rb files
  ## TODO: Move the default values to the .yml files
  # File: app/controllers/admin/admin_invitations_controller.rb
  - invites_created # should be admin.admin_invitations.grant_invites_to_users.invites_created
  - no_email # should be admin.admin_invitations.create.no_email
  - sent # should be admin.admin_invitations.create.sent
  - user_not_found # should be admin.admin_invitations.find.user_not_found
  # File: app/controllers/challenge_assignments_controller.rb
  - challenge_assignments.assignments_not_sent
  - challenge_assignments.assignments_sent
  - challenge_assignments.no_challenge
  - challenge_assignments.signup_open
  # File: app/controllers/challenges_controller.rb
  - challenge.no_collection # should be challenges.no_collection
  - challenges.no_challenge
  # File: app/controllers/collection_items_controller.rb
  - collection_items.create.invitation_not_sent # should not be using lazy lookup
  # File: app/controllers/collection_participants_controller.rb
  - applied_to_join_collection # should be collection_participants.applied_to_join_collection
  - no_collection # should be collection_participants.no_collection
  - collection_participants.accepted_invite
  - collection_participants.destroy
  - collection_participants.no_invitation
  - collection_participants.update_success
  # File: app/controllers/external_authors_controller.rb
  - external_author_claimed # should be external_authors.complete_claim.external_author_claimed
  # Files: app/controllers/external_works_controller.rb and app/controllers/languages_controller.rb
  - successfully_updated # should be languages.update.successfully_updated
  # File: app/controllers/feedbacks_controller.rb
  - failure_send # should be feedbacks.create.failure_send
  - successfully_sent # should be feedbacks.create.successfully_sent
  # Files: app/controllers/languages_controller.rb and app/controllers/locales_controller.rb
  - successfully_added # should be languages.create.successfully_added and locales.create.successfully_added
  # File: app/views/admin/admin_invitations/find.html.erb
  - admin.admin_invitations.find.find_email
  - admin.admin_invitations.find.find_token
  - admin.admin_invitations.find.find_user_name
  # File: app/views/admin/admin_invitations/new.html.erb
  - admin.admin_invitations.new.email_address
  - admin.admin_invitations.new.invite_user
  - admin.admin_invitations.new.submit
  # File: app/views/admin/skins/_navigation.html.erb
  - skins.approval_queue
  - skins.approved_skins
  - skins.rejected_skins
  # File: app/views/comments/show.html.erb
  - comments.show.comment_on
  # File: app/views/external_authors/_external_author_name.html.erb
  - external_authors.external_author_name.label_external_author_name
  # File: app/views/external_authors/edit.html.erb
  - external_authors.edit.back
  - external_authors.edit.edit_external_author
  # File: app/views/gifts/_gift_search.html.erb
  - gifts.gift_search.forms.gift_search
  - gifts.gift_search.gifts.recipient_field
  # File: app/views/invitations/index.html.erb
  - invitations.index.choose_invite
  - invitations.index.email address # should be invitations.index.email_address
  - invitations.index.submit_invite
  # File: app/views/languages/_form.html.erb
  - languages.form.abuse_support_available
  - languages.form.create
  - languages.form.name
  - languages.form.required_notice
  - languages.form.short
  - languages.form.sortable_name
  - languages.form.support_available
  - languages.form.update
  # File: app/views/languages/edit.html.erb
  - languages.edit.edit_language
  # File: app/views/languages/new.html.erb
  - languages.new.new_language
  # File: app/views/languages/show.html.erb
  - languages.show.work_count
  # File: app/views/locales/_locale_form.html.erb
  - locales.locale_form.actions_heading
  - locales.locale_form.actions_legend
  - locales.locale_form.create_button
  - locales.locale_form.edit_button
  - locales.locale_form.enable_email
  - locales.locale_form.enable_interface
  - locales.locale_form.iso
  - locales.locale_form.language
  - locales.locale_form.locale_heading
  - locales.locale_form.locale_legend
  - locales.locale_form.name
  - locales.locale_form.required_notice
  # File: app/views/locales/_navigation.html.erb
  - locales.navigation.link_to_index
  - locales.navigation.link_to_new
  # File: app/views/locales/edit.html.erb
  - locales.edit.edit_locale
  # File: app/views/locales/index.html.erb
  - locales.index.locale_table_caption
  - locales.index.locale_table_summary
  - locales.index.supported_locales
  # File: app/views/locales/new.html.erb
  - locales.new.add_new_locale
  # File: app/views/orphans/index.html.erb
  - orphans.index.orphaned_works
  # File: app/views/orphans/new.html.erb
  - orphans.new.links.cancel
  - orphans.new.orphans_about
  # File: app/views/pseuds/edit.html.erb
  - pseuds.edit.forms.update
  # File: app/views/pseuds/show.html.erb
  - pseuds.show.edit_link
  - pseuds.show.index_link
  # File: app/views/series/manage.html.erb
  - series.manage.manage_series

## Consider these keys used:
ignore_unused:
  - activerecord.attributes.*
  - activerecord.errors.models.*
  - activerecord.models.*
  - devise.*
  - errors.messages.*
  - errors.attributes.ticket_number.{closed_ticket,invalid_department,required}
  - attributes.ticket_number

## Exclude these keys from the `i18n-tasks eq-base' report:
# ignore_eq_base:
#   all:
#     - common.ok
#   fr,es:
#     - common.brand

## Exclude these keys from the `i18n-tasks check-consistent-interpolations` report:
# ignore_inconsistent_interpolations:
# - 'activerecord.attributes.*'

## Exclude these keys from the newlines test task:
# ignore_newlines:
# - user_mailer.signup_notification.*

## Ignore these keys completely:
# ignore:
#  - kaminari.*

## Sometimes, it isn't possible for i18n-tasks to match the key correctly,
## e.g. in case of a relative key defined in a helper method.
## In these cases you can use the built-in PatternMapper to map patterns to keys, e.g.:
#
# <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
#       only: %w(*.html.haml *.html.slim),
#       patterns: [['= title\b', '.page_title']] %>
#
# The PatternMapper can also match key literals via a special %{key} interpolation, e.g.:
#
# <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
#       patterns: [['\bSpree\.t[( ]\s*%{key}', 'spree.%{key}']] %>
