Skip to content

Commit

Permalink
Change languages to be listed under standard instead of native name i…
Browse files Browse the repository at this point in the history
…n admin UI (mastodon#17485)
  • Loading branch information
Gargron authored Feb 9, 2022
1 parent fd3a45e commit 3aebe71
Show file tree
Hide file tree
Showing 9 changed files with 29 additions and 13 deletions.
14 changes: 12 additions & 2 deletions app/helpers/languages_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,8 @@ module LanguagesHelper
'zh-TW': '繁體中文(臺灣)',
}.freeze

def human_locale(locale)
if locale == 'und'
def native_locale_name(locale)
if locale.blank? || locale == 'und'
I18n.t('generic.none')
elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym])
supported_locale[1]
Expand All @@ -221,6 +221,16 @@ def human_locale(locale)
end
end

def standard_locale_name(locale)
if locale.blank?
I18n.t('generic.none')
elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym])
supported_locale[0]
else
locale
end
end

def valid_locale_or_nil(str)
return if str.blank?

Expand Down
2 changes: 1 addition & 1 deletion app/lib/admin/metrics/dimension/languages_dimension.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ def data

rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, @limit]])

rows.map { |row| { key: row['locale'], human_key: human_locale(row['locale']), value: row['value'].to_s } }
rows.map { |row| { key: row['locale'], human_key: standard_locale_name(row['locale']), value: row['value'].to_s } }
end
end
2 changes: 1 addition & 1 deletion app/lib/admin/metrics/dimension/tag_languages_dimension.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def data

rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, params[:id]], [nil, Mastodon::Snowflake.id_at(@start_at, with_random: false)], [nil, Mastodon::Snowflake.id_at(@end_at, with_random: false)], [nil, @limit]])

rows.map { |row| { key: row['language'], human_key: human_locale(row['language']), value: row['value'].to_s } }
rows.map { |row| { key: row['language'], human_key: standard_locale_name(row['language']), value: row['value'].to_s } }
end

private
Expand Down
2 changes: 1 addition & 1 deletion app/views/admin/accounts/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@

%tr
%th= t('simple_form.labels.defaults.locale')
%td= @account.user_locale
%td= standard_locale_name(@account.user_locale)
%td

%tr
Expand Down
2 changes: 1 addition & 1 deletion app/views/admin/follow_recommendations/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
.filter-subset.filter-subset--with-select
%strong= t('admin.follow_recommendations.language')
.input.select.optional
= select_tag :language, options_for_select(I18n.available_locales.map { |key| key.to_s.split(/[_-]/).first.to_sym }.uniq.map { |key| [human_locale(key), key]}, @language)
= select_tag :language, options_for_select(I18n.available_locales.map { |key| key.to_s.split(/[_-]/).first.to_sym }.uniq.map { |key| [standard_locale_name(key), key]}, @language)

.filter-subset
%strong= t('admin.follow_recommendations.status')
Expand Down
2 changes: 1 addition & 1 deletion app/views/admin/trends/links/_preview_card.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

- if preview_card.language.present?
= human_locale(preview_card.language)
= standard_locale_name(preview_card.language)

= t('admin.trends.links.shared_by_over_week', count: preview_card.history.reduce(0) { |sum, day| sum + day.accounts })
Expand Down
2 changes: 1 addition & 1 deletion app/views/settings/preferences/appearance/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
= simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f|
.fields-row
.fields-group.fields-row__column.fields-row__column-6
= f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale, hint: false
= f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, selected: I18n.locale, hint: false
.fields-group.fields-row__column.fields-row__column-6
= f.input :setting_theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false, hint: false

Expand Down
4 changes: 2 additions & 2 deletions app/views/settings/preferences/other/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
= f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false

.fields-group.fields-row__column.fields-row__column-6
= f.input :setting_default_language, collection: [nil] + filterable_languages, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.default_language') : human_locale(locale) }, required: false, include_blank: false, hint: false
= f.input :setting_default_language, collection: [nil] + filterable_languages, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.default_language') : native_locale_name(locale) }, required: false, include_blank: false, hint: false

.fields-group
= f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
Expand All @@ -34,7 +34,7 @@
%h4= t 'preferences.public_timelines'

.fields-group
= f.input :chosen_languages, collection: filterable_languages, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
= f.input :chosen_languages, collection: filterable_languages, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'

.actions
= f.button :button, t('generic.save_changes'), type: :submit
12 changes: 9 additions & 3 deletions spec/helpers/languages_helper_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,15 @@
end
end

describe 'human_locale' do
it 'finds the human readable local description from a key' do
expect(helper.human_locale(:en)).to eq('English')
describe 'native_locale_name' do
it 'finds the human readable native name from a key' do
expect(helper.native_locale_name(:en)).to eq('English')
end
end

describe 'standard_locale_name' do
it 'finds the human readable standard name from a key' do
expect(helper.standard_locale_name(:de)).to eq('German')
end
end
end

0 comments on commit 3aebe71

Please sign in to comment.