Jump to content
The Dark Mod Forums
Sign in to follow this  
Tels

Translating the TDM GUI

Recommended Posts

Moin!

 

The language barrier might prevent a few people from either playing TDM; or enjoying it like they should. For someone fluent in English, this problem doesn't even exist, or cross their mind - but just imagine that TDM is released in Norsk only :-) Anyway, a lot of people here are not English native speakers, and they reported problems understanding texts, esp. if it are longer texts.

 

We already have a few FMs that were translated by kind people to other languages, but so far neither the menu, nor the shop, or the ingame HUD have been translated. Since the longer we wait the worse the problem will get, I thought I'd make a head start on this create the nec. code support.

 

That turned out to be a lot more work than anticipated (isn't it always? :) , but apart from two (rather large, I must admit) technical problems, it is now almost done.

 

Here is what I did:slimmed down the D3 supplied english.lang from >5400 strings to the about 180 we actually used

  • added literally hundreds of strings that we did need to translate, but actually had hardcoded all over the place in our def files, the gui files, AND in the C++ code
  • fixed all the places in the def, gui etc files where we had hard-coded strings
  • to test that the translation basically works, added an example German translation (it's about 95% complete)
  • created a strings/all.lang that contains all the strings for all languages, which makes it easier to see if something is missing or untranslated. Also wrote a script that converts this UTF-8 file to the individual .lang files, plus checking the format, warning about double entries, converting the encoding to ISO-8859-1 etc. Atm it also transcribes German Umlauts from "ä" to "ae" (see below)
  • fixed a few dozend places in the code where the code was reading out strings and pushing them into the GUI untranslated (so you ended up with "#str_12345" instead of "Kompass")
  • fixed the problem that key binds caused, namely they tried to find the item/category by the english name (e.g. Compass), but the item or category was now named "#str_12345". Made it work with "Lantern" as well as "#str_02398", too.
  • Added a way to switch the language in the menu. This requires NO restart when switching between western languages, but requires one to switch from/to Russian (due to D3 bugs with fonts).
  • FM specific translations are supported via strings/fm/english.lang etc.
  • The translation code is in its own object, so it can be more easily extended/used.
  • The GUI has been converted from choiceDef (which don't work with foreign characters) to windowDef + code handling the changes
  • Russian fonts have been added.
  • The menu font Carleton uses now the special character map and has thus Umlauts and accented chars.
  • Character remapping has been implemented (so we can have Czech and Polish etc. at the same time)

Plus a lot of smaller tasks that I already forgot :)

 

The entire ordeal is tracked here: http://bugs.angua.at/view.php?id=2779 (including a few child-bugs)

 

Things that are not working yet:

 

* Only a few languages are done (German, Italian, French, Polish, Portuguese, Russian, Czech and Spanish are done).

 

Here is the current status:

 

czech.lang...		  42324 bytes, 1135 entries, 145 ( 12.8%) not yet translated.
english.lang...		41688 bytes, 1135 entries.
french.lang...		 42532 bytes, 1135 entries,  60 (  5.3%) not yet translated.
german.lang...		 43531 bytes, 1135 entries,  64 (  5.6%) not yet translated.
italian.lang...		45029 bytes, 1135 entries,  62 (  5.5%) not yet translated.
polish.lang...		 41912 bytes, 1135 entries, 149 ( 13.1%) not yet translated.
portuguese.lang...	 43431 bytes, 1135 entries, 107 (  9.4%) not yet translated.
russian.lang...		44077 bytes, 1135 entries,  77 (  6.8%) not yet translated.
spanish.lang...		43119 bytes, 1135 entries,  41 (  3.6%) not yet translated.

 

Since v1.07, we have also fixed a lot of D3 bugs (font rendering, font loading) and improved the translations even further.

 

Last updated: 2012-02-28

 

 

Screenshots follow in the next post:


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites

As promised:

 

post-144-130885708433_thumb.jpg post-144-130885710014_thumb.jpg post-144-130885711152_thumb.jpg

post-144-130885712584_thumb.jpg post-144-13088571373_thumb.jpg post-144-130885715442_thumb.jpg

post-144-131635239718_thumb.jpg post-144-131635244751_thumb.jpg post-144-131635176798_thumb.jpg

 

Last updated: 2011-09-18


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites

Quite a task!

 

I remember internationalizing some project in my past. It's a ton of work when done after-the-fact.

 

Thanks, Tels.

Share this post


Link to post
Share on other sites

Here are two more, showing the shop, and the French variant:

 

post-144-130885845491_thumb.jpg post-144-131635208924_thumb.jpg

 

Last update: 2011-09-18


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites

Looks like German to me.

 

Don't the other languages all look like German? :D What I meant was "the shop _and_ another shot in french" :) Thus the shop is indeed in German, but the other one is in French (it is very incomplete as you can see).


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites
The language barrier might prevent a few people from either playing TDM

 

darkmod laggy as fuck , actually high system requirements is preventing more people from playing TDM

 

so i prefer team members to work on code cleanup and optimization

 

 

 

 

 


Proceed with caution!

Share this post


Link to post
Share on other sites

darkmod laggy as fuck , actually high system requirements is preventing more people from playing TDM

 

so i prefer team members to work on code cleanup and optimization

 

Congratulations, you are the third person to enter my Ignore List on this forum. Good luck with the rest of your life.

  • Like 1

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites

Related to troll:

 

darkmod laggy as fuck , actually high system requirements is preventing more people from playing TDM

 

so i prefer team members to work on code cleanup and optimization

 

You're used to the antiquated Dark engine playing at a constant >=60 fps.

 

Engines over 12 years old will (quite obviously) run fast and smooth on new computers.

Add sophisticated AI, Robust 100% dynamic lighting, advanced shaders, real physics engines, high-poly environments, 3D rendered skyboxes, alpha-tested textures, ragdoll physics, and stim & response handshakes. Then see if an engine isn't "laggy as fuck".

 

That's the way it is. If you demand a road with ultra-exciting twists and turns, don't be surprised that your rusted-out car can't maneuver it ultra-fast.

 

 

 

AND on topic:

 

I study all of the wrong languages to help ye with localization. Except german, but I suspect you're a lot more fluent than this little American is. :P This is a pretty big task.

 

[edit] And, while you said it might be early, this is a nice easy thing for someone in the community to volunteer for.


yay seuss crease touss dome in ouss nose tair

Share this post


Link to post
Share on other sites

Congratulations, you are the third person to enter my Ignore List on this forum. Good luck with the rest of your life.

damn :( who was the first two ?

 

Related to troll:

 

i'm not troll

 

Add sophisticated AI, Robust 100% dynamic lighting, advanced shaders, real physics engines, high-poly environments, 3D rendered skyboxes, alpha-tested textures, ragdoll physics, and stim & response handshakes. Then see if an engine isn't "laggy as fuck".

 

well far cry game (2004 year too) have that all except stims and it can render map with 30K entities (or more) and it playable on P3-650 mhz

 

i don't blame TDM team at all ! i blame this lazy guy called john carmack , who didn't write his engines from scratch,he modified previous (idtech1->2->3->4 from 1996 to 2004) so idtech4 is advanced idtech1 engine fork

 

 

 

 

 

 

 

 

 

 

 


Proceed with caution!

Share this post


Link to post
Share on other sites

I study all of the wrong languages to help ye with localization. Except german, but I suspect you're a lot more fluent than this little American is. :P This is a pretty big task.

 

[edit] And, while you said it might be early, this is a nice easy thing for someone in the community to volunteer for.

 

Hm, maybe we could add a Latin translation? I wouldn't be able to read it, but it sounds like fun. (You know, like when you switch Wikipedia to Swedish and dieroll laughing on the floor :laugh:

 

Anyway, as for volunteering, you are right, we need someone to the other languages.

 

So far I got from 7upman (Thanx!) a few files, and he will also proofread the German translation (and fix my mistakes :)

 

He sent me a french translation from Hyeron (already added about 40 strings from it, sorry that it took almost two years before we used your work, Hyeron!) and french/italian/spanish from original D3. These will not give us more than a handful strings (like for key names or things like "fullscreen"), but it is better than nothing :)

 

So we still need someone who can complete any other language than English or German. European languages are prefered, since D3 cannot do Unicode and we could f.i. not use any Asian languages, or anything that deviates too much like Cyrillic or greek. For these languages we need a new font first.


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites

Shadowhide response:

 

 

 

darkmod laggy as fuck , actually high system requirements is preventing more people from playing TDM

 

so i prefer team members to work on code cleanup and optimization

 

 

damn :( who was the first two ?

 

 

 

i'm not troll

 

 

 

well far cry game (2004 year too) have that all except stims and it can render map with 30K entities (or more) and it playable on P3-650 mhz

 

i don't blame TDM team at all ! i blame this lazy guy called john carmack , who didn't write his engines from scratch,he modified previous (idtech1->2->3->4 from 1996 to 2004) so idtech4 is advanced idtech1 engine fork

 

I know this has been tried before, but here we go again: Can't you try to express your opinions in a civilised manner instead of constantly pissing other people off?

 

A language barrier is no excuse for rudeness.

 

And calling John Carmack, one of the most innovative and influental persons when it commes to FPS/3D gaming, the first major engine coder who open-sourced his engines, lazy?

 

The guys behind FarCry developed the engine (= had the whole source, something that the TDM team has not) just for that: Open beaches and such. And the minimal requirements was ~1 Ghz CPU. On a 650 Mhz machine, how did that work? 320 x 200 and everything OFF?

Plus you forget what can't be seen. Ever thought about the more komplex AI & Physics that TDM uses?

 

 

 

 

 

 

@Tels

 

Sorry for the Offtopic reply to SH, but I couldn't resist.

Unfortunately I cannot add anything to the Translations.

German and English are taken, and my Tengwar and Klingon aren't what they used to be!

I could pitch in when it comes to Latin though !

Edited by Chiron

Share this post


Link to post
Share on other sites

i don't blame TDM team at all ! i blame this lazy guy called john carmack , who didn't write his engines from scratch,he modified previous (idtech1->2->3->4 from 1996 to 2004) so idtech4 is advanced idtech1 engine fork

 

Lazy? idtech 4 is more than a simple fork of idtech 1,2,3. lol Those engines were written in C...idtech4 is written in C++. When developing the D3 engine, Carmack first stripped the Quake 3 engine down to the bare minimum, leaving some primary systems so he could have a functional engine to work with while developing the new renderer. After the renderer was completed, the rest of the engine was refactored and completely rewritten in C++.

 

There are some snippets of the Q3 code left...but hardly enough to make such a silly statement. Most developers continue refining their engines, rather than start from scratch every time they make a new game. Cryengine 2 and 3 are no doubt rewrites of Cryengine 1. You don't just toss away all your work when you have a good foundation.

 

It's possible that you misinterpreted what some of the articles about idtech4 development actually meant...but it's certainly more than an advanced fork, as you called it.

 

It's not uncommon for developers to use their previous work as a starting point for their next engine...case in point...Thief 2 was a fork of the Thief 1 engine...and SS2 was a fork of those engines. Had Thief 3 been developed by Looking Glass Studios, guess what it was supposed to have been built on? The Siege Engine. Siege was an enhanced fork of the Dark Engine.

Share this post


Link to post
Share on other sites

 

Conversely, Carmack has recently quipped that id Tech 5 will be the last time he writes an engine from scratch.

 

Again, id Tech 4 is more a victim of the OpenGL wars between ATI and nVidia than any legacy Q3 code.

 

 

1) Everyone says Doom 3 should've used shadow maps instead of stencil shadows

 

OpenGL buffers were so SLOW and buggy in BOTH ATI and nVidia drivers that shadow maps performed WORSE

 

2) Everyone says Doom 3 should've included Light map support

 

This is arguably a valid request but then how do you illuminate the dynamic objects (AI) without either producing artifacts on the Light Maps or the AI. (Though, 3D "volume light-maps" would work great... except it took nearly 2 YEARS AFTER DOOM 3 for nVidia to fix their driver support for 3D textures... wacko.gif )

 

~~~

 

It's an engine completely tuned for a Geforce 3. Name one other engine that has per-pixel dynamic light and runs properly on a Geforce 3 (and actually, the same features are essentially there for Geforce 2 cards).

 

It's a miracle it runs as well as it does given how much OpenGL crap id software had to overcome. They should've switched to DirectX.

 

 

Great work Tels. :)

 

I imagine this is a prelude to Closed Caption support?

Edited by nbohr1more

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Share this post


Link to post
Share on other sites

Our menu contains a lot of pre-rendered buttons, these are not translatable (unless we either render new buttons, or find a way to replace them with text). This is something I need to think about a bit more.

We can handle that the same way as our add-ons: pack all the german stuff into tdm_gui_german.zip and rename it to .pk4 when switching language. Once the correct PK4 is "active" all the default menu graphics will be overridden by the tdm_gui_german.pk4.

 

It's a lot of work though to create the graphics, and the text width might not fit (German words are usually longer).

Share this post


Link to post
Share on other sites

I have a bad feeling that changing existing fonts is likely to mess up the text format in existing readables because I had to manually fix the spacing of a lot of characters. Apart from looking bad this is likely to push some text off the bottom of the pages and so unreadable.

Share this post


Link to post
Share on other sites

We can handle that the same way as our add-ons: pack all the german stuff into tdm_gui_german.zip and rename it to .pk4 when switching language. Once the correct PK4 is "active" all the default menu graphics will be overridden by the tdm_gui_german.pk4.

 

It's a lot of work though to create the graphics, and the text width might not fit (German words are usually longer).

 

ATM I am leaning to not replace the graphics, because:

 

* it is a lot of work, unless we somehow automate this.

* there seems to be only one person (springheel) who can do this

* the switch-pk4s complicates matter, too

* we have to redo it for every language, too

* and if there is a typo or a change, we start over, again

 

Unfortunately, I don't think D3 font-rendering is up to the task, yet. But I have to experiement more with it. For now, the graphics have to remain.


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites

I have a bad feeling that changing existing fonts is likely to mess up the text format in existing readables because I had to manually fix the spacing of a lot of characters. Apart from looking bad this is likely to push some text off the bottom of the pages and so unreadable.

 

Hyeron made a new font which wa almost pixel-perfect on the normal letters, so this seemed to work. Otherwise, _adding_ letters to the existing fonts should not disturb the normal letters. If Q3font (or whatever) is not up to the task, then I probably need to write my own utility that only changes one letter, but leaves the others as they are. Can't be that hard, as we have the source codefor some of the utilities, right? :mellow:


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites
And the minimal requirements was ~1 Ghz CPU. On a 650 Mhz machine, how did that work?

far cry work fine on my old P3 650 mhz without lags on medium settings

Physics that TDM uses?

doom3 have ugly physics , much worse than far cry

Edited by Shadowhide

Proceed with caution!

Share this post


Link to post
Share on other sites

I've written a script that can take our mix of translated/untranslated strings, the doom original english file, as well as a new file (in this case either the D3 original translation, or Hyerons translation) and figure out which string we miss and where there is a new translation. All in all this netted us some 100 strings for Italian, Spanish and French, mostly the basic things like names of keys, settings like "Fullscreen" etc.

 

So here is the statistics:

 

Generating english.lang... done, written 16129 bytes, 413 entries.
Generating french.lang... done, written 16215 bytes, 413 entries, 284 not yet translated.
Generating german.lang... done, written 16100 bytes, 413 entries, 184 not yet translated.
Generating italian.lang... done, written 16253 bytes, 413 entries, 309 not yet translated.
Generating polish.lang... done, written 16071 bytes, 413 entries, 406 not yet translated.
Generating russian.lang... done, written 16129 bytes, 413 entries, 413 not yet translated.
Generating spanish.lang... done, written 16469 bytes, 413 entries, 260 not yet translated.

 

(A high number of strings are things that you don't need to translate, like names of keys, so despite the "184 not yet translated", the German translation is already almost complete. Likewise, the other languages each need about 150 or so strings not translated, either)

 

Anything else is now left to the community.

 

I'll take care of the font issue and think about what to do with the graphics.

 

Also, I'll figure out how to do easier translation in FMs, it would be probably a good idea if authors could just specify "#str_1XXXXX" and then deliver individual strings/my_XXXXXX.lang files. That way someone could translate an FM after-the-fact without having to alter the FM package. At the moment that does not work as each author would have to override our own lang files, but then updates to these lang files would not work. And extra lang files are not taken into account by the code at all.


"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Share this post


Link to post
Share on other sites

far cry work fine on my old P3 650 mhz without lags on medium settings

 

Why don't you start a new thread? This isn't really the appropriate thread to be dragging all this out.

 

Out of curiosity, how did TDS run on that system? You keep bringing up far cry, but far cry was a shooter. Compared to a Thief game, it did not have very sophisticated AI...nor did it have a lightgem calculation to compute...nor sound prop and everything else that goes into making a Thief game. It's a completely different type of game.

 

so i prefer team members to work on code cleanup and optimization

 

As we have said before, TDM has been optimized as well as it's going to be optimized until we have the full source code. At that point, we can look at decreasing load times, and finding ways to better optimized the lighting tricks.

Share this post


Link to post
Share on other sites
Out of curiosity, how did TDS run on that system? You keep bringing up far cry, but far cry was a shooter. Compared to a Thief game, it did not have very sophisticated AI...nor did it have a lightgem calculation to compute...nor sound prop and everything else that goes into making a Thief game. It's a completely different type of game.

i didn't tried TDS on my old PC


Proceed with caution!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...