From 55854e680aadf1c468b8bf26ac71729fe43cf0ce Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Tue, 29 Apr 2025 14:11:22 +0200 Subject: [PATCH 01/11] translate everything in the edit of a profile --- app/helpers/person_helper.rb | 6 ++++-- app/helpers/picture_helper.rb | 14 ++++++++++++++ app/views/people/_language_skill_fields.html.haml | 4 ++-- app/views/people/_person_role_fields.html.haml | 6 +++--- app/views/people/_profile.html.haml | 2 +- config/locales/de-CH.yml | 6 ++++++ config/locales/de.yml | 6 ++++++ config/locales/en.yml | 6 ++++++ config/locales/fr.yml | 6 ++++++ config/locales/it.yml | 6 ++++++ 10 files changed, 54 insertions(+), 8 deletions(-) diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index 6e6dcace4..0b6a12515 100644 --- a/app/helpers/person_helper.rb +++ b/app/helpers/person_helper.rb @@ -39,7 +39,9 @@ def group_person_skills_by_category(person) end 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 @@ -58,7 +60,7 @@ def uneditable_language?(lang) end def language_skill_levels - %w[Keine A1 A2 B1 B2 C1 C2 Muttersprache] + [I18n.t('language_skills.none')] + %w[A1 A2 B1 B2 C1 C2] + [I18n.t('language_skills.native')] end def people_skills_of_category(category) diff --git a/app/helpers/picture_helper.rb b/app/helpers/picture_helper.rb index ee3b2a770..6507d45e0 100644 --- a/app/helpers/picture_helper.rb +++ b/app/helpers/picture_helper.rb @@ -1,4 +1,18 @@ # frozen_string_literal: true module PictureHelper + def language_skill_svg(level) + native = I18n.available_locales.any? do |locale| + I18n.t('language_skills.native', locale: locale) == level + end + none = I18n.available_locales.any? do |locale| + I18n.t('language_skills.none', locale: locale) == level + end + if native + return 'muttersprache' + elsif none + return 'keine' + end + level + end end diff --git a/app/views/people/_language_skill_fields.html.haml b/app/views/people/_language_skill_fields.html.haml index 85347f5f4..ea87b1ed8 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.label t("global.people_skills.levels.level") = f.collection_select :level, language_skill_levels, :itself, :itself, {}, 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..4cb0e5701 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("activerecord.attributes.person.person_role_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.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/app/views/people/_profile.html.haml b/app/views/people/_profile.html.haml index c27114be8..5e531c7ca 100644 --- a/app/views/people/_profile.html.haml +++ b/app/views/people/_profile.html.haml @@ -75,7 +75,7 @@ - sort_languages(@person.language_skills).each do |language| %tr %td.p-2.pe-3.text-gray= language.language - %td.p-2.pe-3= image_tag("language-levels/#{language.level.downcase}.svg", alt: "Language level indicator") + %td.p-2.pe-3= image_tag("language-levels/#{language_skill_svg(language.level).downcase}.svg", alt: "Language level indicator") - unless language.certificate.blank? %td.p-2= image_tag("language-levels/icon_certificate.svg", alt: "Language certificate icon", title: language.certificate) %br \ No newline at end of file diff --git a/config/locales/de-CH.yml b/config/locales/de-CH.yml index efcec69ab..2f2e0649b 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ä @@ -67,6 +69,7 @@ de-CH: marital_status: Ziviustand name: Namä nationality: Nationalität + person_role_level: Person Rouä Level person_roles: one: Funktion other: Funktionä @@ -264,6 +267,9 @@ de-CH: add: "%{model} hinzuefügä" delete: Löschä edit: "%{model} bearbeitä" + language_skills: + native: Muetersprach + none: Keni marital_statuses: divorced: gschiedä married: verhüratet diff --git a/config/locales/de.yml b/config/locales/de.yml index 1ce9a1f25..30cf09fa7 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 @@ -67,6 +69,7 @@ de: marital_status: Zivilstand name: Name nationality: Nationalität + person_role_level: Person Rolle Level person_roles: one: Funktion other: Funktionen @@ -247,6 +250,9 @@ de: add: "%{model} hinzufügen" delete: Löschen edit: "%{model} bearbeiten" + language_skills: + native: Muttersprache + none: Keine marital_statuses: divorced: geschieden married: verheiratet diff --git a/config/locales/en.yml b/config/locales/en.yml index bc915af20..caa381f3c 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 @@ -67,6 +69,7 @@ en: marital_status: Marital status name: Name nationality: Nationality + person_role_level: Person role level person_roles: one: Function other: Functions @@ -243,6 +246,9 @@ en: add: "%{model} add" delete: Delete edit: "%{model} edit" + language_skills: + native: Native speaker + none: None marital_statuses: divorced: divorced married: married diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2fa88fd51..71258b529 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 @@ -67,6 +69,7 @@ fr: marital_status: État civil name: Nom nationality: Nationalité + person_role_level: Personne rôle niveau person_roles: one: Fonction other: Fonctions @@ -243,6 +246,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) diff --git a/config/locales/it.yml b/config/locales/it.yml index 534073b28..d2b402718 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 @@ -67,6 +69,7 @@ it: marital_status: Stato civile name: Nome nationality: Nazionalità + person_role_level: Persona ruolo livello person_roles: one: Funzione other: Funzioni @@ -243,6 +246,9 @@ it: add: "%{model} aggiungere" delete: Cancellare edit: "%{model} modifica" + language_skills: + native: Madrelingua + none: Nessuno marital_statuses: divorced: divorziato married: sposato From 6b3ed8e7660f6600286df71efc90a43b39040009 Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Tue, 29 Apr 2025 14:19:26 +0200 Subject: [PATCH 02/11] fix test that expects not translated text --- spec/serializer/error_serializer_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 72351e5ecee9e99c6ba0c2dfdec531c45b7f3af5 Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Tue, 29 Apr 2025 14:37:02 +0200 Subject: [PATCH 03/11] edit helper for shorter methode --- app/helpers/picture_helper.rb | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/helpers/picture_helper.rb b/app/helpers/picture_helper.rb index 6507d45e0..bd17975e4 100644 --- a/app/helpers/picture_helper.rb +++ b/app/helpers/picture_helper.rb @@ -2,17 +2,20 @@ module PictureHelper def language_skill_svg(level) - native = I18n.available_locales.any? do |locale| - I18n.t('language_skills.native', locale: locale) == level - end - none = I18n.available_locales.any? do |locale| - I18n.t('language_skills.none', locale: locale) == level - end - if native + if matching_skill_level('native', level) return 'muttersprache' - elsif none + elsif matching_skill_level('none', level) return 'keine' end + level end + + private + + def matching_skill_level(translation_to_check, level) + I18n.available_locales.any? do |locale| + I18n.t("language_skills.#{translation_to_check}", locale: locale) == level + end + end end From 902b970d7fd9effefb81ae1288f97de2e3a7c549 Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Mon, 5 May 2025 10:24:40 +0200 Subject: [PATCH 04/11] change naming of the picture helper --- app/helpers/picture_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/helpers/picture_helper.rb b/app/helpers/picture_helper.rb index bd17975e4..48cd23317 100644 --- a/app/helpers/picture_helper.rb +++ b/app/helpers/picture_helper.rb @@ -3,9 +3,9 @@ module PictureHelper def language_skill_svg(level) if matching_skill_level('native', level) - return 'muttersprache' + return 'Muttersprache' elsif matching_skill_level('none', level) - return 'keine' + return 'Keine' end level From 9cf59c4a4d3644b65e93a2bf09111b3b0fae6ae2 Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Mon, 5 May 2025 16:03:03 +0200 Subject: [PATCH 05/11] translate Company and level of person roles --- app/helpers/person_helper.rb | 18 +++++++++++++++++- app/views/people/_form.html.haml | 2 +- app/views/people/_person_role_fields.html.haml | 4 ++-- app/views/people/_profile.html.haml | 2 +- config/locales/de-CH.yml | 6 +++++- config/locales/de.yml | 6 +++++- config/locales/en.yml | 6 +++++- config/locales/fr.yml | 6 +++++- config/locales/it.yml | 6 +++++- db/seeds/development/01_companies.rb | 6 +++--- 10 files changed, 49 insertions(+), 13 deletions(-) diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index 0b6a12515..ab705f2b6 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 @@ -63,6 +65,20 @@ def language_skill_levels [I18n.t('language_skills.none')] + %w[A1 A2 B1 B2 C1 C2] + [I18n.t('language_skills.native')] end + def role_skill_levels + PersonRoleLevel.order(:level).each do |role| + if role.level == "Keine" + role.level = I18n.t('language_skills.none') + end + end + end + + def company_status + Company.order(:name).each do |company| + company.name = I18n.t("company.#{company.name.gsub(/\s+/, "_").downcase}") + end + end + def people_skills_of_category(category) @people_skills.where(skill_id: category.skills.pluck(:id)).sort_by(&:id) end diff --git a/app/views/people/_form.html.haml b/app/views/people/_form.html.haml index abf6bb5cb..b5f101fe2 100644 --- a/app/views/people/_form.html.haml +++ b/app/views/people/_form.html.haml @@ -47,7 +47,7 @@ %th.fw-normal = form.label :company %tr - %td= form.collection_select :company_id, Company.order(:name), :id, :name, {}, class: "form-select mw-100" + %td= form.collection_select :company_id, company_status, :id, :name, {}, class: "form-select mw-100" %th.fw-normal = form.label :location %tr diff --git a/app/views/people/_person_role_fields.html.haml b/app/views/people/_person_role_fields.html.haml index 4cb0e5701..6f50f85e9 100644 --- a/app/views/people/_person_role_fields.html.haml +++ b/app/views/people/_person_role_fields.html.haml @@ -3,8 +3,8 @@ = 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 t("activerecord.attributes.person.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 ti("link.remove"), "#", { class: "remove_fields", 'data-action' => 'dynamic-fields#removeField' } \ No newline at end of file diff --git a/app/views/people/_profile.html.haml b/app/views/people/_profile.html.haml index 5e531c7ca..88a6e1630 100644 --- a/app/views/people/_profile.html.haml +++ b/app/views/people/_profile.html.haml @@ -39,7 +39,7 @@ %th.fw-normal.text-gray = Person.human_attribute_name(:company) %tr - %td= @person.company.name + %td= I18n.t("company.#{@person.company.name.gsub(/\s+/, "_").downcase}") %div.pe-5.col-xl-3.col-12 %table.fixed-table %tbody diff --git a/config/locales/de-CH.yml b/config/locales/de-CH.yml index 2f2e0649b..133bb0833 100644 --- a/config/locales/de-CH.yml +++ b/config/locales/de-CH.yml @@ -69,7 +69,6 @@ de-CH: marital_status: Ziviustand name: Namä nationality: Nationalität - person_role_level: Person Rouä Level person_roles: one: Funktion other: Funktionä @@ -276,6 +275,11 @@ de-CH: registered_partnership: itrageni Partnerschaft single: ledig widowed: verwitwet + company: + company: Firma + former_employee: Ex-Mitarbeiter + applicant: Bewärber + partner: Partner people: activities: link: diff --git a/config/locales/de.yml b/config/locales/de.yml index 30cf09fa7..5de28a4ee 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -69,7 +69,6 @@ de: marital_status: Zivilstand name: Name nationality: Nationalität - person_role_level: Person Rolle Level person_roles: one: Funktion other: Funktionen @@ -259,6 +258,11 @@ de: registered_partnership: eingetragene Partnerschaft single: ledig widowed: verwitwet + company: + company: Firma + former_employee: Ex-Mitarbeite + applicant: Bewerber + partner: Partner people: activities: link: diff --git a/config/locales/en.yml b/config/locales/en.yml index caa381f3c..05f9a7dd8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -69,7 +69,6 @@ en: marital_status: Marital status name: Name nationality: Nationality - person_role_level: Person role level person_roles: one: Function other: Functions @@ -255,6 +254,11 @@ en: registered_partnership: registered partnership single: single widowed: widowed + company: + company: Company + former_employee: Former employee + applicant: Applicant + partner: Partner people: activities: link: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 71258b529..a0dd2f0a3 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -69,7 +69,6 @@ fr: marital_status: État civil name: Nom nationality: Nationalité - person_role_level: Personne rôle niveau person_roles: one: Fonction other: Fonctions @@ -255,6 +254,11 @@ fr: registered_partnership: partenariat enregistré single: célibataire widowed: veuf/veuve + company: + company: Entreprise + former_employee: Ancien employé + applicant: Candidat + partner: Partenaire people: activities: link: diff --git a/config/locales/it.yml b/config/locales/it.yml index d2b402718..c54e7037c 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -69,7 +69,6 @@ it: marital_status: Stato civile name: Nome nationality: Nazionalità - person_role_level: Persona ruolo livello person_roles: one: Funzione other: Funzioni @@ -255,6 +254,11 @@ it: registered_partnership: società registrata single: singolo widowed: vedova + company: + company: Azienda + former_employee: Ex dipendente + applicant: Candidato + partner: Partner people: activities: link: diff --git a/db/seeds/development/01_companies.rb b/db/seeds/development/01_companies.rb index 070ede5de..f4aaa00ae 100644 --- a/db/seeds/development/01_companies.rb +++ b/db/seeds/development/01_companies.rb @@ -4,9 +4,9 @@ seeder = CompanySeeder.new -companies = ['Firma', - 'Ex-Mitarbeiter', - 'Bewerber', +companies = ['Company', + 'Former employee', + 'Applicant', 'Partner'] seeder.seed_companies(companies) From eb0786963c34330b1631b655eced42d9ca86ae78 Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Tue, 6 May 2025 08:59:43 +0200 Subject: [PATCH 06/11] remove unnecessary translations --- app/helpers/person_helper.rb | 6 ------ app/views/people/_form.html.haml | 2 +- app/views/people/_profile.html.haml | 2 +- config/locales/de-CH.yml | 5 ----- config/locales/de.yml | 5 ----- config/locales/en.yml | 5 ----- config/locales/fr.yml | 5 ----- config/locales/it.yml | 5 ----- db/seeds/development/01_companies.rb | 6 +++--- 9 files changed, 5 insertions(+), 36 deletions(-) diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index ab705f2b6..60bcd3637 100644 --- a/app/helpers/person_helper.rb +++ b/app/helpers/person_helper.rb @@ -73,12 +73,6 @@ def role_skill_levels end end - def company_status - Company.order(:name).each do |company| - company.name = I18n.t("company.#{company.name.gsub(/\s+/, "_").downcase}") - end - end - def people_skills_of_category(category) @people_skills.where(skill_id: category.skills.pluck(:id)).sort_by(&:id) end diff --git a/app/views/people/_form.html.haml b/app/views/people/_form.html.haml index b5f101fe2..abf6bb5cb 100644 --- a/app/views/people/_form.html.haml +++ b/app/views/people/_form.html.haml @@ -47,7 +47,7 @@ %th.fw-normal = form.label :company %tr - %td= form.collection_select :company_id, company_status, :id, :name, {}, class: "form-select mw-100" + %td= form.collection_select :company_id, Company.order(:name), :id, :name, {}, class: "form-select mw-100" %th.fw-normal = form.label :location %tr diff --git a/app/views/people/_profile.html.haml b/app/views/people/_profile.html.haml index 88a6e1630..5e531c7ca 100644 --- a/app/views/people/_profile.html.haml +++ b/app/views/people/_profile.html.haml @@ -39,7 +39,7 @@ %th.fw-normal.text-gray = Person.human_attribute_name(:company) %tr - %td= I18n.t("company.#{@person.company.name.gsub(/\s+/, "_").downcase}") + %td= @person.company.name %div.pe-5.col-xl-3.col-12 %table.fixed-table %tbody diff --git a/config/locales/de-CH.yml b/config/locales/de-CH.yml index 133bb0833..057a1bc19 100644 --- a/config/locales/de-CH.yml +++ b/config/locales/de-CH.yml @@ -275,11 +275,6 @@ de-CH: registered_partnership: itrageni Partnerschaft single: ledig widowed: verwitwet - company: - company: Firma - former_employee: Ex-Mitarbeiter - applicant: Bewärber - partner: Partner people: activities: link: diff --git a/config/locales/de.yml b/config/locales/de.yml index 5de28a4ee..fece1b411 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -258,11 +258,6 @@ de: registered_partnership: eingetragene Partnerschaft single: ledig widowed: verwitwet - company: - company: Firma - former_employee: Ex-Mitarbeite - applicant: Bewerber - partner: Partner people: activities: link: diff --git a/config/locales/en.yml b/config/locales/en.yml index 05f9a7dd8..078c4a7b2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -254,11 +254,6 @@ en: registered_partnership: registered partnership single: single widowed: widowed - company: - company: Company - former_employee: Former employee - applicant: Applicant - partner: Partner people: activities: link: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index a0dd2f0a3..d7d5dd61a 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -254,11 +254,6 @@ fr: registered_partnership: partenariat enregistré single: célibataire widowed: veuf/veuve - company: - company: Entreprise - former_employee: Ancien employé - applicant: Candidat - partner: Partenaire people: activities: link: diff --git a/config/locales/it.yml b/config/locales/it.yml index c54e7037c..56ba9110b 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -254,11 +254,6 @@ it: registered_partnership: società registrata single: singolo widowed: vedova - company: - company: Azienda - former_employee: Ex dipendente - applicant: Candidato - partner: Partner people: activities: link: diff --git a/db/seeds/development/01_companies.rb b/db/seeds/development/01_companies.rb index f4aaa00ae..070ede5de 100644 --- a/db/seeds/development/01_companies.rb +++ b/db/seeds/development/01_companies.rb @@ -4,9 +4,9 @@ seeder = CompanySeeder.new -companies = ['Company', - 'Former employee', - 'Applicant', +companies = ['Firma', + 'Ex-Mitarbeiter', + 'Bewerber', 'Partner'] seeder.seed_companies(companies) From 51d9db3b7b193a426201dd17ce96d0d98d717d85 Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Tue, 6 May 2025 10:04:39 +0200 Subject: [PATCH 07/11] relocate helper methodes --- app/helpers/language_skill_helper.rb | 21 +++++++++++++++++++++ app/helpers/person_helper.rb | 4 ++-- app/helpers/picture_helper.rb | 17 ----------------- config/locales/de-CH.yml | 2 +- config/locales/de.yml | 2 +- 5 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 app/helpers/language_skill_helper.rb diff --git a/app/helpers/language_skill_helper.rb b/app/helpers/language_skill_helper.rb new file mode 100644 index 000000000..6721d4dae --- /dev/null +++ b/app/helpers/language_skill_helper.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module LanguageSkillHelper + def language_skill_svg(level) + if matching_skill_level('native', level) + return 'Muttersprache' + elsif matching_skill_level('none', level) + return 'Keine' + end + + level + end + + private + + def matching_skill_level(translation_to_check, level) + I18n.available_locales.any? do |locale| + I18n.t("language_skills.#{translation_to_check}", locale: locale) == level + end + end +end \ No newline at end of file diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index 60bcd3637..da348b6e9 100644 --- a/app/helpers/person_helper.rb +++ b/app/helpers/person_helper.rb @@ -12,7 +12,7 @@ def nationality_string(nationality, nationality2) def person_role_string(person_role) role_level = person_role.person_role_level&.level - role_level = I18n.t('language_skills.none') if role_level == "Keine" + 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 @@ -67,7 +67,7 @@ def language_skill_levels def role_skill_levels PersonRoleLevel.order(:level).each do |role| - if role.level == "Keine" + if role.level == 'Keine' role.level = I18n.t('language_skills.none') end end diff --git a/app/helpers/picture_helper.rb b/app/helpers/picture_helper.rb index 48cd23317..ee3b2a770 100644 --- a/app/helpers/picture_helper.rb +++ b/app/helpers/picture_helper.rb @@ -1,21 +1,4 @@ # frozen_string_literal: true module PictureHelper - def language_skill_svg(level) - if matching_skill_level('native', level) - return 'Muttersprache' - elsif matching_skill_level('none', level) - return 'Keine' - end - - level - end - - private - - def matching_skill_level(translation_to_check, level) - I18n.available_locales.any? do |locale| - I18n.t("language_skills.#{translation_to_check}", locale: locale) == level - end - end end diff --git a/config/locales/de-CH.yml b/config/locales/de-CH.yml index 057a1bc19..8e59cf275 100644 --- a/config/locales/de-CH.yml +++ b/config/locales/de-CH.yml @@ -268,7 +268,7 @@ de-CH: edit: "%{model} bearbeitä" language_skills: native: Muetersprach - none: Keni + none: Kes marital_statuses: divorced: gschiedä married: verhüratet diff --git a/config/locales/de.yml b/config/locales/de.yml index fece1b411..52fa07957 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -251,7 +251,7 @@ de: edit: "%{model} bearbeiten" language_skills: native: Muttersprache - none: Keine + none: Keines marital_statuses: divorced: geschieden married: verheiratet From 678dc369fe5955ee6a3007b8f8e912dcd54dc69e Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Tue, 6 May 2025 10:15:21 +0200 Subject: [PATCH 08/11] fix tests --- app/helpers/language_skill_helper.rb | 2 +- spec/features/people_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/helpers/language_skill_helper.rb b/app/helpers/language_skill_helper.rb index 6721d4dae..029ee38b8 100644 --- a/app/helpers/language_skill_helper.rb +++ b/app/helpers/language_skill_helper.rb @@ -18,4 +18,4 @@ def matching_skill_level(translation_to_check, level) I18n.t("language_skills.#{translation_to_check}", locale: locale) == level end end -end \ No newline at end of file +end diff --git a/spec/features/people_spec.rb b/spec/features/people_spec.rb index 5ff800bde..f21daffaf 100644 --- a/spec/features/people_spec.rb +++ b/spec/features/people_spec.rb @@ -175,7 +175,7 @@ def check_edit_fields(person, editing) expect(language_select.value).to eql(default_languages[i]) end language_level_selects.each do |language_level_select| - expect(language_level_select.value).to eql('Keine') + expect(language_level_select.value).to eql('Keines') end language_certificate_inputs.each do |language_certificate_input| expect(language_certificate_input.value).to eql('') From 49a69c9fcb9c4d1e4faf631c2ea6ad9ed44bab4d Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Thu, 8 May 2025 14:28:14 +0200 Subject: [PATCH 09/11] make translation only display and not save --- .../language-levels/{keine.svg => keines.svg} | 0 app/helpers/language_skill_helper.rb | 21 ------------------- app/helpers/person_helper.rb | 11 +++++++++- .../people/_language_skill_fields.html.haml | 2 +- app/views/people/_profile.html.haml | 2 +- 5 files changed, 12 insertions(+), 24 deletions(-) rename app/assets/images/language-levels/{keine.svg => keines.svg} (100%) delete mode 100644 app/helpers/language_skill_helper.rb diff --git a/app/assets/images/language-levels/keine.svg b/app/assets/images/language-levels/keines.svg similarity index 100% rename from app/assets/images/language-levels/keine.svg rename to app/assets/images/language-levels/keines.svg diff --git a/app/helpers/language_skill_helper.rb b/app/helpers/language_skill_helper.rb deleted file mode 100644 index 029ee38b8..000000000 --- a/app/helpers/language_skill_helper.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -module LanguageSkillHelper - def language_skill_svg(level) - if matching_skill_level('native', level) - return 'Muttersprache' - elsif matching_skill_level('none', level) - return 'Keine' - end - - level - end - - private - - def matching_skill_level(translation_to_check, level) - I18n.available_locales.any? do |locale| - I18n.t("language_skills.#{translation_to_check}", locale: locale) == level - end - end -end diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index da348b6e9..59cc5db56 100644 --- a/app/helpers/person_helper.rb +++ b/app/helpers/person_helper.rb @@ -62,7 +62,16 @@ def uneditable_language?(lang) end def language_skill_levels - [I18n.t('language_skills.none')] + %w[A1 A2 B1 B2 C1 C2] + [I18n.t('language_skills.native')] + [ + ["#{I18n.t('language_skills.none')}", 'Keines'], + ['A1', 'A1'], + ['A2', 'A2'], + ['B1', 'B1'], + ['B2', 'B2'], + ['C1', 'C1'], + ['C2', 'C2'], + ["#{I18n.t('language_skills.native')}", 'Muttersprache'] + ] end def role_skill_levels diff --git a/app/views/people/_language_skill_fields.html.haml b/app/views/people/_language_skill_fields.html.haml index ea87b1ed8..83b5abda3 100644 --- a/app/views/people/_language_skill_fields.html.haml +++ b/app/views/people/_language_skill_fields.html.haml @@ -7,7 +7,7 @@ %div.d-flex %div.w-25.me-2 = f.label t("global.people_skills.levels.level") - = f.collection_select :level, language_skill_levels, :itself, :itself, {}, class: "form-select mw-100 language-level-select" + = f.collection_select :level, language_skill_levels, :last, :first, {}, class: "form-select mw-100 language-level-select" %div.w-75 = f.label t("global.people_skills.certificate") = f.text_field :certificate, class: "mw-100 form-control language-certificate-input" diff --git a/app/views/people/_profile.html.haml b/app/views/people/_profile.html.haml index 5e531c7ca..c27114be8 100644 --- a/app/views/people/_profile.html.haml +++ b/app/views/people/_profile.html.haml @@ -75,7 +75,7 @@ - sort_languages(@person.language_skills).each do |language| %tr %td.p-2.pe-3.text-gray= language.language - %td.p-2.pe-3= image_tag("language-levels/#{language_skill_svg(language.level).downcase}.svg", alt: "Language level indicator") + %td.p-2.pe-3= image_tag("language-levels/#{language.level.downcase}.svg", alt: "Language level indicator") - unless language.certificate.blank? %td.p-2= image_tag("language-levels/icon_certificate.svg", alt: "Language certificate icon", title: language.certificate) %br \ No newline at end of file From 293e990db27c02d8bcae88fc5a5fe3943862e7c0 Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Thu, 8 May 2025 14:48:06 +0200 Subject: [PATCH 10/11] change interpolation --- app/helpers/person_helper.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index 59cc5db56..cfcc0dd7c 100644 --- a/app/helpers/person_helper.rb +++ b/app/helpers/person_helper.rb @@ -63,14 +63,14 @@ def uneditable_language?(lang) def language_skill_levels [ - ["#{I18n.t('language_skills.none')}", 'Keines'], - ['A1', 'A1'], - ['A2', 'A2'], - ['B1', 'B1'], - ['B2', 'B2'], - ['C1', 'C1'], - ['C2', 'C2'], - ["#{I18n.t('language_skills.native')}", 'Muttersprache'] + [I18n.t('language_skills.none').to_s, 'Keines'], + %w[A1], + %w[A2], + %w[B1], + %w[B2], + %w[C1], + %w[C2], + [I18n.t('language_skills.native').to_s, 'Muttersprache'] ] end From fd60358a526a6c51edf44c95ef91719a508b3caf Mon Sep 17 00:00:00 2001 From: Miguel Lehmann Date: Mon, 12 May 2025 09:13:21 +0200 Subject: [PATCH 11/11] write comments and make changes to translation --- .../images/language-levels/{keines.svg => keine.svg} | 0 app/helpers/person_helper.rb | 8 ++++++-- config/locales/de-CH.yml | 2 ++ config/locales/de.yml | 2 ++ config/locales/en.yml | 2 ++ config/locales/fr.yml | 2 ++ config/locales/it.yml | 2 ++ spec/features/people_spec.rb | 2 +- 8 files changed, 17 insertions(+), 3 deletions(-) rename app/assets/images/language-levels/{keines.svg => keine.svg} (100%) diff --git a/app/assets/images/language-levels/keines.svg b/app/assets/images/language-levels/keine.svg similarity index 100% rename from app/assets/images/language-levels/keines.svg rename to app/assets/images/language-levels/keine.svg diff --git a/app/helpers/person_helper.rb b/app/helpers/person_helper.rb index cfcc0dd7c..1dec75539 100644 --- a/app/helpers/person_helper.rb +++ b/app/helpers/person_helper.rb @@ -40,6 +40,8 @@ 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 locale = I18n.locale locale = 'de' if I18n.locale == :'de-CH' @@ -61,9 +63,11 @@ 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 [ - [I18n.t('language_skills.none').to_s, 'Keines'], + [I18n.t('language_skills.none').to_s, 'Keine'], %w[A1], %w[A2], %w[B1], @@ -77,7 +81,7 @@ def language_skill_levels def role_skill_levels PersonRoleLevel.order(:level).each do |role| if role.level == 'Keine' - role.level = I18n.t('language_skills.none') + role.level = I18n.t('person_role.none') end end end diff --git a/config/locales/de-CH.yml b/config/locales/de-CH.yml index 8e59cf275..f0effd02b 100644 --- a/config/locales/de-CH.yml +++ b/config/locales/de-CH.yml @@ -360,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 52fa07957..f427aabf9 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -343,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 078c4a7b2..6d2417dc7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -339,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 d7d5dd61a..a5c28d4a2 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -339,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 56ba9110b..b4c4b0d8a 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -339,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/features/people_spec.rb b/spec/features/people_spec.rb index f21daffaf..5ff800bde 100644 --- a/spec/features/people_spec.rb +++ b/spec/features/people_spec.rb @@ -175,7 +175,7 @@ def check_edit_fields(person, editing) expect(language_select.value).to eql(default_languages[i]) end language_level_selects.each do |language_level_select| - expect(language_level_select.value).to eql('Keines') + expect(language_level_select.value).to eql('Keine') end language_certificate_inputs.each do |language_certificate_input| expect(language_certificate_input.value).to eql('')