Adding a new translation

Thank you for offering to help with translations for Off Camber Data!

In the folder we gave you, you’ll find a custom installation package (.pkg) and a translation file (.ts). This is how to use them:

  1. Backup your existing store. The version of the software we’ve provided you is different than the publicly released version of the software. It’s important to know that this may result in bugs and crashes that we hope to have fixed in final release versions. Because of this, it’s very important to backup your data before using this software. The only important file is /Users/[username]/Library/Application Support/Off Camber Data/store.ocddb. Copy this file to a safe place somewhere else on your computer.
  2. Install Off Camber Data using the .pkg from the folder. This new version should have a listing for the language you want to translate under Settings.
  3. Download and install the latest Qt Linguist program from this link.
  4. Open the provided translation file (.ts) in Qt Linguist and begin translating.
    • Qt Linguist is pretty easy to use, but to get started, the people from Qt have made a manual for how to use Qt Linguist.
    • On the left you will see a list of contexts with how many of the entries have already been translated. In the middle is the “Strings” window which lists all of the entries in the selected context. On the right (by default) is the “Sources and Forms” window. You can close this. Below the “Strings” window is the translation information of the selected entry. It shows the English source text, the translations of the text, and comments about the translation. Most translations shouldn’t need a comment. Below that is the “Phrases and guesses” window and the “Warnings” window.
    • The basic idea is that for each English word or phrase in Off Camber Data, there will be an associated entry created in the .ts file. A translation needs to be provided for each entry.
    • You’ll notice that all of the entries are question marks (“?”) to start with. When you type in a translation and save the file, the entry still will not end up in the final product. To include the translation in the final product, you need to “check” it by either clicking on the question mark (“?”) icon next to the entry, or clicking the “Mark item as done…” icon at the top. There are also keyboard shortcuts for this. Items that have either a green or yellow check mark next to them will be included in the final product.
    • For duplicate words, there are “guesses” provided, however they don’t understand punctuation. So if “Drivers” is translated to “Fahrer” then “Drivers:” might be guessed as “Fahrer”, but should be “Fahrer:” (note the extra colon at the end).
    • For words that have different possible meanings (“track” in English could refer to “race track” or “audio track” or “to keep track of something”) there is a comments field. If we know there is going to be confusion, we will try to leave a comment in the provided .ts file. However if there is still confusion, make a guess, leave a comment in the comment field, and leave the item unchecked.
    • The application will warn you about potential errors. If you translate “Drivers:” to “Fahrer” (without the colon), the question mark icon will turn to a red exclamation point (“!”) and show a warning explaining what it thinks is an error. If you are sure about the translation, you can still click an exclamation point (it will turn into a yellow check mark instead of a green check mark) to include it in the final product.
    • There are certain special characters in the code that tell the software how to handle certain translations:
      • “&Ok”. The “&” is an accelerator. It provides the underline hint for keyboard shortcuts when the user presses the “Alt” key. What ever letter comes after the “&” is the letter that will be underlined in the final product (“&Save” vs “Save &As…”). If possible, try to keep the accelerator the same as in the English source text.
      • “Choose Icon for %1”. The “%1” is a place-holder for something in the code. It could be a name or a number. If we pass it “Matt”, the final text will show “Choose Icon for Matt”. Or if we translate it to “Wähle ein Bild für %1” it will show up as “Wähle ein Bild für Matt”. Sometimes there can be multiple numbers (“Reading run %1 of %2:”). It is fine to reverse the order of these (“Out of %2 runs, reading %1:”) as long as the same number is still a place-holder for the same thing (%1 is the current run and %2 is the total runs).
      • “%n new laps”. The “%n” is similar to a “%1” but used for numbers only. There shouldn’t ever be two “%n” in the same entry.
      • “Show Lap(s)”. This is a place-holder for translating a plural. For these entries, the translation area shows two translation boxes: “[Language] translation (Singular)” and “[Language] translation (Plural)”. An example of translating this to german would be “Runde Zeigen” for singular and “Runden Zeigen” for plural. Do not include the “(s)” in the translation.
      • “%n new run(s)”. This is a place-holder for both a number and a plural. The program decides whether to show the singular or plural translation based on the value of “%n” (“1 new run” vs “3 new runs” or “1 neuer Lauf” vs “3 neue Läufe”).
  5. To test your translations, make sure the .ts file is saved. Select File > Release. This will create a .qm file next to the .ts file of the same name. While Off Camber Data is not running, copy this .qm file to /Applications/Off Camber Data.app/Contents/translations. When you start the program and select your language in the settings, this new .qm file should load with your new translations.
  6. When you are finished, send us back the translation file (.ts) and we’ll try to get it included into the next release.
  7. When we release the next version, your custom version of the software will be replaced by the standard release. If you are still translating, you will need to either make sure to stop the program from installing after it downloads the new version, or request a new special version from us.

Thank you again, and let us know if you have any trouble!