Change languages to be listed under standard instead of native name in admin UI (#17485)
This commit is contained in:
		| @@ -209,8 +209,8 @@ module LanguagesHelper | |||||||
|     'zh-TW': '繁體中文(臺灣)', |     'zh-TW': '繁體中文(臺灣)', | ||||||
|   }.freeze |   }.freeze | ||||||
|  |  | ||||||
|   def human_locale(locale) |   def native_locale_name(locale) | ||||||
|     if locale == 'und' |     if locale.blank? || locale == 'und' | ||||||
|       I18n.t('generic.none') |       I18n.t('generic.none') | ||||||
|     elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym]) |     elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym]) | ||||||
|       supported_locale[1] |       supported_locale[1] | ||||||
| @@ -221,6 +221,16 @@ module LanguagesHelper | |||||||
|     end |     end | ||||||
|   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) |   def valid_locale_or_nil(str) | ||||||
|     return if str.blank? |     return if str.blank? | ||||||
|  |  | ||||||
|   | |||||||
| @@ -20,6 +20,6 @@ class Admin::Metrics::Dimension::LanguagesDimension < Admin::Metrics::Dimension: | |||||||
|  |  | ||||||
|     rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, @limit]]) |     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 | ||||||
| end | end | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ class Admin::Metrics::Dimension::TagLanguagesDimension < Admin::Metrics::Dimensi | |||||||
|  |  | ||||||
|     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 = 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 |   end | ||||||
|  |  | ||||||
|   private |   private | ||||||
|   | |||||||
| @@ -147,7 +147,7 @@ | |||||||
|  |  | ||||||
|           %tr |           %tr | ||||||
|             %th= t('simple_form.labels.defaults.locale') |             %th= t('simple_form.labels.defaults.locale') | ||||||
|             %td= @account.user_locale |             %td= standard_locale_name(@account.user_locale) | ||||||
|             %td |             %td | ||||||
|  |  | ||||||
|           %tr |           %tr | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ | |||||||
|     .filter-subset.filter-subset--with-select |     .filter-subset.filter-subset--with-select | ||||||
|       %strong= t('admin.follow_recommendations.language') |       %strong= t('admin.follow_recommendations.language') | ||||||
|       .input.select.optional |       .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 |     .filter-subset | ||||||
|       %strong= t('admin.follow_recommendations.status') |       %strong= t('admin.follow_recommendations.status') | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ | |||||||
|         • |         • | ||||||
|  |  | ||||||
|       - if preview_card.language.present? |       - 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 }) |       = t('admin.trends.links.shared_by_over_week', count: preview_card.history.reduce(0) { |sum, day| sum + day.accounts }) | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
| = simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f| | = simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f| | ||||||
|   .fields-row |   .fields-row | ||||||
|     .fields-group.fields-row__column.fields-row__column-6 |     .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 |     .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 |       = 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 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 |       = 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 |     .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 |   .fields-group | ||||||
|     = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label |     = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label | ||||||
| @@ -34,7 +34,7 @@ | |||||||
|   %h4= t 'preferences.public_timelines' |   %h4= t 'preferences.public_timelines' | ||||||
|  |  | ||||||
|   .fields-group |   .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 |   .actions | ||||||
|     = f.button :button, t('generic.save_changes'), type: :submit |     = f.button :button, t('generic.save_changes'), type: :submit | ||||||
|   | |||||||
| @@ -9,9 +9,15 @@ describe LanguagesHelper do | |||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   describe 'human_locale' do |   describe 'native_locale_name' do | ||||||
|     it 'finds the human readable local description from a key' do |     it 'finds the human readable native name from a key' do | ||||||
|       expect(helper.human_locale(:en)).to eq('English') |       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 |   end | ||||||
| end | end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user