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 forge-vtt.com
Instructions for translators

Fight Goblins, not Servers™

Thank you for contributing to The Forge's translation effort!

The Forge uses a combination of keys and gettext-like strings as translation keys. Because we use different frameworks from Foundry VTT, the strings in this project may appear unusual. Please read through the instructions and examples given here below before starting your translations. You can also contact us on our Discord or via [email protected] if you have any questions.

Available Languages

Because of the number of strings involved, we will only be translating into specific languages at this time. Currently, these are English, French, Japanese, Spanish, and German. If you'd like your language to be supported, please give us a shout in the #feature-suggestions channel on our Discord.

Language Switching

It is possible to view The Forge's site in your own language, to see what a string looks like in its natural habitat. To do so, go to the My Account page and select a language from the dropdown. You can also use the profile dropdown menu on the top right when logged in. If you're logged out, the language selection dropdown will appear directly on the top right of the navigation bar, next to the login button.

Interpolation

{{ and {{- are interpolation prefixes, and }} is an interpolation suffix. Where you encounter these interpolation markers, treat the prefix and the suffix, and everything between them, as a word that should not be translated. Make sure to keep the same prefix as the source string. For example: "The goblin ate my {{homework}}." -> "Le gobelin a mangé mon {{homework}}." "The goblin ate my {{- homework}}." -> "Le gobelin a mangé mon {{- homework}}."

Component Interpolation

{ and } are component interpolation markers. They have the same rules as regular interpolation markers and can be a word or a number:{book}, {package}, or {0}, {1}, {2}, etc. Numbers indicate that a numbered component will be inserted there. Treat them the same way you would treat regular interpolation markers. For example: "The {0} ate my {1}." -> "Le {0} a mangé mon {1}." "The {creature} ate my {item}." -> "Le {creature} a mangé mon {item}."

Context

Sometimes it is useful to have different forms of the same string. In such cases, a specific _context will be added after an underscore at the end of a key. When you see this, use the context to inform your translation.

Plurals

Plurals are like a special context, where the context specifies an amount. For some languages, simply having a singular_one and plural _othertranslation is sufficient, but other options like _many, _few, _zero and more are possible. Some languages may have more complicated plural forms than English. If a string doesn't translate well into one of the keys available, please let us know by commenting on that string. For example: "GOBLIN_one": "{{count}} goblin" -> "GOBLIN_one": "{{count}} gobelin" "GOBLIN_other": "{{count}} goblins" -> "GOBLIN_other": "{{count}} gobelins" "GOBLIN_many": "a lot of goblins" -> "GOBLIN_many": "beaucoup de gobelins"

Nesting

This is rare, but sometimes we reference one string from inside of a different one. This can be particularly helpful when combined with plurals. $t( and )are the nesting prefix and suffix. If you encounter them, treat the prefix and the suffix, and everything between them (including other markers), as a word that should not be translated. For example: "There, in the distance! I see $t(GOBLIN, {\"count\": {{hordeSize}} })!" -> Là, au loin ! Je vois $t(GOBLIN, {\"count\": {{hordeSize}} }) !

Consistency

Please maintain consistency with the source language, English, as much as possible, and reference the accompanying glossary information to ensure consistency between components.

Project maintainers User avatar kakaroto User avatar rikmarais User avatar Eranziel
Translation license MIT License
Translation process
  • Translations can be made directly.
  • Translation suggestions can be made.
  • Any authenticated user can contribute.
  • The translation uses monolingual files.
  • The translation base language is editable.
Source code repository https://github.com/ForgeVTT/forge-translations.git
Repository branch main
Last remote commit Add new translation keys 1f73669
MJ authored a month ago
Last commit in Weblate Translated using Weblate (Spanish) 10dae5e
User avatar Miel authored 3 weeks ago
Weblate repository https://weblate.foundryvtt-hub.com/git/the-forge/common/
File mask locales/*/common.json
Monolingual base language file locales/en/common.json
yesterday

String statistics

Strings percent Hosted strings Words percent Hosted words Characters percent Hosted characters
Total 2,148 3,840 26,202
Source 358 640 4,367
Translated 59% 1,273 66% 2,550 66% 17,432
Needs editing 12% 278 13% 508 12% 3,303
Read-only 0% 0 0% 0 0% 0
Failing checks 9% 211 14% 544 14% 3,713
Strings with suggestions 2% 45 1% 73 2% 548
Untranslated strings 27% 597 20% 782 20% 5,467

Quick numbers

3,840
Hosted words
2,148
Hosted strings
59%
Translated
and previous 30 days

Trends of last 30 days

+1%
Hosted words
+100%
+1%
Hosted strings
+100%
+4%
Translated
+55%
+33%
Contributors
+100%
User avatar anonymous

Suggestion added

yesterday
User avatar anonymous

Suggestion added

yesterday
User avatar anonymous

Suggestion added

yesterday
User avatar anonymous

Suggestion added

yesterday
User avatar anonymous

Suggestion added

yesterday
User avatar None

Repository rebase failed

Rebasing (1/4)
Auto-merging locales/fr/common.json
CONFLICT (content): Merge conflict in locales/fr/common.json
error: could not apply e43e150... Translated using Weblate (French)
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".
Could not apply e43e150... Translated using Weblate (French)
 (1)
3 weeks ago
User avatar None

Component locked

The component was automatically locked because of an alert. 3 weeks ago
User avatar None

Alert triggered

Could not merge the repository. 3 weeks ago
User avatar None

Repository rebase failed

Rebasing (1/4)
Auto-merging locales/fr/common.json
CONFLICT (content): Merge conflict in locales/fr/common.json
error: could not apply e43e150... Translated using Weblate (French)
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".
Could not apply e43e150... Translated using Weblate (French)
 (1)
3 weeks ago
User avatar None

Suggestion removed during cleanup

3 weeks ago
Browse all component changes