Merge pull request #2949 from consul/i18n-language-names
Display language name or language key
This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
module LocalesHelper
|
||||
|
||||
def name_for_locale(locale)
|
||||
default = I18n.t("locale", locale: locale)
|
||||
I18n.backend.translate(locale, "i18n.language.name", default: default)
|
||||
rescue
|
||||
nil
|
||||
I18n.t("i18n.language.name", locale: locale, fallback: false, default: locale.to_s)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -43,6 +43,7 @@ data:
|
||||
- config/locales/%{locale}/images.yml
|
||||
- config/locales/%{locale}/guides.yml
|
||||
- config/locales/%{locale}/user_groups.yml
|
||||
- config/locales/%{locale}/i18n.yml
|
||||
|
||||
# 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
|
||||
|
||||
@@ -249,7 +249,6 @@ en:
|
||||
text_sign_in: login
|
||||
text_sign_up: sign up
|
||||
title: How I can comment this document?
|
||||
locale: English
|
||||
notifications:
|
||||
index:
|
||||
empty_notifications: You don't have new notifications.
|
||||
|
||||
4
config/locales/en/i18n.yml
Normal file
4
config/locales/en/i18n.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
en:
|
||||
i18n:
|
||||
language:
|
||||
name: "English"
|
||||
@@ -249,7 +249,6 @@ es:
|
||||
text_sign_in: iniciar sesión
|
||||
text_sign_up: registrarte
|
||||
title: '¿Cómo puedo comentar este documento?'
|
||||
locale: Español
|
||||
notifications:
|
||||
index:
|
||||
empty_notifications: No tienes notificaciones nuevas.
|
||||
|
||||
4
config/locales/es/i18n.yml
Normal file
4
config/locales/es/i18n.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
es:
|
||||
i18n:
|
||||
language:
|
||||
name: "Español"
|
||||
@@ -892,7 +892,6 @@ fr:
|
||||
open_gov: Gouvernement ouvert
|
||||
proposals: Propositions
|
||||
spending_proposals: Propositions de dépense
|
||||
locale: Français
|
||||
mailers:
|
||||
comment:
|
||||
hi: Bonjour
|
||||
|
||||
4
config/locales/fr/i18n.yml
Normal file
4
config/locales/fr/i18n.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
fr:
|
||||
i18n:
|
||||
language:
|
||||
name: "Français"
|
||||
@@ -192,7 +192,6 @@ he:
|
||||
poll_questions: הצבעות
|
||||
budgets: מימון השתתפותי
|
||||
spending_proposals: הצעות להוצאת כספים
|
||||
locale: עברית
|
||||
notifications:
|
||||
index:
|
||||
empty_notifications: אין לך תגובות חדשות
|
||||
|
||||
4
config/locales/he/i18n.yml
Normal file
4
config/locales/he/i18n.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
he:
|
||||
i18n:
|
||||
language:
|
||||
name: "עברית"
|
||||
@@ -244,7 +244,6 @@ it:
|
||||
text_sign_in: ""
|
||||
text_sign_up: ""
|
||||
title: ""
|
||||
locale: ""
|
||||
notifications:
|
||||
index:
|
||||
comments_on:
|
||||
|
||||
@@ -232,7 +232,6 @@ nl:
|
||||
text_sign_in: log in
|
||||
text_sign_up: registreer
|
||||
title: Hoe kan ik reageren?
|
||||
locale: Nederlands
|
||||
notifications:
|
||||
index:
|
||||
comments_on:
|
||||
|
||||
4
config/locales/nl/i18n.yml
Normal file
4
config/locales/nl/i18n.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
nl:
|
||||
i18n:
|
||||
language:
|
||||
name: "Nederlands"
|
||||
@@ -1,8 +1,5 @@
|
||||
---
|
||||
pt-BR:
|
||||
i18n:
|
||||
language:
|
||||
name: Português
|
||||
account:
|
||||
show:
|
||||
change_credentials_link: Alterar meus dados pessoais
|
||||
@@ -879,7 +876,6 @@ pt-BR:
|
||||
open_gov: Governo aberto
|
||||
proposals: Propostas
|
||||
spending_proposals: Propostas de despesas
|
||||
locale: Português brasileiro
|
||||
mailers:
|
||||
comment:
|
||||
hi: Olá
|
||||
|
||||
4
config/locales/pt-BR/i18n.yml
Normal file
4
config/locales/pt-BR/i18n.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
pt-BR:
|
||||
i18n:
|
||||
language:
|
||||
name: "Português brasileiro"
|
||||
@@ -250,7 +250,6 @@ val:
|
||||
text_sign_in: iniciar sessió
|
||||
text_sign_up: registrar-te
|
||||
title: Com puc comentar aquest document?
|
||||
locale: Valencià
|
||||
notifications:
|
||||
index:
|
||||
empty_notifications: No tens noves notificacions.
|
||||
|
||||
4
config/locales/val/i18n.yml
Normal file
4
config/locales/val/i18n.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
val:
|
||||
i18n:
|
||||
language:
|
||||
name: "Valencià"
|
||||
@@ -48,4 +48,31 @@ feature 'Localization' do
|
||||
expect(page).not_to have_content('Language')
|
||||
expect(page).not_to have_css('div.locale')
|
||||
end
|
||||
|
||||
context "Missing language names" do
|
||||
|
||||
let!(:default_enforce) { I18n.enforce_available_locales }
|
||||
let!(:default_locales) { I18n.available_locales.dup }
|
||||
|
||||
before do
|
||||
I18n.enforce_available_locales = false
|
||||
I18n.available_locales = default_locales + [:wl]
|
||||
I18n.locale = :wl
|
||||
end
|
||||
|
||||
after do
|
||||
I18n.enforce_available_locales = default_enforce
|
||||
I18n.available_locales = default_locales
|
||||
I18n.locale = I18n.default_locale
|
||||
end
|
||||
|
||||
scenario 'Available locales without language translation display locale key' do
|
||||
visit '/'
|
||||
|
||||
within('.locale-form .js-location-changer') do
|
||||
expect(page).to have_content 'wl'
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -162,7 +162,7 @@ feature "Custom Pages" do
|
||||
scenario "Add a translation in Português", :js do
|
||||
visit @edit_page_url
|
||||
|
||||
select "Português", from: "translation_locale"
|
||||
select "Português brasileiro", from: "translation_locale"
|
||||
fill_in 'site_customization_page_title_pt_br', with: 'Titulo em Português'
|
||||
|
||||
click_button 'Update Custom page'
|
||||
@@ -174,7 +174,7 @@ feature "Custom Pages" do
|
||||
click_link "Español"
|
||||
expect(page).to have_field('site_customization_page_title_es', with: 'Titulo en Español')
|
||||
|
||||
click_link "Português"
|
||||
click_link "Português brasileiro"
|
||||
expect(page).to have_field('site_customization_page_title_pt_br', with: 'Titulo em Português')
|
||||
end
|
||||
|
||||
|
||||
@@ -91,11 +91,11 @@ feature "Translations" do
|
||||
scenario "Add a translation for a locale with non-underscored name", :js do
|
||||
visit @edit_answer_url
|
||||
|
||||
select('Português', from: 'translation_locale')
|
||||
select('Português brasileiro', from: 'translation_locale')
|
||||
fill_in_ckeditor 'poll_question_answer_description_pt_br', with: 'resposta em Português'
|
||||
click_button 'Save'
|
||||
|
||||
select('Português', from: 'locale-switcher')
|
||||
select('Português brasileiro', from: 'locale-switcher')
|
||||
expect(page).to have_content("resposta em Português")
|
||||
end
|
||||
|
||||
|
||||
32
spec/helpers/locales_helper_spec.rb
Normal file
32
spec/helpers/locales_helper_spec.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe LocalesHelper do
|
||||
|
||||
context "Language names" do
|
||||
|
||||
let!(:default_enforce) { I18n.enforce_available_locales }
|
||||
|
||||
before do
|
||||
I18n.enforce_available_locales = false
|
||||
end
|
||||
|
||||
after do
|
||||
I18n.backend.reload!
|
||||
I18n.enforce_available_locales = default_enforce
|
||||
end
|
||||
|
||||
it "returns the language name in i18n.language.name translation" do
|
||||
keys = { language: {
|
||||
name: "World Language" }}
|
||||
|
||||
I18n.backend.store_translations(:wl, { i18n: keys })
|
||||
|
||||
expect(name_for_locale(:wl)).to eq("World Language")
|
||||
end
|
||||
|
||||
it "retuns the locale key if i18n.language.name translation is not found" do
|
||||
expect(name_for_locale(:wl)).to eq("wl")
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -107,14 +107,14 @@ shared_examples "translatable" do |factory_name, path_name, fields|
|
||||
visit path
|
||||
field = fields.sample
|
||||
|
||||
select "Português", from: "translation_locale"
|
||||
select "Português brasileiro", from: "translation_locale"
|
||||
fill_in field_for(field, :pt_br), with: text_for(field, :"pt-BR")
|
||||
|
||||
click_button update_button_text
|
||||
|
||||
visit path
|
||||
|
||||
select('Português', from: 'locale-switcher')
|
||||
select('Português brasileiro', from: 'locale-switcher')
|
||||
|
||||
expect(page).to have_field(field_for(field, :pt_br), with: text_for(field, :"pt-BR"))
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user