Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[53466] Check for inconsistent interpolations in all i18n files #14946

Merged
merged 2 commits into from
May 17, 2024

Conversation

cbliard
Copy link
Member

@cbliard cbliard commented Mar 7, 2024

https://community.openproject.org/wp/53466

AppSignal can sometimes detect missing interpolation in i18n strings in SaaS: https://appsignal.com/openproject-gmbh/sites/62b06dacd2a5e41321946fcf/exceptions/incidents/877/samples/timestamp/2024-03-07T13:29:18Z

It can be detected earlier with i18n-tasks gem:

i18n-tasks check-consistent-interpolations

This pull request modifies the existing i18n_spec and introduces another configuration file to not mess with the other i18n checks done.

Now there are 130 interpolations to fix.
They have to be fixed in Crowdin directly.

@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from 0c2e82b to 8edaf3e Compare March 8, 2024 13:41
@cbliard cbliard changed the title Check for inconsistent interpolations in all i18n files [53466] Check for inconsistent interpolations in all i18n files Mar 18, 2024
@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from 8edaf3e to 130ff3e Compare March 18, 2024 10:25
@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch 2 times, most recently from 555b75d to 2f1b20f Compare April 16, 2024 12:30
@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from 2f1b20f to 762dd99 Compare April 22, 2024 08:26
@cbliard cbliard changed the base branch from dev to release/14.0 April 22, 2024 13:00
@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from 762dd99 to c5cdf9f Compare April 30, 2024 07:18
@cbliard
Copy link
Member Author

cbliard commented Apr 30, 2024

71 inconsistent interpolations remaining

i18n-tasks check-consistent-interpolations --config config/i18n-tasks-all-files.yml

output
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| Locale | Key                                                                              | Value                                                                                                                                   |
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
|   ar   | js.storages.file_links.selection.zero                                            | Link %{count} files                                                                                                                     |
|   cs   | js.clipboard.browser_error                                                       | Váš prohlížeč nepodporuje, kopírování do schránky. Ručně zkopírujte vybraný text.                                                       |
|   cs   | js.storages.file_links.success_create.other                                      | Odkazů na soubor byl úspěšně vytvořen.                                                                                                  |
|   cs   | js.storages.link_files_in_storage                                                | Prolinkovat soubory v                                                                                                                   |
|   cs   | label_x_files.other                                                              | {count} souborů                                                                                                                         |
|   cs   | mail.work_packages.more_to_see.one                                               | Existuje ještě %{count} pracovní balíček s notifikací.                                                                                  |
|   cs   | storages.instructions.nextcloud.provider_configuration                           | Ujistěte se prosím, že máte oprávnění administrace v Nextcloud instanci a máte nainstalovanou následující aplikaci:                     |
|   cs   | storages.instructions.oauth_application_details                                  | Tajná hodnota klienta nebude po zavření tohoto okna přístupná. Zkopírujte tyto hodnoty do Nextcloud OpenProject Integration nastavení:  |
|   cs   | text_journal_file_link_deleted                                                   | %{label} odkaz na %{value} (%{storage}) přidán                                                                                          |
|   de   | activerecord.errors.messages.error_enterprise_only                               | ist nur in OpenProject Enterprise on-premises verfügbar                                                                                 |
|   de   | activity.item.time_entry.hour.one                                                | Eine Stunde                                                                                                                             |
|   es   | js.storages.drop_files                                                           | Arrastra archivos aquí para cargarlos a %{storageType}.                                                                                 |
|   es   | js.storages.drop_or_click_files                                                  | Arrastra archivos o haz clic aquí para cargarlos a %{storageType}.                                                                      |
|   es   | working_days.journal_note.dates.non_working                                      | %{day} es ahora no laboral                                                                                                              |
|   et   | datetime.distance_in_words.about_x_hours.one                                     | umbes %{count} tundi                                                                                                                    |
|   fa   | label_budget_id                                                                  | بودجه                                                                                                                                   |
|   he   | boards.board_types.action                                                        | לוח פעולות                                                                                                                              |
|   he   | js.boards.board_type.action_by_attribute                                         | לוח פעולות                                                                                                                              |
|   hu   | boards.board_types.action                                                        | Feladattábla                                                                                                                            |
|   hu   | datetime.distance_in_words.about_x_hours.one                                     | körülbelül %{count} óra                                                                                                                 |
|   hu   | datetime.distance_in_words.about_x_months.one                                    | körülbelül %{count} hónap                                                                                                               |
|   hu   | datetime.distance_in_words.less_than_x_minutes.one                               | kevesebb, mint %{count} perc                                                                                                            |
|   hu   | js.calendar.too_many                                                             | Összesen %{százalék_szám} munkacsomag van, de csak %{maximum} jeleníthető meg.                                                          |
|   hu   | js.units.day.one                                                                 | %{count} nap                                                                                                                            |
|   id   | activerecord.errors.models.custom_actions.not_an_integer                         | (%{nama}) bukan bilangan bulat.                                                                                                         |
|   id   | custom_actions.execute                                                           | Jalankan %{nama}                                                                                                                        |
|   it   | settings.antivirus.modes.clamav_host_html                                        | Immettere il nome host e la porta del daemon clamd separati dai due punti. Ad esempio, %{esempio}                                       |
|   lv   | js.storages.file_links.selection.zero                                            | Link %{count} files                                                                                                                     |
|   lv   | js.units.day.one                                                                 | %{count} dienas                                                                                                                         |
|   ms   | activerecord.attributes.meeting.participant.other                                | 1 Peserta                                                                                                                               |
|   ms   | activerecord.errors.models.user.attributes.password.reused.other                 | telah digunakan sebelum ini. SIla pilih yang berbeza daripada yang terakhir.                                                            |
|   ms   | activerecord.errors.template.header.other                                        | 1 ralat menghalang %{model} ini daripada disimpan                                                                                       |
|   ms   | error_in_new_dependent                                                           | Ralat dalam cubaan untuk mencipta objek yang bergantung: %{dependent_class} - %{related_subject}                                        |
|   ms   | js.notifications.center.and_more_users.other                                     | dan 1 yang lain                                                                                                                         |
|   ms   | js.storages.file_links.selection.other                                           | Pautkan 1 file                                                                                                                          |
|   ms   | js.storages.file_links.success_create.other                                      | 1 pautan fail berjaya dicipta.                                                                                                          |
|   ms   | mail.work_packages.more_to_see.other                                             | Terdapat 1 lagi pakej kerja dengan pemberitahuan.                                                                                       |
|   ms   | notice_custom_options_deleted                                                    | Pilihan '%{option_value}' dan kejadiannya telah dipadamkan.                                                                             |
|   ms   | oauth.x_active_tokens.other                                                      | satu token aktif                                                                                                                        |
|   ms   | user.blocked_num_failed_logins.other                                             | dikunci sementara (satu percubaan log masuk gagal)                                                                                      |
|   ms   | work_packages.x_descendants.other                                                | Satu keturunan pakej kerja                                                                                                              |
|   nl   | activerecord.errors.models.user.attributes.password.reused.one                   | is reeds eerder gebruikt. Kies er één die verschilt van uw laatste %{count}.                                                            |
|   no   | activerecord.errors.models.user.attributes.password.reused.one                   | har blitt brukt tidligere. Vennligst velg en som er forskjellig fra den forrige %{count}.                                               |
|   pl   | js.storages.file_links.selection.one                                             | Połącz %{count} plik                                                                                                                    |
|   pl   | js.storages.file_links.success_create.one                                        | Pomyślnie utworzono %{count} połączenie plików.                                                                                         |
|   pl   | storages.oauth_grant_nudge_modal.confirm_button_aria_label                       | Zaloguj się do %{storageType}                                                                                                           |
| pt-BR  | text_journal_file_link_deleted                                                   | Link de %{label} para %{value} (%{storage}) removido                                                                                    |
| pt-PT  | js.notifications.center.and_more_users.one                                       | e %{count} outros                                                                                                                       |
| pt-PT  | label_x_files.other                                                              | {count} ficheiros                                                                                                                       |
| pt-PT  | storages.oauth_grant_nudge_modal.confirm_button_aria_label                       | Iniciar sessão em %{storageType}                                                                                                        |
|   ro   | backlogs.positions_could_not_be_rebuilt                                          | Nu s-a putut verifica etapa '%{stage}'.                                                                                                 |
|   ro   | js.notifications.center.empty_state.no_notification_with_current_filter          | Se pare că v-ați pus la punct cu proiectul selectat.                                                                                    |
|   ru   | activity.item.updated_on_time_entry                                              | зарегистрированное время обновлено в %{дата-время}                                                                                      |
|   ru   | js.notifications.center.empty_state.no_notification_with_current_filter          | Похоже, в отфильтрованном вы все сделали.                                                                                               |
|   ru   | meeting.email.rescheduled.header                                                 | Встреча %{title} была перенесена %{actor}                                                                                               |
|   tr   | activerecord.errors.models.project.attributes.enabled_modules.dependency_missing | '%{dependency}' modülü buna bağlı olduğundan, '%{dependency}' modülünün de etkinleştirilmesi gerekiyor.                                 |
|   tr   | activity.item.created_by_on                                                      | %{user} tarafından %{date} tarihinde oluşturuldu                                                                                        |
|   tr   | activity.item.created_on                                                         | Oluşturulma tarihi: {dateTime}                                                                                                          |
|   tr   | activity.item.updated_by_on                                                      | %{date} tarihinde %{user} tarafından güncellendi                                                                                        |
|   tr   | activity.item.updated_on                                                         | Güncellenme tarihi: {dateTime}                                                                                                          |
|   tr   | js.notifications.center.and_more_users.other                                     | ve 1 diğer                                                                                                                              |
|   tr   | mail_body_incoming_email_error_in_reply_to                                       | %{required_at} adresinde %{from_email} yazdı                                                                                            |
|   uk   | activity.item.updated_by_on                                                      | оновлено %{date} користувачем %{user}                                                                                                   |
|   uk   | journals.cause_descriptions.working_days_changed.dates.non_working               | %{day} – зараз неробочий день                                                                                                           |
|   uk   | journals.cause_descriptions.working_days_changed.dates.working                   | %{day} – зараз робочий день                                                                                                             |
|   uk   | members.delete_work_package_shares_dialog.revoke_all_or_with_role                | Хочете відкликати доступ до всіх спільних пакетів робіт чи тільки до тих, доступ до яких надано з дозволами ролі %«{shared_role_name}»? |
|   uk   | members.delete_work_package_shares_dialog.shared_with_this_group_html.other      | Цій групі надано доступ до %{shared_work_packages_link}.                                                                                |
| zh-CN  | activerecord.attributes.meeting.participant.other                                | 1位参与者                                                                                                                               |
| zh-TW  | activerecord.errors.models.work_package.attributes.assigned_to.format            | %訊息                                                                                                                                   |
| zh-TW  | js.storages.login_to                                                             | 登入到 %{storage}                                                                                                                       |
| zh-TW  | storages.delete_warning.storage                                                  |                                                                                                                                         |
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+

@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from c5cdf9f to d69b0ba Compare May 2, 2024 12:16
@cbliard
Copy link
Member Author

cbliard commented May 2, 2024

51 inconsistent interpolations remaining

i18n-tasks check-consistent-interpolations --config config/i18n-tasks-all-files.yml

output
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| Locale | Key                                                                              | Value                                                                                                                                   |
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
|   ar   | js.storages.file_links.selection.zero                                            | Link %{count} files                                                                                                                     |
|   cs   | js.storages.file_links.success_create.other                                      | Odkazů na soubor byl úspěšně vytvořen.                                                                                                  |
|   cs   | js.storages.link_files_in_storage                                                | Prolinkovat soubory v                                                                                                                   |
|   cs   | mail.work_packages.more_to_see.one                                               | Existuje ještě %{count} pracovní balíček s notifikací.                                                                                  |
|   cs   | storages.instructions.nextcloud.provider_configuration                           | Ujistěte se prosím, že máte oprávnění administrace v Nextcloud instanci a máte nainstalovanou následující aplikaci:                     |
|   cs   | storages.instructions.oauth_application_details                                  | Tajná hodnota klienta nebude po zavření tohoto okna přístupná. Zkopírujte tyto hodnoty do Nextcloud OpenProject Integration nastavení:  |
|   cs   | text_journal_file_link_deleted                                                   | %{label} odkaz na %{value} (%{storage}) přidán                                                                                          |
|   de   | activerecord.errors.messages.error_enterprise_only                               | ist nur in OpenProject Enterprise on-premises verfügbar                                                                                 |
|   de   | activity.item.time_entry.hour.one                                                | Eine Stunde                                                                                                                             |
|   es   | js.storages.drop_files                                                           | Arrastra archivos aquí para cargarlos a %{storageType}.                                                                                 |
|   es   | js.storages.drop_or_click_files                                                  | Arrastra archivos o haz clic aquí para cargarlos a %{storageType}.                                                                      |
|   es   | working_days.journal_note.dates.non_working                                      | %{day} es ahora no laboral                                                                                                              |
|   et   | datetime.distance_in_words.about_x_hours.one                                     | umbes %{count} tundi                                                                                                                    |
|   fa   | label_budget_id                                                                  | بودجه                                                                                                                                   |
|   he   | boards.board_types.action                                                        | לוח פעולות                                                                                                                              |
|   he   | js.boards.board_type.action_by_attribute                                         | לוח פעולות                                                                                                                              |
|   hu   | boards.board_types.action                                                        | Feladattábla                                                                                                                            |
|   hu   | datetime.distance_in_words.less_than_x_minutes.one                               | kevesebb, mint %{count} perc                                                                                                            |
|   hu   | js.calendar.too_many                                                             | Összesen %{százalék_szám} munkacsomag van, de csak %{maximum} jeleníthető meg.                                                          |
|   id   | activerecord.errors.models.custom_actions.not_an_integer                         | (%{nama}) bukan bilangan bulat.                                                                                                         |
|   id   | custom_actions.execute                                                           | Jalankan %{nama}                                                                                                                        |
|   it   | settings.antivirus.modes.clamav_host_html                                        | Immettere il nome host e la porta del daemon clamd separati dai due punti. Ad esempio, %{esempio}                                       |
|   lv   | js.storages.file_links.selection.zero                                            | Link %{count} files                                                                                                                     |
|   lv   | js.units.day.one                                                                 | %{count} dienas                                                                                                                         |
|   ms   | activerecord.attributes.meeting.participant.other                                | 1 Peserta                                                                                                                               |
|   ms   | activerecord.errors.models.user.attributes.password.reused.other                 | telah digunakan sebelum ini. SIla pilih yang berbeza daripada yang terakhir.                                                            |
|   ms   | activerecord.errors.template.header.other                                        | 1 ralat menghalang %{model} ini daripada disimpan                                                                                       |
|   ms   | error_in_new_dependent                                                           | Ralat dalam cubaan untuk mencipta objek yang bergantung: %{dependent_class} - %{related_subject}                                        |
|   ms   | js.notifications.center.and_more_users.other                                     | dan 1 yang lain                                                                                                                         |
|   ms   | js.storages.file_links.selection.other                                           | Pautkan 1 file                                                                                                                          |
|   ms   | js.storages.file_links.success_create.other                                      | 1 pautan fail berjaya dicipta.                                                                                                          |
|   ms   | mail.work_packages.more_to_see.other                                             | Terdapat 1 lagi pakej kerja dengan pemberitahuan.                                                                                       |
|   ms   | notice_custom_options_deleted                                                    | Pilihan '%{option_value}' dan kejadiannya telah dipadamkan.                                                                             |
|   ms   | oauth.x_active_tokens.other                                                      | satu token aktif                                                                                                                        |
|   ms   | user.blocked_num_failed_logins.other                                             | dikunci sementara (satu percubaan log masuk gagal)                                                                                      |
|   ms   | work_packages.x_descendants.other                                                | Satu keturunan pakej kerja                                                                                                              |
|   nl   | activerecord.errors.models.user.attributes.password.reused.one                   | is reeds eerder gebruikt. Kies er één die verschilt van uw laatste %{count}.                                                            |
|   no   | activerecord.errors.models.user.attributes.password.reused.one                   | har blitt brukt tidligere. Vennligst velg en som er forskjellig fra den forrige %{count}.                                               |
|   pl   | js.storages.file_links.selection.one                                             | Połącz %{count} plik                                                                                                                    |
|   pl   | js.storages.file_links.success_create.one                                        | Pomyślnie utworzono %{count} połączenie plików.                                                                                         |
|   pl   | storages.oauth_grant_nudge_modal.confirm_button_aria_label                       | Zaloguj się do %{storageType}                                                                                                           |
| pt-PT  | js.notifications.center.and_more_users.one                                       | e %{count} outros                                                                                                                       |
| pt-PT  | storages.oauth_grant_nudge_modal.confirm_button_aria_label                       | Iniciar sessão em %{storageType}                                                                                                        |
|   ro   | backlogs.positions_could_not_be_rebuilt                                          | Nu s-a putut verifica etapa '%{stage}'.                                                                                                 |
|   ro   | js.notifications.center.empty_state.no_notification_with_current_filter          | Se pare că v-ați pus la punct cu proiectul selectat.                                                                                    |
|   ru   | activity.item.updated_on_time_entry                                              | зарегистрированное время обновлено в %{дата-время}                                                                                      |
|   ru   | js.notifications.center.empty_state.no_notification_with_current_filter          | Похоже, в отфильтрованном вы все сделали.                                                                                               |
|   ru   | meeting.email.rescheduled.header                                                 | Встреча %{title} была перенесена %{actor}                                                                                               |
|   tr   | activerecord.errors.models.project.attributes.enabled_modules.dependency_missing | '%{dependency}' modülü buna bağlı olduğundan, '%{dependency}' modülünün de etkinleştirilmesi gerekiyor.                                 |
|   tr   | js.notifications.center.and_more_users.other                                     | ve 1 diğer                                                                                                                              |
|   tr   | mail_body_incoming_email_error_in_reply_to                                       | %{required_at} adresinde %{from_email} yazdı                                                                                            |
|   uk   | activity.item.updated_by_on                                                      | оновлено %{date} користувачем %{user}                                                                                                   |
|   uk   | journals.cause_descriptions.working_days_changed.dates.non_working               | %{day} – зараз неробочий день                                                                                                           |
|   uk   | journals.cause_descriptions.working_days_changed.dates.working                   | %{day} – зараз робочий день                                                                                                             |
|   uk   | members.delete_work_package_shares_dialog.revoke_all_or_with_role                | Хочете відкликати доступ до всіх спільних пакетів робіт чи тільки до тих, доступ до яких надано з дозволами ролі %«{shared_role_name}»? |
|   uk   | members.delete_work_package_shares_dialog.shared_with_this_group_html.other      | Цій групі надано доступ до %{shared_work_packages_link}.                                                                                |
| zh-CN  | activerecord.attributes.meeting.participant.other                                | 1位参与者                                                                                                                               |
| zh-TW  | activerecord.errors.models.work_package.attributes.assigned_to.format            | %訊息                                                                                                                                   |
| zh-TW  | js.storages.login_to                                                             | 登入到 %{storage}                                                                                                                       |
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+

@cbliard cbliard changed the base branch from release/14.0 to release/14.1 May 10, 2024 12:07
@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from d69b0ba to ec702b2 Compare May 10, 2024 12:10
@cbliard
Copy link
Member Author

cbliard commented May 10, 2024

64 inconsistent interpolations remaining

i18n-tasks check-consistent-interpolations --config config/i18n-tasks-all-files.yml

output
Inconsistent interpolations (64) | i18n-tasks v1.0.14
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Locale | Key                                                                              | Value                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|   ar   | js.storages.file_links.selection.zero                                            | Link %{count} files                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|   cs   | js.storages.file_links.success_create.other                                      | Odkazů na soubor byl úspěšně vytvořen.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|   cs   | js.storages.link_files_in_storage                                                | Prolinkovat soubory v                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|   cs   | storages.instructions.nextcloud.provider_configuration                           | Ujistěte se prosím, že máte oprávnění administrace v Nextcloud instanci a máte nainstalovanou následující aplikaci:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|   cs   | storages.instructions.oauth_application_details                                  | Tajná hodnota klienta nebude po zavření tohoto okna přístupná. Zkopírujte tyto hodnoty do Nextcloud OpenProject Integration nastavení:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|   cs   | text_journal_file_link_deleted                                                   | %{label} odkaz na %{value} (%{storage}) přidán                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|   de   | activity.item.time_entry.hour.one                                                | Eine Stunde                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|   es   | js.storages.drop_files                                                           | Arrastra archivos aquí para cargarlos a %{storageType}.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|   es   | js.storages.drop_or_click_files                                                  | Arrastra archivos o haz clic aquí para cargarlos a %{storageType}.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|   es   | working_days.journal_note.dates.non_working                                      | %{day} es ahora no laboral                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|   et   | datetime.distance_in_words.about_x_hours.one                                     | umbes %{count} tundi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|   fa   | boards.board_types.action                                                        | تابلوی اکشن                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|   fa   | label_budget_id                                                                  | بودجه                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|   he   | boards.board_types.action                                                        | לוח פעולות                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|   he   | js.boards.board_type.action_by_attribute                                         | לוח פעולות                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|   hu   | activerecord.errors.messages.type_mismatch_nested                                | nem '%{type}' típusú az '%%{path}' elérési útvonalon.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|   hu   | boards.board_types.action                                                        | Feladattábla                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|   hu   | datetime.distance_in_words.less_than_x_minutes.one                               | kevesebb, mint %{count} perc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|   hu   | js.calendar.too_many                                                             | Összesen %{százalék_szám} munkacsomag van, de csak %{maximum} jeleníthető meg.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|   id   | activerecord.errors.models.custom_actions.not_an_integer                         | (%{nama}) bukan bilangan bulat.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|   id   | custom_actions.execute                                                           | Jalankan %{nama}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|   id   | todo_work_package_description                                                    | %{total}: %{url}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|        |                                                                                  | %{keterangan}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|   it   | error_can_not_delete_in_use_archived_work_packages                               | Ci sono macro-attività anche nei progetti archiviati. Devi prima riattivare i seguenti progetti, prima di poter modificare l'attributo delle rispettive macro-attività: %%{archived_projects_urls}                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|   it   | settings.antivirus.modes.clamav_host_html                                        | Immettere il nome host e la porta del daemon clamd separati dai due punti. Ad esempio, %{esempio}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|   lv   | js.storages.file_links.selection.zero                                            | Link %{count} files                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|   lv   | js.units.day.one                                                                 | %{count} dienas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|   ms   | activerecord.attributes.meeting.participant.other                                | 1 Peserta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|   ms   | activerecord.errors.models.user.attributes.password.reused.other                 | telah digunakan sebelum ini. SIla pilih yang berbeza daripada yang terakhir.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|   ms   | activerecord.errors.template.header.other                                        | 1 ralat menghalang %{model} ini daripada disimpan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|   ms   | error_in_new_dependent                                                           | Ralat dalam cubaan untuk mencipta objek yang bergantung: %{dependent_class} - %{related_subject}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|   ms   | js.notifications.center.and_more_users.other                                     | dan 1 yang lain                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|   ms   | js.storages.file_links.selection.other                                           | Pautkan 1 file                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|   ms   | js.storages.file_links.success_create.other                                      | 1 pautan fail berjaya dicipta.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|   ms   | js.units.child_work_packages.other                                               | satu pakej kerja anak                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|   ms   | mail.work_packages.more_to_see.other                                             | Terdapat 1 lagi pakej kerja dengan pemberitahuan.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|   ms   | notice_custom_options_deleted                                                    | Pilihan '%{option_value}' dan kejadiannya telah dipadamkan.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|   ms   | oauth.x_active_tokens.other                                                      | satu token aktif                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|   ms   | text_notice_security_badge_displayed_html                                        | Nota: jika dibenarkan, ini akan paparkan lambang bersertaan status pemasangan di <a href="%{information_panel_path}"></a> panel pentadbiran, dan di halaman utama. Ia hanya akan dipaparkan ke para pentadbir sahaja. <br/> Lambang tersebut akan menyemak versi OpenProject terkini terhadap pangkalan data keluaran rasmi OpenProject untuk memaklumkan anda tentang sebarang kemas kini atau kelemahan yang diketahui. Untuk maklumat lanjut bagi penyediaan semakan, data apa yang diperlukan untuk menyediakan kemas kini tersedia, and bagaimana untuk menyahaktifkan semakan ini, sila kunjungi <a href="%{more_info_url}"> dokumentasi konfigurasi</a>. |
|   ms   | user.blocked_num_failed_logins.other                                             | dikunci sementara (satu percubaan log masuk gagal)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|   ms   | work_packages.x_descendants.other                                                | Satu keturunan pakej kerja                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|   nl   | activerecord.errors.models.user.attributes.password.reused.one                   | is reeds eerder gebruikt. Kies er één die verschilt van uw laatste %{count}.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|   no   | activerecord.errors.models.user.attributes.password.reused.one                   | har blitt brukt tidligere. Vennligst velg en som er forskjellig fra den forrige %{count}.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|   pl   | js.storages.file_links.selection.one                                             | Połącz %{count} plik                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|   pl   | js.storages.file_links.success_create.one                                        | Pomyślnie utworzono %{count} połączenie plików.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|   pl   | storages.oauth_grant_nudge_modal.confirm_button_aria_label                       | Zaloguj się do %{storageType}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|   pl   | text_journal_attachment_deleted                                                  | %{label} %{value} usunięto jako załącznik                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|   pl   | working_days.journal_note.dates.non_working                                      | %{day} jest teraz wolnym od pracy                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| pt-PT  | js.notifications.center.and_more_users.one                                       | e %{count} outros                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| pt-PT  | storages.oauth_grant_nudge_modal.confirm_button_aria_label                       | Iniciar sessão em %{storageType}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|   ro   | backlogs.positions_could_not_be_rebuilt                                          | Nu s-a putut verifica etapa '%{stage}'.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|   ro   | js.notifications.center.empty_state.no_notification_with_current_filter          | Se pare că v-ați pus la punct cu proiectul selectat.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|   ru   | activity.item.updated_on_time_entry                                              | зарегистрированное время обновлено в %{дата-время}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|   ru   | js.notifications.center.empty_state.no_notification_with_current_filter          | Похоже, в отфильтрованном вы все сделали.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|   ru   | meeting.email.rescheduled.header                                                 | Встреча %{title} была перенесена %{actor}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|   tr   | activerecord.errors.models.project.attributes.enabled_modules.dependency_missing | '%{dependency}' modülü buna bağlı olduğundan, '%{dependency}' modülünün de etkinleştirilmesi gerekiyor.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|   tr   | js.notifications.center.and_more_users.other                                     | ve 1 diğer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|   tr   | mail_body_incoming_email_error_in_reply_to                                       | %{required_at} adresinde %{from_email} yazdı                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|   uk   | activity.item.updated_by_on                                                      | оновлено %{date} користувачем %{user}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|   uk   | journals.cause_descriptions.working_days_changed.dates.non_working               | %{day} – зараз неробочий день                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|   uk   | journals.cause_descriptions.working_days_changed.dates.working                   | %{day} – зараз робочий день                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|   uk   | members.delete_work_package_shares_dialog.revoke_all_or_with_role                | Хочете відкликати доступ до всіх спільних пакетів робіт чи тільки до тих, доступ до яких надано з дозволами ролі %«{shared_role_name}»?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|   uk   | members.delete_work_package_shares_dialog.shared_with_this_group_html.other      | Цій групі надано доступ до %{shared_work_packages_link}.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| zh-CN  | activerecord.attributes.meeting.participant.other                                | 1位参与者                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| zh-TW  | js.storages.login_to                                                             | 登入到 %{storage}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+--------+----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from ec702b2 to 0009fe4 Compare May 13, 2024 06:42
@cbliard
Copy link
Member Author

cbliard commented May 13, 2024

8 inconsistent interpolations remaining

i18n-tasks check-consistent-interpolations --config config/i18n-tasks-all-files.yml

output
Inconsistent interpolations (64) | i18n-tasks v1.0.14
+--------+-----------------------------------------------------------------------+---------------------------------------------------------+
| Locale | Key                                                                   | Value                                                   |
+--------+-----------------------------------------------------------------------+---------------------------------------------------------+
|   ar   | js.storages.file_links.selection.zero                                 | ربط %{count} من الملفات                                 |
|   cs   | mail.work_packages.more_to_see.one                                    | Existuje ještě %{count} pracovní balíček s notifikací.  |
|   de   | activerecord.errors.messages.error_enterprise_only                    | ist nur in OpenProject Enterprise on-premises verfügbar |
|   lv   | js.storages.file_links.selection.zero                                 | Link %{count} files                                     |
|   lv   | js.units.day.one                                                      | %{count} dienas                                         |
|   ms   | oauth.x_active_tokens.other                                           | satu token aktif                                        |
|   ru   | meeting.email.rescheduled.header                                      | Встреча %{title} была перенесена %{actor}               |
| zh-TW  | activerecord.errors.models.work_package.attributes.assigned_to.format | %訊息                                                   |
+--------+-----------------------------------------------------------------------+---------------------------------------------------------+

@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from 0009fe4 to 3fcbd8b Compare May 15, 2024 07:03
@cbliard
Copy link
Member Author

cbliard commented May 15, 2024

3 inconsistent interpolations remaining! They should now all be fixed at next run.

i18n-tasks check-consistent-interpolations --config config/i18n-tasks-all-files.yml

output
Inconsistent interpolations (3) | i18n-tasks v1.0.14
+--------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
| Locale | Key                                                    | Value                                                                                                                                                 |
+--------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|   ar   | js.storages.file_links.selection.zero                  | ربط %{count} من الملفات                                                                                                                               |
|   lv   | js.storages.file_links.selection.zero                  | Link %{count} files                                                                                                                                   |
|   ms   | storages.instructions.nextcloud.provider_configuration | Sila pastikan anda mempunyai hak keistimewaan pentadbir di, contohnya, Nextcloud, dan mempunyai aplikasi berikut dipasang sebelum membuat penyediaan: |
+--------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+```

</details>

@cbliard cbliard force-pushed the fix/detect_invalid_i18n_interpolations branch from 3fcbd8b to 9b9a89f Compare May 17, 2024 07:17
@cbliard
Copy link
Member Author

cbliard commented May 17, 2024

🎉

❯ i18n-tasks check-consistent-interpolations --config config/i18n-tasks-all-files.yml
#StandWithUkraine
Good job! No inconsistent interpolations found.

Copy link
Member

@oliverguenther oliverguenther left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of the configuration file is now duplicate. It's probably not a lot of maintenance, but just something I noticed.

Copy link
Member

@Kharonus Kharonus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, good improvement.

There is just a single question, I'd like to raise.

config/i18n-tasks-all-files.yml Show resolved Hide resolved
@cbliard cbliard merged commit 07cec36 into release/14.1 May 17, 2024
9 checks passed
@cbliard cbliard deleted the fix/detect_invalid_i18n_interpolations branch May 17, 2024 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

3 participants