From 7656b12b5247338cf87bc62aefb299e0d80262c7 Mon Sep 17 00:00:00 2001 From: userquin Date: Thu, 5 Feb 2026 18:35:55 +0100 Subject: [PATCH 1/7] chore: update i18n contributing guide --- CONTRIBUTING.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 41e1cf355..af32198f0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -340,7 +340,7 @@ To add a new locale: 5. If the language is `right-to-left`, add `dir: 'rtl'` (see `ar-EG` in config for example) 6. If the language requires special pluralization rules, add a `pluralRule` callback (see `ar-EG` or `ru-RU` in config for examples) -Check [Pluralization rule callback](https://vue-i18n.intlify.dev/guide/essentials/pluralization.html#custom-pluralization) for more info. +Check [Pluralization rule callback](https://vue-i18n.intlify.dev/guide/essentials/pluralization.html#custom-pluralization) and [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories) for more info. ### Update translation @@ -408,6 +408,39 @@ See how `es`, `es-ES`, and `es-419` are configured in [config/i18n.ts](./config/

{{ $t('greeting', { name: userName }) }}

``` +4. Don't concatenate string messages in the vue templates, some languages can have different word order. Use placeholders instead. + + **Bad:** + + ```vue +

{{ $t('hello') }} {{ userName }}

+ ``` + + **Good:** + + ```vue +

{{ $t('greeting', { name: userName }) }}

+ ``` + + **Complex content:** + + If you need to include HTML or components inside the translation, use [`i18n-t`](https://vue-i18n.intlify.dev/guide/advanced/component.html) component. This is especially useful when the order of elements might change between languages. + + ```json + { "agreement": "I accept the {terms} and {privacy}." } + ``` + + ```vue + + + + + ``` + ### Translation key conventions - Use dot notation for hierarchy: `section.subsection.key` @@ -415,6 +448,7 @@ See how `es`, `es-ES`, and `es-419` are configured in [config/i18n.ts](./config/ - Group related keys together - Use `common.*` for shared strings (loading, retry, close, etc.) - Use component-specific prefixes: `package.card.*`, `settings.*`, `nav.*` +- Do not use dashes (`-`) in traslation keys; always use underscore (`_`): e.g., `private_policy` instead of `private-policy` ### Using i18n-ally (recommended) From 63b4b47ae69a83a3156daba62a6bbcd1875a2642 Mon Sep 17 00:00:00 2001 From: userquin Date: Thu, 5 Feb 2026 18:41:20 +0100 Subject: [PATCH 2/7] chore: fix typo --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index af32198f0..bfb15dcba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -448,7 +448,7 @@ See how `es`, `es-ES`, and `es-419` are configured in [config/i18n.ts](./config/ - Group related keys together - Use `common.*` for shared strings (loading, retry, close, etc.) - Use component-specific prefixes: `package.card.*`, `settings.*`, `nav.*` -- Do not use dashes (`-`) in traslation keys; always use underscore (`_`): e.g., `private_policy` instead of `private-policy` +- Do not use dashes (`-`) in translation keys; always use underscore (`_`): e.g., `private_policy` instead of `private-policy` ### Using i18n-ally (recommended) From 368698f65003a51a65b1362ef7628fafef0b4335 Mon Sep 17 00:00:00 2001 From: userquin Date: Thu, 5 Feb 2026 18:52:24 +0100 Subject: [PATCH 3/7] chore: apply ai suggestion --- CONTRIBUTING.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bfb15dcba..3e2a7d4ed 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -427,7 +427,11 @@ See how `es`, `es-ES`, and `es-419` are configured in [config/i18n.ts](./config/ If you need to include HTML or components inside the translation, use [`i18n-t`](https://vue-i18n.intlify.dev/guide/advanced/component.html) component. This is especially useful when the order of elements might change between languages. ```json - { "agreement": "I accept the {terms} and {privacy}." } + { + "agreement": "I accept the {terms} and {privacy}.", + "terms_link": "Terms of Service", + "privacy_policy": "Privacy Policy" + } ``` ```vue From 9c3f0fdf8fbd988be1202f57a09db3f6e44bc974 Mon Sep 17 00:00:00 2001 From: userquin Date: Thu, 5 Feb 2026 18:54:29 +0100 Subject: [PATCH 4/7] chore: fix typo detected by coderabbitai --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3e2a7d4ed..9c5b9e226 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -345,7 +345,7 @@ Check [Pluralization rule callback](https://vue-i18n.intlify.dev/guide/essential ### Update translation We track the current progress of translations with [Lunaria](https://lunaria.dev/) on this site: https://i18n.npmx.dev/ -If you see any outdated translations in your language, feel free to update the keys to match then English version. +If you see any outdated translations in your language, feel free to update the keys to match the English version. In order to make sure you have everything up-to-date, you can run: From 99f4f436aad572b2944c5e3ea92b64ba95f12ccc Mon Sep 17 00:00:00 2001 From: userquin Date: Thu, 5 Feb 2026 18:55:16 +0100 Subject: [PATCH 5/7] chore: apply ai suggestion --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c5b9e226..4b84b56e5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -452,7 +452,7 @@ See how `es`, `es-ES`, and `es-419` are configured in [config/i18n.ts](./config/ - Group related keys together - Use `common.*` for shared strings (loading, retry, close, etc.) - Use component-specific prefixes: `package.card.*`, `settings.*`, `nav.*` -- Do not use dashes (`-`) in translation keys; always use underscore (`_`): e.g., `private_policy` instead of `private-policy` +- Do not use dashes (`-`) in translation keys; always use underscore (`_`): e.g., `privacy_policy` instead of `privacy-policy` ### Using i18n-ally (recommended) From 4ab508b5946d2731d89aeed971bae885a4ce8b11 Mon Sep 17 00:00:00 2001 From: userquin Date: Thu, 5 Feb 2026 19:03:08 +0100 Subject: [PATCH 6/7] chore: don't use .html at vue-i18n pluralization rules link --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4b84b56e5..6d9b6c8de 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -340,7 +340,7 @@ To add a new locale: 5. If the language is `right-to-left`, add `dir: 'rtl'` (see `ar-EG` in config for example) 6. If the language requires special pluralization rules, add a `pluralRule` callback (see `ar-EG` or `ru-RU` in config for examples) -Check [Pluralization rule callback](https://vue-i18n.intlify.dev/guide/essentials/pluralization.html#custom-pluralization) and [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories) for more info. +Check [Pluralization rule callback](https://vue-i18n.intlify.dev/guide/essentials/pluralization#custom-pluralization) and [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories) for more info. ### Update translation From 01bc144bf47280ee8e4803e9a4a9e078cd55b5bb Mon Sep 17 00:00:00 2001 From: userquin Date: Thu, 5 Feb 2026 19:05:12 +0100 Subject: [PATCH 7/7] chore: apply ai suggestion --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6d9b6c8de..a1790b620 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -408,7 +408,7 @@ See how `es`, `es-ES`, and `es-419` are configured in [config/i18n.ts](./config/

{{ $t('greeting', { name: userName }) }}

``` -4. Don't concatenate string messages in the vue templates, some languages can have different word order. Use placeholders instead. +4. Don't concatenate string messages in the Vue templates, some languages can have different word order. Use placeholders instead. **Bad:**