Module: Gitlab::I18n

Extended by:
I18n
Included in:
I18n
Defined in:
lib/gitlab/i18n.rb,
lib/gitlab/i18n/po_linter.rb,
lib/gitlab/i18n/pluralization.rb,
lib/gitlab/i18n/metadata_entry.rb,
lib/gitlab/i18n/translation_entry.rb

Defined Under Namespace

Modules: Pluralization Classes: MetadataEntry, PoLinter, TranslationEntry

Constant Summary collapse

MINIMUM_TRANSLATION_LEVEL =

Languages with less then MINIMUM_TRANSLATION_LEVEL% of available translations will not be available in the UI. gitlab.com/gitlab-org/gitlab/-/issues/221012

2

Instance Method Summary collapse

Instance Method Details

#available_localesObject



93
94
95
# File 'lib/gitlab/i18n.rb', line 93

def available_locales
  AVAILABLE_LANGUAGES.keys
end

#localeObject



97
98
99
# File 'lib/gitlab/i18n.rb', line 97

def locale
  FastGettext.locale
end

#locale=(locale_string) ⇒ Object



101
102
103
104
105
# File 'lib/gitlab/i18n.rb', line 101

def locale=(locale_string)
  requested_locale = locale_string || ::I18n.default_locale
  new_locale = FastGettext.set_locale(requested_locale)
  ::I18n.locale = new_locale
end

#percentage_translated_for(code) ⇒ Object



82
83
84
# File 'lib/gitlab/i18n.rb', line 82

def percentage_translated_for(code)
  TRANSLATION_LEVELS.fetch(code, 0)
end

#selectable_locales(minimum_translation_level = MINIMUM_TRANSLATION_LEVEL) ⇒ Object



76
77
78
79
80
# File 'lib/gitlab/i18n.rb', line 76

def selectable_locales(minimum_translation_level = MINIMUM_TRANSLATION_LEVEL)
  AVAILABLE_LANGUAGES.reject do |code, _name|
    percentage_translated_for(code) < minimum_translation_level
  end
end

#setup(domain:, default_locale:) ⇒ Object



129
130
131
132
133
# File 'lib/gitlab/i18n.rb', line 129

def setup(domain:, default_locale:)
  custom_pluralization
  setup_repositories(domain)
  setup_default_locale(default_locale)
end

#trimmed_language_name(code) ⇒ Object



86
87
88
89
90
91
# File 'lib/gitlab/i18n.rb', line 86

def trimmed_language_name(code)
  language_name = AVAILABLE_LANGUAGES[code]
  return if language_name.blank?

  language_name.sub(/\s-\s.*/, '')
end

#use_default_localeObject



107
108
109
110
# File 'lib/gitlab/i18n.rb', line 107

def use_default_locale
  FastGettext.set_locale(::I18n.default_locale)
  ::I18n.locale = ::I18n.default_locale
end

#with_default_locale(&block) ⇒ Object



125
126
127
# File 'lib/gitlab/i18n.rb', line 125

def with_default_locale(&block)
  with_locale(::I18n.default_locale, &block)
end

#with_locale(locale_string) ⇒ Object



112
113
114
115
116
117
118
119
# File 'lib/gitlab/i18n.rb', line 112

def with_locale(locale_string)
  original_locale = locale

  self.locale = locale_string
  yield
ensure
  self.locale = original_locale
end

#with_user_locale(user, &block) ⇒ Object



121
122
123
# File 'lib/gitlab/i18n.rb', line 121

def with_user_locale(user, &block)
  with_locale(user&.preferred_language, &block)
end