The translation is temporarily closed for contributions due to maintenance, please come back later.
The translation was automatically locked due to following alerts: Could not merge the repository.
Please sign in to see the alerts.

Overview

Project website github.com/vatesfr/xen-orchestra/blob/master/CONTRIBUTING.md
Instructions for translators

Internationalization (i18n) and Weblate usage

[!NOTE] Only EN and FR locales are fully supported by the XO team.

Internationalization of the app is done with Vue-i18n.

Sources of truth are en.json files, that's why this locale is read-only in Weblate.

Informations about the workflow

Adding a new locale

When you add a new locale, there might be a delay before the new file is available in the /web-core/lib/locales/ folder, as the translations' PR is generally reviewed and merged once by the end of the month, before the technical release.

Adding new translations

When adding new translations in Weblate, an automatic PR is created to update the translation files in the repository.

Weblate checks regularly for new translations and updates the PR accordingly.

When adding new translations, please make sure to follow the [](#general-guidelines-when-adding-translations-in-weblate) below to ensure consistency across all locales.

General guidelines when adding translations in Weblate

Punctuation

Strings punctuation SHOULD be included in the translation key.

This allows better adapting the punctuation to the rules of the target language.

For example:

  • in English, interrogative sentences end with a question mark with no space before it
  • in French, interrogative sentences end with a question mark with a space before it
  • in Spanish, interrogative sentences start with an inverted question mark and end with a question mark with no spaces

[!IMPORTANT] Since HTML is not accepted in translations, you must use a non-breaking space character () instead of  

Example

English
{
  "confirm": "Confirm",
  "confirm?": "Confirm?",
  "warning": "Warning",
  "warning!:": "Warning!"
}
French
{
  "confirm": "Confirmer",
  "confirm?": "Confirmer ?",
  "warning": "Avertissement",
  "warning!:": "Attention !"
}
Spanish
{
  "confirm": "Confirmar",
  "confirm?": "¿Confirmar?",
  "warning": "Advertencia",
  "warning!:": "¡Atención!"
}

Pluralization

When a number is involved, the translation MUST use VueI18n pluralization system.

Example

English
{
  "n-car": "You have one car | You have {n} cars"
}

French

{
  "n-car": "Vous avez une voiture | Vous avez {n} voitures"
}

Handling zero in pluralization and custom plural forms

When handling the pluralization of zero, you should provide a separate translation value for the zero cases.

Example

{
  "item-count": "You have no items | You have one item | You have {n} items"
}

French

{
  "item-count": "Vous n'avez aucun article | Vous avez un article | Vous avez {n} articles"
}

To use a custom plural form for complex translations, please refer to the VueI18n custom pluralization documentation.

[!NOTE] You can check the pluralization rules for each language on the info page of the locale in Weblate (e.g. https://translate.vates.tech/projects/xen-orchestra/xen-orchestra-6/en/#information).

Line breaks

Some translations contain a {newline} placeholder. It represents a line break that will be displayed in the application.

When translating, keep {newline} as-is in your translation and place it where the line break should appear.

[!IMPORTANT] Do not translate, modify, or remove {newline}.

Example

{
  "page-please-wait": "Hold tight, astronaut! The page is getting ready to take off.{newline}We're just aligning the thrusters and calibrating the systems."
}

Linked translations

Sometimes we may need to add the same translation for different keys, because in one language the translation is the same, but in another language it may differ due to context (for example, in french the gender differs depending on the context).

If the translation in your language for this new key is the same as an already existing one, to avoid duplications you can use linked translations with the syntax @:<key>.

Example

{
  "save": "Save",
  "save-changes": "@:save"
}

This provides the option to override the save-changes translation in some locales if needed, while keeping the same translation as save by default.

Project maintainers User avatar olivier.floch
Translation process
  • Translations can be made directly.
  • Translation suggestions can be made.
  • Translations are reviewed by dedicated reviewers.
  • Any authenticated user can contribute.
  • The translation uses monolingual files.
  • The translation base language can not be edited.
Source code repository https://github.com/vatesfr/xen-orchestra.git
Repository branch master
Last remote commit test(backups): add unit test to check #9667 (#9670) 06c393375
Pierre Brunet authored 22 hours ago
Last commit in Weblate feat(web-stack/i18n): update Slovak a8e76fec1
User avatar p-bo authored 2 days ago
Weblate repository http://translate.vates.tech/git/xen-orchestra/xen-orchestra-6/
File mask @xen-orchestra/web-core/lib/locales/*.json
Monolingual base language file @xen-orchestra/web-core/lib/locales/en.json
5 minutes ago

String statistics

Strings percent Hosted strings Words percent Hosted words Characters percent Hosted characters
Total 19,971 63,525 379,113
Source 951 3,025 18,053
Approved 1% 69 1% 155 1% 925
Waiting for review 61% 12,360 57% 36,206 56% 215,764
Translated 66% 13,380 62% 39,386 61% 234,742
Needs editing 1% 246 1% 500 1% 3,334
Read-only 4% 951 4% 3,025 4% 18,053
Failing checks 1% 241 1% 330 1% 2,939
Strings with suggestions 1% 36 1% 121 1% 649
Untranslated strings 31% 6,345 37% 23,639 37% 141,037

Quick numbers

63,525
Hosted words
19,971
Hosted strings
66%
Translated
and previous 30 days

Trends of last 30 days

+17%
Hosted words
+100%
+16%
Hosted strings
+100%
+4%
Translated
+62%
+27%
Contributors
+100%
User avatar olivier.floch

Comment resolved

Comment resolved 5 minutes ago
User avatar olivier.floch

Comment added

@xiscorender @luisrm for linked messages like this one (@:<key>), it's necessary to use the original key. So in this case @:status:disabled. You can find more information here: https://translate.vates.tech/projects/xen-orchestra/xen-orchestra-6/#information I'll fix the issues directly on our side this time. Thank you for contributing :)

8 minutes ago
User avatar None

Component locked

The component was automatically locked because of an alert. 2 days ago
User avatar None

Alert triggered

Could not merge the repository. 2 days ago
User avatar None

Repository rebase failed

Rebasing (1/44)
Rebasing (2/44)
Rebasing (3/44)
Rebasing (4/44)
Rebasing (5/44)
Rebasing (6/44)
Rebasing (7/44)
Rebasing (8/44)
Rebasing (9/44)
Rebasing (10/44)
Rebasing (11/44)
Rebasing (12/44)
Rebasing (13/44)
Rebasing (14/44)
Rebasing (15/44)
Rebasing (16/44)
Rebasing (17/44)
dropping f57fbe0e3c4421a7cd796ce9d1d39a337b65ed51 feat(web-stack/i18n): update French -- patch contents already upstream
Rebasing (18/44)
Rebasing (19/44)
Rebasing (20/44)
Auto-merging @xen-orchestra/web-core/lib/locales/es.json
CONFLICT (content): Merge conflict in @xen-orchestra/web-core/lib/locales/es.json
error: could not apply 40cacfa25... feat(web-stack/i18n): update Spanish
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Could not apply 40cacfa25... feat(web-stack/i18n): update Spanish
 (1)
2 days ago
User avatar None

Changes committed

Changes committed 2 days ago
User avatar None

Changes committed

Changes committed 2 days ago
User avatar p-bo

Translation added

2 days ago
User avatar p-bo

Translation added

2 days ago
User avatar p-bo

Translation added

2 days ago
Browse all component changes