Skip to content

dekdevy/hordes-loc

Repository files navigation

hordes-loc

Community-driven text and localization repository for the browser game Hordes.io. This is a library of strings for all in-game text, user interface labels, game lore, item descriptions, etc.

This repository is a public submodule of the hordes.io sourcecode, containing a build script to compile files found in loc/ into individual language specific .json files (here are the Russian and German files for an example). Translations for any respective language do not have to be complete, as the build script will substitute the original English text for any strings that have not been translated for the language.

Resources for first timers and GitHub beginners:

Contributing

For your first translations, please fork the repository and start editing files that way. If everything looks good, your edits will be merged into the main repository.

Make sure to read all of the comments in the files and take them seriously. Do not translate placeholder texts. Do not translate unique names. If you are unsure, cross-check with other translations to see whether a word is translated or not. For example, words like party, clan, or unique names like Yggdrasil will generally not be translated to make sure players can communicate effectively regarding fundamental concepts of the game. Any text which has a $$ tag before it is also not to be translated. Please make sure to add thorough and informative descriptions of your changes in the PR (Pull Request) and commit descriptions, otherwise we will likely ignore or close your PR.

New languages and translations are always welcome, so feel free to make a PR. Any language types are welcome. In order to contribute translations, simply add them to the respective files in the loc/ directory. Make sure to check the build results (Github Action) after you make a Pull Request to correct any errors that may arise. Join our Discord if you need help.

If you want to check the status of any translation, go to this link, select the first entry, select "build (16.x)" under the Jobs section, and finally select "Run npm test". This gives us the translation status of all present languages.

Detecting loc types...
  Found 23 languages
Compiling...
  en → 534/534 100%
  fr → 460/534  86%
  ru → 459/534  85%
  it → 408/534  76%
  de → 405/534  75%
  ...
Exporting...
  en -> en.json
  de -> de.json
  ru -> ru.json
  ...

If you want to check which languages are missing in a file, scroll down to the bottom of the "Run npm test" output.

Finding missing translations...
   classes archer description → [de, tr, es]

Examples

Lets say we want to add a German translation to some of the strings for the Archer class. We navigate to loc/classes/archer.js, and find:

export default {
  // The class name
  name: {
    en: 'Archer',
    ru: 'Лучник'
  },
  // Class description, visible during character creation
  description: {
    en: 'Archers deal high single target damage and bursty...',
    ru: 'Лучники наносят высокий урон по одиночной цели и...'
  }
}

All strings are contained in objects that hold translations for any amount of languages. The default language will generally be en for English, but any language can be added. In this case, we can see the Archers name being held in the name: { ... } object, and the Russian translation is already present, along with the original English text.

To add a translation entry, find your language code (en, de, fr...) and include it with your translation text. For example, to add a German translation for the name "Archer":

  // The class name
  name: {
    en: 'Archer',
    ru: 'Лучник',
    de: 'Jäger'
  }

We do not have to add a German translation for the description string (you can if you want to, of course). It is perfectly fine if the translations are incomplete as the build system will automatically resolve the incomplete translations to English. Once you finished your translation, scroll down to the bottom of the page to find a button named Commit changes. Leave the option below as Commit directly to the master branch and click the button. Now that you're done comitting the translation, go to your fork's main page and click the button New pull request, add in a name for your Pull Request and click Create Pull Request. If everything went fine and your translation passed the syntax checks, your translations will be available in future game updates.