diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index 6e6dcace4..1dec75539 100644 --- a/app/helpers/person_helper.rb +++ b/app/helpers/person_helper.rb @@ -11,7 +11,9 @@ def nationality_string(nationality, nationality2) end def person_role_string(person_role) - "#{person_role.role.name} #{person_role.person_role_level&.level} + role_level = person_role.person_role_level&.level + role_level = I18n.t('language_skills.none') if role_level == 'Keine' + "#{person_role.role.name} #{role_level} #{person_role.percent.nil? ? '' : "#{person_role.percent.to_i}%"}" end @@ -38,8 +40,12 @@ def group_person_skills_by_category(person) .group_by { |ps| ps.skill.category.parent } end + # This method is only used to translate the language dropdown. + # The gem however, does not support Swiss German, so it just shows the German translation. def common_languages_translated - I18nData.languages('DE').collect do |language| + locale = I18n.locale + locale = 'de' if I18n.locale == :'de-CH' + I18nData.languages(locale).collect do |language| if LanguageList::LanguageInfo.find(language[0])&.common? [language.first, "#{language.last} (#{language.first})"] end @@ -57,8 +63,27 @@ def uneditable_language?(lang) %w[DE EN FR].include?(lang) end + # The first and last are there twice since in the form one gets shown + # and the other one is the value that is saved. And we don't want to save translations. def language_skill_levels - %w[Keine A1 A2 B1 B2 C1 C2 Muttersprache] + [ + [I18n.t('language_skills.none').to_s, 'Keine'], + %w[A1], + %w[A2], + %w[B1], + %w[B2], + %w[C1], + %w[C2], + [I18n.t('language_skills.native').to_s, 'Muttersprache'] + ] + end + + def role_skill_levels + PersonRoleLevel.order(:level).each do |role| + if role.level == 'Keine' + role.level = I18n.t('person_role.none') + end + end end def people_skills_of_category(category) diff --git a/app/views/people/_language_skill_fields.html.haml b/app/views/people/_language_skill_fields.html.haml index 85347f5f4..83b5abda3 100644 --- a/app/views/people/_language_skill_fields.html.haml +++ b/app/views/people/_language_skill_fields.html.haml @@ -6,10 +6,10 @@ %div.visually-hidden= f.collection_select :language, common_languages_translated, :first, :last, { selected: f.object.language } %div.d-flex %div.w-25.me-2 - = f.label :level - = f.collection_select :level, language_skill_levels, :itself, :itself, {}, class: "form-select mw-100 language-level-select" + = f.label t("global.people_skills.levels.level") + = f.collection_select :level, language_skill_levels, :last, :first, {}, class: "form-select mw-100 language-level-select" %div.w-75 - = f.label :certificate + = f.label t("global.people_skills.certificate") = f.text_field :certificate, class: "mw-100 form-control language-certificate-input" - unless uneditable_language?(f.object.language) %div{"data-controller"=>"dynamic-fields"} diff --git a/app/views/people/_person_role_fields.html.haml b/app/views/people/_person_role_fields.html.haml index 1d68eb7fa..6f50f85e9 100644 --- a/app/views/people/_person_role_fields.html.haml +++ b/app/views/people/_person_role_fields.html.haml @@ -1,10 +1,10 @@ %div.border.border-dark-subtle.rounded.p-1.fw-light.nested-fields = f.hidden_field :_destroy - = f.label :role + = f.label t("activerecord.attributes.activity.role") = f.collection_select :role_id, Role.order(:name), :id, :name, {}, class: "form-select w-100 role-select" %div - = f.label :person_role_level + = f.label t("global.people_skills.levels.level") %div.d-flex.fw-light - = f.collection_select :person_role_level_id, PersonRoleLevel.order(:level), :id, :level, {}, class: "form-select w-50 me-1 role-level-select" + = f.collection_select :person_role_level_id, role_skill_levels, :id, :level, {}, class: "form-select w-50 me-1 role-level-select" = f.number_field :percent, in: 0..200, step: 1, class: "form-control w-50 person-role-percent" - %div{"data-controller"=>"dynamic-fields"}= link_to "Remove", "#", { class: "remove_fields", 'data-action' => 'dynamic-fields#removeField' } \ No newline at end of file + %div{"data-controller"=>"dynamic-fields"}= link_to ti("link.remove"), "#", { class: "remove_fields", 'data-action' => 'dynamic-fields#removeField' } \ No newline at end of file diff --git a/config/locales/de-CH.yml b/config/locales/de-CH.yml index efcec69ab..f0effd02b 100644 --- a/config/locales/de-CH.yml +++ b/config/locales/de-CH.yml @@ -52,6 +52,7 @@ de-CH: one: Witerbiudig other: Witerbiudigä birthdate: Geburtsdatum + company: Firma competence_notes: Notizä Member department: Organisationsiheit display_competence_notes_in_cv: Im CV Export inkludierä. @@ -60,6 +61,7 @@ de-CH: one: Usbiudig other: Usbiudigä email: Email + language_skills: Sprachkenntniss languages: one: Sprach other: Sprachä @@ -264,6 +266,9 @@ de-CH: add: "%{model} hinzuefügä" delete: Löschä edit: "%{model} bearbeitä" + language_skills: + native: Muetersprach + none: Kes marital_statuses: divorced: gschiedä married: verhüratet @@ -355,6 +360,8 @@ de-CH: global: link: add: Skill hinzuäfüegä (max. 5) + person_role: + none: Kes profile: updated_at: Z'letzt bearbeitet skills: diff --git a/config/locales/de.yml b/config/locales/de.yml index 1ce9a1f25..f427aabf9 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -52,6 +52,7 @@ de: one: Weiterbildung other: Weiterbildungen birthdate: Geburtsdatum + company: Firma competence_notes: Notizen Member department: Organisationseinheit display_competence_notes_in_cv: Im CV Export inkludieren @@ -60,6 +61,7 @@ de: one: Ausbildung other: Ausbildungen email: Email + language_skills: Sprachkenntnisse languages: one: Sprache other: Sprachen @@ -247,6 +249,9 @@ de: add: "%{model} hinzufügen" delete: Löschen edit: "%{model} bearbeiten" + language_skills: + native: Muttersprache + none: Keines marital_statuses: divorced: geschieden married: verheiratet @@ -338,6 +343,8 @@ de: global: link: add: Skill hinzufügen (max. 5) + person_role: + none: Keines profile: updated_at: Zuletzt bearbeitet skills: diff --git a/config/locales/en.yml b/config/locales/en.yml index bc915af20..6d2417dc7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -52,6 +52,7 @@ en: one: Further training other: Further training birthdate: Date of birth + company: Company competence_notes: Notes Member department: Department display_competence_notes_in_cv: Include in CV export @@ -60,6 +61,7 @@ en: one: Education other: Educations email: Email + language_skills: Language skills languages: one: Language other: Languages @@ -243,6 +245,9 @@ en: add: "%{model} add" delete: Delete edit: "%{model} edit" + language_skills: + native: Native speaker + none: None marital_statuses: divorced: divorced married: married @@ -334,6 +339,8 @@ en: global: link: add: Add skill (max. 5) + person_role: + none: None profile: updated_at: Last edited skills: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2fa88fd51..a5c28d4a2 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -52,6 +52,7 @@ fr: one: Formation continue other: Formations continues birthdate: Date de naissance + company: Société competence_notes: Notes Member department: Unité organisationnelle display_competence_notes_in_cv: Inclure dans l'exportation du CV @@ -60,6 +61,7 @@ fr: one: Formation other: Formations email: Email + language_skills: Compétences linguistiques languages: one: Langue other: Langues @@ -243,6 +245,9 @@ fr: add: "%{model} ajouter" delete: Supprimer edit: "%{model} éditer" + language_skills: + native: Locuteur natif + none: Aucun marital_statuses: divorced: divorcé(e) married: marié(e) @@ -334,6 +339,8 @@ fr: global: link: add: Ajouter une compétence (max. 5) + person_role: + none: Aucun profile: updated_at: Dernièrement édité skills: diff --git a/config/locales/it.yml b/config/locales/it.yml index 534073b28..b4c4b0d8a 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -52,6 +52,7 @@ it: one: Formazione continua other: Formazione continua birthdate: Data di nascita + company: Azienda competence_notes: Note Membro department: Unità organizzativa display_competence_notes_in_cv: Includere nell'esportazione del CV @@ -60,6 +61,7 @@ it: one: Istruzione other: Programmi di formazione email: E-mail + language_skills: Competenze linguistiche languages: one: Lingua other: Le lingue @@ -243,6 +245,9 @@ it: add: "%{model} aggiungere" delete: Cancellare edit: "%{model} modifica" + language_skills: + native: Madrelingua + none: Nessuno marital_statuses: divorced: divorziato married: sposato @@ -334,6 +339,8 @@ it: global: link: add: Aggiungi abilità (max. 5) + person_role: + none: Nessuno profile: updated_at: Ultima modifica skills: diff --git a/spec/serializer/error_serializer_spec.rb b/spec/serializer/error_serializer_spec.rb index c2f853fab..07be5714c 100644 --- a/spec/serializer/error_serializer_spec.rb +++ b/spec/serializer/error_serializer_spec.rb @@ -12,7 +12,7 @@ expect(json[:errors].first).to include(:id) expect(json[:errors].first).to include(:title) expect(json[:errors].first[:id]).to eq(:company) - expect(json[:errors].first[:title]).to eq('Company muss ausgefüllt werden') + expect(json[:errors].first[:title]).to eq('Firma muss ausgefüllt werden') expect(json[:errors].second[:id]).to eq(:birthdate) expect(json[:errors].second[:title]).to eq('Geburtsdatum muss ausgefüllt werden') end