Strange Eons
Guide for Translators

Send Feedback      Home Page > Strange Eons > Guide for Translators

Introduction
Translation Status
How to Create a New Translation
General Guidelines for Translators
Advanced Topics
 

Introduction

Strange Eons uses two different kinds of localization: the game language and the user interface language. The game language determines the language used on the cards and characters created by the program. The user interface language is the language that the windows, menus, buttons, and other controls are presented in. The two languages are independent. For example, one could use a Portuguese user interface to create cards for a Spanish game.

Strange Eons Text Resource Editor

It is strongly recommended that anyone working on a translation or making other changes to the Strange Eons text resources use the SE Text Resource Editor. The SE Text Resource Editor is part of the Plug-in Authoring Kit, which can be downloaded from the main page.

The editor has several features that are helpful when preparing a translation:

  1. It understands the rules SE uses to choose text encodings and will choose the correct encoding automatically. This prevents the problems translators have had in the past with their accents not appearing as expected on other systems.
  2. It will automatically convert \uxxxx escape sequences into proper characters when you read files in, and then convert accents and special characters back into \uxxxx escape sequences when the file is saved.
  3. It includes special tools for dealing with properties files. For example, it can identify all of the keys that you have not translated in your .properties file, and it can reconstruct your .properties file to look like the default (English) version again (but it keeps the translated text, of course).
  4. It can compress and decompress SE spelling dictionaries.

How to Create a New Translation

  1. Decide what kind of translation you want to create. There are 4 areas that you can work on as a translator:
    1. a new game language (the language used on cards)
    2. a new user interface dialect (the language used in the editor for menus, buttons, and other controls)
    3. a new help page translation (a small subset of the SE web site that provides basic help for working with SE)
    4. the spell-check components for a translation
    You can create a new translation that includes some or all of these elements. You can also volunteer to work on any of these that are missing for an existing language.
     
  2. Get in contact with me. Use the feedback form to let me know you are working on a new translation. Make sure you include a valid email address so I can update the list of active translations and add your address to the translator's mailing list. If there is already a team working on that translation, I will send your name and contact information to the lead translator and the team will contact you to let you know where they need help. If you have comments or corrections about a translation, I will send those on to the translation team as well.
     
  3. Download the most recent version of Strange Eons available (download the "Experimental Release" if there is one).
     
  4. Download the Plug-in Authoring Kit so that you have the SE Text Resource Editor (it is in the tools folder).
     
  5. Unpack the Strange Eons resources. See the instructions on the Customization page. Make sure that you unpack the user interface resources if you are working on a user interface translation.
     
  6. Locate the folder where the resources were unpacked. Have a look around to get familiar with the contents and structure. Some of the files you should familiar with: settings.txt and the various files in the text subfolder. If you want to work on a local spelling system, you may also need to be aware of the phoneme_rule_XX files in the ca/cgjennings/text/spelling folder of the JAR file (rename the .jar to .zip and use an archive tool to unpack these).
     
  7. Follow the instructions below for the specific areas you want to translate.
     

Adding a New Game Language

  1. Determine your two-letter international language code. You can find a list of language codes here (the two letter code is the rightmost column). Another method is to open a command prompt (shell), change to the directory of the SE JAR file and run it with the following command:

        java -jar strange-eons-xxx.jar --debug

    A bunch of text will be printed as SE starts. Look for a line like this:

        Using EN as the game language (the system language is XX).

    Assuming your operating system is running in the language you are translating to, the XX above will instead be the code for your language.

    NOTE: For historical reasons, SE uses capital letters for game language codes, and lowercase letters for user interface and other language codes.
     
  2. Modify text/languages.txt to add your language to the list of languages. Also add the appropriate credits-XX, and settings-XX lines.
     
  3. Create a new folder text/XX, using your language code in place of XX. Copy the contents of the English directory (text/EN) into this folder. Copy the single file settings.txt from the Spanish translation (text/ES) into this folder, overwriting the English copy.
     
  4. Open the new copy of settings.txt in the SE resource editor. Modify the settings keys to point to the data files in your new translation. So for example, ability-list = text/ES/abilities.txt becomes ability-list = text/XX/abilities.txt.
     
  5. NOTE: The Spanish settings file contains the minimum number of settings changes needed for the Spanish version. You may need to add other lines. Anything that can appear in the main settings.txt file or in card-layout.txt can also be set here, and anything you define in this file will override the definition in the main settings.txt when your game language is active.
     
  6. The EN translation is the default, and the other translations are defined in terms of how they are different from the EN translation. One benefit of this is that you can work on the translation in pieces and the program should still run correctly, but it will use the English settings for anything that you have left out. You can have a look at some of the existing translated files to get an idea of what you need to do.
     
  7. The data files (in particular, card-text.txt) allow you to control where labels like "Fixed Possessions" get printed on the game card. Sometimes you will have to adjust these, or make the text smaller, in order to get the translation to fit. This is most likely when working on cards like the Investigator card, which have a complex layout. Usually, though, the value in the English file works fine. When you don't need to change the setting, it is a good idea to delete these lines as they waste space and make navigating the file more difficult. (Remember that if you delete these lines, the equivalent line from the English file gets used instead, so if the line is the same in your file, it is redundant. If you change your mind later, you can always add the lines back in.) The exception to this rule is any line that defines actual text. It is best to leave this in, in case you decide that it should be re-worded later.

     
  8. Fire up the SE Resource Tool and start translating. See the general editing instructions below for more information.
     

To Create a New User Interface Dialect:

  1. The user interface localizations are stored in /text/interface. The user interface supports translations into languages and into dialects of languages. The default user interface is Canadian English. This is stored in  /text/interface/eons-text.properties. Other translations are stored in the same folder in files with names of the form eons-text_xx.properties or eons-text_xx_YY.properties, where xx is the country code (in lowercase here, unlike above), and YY is the dialect code (a standard two-letter country code, in uppercase). To create a translation for a different language, create a copy of the base translation (eons-text.properties) with a name of the form: eons-text_xx.properties, where xx is your language code (e.g., de, es, fr). (See above if you need help determining your language code.)
     
  2. If there is not already a file for your language:

    Add a stub file to indicate the dialect (based on your country) that you will use. The stub file will not contain any strings, because you will put them in the base language for your file. (Strange Eons will fall back on the base language file, and then on the default language file, when a dialect does not define a particular string.) Copy one of the existing stubs and edit the comments to reflect your language.

    If a file for your language already exists, and you are adding a new dialect:

    Add a new properties file with a name of the form eons-text_xx_YY.properties, where xx is your language code and YY is the country code for your new dialect. In this file, define only those strings which are different from the default file for your language (eons-text_xx.properties) in your dialect.

    Example

    Jean decides to create a French translation. He lives in Rouen, France. Let us suppose that there is no French translation yet. So he creates the file eons-text_fr.properties and places his French translation there. He also creates a stub file eons-text_fr_FR.properties which is empty except for some comments (see the en_CA dialect for an example). Now, Zoé decides to create a translation for her dialect of French. She lives in Montréal, Canada. So she creates the dialect file eons-text_fr_CA.properties and adds definitions for the strings which are different from the base fr file in Canadian French.
     

  3. Register the new dialect and add credits by editing /text/locales.txt.
     

Adding Help Page Translations

Strange Eons includes a simple help mechanism. Help files are simply web pages located on the Internet (part of the Strange Eons web site). When a help page is requested, the user's web browser will be started and asked to display the appropriate URL. A mechanism allows translated versions of the web pages to be used automatically if they are available.

Currently, the following help pages are available under this system:

  1. The Frequently Asked Questions page
  2. The Tag Table page
  3. a welcome page for visitors who are non-native speakers of English

The welcome page is a greatly shortened version of the Strange Eons home page. It explains briefly what Strange Eons is and how to download and run it. The page is meant to be a bare minimum introduction and set of instructions so that it won't need to be updated very often. The master version of this page (in English) is located here.

Creating a new help page translation is fairly easy. Just save a copy of the page and use your HTML editor or the SE Resource Editor to create your translation. When you are done, zip up the translated web pages and email them to me.

Adding or Improving Spelling Support

See the file text/README-SPELLING.txt in the SE resources for information on the spelling subsystem.

General Guidelines for Translators

Working With Files

  1. When working with SE text files, it is highly recommended that you use the SE text resource editor. If you are an advanced user and wish to use a different tool, follow these guidelines:
     
    1. Make sure that all word wrapping is turned off.

    2. All game language text files should be saved using the ISO-8859-15 encoding. Alternatively, if the file extension is .utf8 you may use UTF-8 encoding.

    3. All user interface text files must be saved using the ISO-8859-1 (not -15) encoding. Use Unicode escapes (see below) to insert characters that are not available in that encoding.

    4. All spelling word lists should be saved using the UTF-8 encoding with the .utf8 extension. Follow the convention of adding _cpl to compressed word lists, and ensure that the settings for the word list correctly indicate whether it is compressed. If using the SE resource tool, you should start it with a large maximum memory size, as sorting and compressing/decompressing large word lists requires a lot of memory to keep track of the information needed to undo/redo.
       

  2. You don't have to complete the translation all at once. You can work on it in sensible chunks and send me an update whenever you complete a chunk. When you have a new translation chunk ready, zip up the relevant files and email them to me.
     
  3. If your language requires special characters that are not present in the special card fonts, you have two choices. You can contact me and I will do my best to add the needed characters (if I can), or, if you know how, you can add them yourself and send me the updated fonts.
     
  4. Generally, lines that start with a # are comments that will be ignored by Strange Eons. Most files are self-documenting: read the comments in the file to see what the file is used for and how to format the lines.
     
  5. You can insert any Unicode character in a text file using an "escape sequence": type \uxxxx, where xxxx is the hexadecimal code of the character. For example, \u2014 would produce an em dash (—). If you are using the SE Resource Editor, you can just enter the character (use the Insert Characters... dialog if you can't type it). It will convert to the escape sequence for you if needed.
     
  6. You can split up long lines in a text file by ending the line in a backslash. The string will continue onto the next line, but any spaces at the start of the following line are ignored. If you need to place a space at the point where you are breaking the line, place it before the backslash. And make sure that nothing comes after the backslash that breaks the line (in particular, be careful not to have any spaces).
     
  7. Most user interface strings can use HTML tags if you write <html> at the start of the text. For example, you could split the "+ Sanity" button over two lines for the German version by defining it as, e.g.: ie-b-sanity = <html>Gesundheit<br>Geistige.
     
  8. Where you see a notation like %s or %d, it means that some value will be inserted at that point, like a name, number, or a file name. In some cases you may want to move the order of these items around to make a more natural translation. The arguments (the things that will replace the notations) are numbered according to the order of the notations in the original text. You can specify a different order by inserting n$ after the %, where n is the number of the argument in its original order. This sounds confusing, so here is an example:

    Original text:
    The %s dog has a toy %s.        (e.g., The happy dog has a toy ball.)

    Reordered text:
    The dog with the toy %2$s is %1$s.        (e.g., The dog with the toy ball is happy.)

    The original text could also be written:  The %1$s dog has a toy %2$s.
     

Suggestions for Translating Game Materials

  1. Use the official text and wording from your game edition. If you are missing a particular expansion, you can just leave that text in English for now.
     
  2. More card types have essentially the same layout as their English counterparts. In some cases (the most common is the Investigator card), the layout has been modified to get the translated material to fit. You can fix this by cusomizing settings from card-lay in the settings.txt file for your language. TIP: If your display is large enough, resize the editor window until the edited card is the same size as a real card. Then hold a real card up next to the display and compare them.
     
  3. Double-check that a card name is what you think it is before translating. Compare the list price (if any), game effects, etc., to be sure. If you cannot figure out what the matching card is in your edition, let me know and I'll try to help you.
     
  4. Be mindful of your spelling, especially the spelling of Cthulhu Mythos names. It won't hurt to run your translation through a spelling checker when you are done, especially if you are prone to making typing or spelling mistakes. If you are working with a team, you can proofread each other's work.
     
  5. Keep the translated names in the same order as the original English names. This will makes things easier if your files need to be updated by a non-native speaker, and makes it easier for you when new content is added. Most lists are sorted before they are displayed, so the order you place them in will be ignored anyway.

I certainly don't consider myself to be the final word on any of this. If you have tips or suggestions for your fellow translators, please share!

Advanced Topics

Forcing a Language Set From the Command Line

You can choose the languages you want to use from the preferences dialog. Sometimes, though, it is convenient to be able to set the language without changing your settings. For example, you might want to write a script to start the program in English for comparison purposes. You can request a particular language using the --lang and --uilang command line options. For example, a command of the form:

java -Xmx512m -jar strange-eons-xxx.jar --lang fr --uilang en_gb

would request French cards and a UK English user interface.


Using Multiple Languages at the Same Time

You cannot switch to another language within a single instance of SE. However, you can run more than instance of SE at a time, and use a different language for each. To do this:

  1. Start SE and open the Edit | Settings... dialog box.

  2. Under Miscellaneous Options, make sure that Limit to Single Instance is not checked.

  3. Change the language settings to whatever you want the second copy to use.

  4. Press OK to accept the changes.

  5. Start a second instance of SE. It will run in whatever language you selected. (You could also start it with a given language from the command line as described above.)

  6. Repeat as often as desired.


Dialects With Pluralization Rules Different from English

In English, and many other languages, only two word forms are used in to construct plurals: a singular form and a plural form. However, many languages, such as languages in the Slavic, Semitic, and Celtic families, have more than two plural forms or use different rules when deciding which form to use. Strange Eons can support these languages, although I must be contacted because support requires writing a small algorithm that can select the appropriate form.

Here is the general procedure:

  1. Get in touch with so we can discuss the particular rules for your dialect. We will agree on a particular order that the different forms should come in. For example, suppose your language has 2 plural forms and 1 singular form. The singular form is used only with 1, one plural is used only with 2, and the other plural is used with everything else. We might arrange it so that the plural for 2 is the "first" plural, and the other plural is the "second" plural. (There is only one singular, so it is the "first" singular by definition.)
     
  2. When translating text that uses different keys for singular and plural, if the form is not the "first" one of its kind, add a number (2 for second, 3 for third, and so on) to the key right after the part that distinguishes between singular and plural in the original keys. For example:

    common-item-text = Common Item
    common-item-pl-text = Common Items

    becomes:

    common-item-text = [first plural form, typically singular]
    common-item-pl-text = [second plural form]
    common-item-pl2-text = [third plural form]
    common-item-pl3-text = [fourth plural form]
    etc.

Pluralizers have already been added for the languages currently included with the application. However, most of these do not yet define "-pl2" keys (for languages that need them), so they will generate incorrect plurals in some cases. (When a "-plX" key is missing, the X-1 key is used instead. See the Release Notes for 540 (2.1 alpha 2) for details.

Label Aspect Ratio

Left-justified labels which are printed in the title font (for example, the skill and home labels on investigator sheets) may have their aspect ratio altered by supplying a key and value of the form:

[region-key-base-name]-ratio = ratio of width to height

For example:

home-text-region = 31,438,75,42
home-text-ratio = 0.75


Arbitrary Extra Regions on Front Investigator Sheet

You can add arbitrary extra regions to investigator cards. The German translation uses this to split the Sanity label over two lines. The regions are numbered from 1 to the value of number-of-extra-regions. For each region, you must include a set of keys for the type, content, region, typesize, and colour; e.g.:

inv-number-of-extra-regions = 2

inv-extra-1-type = left
inv-extra-1-text = Example Extra Region 1
inv-extra-1-region = 0,0,100,100
inv-extra-1-pointsize = 16
inv-extra-1-colour = black

inv-extra-2-type = center
inv-extra-2-text = Example Extra Region 2
inv-extra-2-region = 100,0,100,100
inv-extra-2-pointsize = 12
inv-extra-2-colour = red

The possible values for the type of an extra region are:
    left : text is left-justified in the title font
    center : text is centered in the title font
    body : text is left-justified in the body font

Colours can be any colours (not tints) defined in the settings file, which in the standard files means at least black, blue, red, green, yellow, or purple. You may define additional colours by adding them to your settings; the key name should end in -colour and the format is the same as for the existing colours (a hexadecimal integer in RRGGBB format).

January 10, 2007  — Updated January 10, 2010