The big Localization/Translation Thread

— Begin quote from "larsiusprime"

So I’m thinking about possible ways to fix this along those lines.

— End quote

Extra possible solutions:

a) use always uppercase for redirects and lowercase for variables (i.e. value of $EN_SPEEDY will be replaced by contents of EN_SPEEDY key, while $mage_hero$ will be looked up in variable list). This would either require conversion of all existing variables to lowercase ($MCG, $BER etc) or extra handling. Also, no consistency here - $mage_hero$ and $MCG are both variables, but one has trailing $ as well

b) simply define priorities - look at variable list first, if not found, look at localization string list. You probably meant something like this by the lazy approach? I do not fear problems as long as the priority is clearly defined somewhere.

c) (sorting out the $ inconsistency, too) - either use $VAR$ for vars and $VAR for redirects, or introducing i.e. $$VAR for redirect, keeping $VAR for variables

But from your two choices, flag is the sensible one in terms of clarity :slight_smile:

Yeah, I think I’m going to keep things simple with the invocation. Seems to work well and the intent is explicit.

I created all these systems at separate times and they all have their own private syntax that’s semi-similar. I guess now is a good time to unify them all.

The $'s at the beginning and end of journal strings are a good example - the whole point with that is the parser needed to be able to detect the beginning and end of the variable string - so what might be best there is using the “” syntax rather than “$variable$” as it can accomplish the same thing and is consistent with the format we’re using in the localization stuff.

Only disadvantage is it would break existing mods… but we don’t exactly have a mountain of those anyway, so now seems like an appropriate time to unify this stuff.

Okey dokey everyone, I’ve finally got an official sign-up form:

http://www.defendersquest.com/fanlation.html

Basically, if you read through that page, click-through the agreement, and fill out the form with your email address, we can legally include your translation in the game. I’m going to ask all our existing volunteers as well as any new ones to go ahead and do that if you want us to be able to include your work in the official release of the game.

Our lawyer, Mona Ibrahim, has done her usual “what this means” treatment to the legal language so hopefully it will be easy to understand. The basics of it is that we can’t include anything in the game that we don’t own the rights to, so if you submit a fan translation to us you’re giving us full rights to it. In exchange, we’ll give you full credit and kudos for the work.

I’m also going to put some effort into organizing all the loose translation files that are spinning around my head. So, I’m setting up one central dropbox repository under Level Up Labs’ control. When you finish the form I will contact you at the email address you provide with access credentials to your personal dropbox folder on our repository. Dump your latest files there, and that will be my one-stop shop from now on for new translation stuffs. That way everything is in one place, and only Level Up Labs and yourself have access to content you’ve written. This should hopefully expedite the fan translation process and get things moving a little more efficiently.

I’ll also be wrapping up the last of the localization bugs and getting our first few translations out. Last I checked, the German and Czech translations are both very close to completion. There’s also Korean and Polish translations in the works that I know of, and various volunteers for French, but I haven’t checked in on any of those lately. We have full character support for almost everything Western (Extended Latin, Eastern/Central European, and Cyrillic Alphabets), and still need to add support for Asian characters. Korean is my top priority because it is written left-to-right top-to-bottom like English and is thus a lot easier to deal with than Japanese, and if Korean goes well I’ll move on to Japanese.

Hi, Lars!

Should we start compiling list of missing elements to be langified, then?

Absolutely. Anything else you want included in the next patch, too. I’ll take some time to look at those balance issues you mentioned a while back.

Okay, so just took a look at Coyot’s latest work and it seems he’s nearly done! I’m making a list right now of things that are still in English, most likely because I haven’t exposed those fields to localization yet.

The game detected only two fields that didn’t have Czech translations - “$FLAV_DAMAGE” (in data_status_effects.csv) and “$PARTY_WELL_DONE” (in data_system.csv), so the rest (presumably) is stuff I still need to do. If anyone (presumably coyot) can confirm this, then I’ll get cracking on this stuff early next week and hopefully we’ll be able to get this translation tested and out the door! If any of you speak Czech, we’d appreciate some eyeballs to proof-read/proof-play the Czech version of the game.

Czech Fan translation notes:

Save slot:
-Level
-Hours / minutes
-Date
-Button labels

Tips:
-Back/Next buttons
-All titles & tip text

Party menu:
-Stats & tabs
-Book tooltips (procedural stat descriptions)
-Skill names
-Skill descriptions
-Equip submenu
–Headers (name/attack/owner/nobody/show equipped)
–“Books”/“Swords”/etc
-Redesign submenu
–Tab w/ class name
–Class blurb
–Palette names
–“Random”

Cutscene menu:
-Make scene name fields long enough (Act IV scene 2 runs over)

Battle preview:
-Title
-Description
-“Select Challenge”
-Waves/Enemy levels/Types/reward/perfect bonus

Battle:
-“Send Next” button
-0/X waves
-X more
-Enemy wave preview (all words)
-UI
–Options Menu button
–All spells & descriptions
–Possibly HP/Psi
–Game Speed
–Character class blurbs
–Skill names
–Skill tooltip descriptions
–Defender select UI

Cutscenes:
-Back/Next/Skip buttons
The font I’m using for “storybook” cutscenes (ie, with special art, like in the first scene) doesn’t seem to have full support for the characters in the Czech alphabet. The scene with the text “They don’t wait” appears as “Na nic ne?ekají”, where the “?” is a missing character symbol - a rectangle with a ? inside. Hopefully I can just add that character, which is apparently, “č” to my list of embeds somehow.

Bonus menu:
-“X gold stars” - looks like “gold” is not properly exposed. Could probably just make this show star icons to avoid the need to translate it altogether.

That’s the main stuff I could find. Thanks for your hard work!

You’re welcome :slight_smile: .I’ll have a go at it this weekend to spot all missing texts.

Notes:
a) please replace “Level x” with “LVL x” on party screen. This will allow a bit longer character class translations. I can’t fit czech word for female librarian there, and there’s simply no suitable language workaround.
Alternatively, calculate font size on the fly?

Missing texts:

  1. Achievement popup - contents is translated, ‘Achievement!’ label isn’t
  2. Bonus menu - Select and LOCKED buttons
  3. Scene selection - last chapter shows “End a” and “End e”
  4. Party view - “Rename” button, Redesign button
  5. The whole redesign page (class name in Tab, class description, Random buttons plus pallete names)
  6. Party menu - listing my names for them just in case you meant something else:
  • first row of bottom left section (Equip/Skills button, Skills/ label
  • skill/trait header (skill names and Skill/Trait label)
  • skill description left column (Target, #hits etc)
  • “sec” in cooldown line
  • “Nobody” as value for Equipped column
  • Equip/Unequip buttons.
  • “no points available” and all other texts that appear in that line (mouseover to inspect, click to upgrade)
  • “all $weapon equipped”
  • “this class cannot equip weapons/armor”
  1. Cutscene menu:
    -Make scene name fields long enough (Act IV scene 2 runs over)
    This can be solved either by auto font-sizing or by shorter scene names in scripts.csv

  2. Battle:
    Class description (most likely the same text that’s shown in redesign page.
    –Skill names - should be sorted by party page work
    –Skill tooltip descriptions - should be sorted by party page work
    –Possibly HP/Psi - maybe not needed - I dare say that at least HP and XP are widely accepted. I’ve never heard anybody use the literal czech translation of hit points :slight_smile:
    – Next and Cash Out buttons (endless)

Thanks for the list, will get to this very soon. Giving things a quick test, it looks like the German translation is marching along nicely and Czech is all but done… seems like I’m the bottleneck there. I will be including Czech/German in the next test release, and hopefully will be able to roll them out in the next full release in version 1.0.70 or later.

Additional features I need to do to prepare:
-Tooltips or something on each language selection, giving credits and information.
-Initial start up screen on first run that asks for your language somehow.
-Some sort of solution to the EULA issue.
-Add scrolling to the language list to allow for more than a handful of options.

You should try online software such as POEditor to solve all your problem. It’s the best thing when talking about localization. :geek:

Hello!
I came to say I can do a portuguese translation, it may take some months, you know, because of school (luckily, it is ending!). I don’t need any salaries or sorts (>_>), so don’t worry about that, :wink: .

Cool! Thanks for volunteering :slight_smile: Have you read this page?

http://www.defendersquest.com/fanlation.html

Incidentally, would this be Brazilian Portuguese, Portugal-Portuguese, or another variant I’m unfamiliar with? (Any and all would be more than welcome, of course!)

— Begin quote from "larsiusprime"

Cool! Thanks for volunteering :slight_smile: Have you read this page?

http://www.defendersquest.com/fanlation.html

Incidentally, would this be Brazilian Portuguese, Portugal-Portuguese, or another variant I’m unfamiliar with? (Any and all would be more than welcome, of course!)

— End quote

Portugal-Portuguese.
And, yes.

Ok, here’s what I found as not localized in 1.0.76:

  • Title in town screen. Town name on map is fine, but inside town, it still doesn’t work
  • “Random” button for name and for colours
  • “Nobody” as owner when selling stuff
  • When selling items and all in class are used, you construct the sentence from UI_EQUIP_ALL_THING_EQUIPPED with TYPE_PLURAL instead of using i.e. UI_EQUIP_ALL_A_LIGHT - maybe you could use the latter. (Problems arise with different gender of items with the former solution)
  • MELEE/RANGED/ULTIMATE description of classes. $TYPE_* defined but not used?
  • The Skills/Equip button on party screen is very small - I guess that it most languages the translation won’t fit. Czech definitely doesn’t, by about 3-4 characters.
  • The item type to the left of the button (all types)
  • Target, Hits, Dmg, Cooldown on attack description (party screen). Oh, and Special - with right side values too.
  • when requirements for skills are shown, the skill names are not translated either.
  • Loading text that shows on savegame load and I think on game start.
  • For reasons unknown, on party screen, in Czech version only, I see BOTH $MISC_DEFEND (in yellow) and $PARTY_DEFEND (in white)in the field with defense stats of characters
  • Mod export tasks

I still need a solution for party screen class names being way too long. Maybe Name + level (shortened) on first row and class name on second?

N.B.: A HUGE thank you for including all locales in mod exports. I accidentally deleted about 4 hours of work today, but I still had the game running, exported a mod and breathed in relief :slight_smile:

Alrighty, working on that. Here’s the results:

Fixed

  • Title in town screen: Fixed.

  • “Nobody” as owner when selling stuff: Fixed.

  • Plurals/etc for “All X are equipped” – right you are. Dynamic sentence construction is bad. Replacing with full sentence flags, such as:

    “$UI_EQUIP_ALL_W_SWORD_EQUIPPED”,“All swords equipped!”,
    “$UI_EQUIP_ALL_W_STAFF_EQUIPPED”,“All staffs equipped!”,
    “$UI_EQUIP_ALL_W_BOW_EQUIPPED”,“All bows equipped!”,
    “$UI_EQUIP_ALL_A_LIGHT_EQUIPPED”,“All light armor equipped!”,
    “$UI_EQUIP_ALL_A_HEAVY_EQUIPPED”,“All heavy armor equipped!”,
    “$UI_EQUIP_CANT_UPGRADE_W_SWORD”,“You have no swords I could improve!”,
    “$UI_EQUIP_CANT_UPGRADE_W_BOW”,“You have no bows I could improve!”,
    “$UI_EQUIP_CANT_UPGRADE_W_STAFF”,“You have no staffs I could improve!”,
    “$UI_EQUIP_CANT_UPGRADE_A_LIGHT”,“You have no light armor I could improve!”,
    “$UI_EQUIP_CANT_UPGRADE_A_HEAVY”,“You have no heavy armor I could improve!”,
    “$UI_EQUIP_NO_W_SWORD”,“No swords owned!”,
    “$UI_EQUIP_NO_W_STAFF”,“No staffs owned!”,
    “$UI_EQUIP_NO_W_BOW”,“No bows owned!”,
    “$UI_EQUIP_NO_A_LIGHT”,“No light armor owned!”,
    “$UI_EQUIP_NO_A_HEAVY”,“No heavy armor owned!”,

  • MELEE/RANGED/ULTIMATE flags defined but not used - found this in recruit/redesign screen as well as in battle. Fixed.

  • Skills/Equip button - widened this a bit. Text should fit now.

  • Item type to left of button - fixed this, also fixed “This class can’t equip weapons!”, etc, text.

  • Loading text that shows on savegame load - fixed

  • $MISC_DEFEND/$PARTY_DEFEND: Fixed this. Now all fields use $PARTY_ATTACK/DEFEND, so you can specify your own tabbing as necessary to make things line up.
    *Skill names in requirements text - Fixed.
    *Target, Hits, Dmg, Cooldown, Special: Fixed.
    *Party Screen Class Names: I separated it into two text fields, and the second one can drop down to a second line if necessary. This seems to work.
    *Party Screen HP/XP: noticed these were using MISC_HP/XP rather than PARTY_HP/XP. Now you can use those to specify tabs, etc.
    *Mod export tasks: Fixed.

Other

  • “Random” button - this works in German. In your data_system.csv I see: “$MISC_RANDOM”,“random”, so I think you just missed it.

Comprehensive list of new flags as a result of these edits:
data_system.csv:

"$UI_EQUIP_ALL_W_SWORD_EQUIPPED","All swords equipped!",
"$UI_EQUIP_ALL_W_STAFF_EQUIPPED","All staffs equipped!",
"$UI_EQUIP_ALL_W_BOW_EQUIPPED","All bows equipped!",
"$UI_EQUIP_ALL_A_LIGHT_EQUIPPED","All light armor equipped!",
"$UI_EQUIP_ALL_A_HEAVY_EQUIPPED","All heavy armor equipped!",
"$UI_EQUIP_CANT_UPGRADE_W_SWORD","You have no swords I could improve!",
"$UI_EQUIP_CANT_UPGRADE_W_BOW","You have no bows I could improve!",
"$UI_EQUIP_CANT_UPGRADE_W_STAFF","You have no staffs I could improve!",
"$UI_EQUIP_CANT_UPGRADE_A_LIGHT","You have no light armor I could improve!",
"$UI_EQUIP_CANT_UPGRADE_A_HEAVY","You have no heavy armor I could improve!",
"$UI_EQUIP_NO_W_SWORD","No swords owned!",
"$UI_EQUIP_NO_W_STAFF","No staffs owned!",
"$UI_EQUIP_NO_W_BOW","No bows owned!",
"$UI_EQUIP_NO_A_LIGHT","No light armor owned!",
"$UI_EQUIP_NO_A_HEAVY","No heavy armor owned!",
"$SKILL_DESC_COOLDOWN","Cooldown",
"$SKILL_DESC_EFFECT","Effect",
"$SKILL_DESC_HITS_NUM","# Hits",
"$SKILL_DESC_SPLASH","Splash",
"$MISC_UNKNOWN","unknown",
"$MISC_NOBODY","Nobody",  

maps.csv:

"$INDEX_HOSPITAL_TITLE","The Hospital",  

New version will be 1.0.77, and I’ll start the packaging/upload procedure now. Should be up in 15 minutes or so.

1.0.77 tells me that it’s missing $ITEM_SWORD_NAME (and 7 more $ITEM_*_NAME) compared to en_US, but en_US data_items.csv (or any other file) doesn’t have these. It has them without the _NAME suffix)
Edit: including them with _NAME made the error go away.

Edit2: Are you sure that locales/en_US is up to date in 1.0.77?

More things I noticed (overflowing texts)

Mod export selection - could the radio buttons be shifted left and text width expanded? Seems there’s plenty of room to avoid breaking text.

Also, some typos - game wants $DATA_DUMP_LOCALE (and has $DATA_DUMP_LOCALES) and $DATA_MAP_FILES (has $DATA_DUMP_MAP_FILES)

Also, not related to localization - if you repeatedly toggle Skills/Equip on party screen with Azra selected, the order of books is reversed every time (other items probably work fine, certainly swords)

More things:

  • “Loading” at game start - I don’t know if it could be localized at all.
  • Skill upgrade preview still says “Target” - maybe $SKILL_DESC_TARGET could be used?
  • Same place, healer attacks, the “Special” label is localized, but right side values still aren’t (Counter, Attack, Heal, maybe more?)
  • On skill upgrade previews, longer localized texts cause a big mess (if it wraps, it shifts all lines below). I think that this needs a coding solution (change the labels to some table? Detect/sync wrapping? Detect too long texts and downsize them?) - there will be many cases of flavours like Stun getting translated to something much longer. And there already are $FLAV strings that are much longer even in en_US, so if somebody uses them in mods, it’ll break too.
  • If I switch language TO English, town shop item categories switch OK. If I switch from English to Czech, they remain English. If I restart the game with Czech selected, they’re OK.
  1. Right, the “item” csv has more than one field, so it adds the “_NAME” and “_DESC” suffixes on to your base flags. Messed me up a few times, too.

  2. Um… maybe not. Let me double check. Sometimes those files don’t always transfer correctly…
    EDIT: Presumably the english locale files are up to date in 1.0.77 -> spot-checking with WinMerge tells me that the files packaged in the installer are identical to the ones in my dev directory. What problems are you seeing?

I’ve edited the above post. Looks like it was just the $DATA_DUMP typos that made me think that something was out of date.

I am progressing with translating: already completed data_defender, data_achievement and data_bonus!

But now I saw data_enemy and scripts… oh god… I though this would only take 3-6 weeks, but now it could take 2-5 months. :shock:

Yeah, the “story content” can be a HUGE challenge, content wise. There’s a small novel contained in this game.

Honestly though, I would focus on all non-story content first. Even having a “partial” translation that just has all the gameplay and interface focused content finished can be very valuable to your language group, as there’s a big chunk of the audience that cares about the gameplay much more than the story. That way if the story content becomes a bit of a slog and takes a long time to finish, people from your language group will still be getting a benefit from the translation.

On such a big project, it might be useful to recruit some help from others. It can be difficult to maintain a consistent voice / style across multiple translators, but it’s better than drowning under a mountain of text.

One useful tip: for certain cutscenes, and enemy descriptions, there’s a significant % of overlap/duplicated text. Almost all the New Game + enemies have the exact same text as the regular versions, and large portions of certain ending cutscenes are exactly the same. You can cut down on these chunks by using redirects. The reason the english version doesn’t use redirects for these is that the original data file from before localization were all hard-coded, and so I had not alternative at the time other than to copy-paste text that was the same for different situations.