German translation with community suggestions

Hello there,

I’m creating a German translation of the Democracy 4 game based on version 1.05.

Currently, my progress on the main UI (in strings.ini) is about 50.66% of the translatable strings. I’ve avoided long texts and instead focused on prominent UI elements, buttons, etc…

I’m also translating the titles of the policies where my progress also at about 45-50%.

Is there interest for translations and do people want to help with German or other languages?
Help in this case means not reporting single or a few translation suggestions on unfinished languages but being able to edit the game files on your own to simplify the process.

There are a few bugs currently in game around translations. For example, renaming the political resorts like “foreign policy” causes the game to crash when hovering above it with the cursor.

Also, some of the translatable files contain ASCII strings instead of UTF8. Resaving the file with UTF8 encoding seems to work fine for me, but you might want to check your code.

Would you allow me to either upload translated files on a file host service for the community or send them to you? As this is your IP I can understand that you would not want public distribution.

Is there a possibility that you might upload the translatable files to a GitHub repository so translation can be done community-driven?

If the translatable content changes in the future, I might create a small script or C# app that would merge the old translations in future builds by using string comparison on the variable names, depending on the need.

Is translating as simple as copying the “English” folder and then going through the various .csvs, .txts, and the .ini?
Because that’s totally doable then.

Yes, indeed. That works perfectly well. If you copy the folder, a new language is added to the menu named after the new folder name.

The .ini/.csvs can be converted to UTF-8 Encoding and they seem to work with (some) special chars for me.

Mind to not violate the escaping rules of .inis and .csvs according to the specification. Though for the german translation, this was no issue for me. :slight_smile:

Also, DO NOT alter these (as mentioned above) in the .ini file:


These variables are cursed (@devs / @cliffski !) and changing their contents will break the main screen of the game.

I also didn’t find a way to change the focus group names, yet.
And the stats at the top of the report seem to be hard coded, too.

My translation efforts for the German version have now progressed up to 58.81% of the strings in the main .ini file as well as a considerable effort in the other files for things that happend in my game sessions.

Nearly all terms that are used in the UI of the game are now translated. I’m missing a lot of the longer texts that are not as easy to translate.

Wow, didnt see this thread ive been mega-swamped with stuff… Its quite likely there is the odd situation where smething is not working. I will get through the big items on the big list and then revsisit this to see if i can fix anything thats in the way right now… A community German translation would be truly awesome.

TBH paid-commercial translations are always to my mind a little bit ‘rough’ because they can be too literal, without people really understanding the context behind words like cabinet for example :D.

1 Like

Yes, there’s more important stuff to do for you, I agree.
It would be nice of you to fix these bugs affecting translations, but I’ve got lots of other stuff to translate before, too. If possible, add a little more flexibility to the buttons and menus. It’s sometimes hard not to use more space than the original text used. So maybe, a size-calculation before first rendering might help there?

Thank you for your attention. I hope that translations will help to spread the game even faster. :slight_smile:

I also agree that doing translations without context is difficult sometimes. I need to save the files and the recreate the situation when the text is displayed. Sometimes, that’s easy for the main menus. But if the text is only displayed randomly or in specific situations, it’s hard to know if it will work out as intended.

There are also some other things to highlight if you’d like some feedback on UI content. For example, the english text is not always consistent in similar situations. Also, there are some punctuation issues. Plus the (probably) hard-coded strings and fixed sizes for columns, menus and buttons as well as a few scrolling issues that should be fixed before finishing the translations.

Accommodating all languages is an absolute nightmare. Sometimes, if you play at 1920x1080 res (the most common) its easy to think the dev has screwed up by not leaving enough room in some places, but we support 1280x800 res, and when you set the game to that size, there is VERY little room to cram all the data! Its a constant battle :smiley:

edit: the next update to the game (1.06) will fix the un-renamable group names, you will be able to translate them without errors now, and they will work :smiley:

1 Like

Have you considered using full-screen scrollable menus for lower resolutions? It could work like scalable websites for mobile phones.

Thank you for the update! I didn’t think that this fix would be so easy. If I remember correctly, Democracy Africa or the previous DLCs had similar issues. :smiley:

Another thing that I noticed during translation: You don’t seem to have policies that are specific to countries. It would be nice to have some signature policies for the most well-known countries to offer more value when switching between them.

For example, in Germany, there’s mandatory health care with a public and and a private insurance. People pay a certain percentage of their income for the public health care but are treated even if they didn’t pay any money at all (like people living in the streets without jobs). Should the public health care require more money than it has, it’s funds will be refilled from tax money by the government.
The private health care has the same rates for every insured person, but is only worth it if you’re part of the wealthier middle class.

There’s also a government program to support unemployed people in a pretty unique way. Basically, rent, electricity and water are payed for plus a calculated amount that includes food, clothing, little expenses etc… It’s given to every person that does not have a job regardless of whether they earned any money at all in their life.

I don’t expect you to implement such policies, but it would be nice to have this kind of freedom.

The requirements would be simple: Move the missions out of the language folders into a separate mission folder that has subfolders named after each supported country. In each country folder, there’s a main country file and supporting files with custom policies and events. Separate language subfolders would add translations to these country-specific policies and events.

I think private insurance stuff is covered by private healthcare simulation

Good day to all,
I am eager to test the german translation :grinning:. So, as soon as the devs give theire OK and You Jonas are somehow ready to share, I would gladly test and for sure give a feedback, in case you have nothing against it. These are my two cents.
By the way: Thank you Jonas for your initiative!!
kind regards

1 Like

Yes and no. Different countries have different implementations and different mechanics of this policy. It’s not only a slider that goes grow low to high. If you allow different implementations per country, you raise the replay value as well as the difficulty. Because then, there’s not ‘one way’ to win the game, but each country has separate play styles.

The V.1.05 Update crashes with my current translation. I’ll probably have to create something to merge the old files into the new one right now. :slight_smile:

It’ll probably not be finished before the next weekend, though.

As I’m trying to automate parsing the language files, I’ll report some bugs for them, here.

Can you please confirm these issues in strings.ini?

  • l118: Line ending does not contain " as expected
  • l119: Line is not parsable because there is no key/value format; the line should start with ‘PG_5_4 = "’ I guess?
  • l630/l631: MINISTER_RESIGNS_GUINAME is assigned two times thus creating a parser error

118,119 looks like there is just a line break there which shouldn’t be in. it should be one line.
MINISTER_RESIGNS_GUINAME ooops…just a bug. I’ll remove one.
Thanks for pointing these out!

1 Like