Translation into other Languages

Guys, is this link to the spreadsheet that you ALL are editing or is just a placeholder?

If you like I will add some code to it to generate the actual formatted SQL, and possibly the XML, code so @Gazebo just needs to copy/paste.

I'll let it mature a bit if it is the spreadsheet you are using so as not to put too much strain on load times. Though there shouldn't really be anything too much.

Thank you for looking into it! Any News on that?

I finished the german translation for the CP_CoreText.xml, which is located in a separate spreadsheet:
https://docs.google.com/spreadsheets/d/1HRHjihUDBqvhsvtvgfW24ivCjbGmYEGp5LVGGOjrtgQ/edit?pref=2&pli=1#gid=79169371

Just tested it out ingame with english language and it works fine (the changed text strings are shown in german language).
I couldn't have done it, if it was an SQL though.

At this point I think we really need to know, if the implementation works. We already finished I would say 60-70% of the german translation. We need some kind of confirmation, that this is actually usable.
 
Thank you for looking into it! Any News on that?

I finished the german translation for the CP_CoreText.xml, which is located in a separate spreadsheet:
https://docs.google.com/spreadsheets/d/1HRHjihUDBqvhsvtvgfW24ivCjbGmYEGp5LVGGOjrtgQ/edit?pref=2&pli=1#gid=79169371

Just tested it out ingame with english language and it works fine (the changed text strings are shown in german language).
I couldn't have done it, if it was an SQL though.

At this point I think we really need to know, if the implementation works. We already finished I would say 60-70% of the german translation. We need some kind of confirmation, that this is actually usable.


Sorry, been snowed under with lots of little things to do. I'll get around to it.

All the translation files should work if they are being added to the correct database.
CivV uses a seperate database for the text, in your "cache" folders you should see:

Localization-Merged.db

This contains all the text from the vanilla game as well as any text from mods you load. If you open it you will see a few tables labelled like this:
Language_DE_DE, Language_FR_FR, etc.
So long as each text file, or code block, starts with code that points to the correct table, the game will use that if your game is in that language.

XML code looks like this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<GameData>
	<Language_DE_DE>

and SQL looks like this:
Code:
UPDATE Language_DE_DE
SET Text = 'Some German text to display.'
WHERE tag = 'TXT_KEY_SOME_TAG';
 
I can do all the translation in French quite quickly : the only thing is to grant me access to the dossier. (my name on google is floux.arthur)
 
I can do all the translation in French quite quickly : the only thing is to grant me access to the dossier. (my name on google is floux.arthur)

I have almost finish the cbo translation in French, i can pass you this tomorrow if you want.
However, I didn't start to translate the cp yet.

"quite quickly" is optimistic I think, it's a huge amount of text.
 
The Vox Populi Translation Project (VPTP)

Hi guys, I want to share my project for translating Vox Populi.
I created a modular mod-mod, that allows you to add different languages to the project. Each module of Vox Populi will have a corresponding mod-mod that will add the translation support.

I chose this way, because I was first adding my translated files to the original module. This wasn't very handy if a new version was released.
I had to make sure that my files will not be deleted or that the original module didn't become messed up. So I chose this way and everything is pretty neat.


  1. :c5goldenage: The Framework
    The Framework is for all of you, that want to create their own translation.

    By downloading the framework, you will have six folders (mod-mods), that will contain the translation files for the original modules.
    Each module will have the correct dependency to the original module and I made sure to keep the load order correctly.

    EDIT: At first I decided to release the Framework in a state in which it already contains my parts of the German translation. My plan was to add your translations later.
    To be honest, I think that it was too complicated to tell you something about modinfo-files and load-orders and how to add your language to the existing files.
    So I forked the Framework into two parts:
    1. One part is the actual Framework: If you decide to add a translation of a language that is not yet available choose it.
    2. The second part is the Translation Pack: It is based on the Framework, that will someday in the future contain all languages (translations, languages other than English),
      that were made with the Framework.
      It is for all of you that only want to play the Game in a specific language and are lucky enough to have someone that already translated their language stuff.
    This will mean that I want to share a foundation for creating a translation and that I want to add your translations to the Translation Pack. So you will have a groundwork to work with and I will do all the load-order fun-part implementing stuff. This can only work if we keep the given file structure.

    *Click to expand*
    Spoiler :

    :c5goldenage: 1.1. Content of the Framework
    The Framework is the foundation of being able to translate the game and more importantly, have a consistent file structure to share the work of the translator with the community.
    This will avoid single file translations that are unclearly, difficult to handle for the update process, etc..
    If we have a look into the modinfo of "(1a) Community Patch INT (v 1)" for instance, we will see that it only contains few files.
    If you compare it with the original module modinfo, you will notice that it is the same load order, but with less files. Moreover you will notice, that most files seems to be in a xx_XX folder.

    This will be very important, for now it is a free space for the language tag that will be implemented later in the process.
    You might will know these here: en_US, fr_FR, ru_RU? In the final Language Pack, we will have all files that contain text in different folders, matching their language tag:
    Spoiler :
    Code:
        <Files>
        <File md5="1C8E4B03DCAF847F9E720006BE4F890E" import="0">Core Files/Core Tables/xx_XX/SampleEvents.xml</File>
        <File md5="1068E7F85BAD2EBD5FC0877D44E7C32B" import="0">Core Files/PNM Mods DB/API/xx_XX/Espionage.xml</File>
        <File md5="A9E2CFE8DBF758DA9921F10FBC36EDF9" import="0">Core Files/PNM Mods DB/API/xx_XX/Religion.xml</File>
        <File md5="FE29E4556695CBF3282DC6D54B254EB1" import="0">Core Files/PNM Mods DB/BUGFIX/xx_XX/GoodyHutMessages.xml</File>
        <File md5="AC8E2D5BABBF69396CD2220D1AB7B117" import="0">Core Files/PNM Mods DB/BUGFIX/xx_XX/SpyNames.xml</File>
        <File md5="71C5C2CB6203D6342BEA1FF2BCA47847" import="0">Core Files/PNM Mods DB/BUGFIX/xx_XX/UnitclassNotUnit.xml</File>
        <File md5="3D5DAB2B7F7DD8E45C3EE234AA2196D3" import="0">Core Files/PNM Mods DB/PROMOTIONS/xx_XX/UnitNaming.xml</File>
        <File md5="99F6DA4B2DEF5881FA2FBFE14A504AEC" import="0">Core Files/PNM Mods DB/PROMOTIONS/xx_XX/VariableRecon.xml</File>
        <File md5="340C4993050B8B21DCE3C6ED532EE2F3" import="0">Core Files/Text/CoreText_xx_XX.sql</File>
        <File md5="3D79628BD2F1C7E421D10889876415BB" import="0">Core Files/Text/CoreText_xx_XX.xml</File>
        <File md5="F5A105057DF4D4B6BDDCA3E40D6AB7FF" import="0">Modules/Events/Other/xx_XX/MiscEvents.xml</File>
        <File md5="E876EE4F4F9734DD03DFBAE4E5C74A26" import="0">Modules/Events/Text/xx_XX/City_xx_XX.xml</File>
        <File md5="81898FB9717607C6A611D88F82206C30" import="0">Modules/Events/Text/xx_XX/EventCore_xx_XX.xml</File>
        <File md5="03F89956D42782E42796F95FB5321560" import="0">Modules/Events/Text/xx_XX/Player_xx_XX.xml</File>
      </Files>
    For each mod-mod I made sure that I replicated the file structure and the load order of the original module. Furthermore I deleted all unnecessary code in those xml and sql files, that are already processed by the original module. I don't want to merge all sql and xml files in one file per mod-mod, because for the updating progress it is a lot easier to keep track of the changes and to find the correct file.


    :c5goldenage: 1.2. How to add a new language?
    This is the most exciting part. So if we want to add the file structure for e.g. Russia, we have to do some steps in order to add the language to the framework. The best feature, that by adding the structure to the framework, you will immediately have the support for playing the Game in your language. This means that if you play in Russia, you will have all parts of Vox Populi shown up currently in English until you decide to translate it to Russia.
    1. Prepare the file structure:
      1. Please make sure, that you installed Vox Populi matching the version of the Framework.
      2. After downloading and extracting the Framework, leave it in your Download folder as a working folder. This is how the Framework will look like:
      3. Do you see the Hit and Go.bat? It will execute the Java file "renameFolders.jar".
        Thanks to merill. Make sure that you installed Java, before you execute the Hit and Go.bat
      4. Please enter the new language tag (ex: de_DE, or ru_RU):
        By executing the bat, you will be asked to enter a language string. So at first you have to know, what language string represents your native language. German e.g. de_DE or Russia ru_RU
      5. In this example I want to translate Vox Populi to Russia, so I enter ru_RU into the window and hit Enter.
        It will inform you of the quantity of folders and files that have been renamed. That was the first part, you prepared the Framework for your language.
    2. Prepare the actual files of the Framework:
      The last, but most important step is the following one.
      So you prepared all framework modules. If you would start the Game now, nothing would be different than before. There is one last step to do.
      1. Open Notepad++ and press Ctr+SHIFT+F or navigate to Search -> Find in Files
        1. Find what: language_xx_XX - yes those x'es are correct
        2. Replace with: language_your_STRING - e.g. language_ru_RU
        3. Filters: *.xml
        4. Directory: PATH to the WORKING DIRECTORY - e.g. E:\Downloads\Vox Populi Translation Framework
        5. Hit Replace in Files afterwards.
        6. Do Step 1 of 3.2 again, but with Filters: *.sql
        7. You have prepared all xml and sql files and in addition prepared the file structure.
        You can copy all six folders now to the Mods folder of Civilization V. You should know that you don't have to use More Luxuries and so you don't need to use the Framework module.
      Double check if your Cache folder is deleted and run the Game afterwards in your native language.
      By activating Vox Populi and the Framework in the Mods menu, you should now see English texts for content of Vox Populi like Buildings, Policies, etc.
      Please pay attention to the order of activating those mods: (1) Community Patch, then (1a) Community Patch INT, then (2) Community Balance Overhaul, (2a) Community Balance Overhaul INT, etc.


    :c5goldenage: 1.3. How to update the Framework?
    I use the program "Beyond Compare 4", but I guess there is also a free program like this. It allows to find differences between two folders or files. By copying the original Vox Populi folders to a working directory like the Desktop. Installing the new version of Vox Populi afterwards, you can find out what has been changed.



    Now I can go into my translation files of the framework and alter my translation, if I am already done with that ^^

    I recently switched to GitHub and this will make it easier for you to change your translation by looking at the changes (commits) of the Framework: https://github.com/ErikSteiner/Vox-Populi-Translation-Framework

  2. :c5goldenage: How to use the Language Pack?
    The Language Pack will contain all languages that have been translated by you, the Community. For now it only contains my parts of the German translation, but if you use the Framework to translate Vox Populi to other languages, I will add your files to the Pack as well.

    If you are only interested in playing the Game in your native language, you should use the Language Pack. If you also want to actively translate, you should use the Framework.
    1. Download the Language Pack and extract it somewhere
    2. You will find six folders inside of this Pack
    3. Copy all of them to the Mods folder of your Civilization V in My Documents
    4. Double check if your Cache folder is deleted and run the Game afterwards in your native language.
      By activating Vox Populi and the Language Pack in the Mods menu, you should now see English texts for content of Vox Populi like Buildings, Policies, etc.
    5. Please pay attention to the order of activating those mods: (1) Community Patch, then (1a) Community Patch INT, then (2) Community Balance Overhaul, (2a) Community Balance Overhaul INT, etc.

  3. :c5goldenage: Summary
    The framework allows you to add the support for your language. It should be a project of the Community, for the Community. You will benefit from this project from the very first second. By copying the file structure, it is very easy to maintain the translation. It is detached from the main project Vox Populi, making it lightweight for all of you, that play the game in English, but providing a very easy foundation to enjoy the game in different languages than English, too. Furthermore I hope that we will get a foundation for transferring the progress of the Google Spreadsheet to a useable state, by transferring it to the framework.

    I would like to hear your feedback, what do you think? What could be enhanced?



    :trade:Download :trade:

    Vox Populi Translation Framework 2.1.12.1
    Compatible with Vox Populi 2.1.12.1 (Full Setup EUI)

    Vox Populi Language Pack 2.1.12.1
    Compatible with Vox Populi 2.1.12.1 (Full Setup EUI)


    Supported languages:
    Even if a language is not yet completed, playing in your native language will at least show these texts in English.
    • German (Progress: 54%):
      • (1) Community Patch: 54%
      • (2) Community Balance Overhaul: 51%
      • (3) CSD for CBP: 100%
      • (4) Civ IV Diplomatic Features: 12%
      • (5) More Luxuries: 100%
      • (6a) Community Balance Overhaul - Compatibility Files (EUI): 86%


:c5science: Changelog
If you are a translator and you want to update your translation, feel free to visit the github project page in order to track the latest changes. This changelog is only a brief summary of the latest changes.
If you already shared your translation to the Language Pack, I can not alter any translation other than German in the Language Pack.
So it is up to the author of the translation to track those changes and to maintain it.

Recent changes to 2.1.12.1
  • Added latest changes of 2.1.12.1 to the Framework and to the Language Pack
  • Added a lot of translated text to Events and Luxuries
  • Finished "(5a) More Luxuries INT" of the Language Pack
 

Attachments

  • overview.png
    overview.png
    13.4 KB · Views: 178
  • bc1.png
    bc1.png
    256.2 KB · Views: 146
  • bc2.png
    bc2.png
    420 KB · Views: 156
  • filter.png
    filter.png
    21.3 KB · Views: 123
  • jojo.png
    jojo.png
    26.3 KB · Views: 206
Last edited:
thank you

I have shortened the process for renaming, and removed all de_DE (or rename to xx_XX when needed) from the archive (to transform it to a mono-language add-on, for my use).

  1. Decompress the content of international into your MODS folder (e.g. C:\Users\MY_NAME\Documents\My Games\Sid Meier's Civilization 5\Mods\)
  2. Modify the files:
    • Open Notepad++ and press Ctr+SHIFT+F or navigate to Search -> Find in Files
    • Find what: xx_XX - yes those x'es are correct
    • Replace with: lang_COUNTRY - e.g. ru_RU
    • Filters: *.xml;*.sql;*.modinfo
    • Directory: PATH to the MODS folder - e.g. C:\Users\MY_NAME\Documents\My Games\Sid Meier's Civilization 5\Mods\
    • set "case sensitive" to true
    • press replace all => 1532 occurrences replaced
  3. Rename folders and files:
    • Open command prompt (win+R => cmd => enter)
    • go to your folder (e.g. cd "C:\Users\MY_NAME\Documents\My Games\Sid Meier's Civilization 5\Mods\")
    • type java -jar renameFolder.jar
    • type your language - e.g. ru_RU
    • it should say "renamed 23 folders and 15 files"

Done!

download:
https://drive.google.com/file/d/0B0hygFT4YYf7QU44SHQxdXliMEE/view?usp=sharing
 
I changed the structure of the Framework, allowing a more elegant and fast way to set up your translation. Moreover I forked it into two parts, one part that allows you to create translation files and one part that will contain all translation files of all languages in the future. Also a changelog has been added and the Framework and Language Pack has been updated to the latest version of VP.

Hope you will enjoy it!
 
I was quiet busy with working at my texture pack, so I skipped one version and updated the Framework and the Translation Pack to the latest version of 1.7.7.

Lot's of changes have been made, some files have been deleted and some were added. To all translators out there, read the changelog if you already began creating your own translation.

I would like to take advantage of the latest release to ask you if we could improve the procedure of reacting to new versions. So currently I use a tool for comparing files, alter the Framework and the Language Pack to these changes and document those in a text file.
Maybe there is another more handy solution for this, what do you think? I mean I really want to make it as easy as possible for the translators, so feel free to leave a reply here.
 
Updated Language Pack and the Framework to 1.7.7.1, because a wrong setting in the modinfo file prevented the player to load their savegame.
MinCompatibleSaveVersion and version were different and the game thought, you would not be able to load it.

Added the first part of BuildingText.xml that is still consuming my time if I have some.
 
Wouldn't it be easier to upload your framework on github?

I could translate some stuff into german as well and you could just pull to get the changes?

If you update the list of files to be translated, it would be easy for everyone to see, which new files need changing.

Is the java code only changing the name of the folders and files? If so, this could be done using just the command line without java.
 
Wouldn't it be easier to upload your framework on github?

I could translate some stuff into german as well and you could just pull to get the changes?
If you update the list of files to be translated, it would be easy for everyone to see, which new files need changing.
Is the java code only changing the name of the folders and files? If so, this could be done using just the command line without java.
This is an excellent idea! I never did anything than reporting issues on Github. I just read the tutorial and with the GitHub application I was able to create a repository.
Now with all files for the German translation in place, I still have a question to pull requests. For now I uploaded the language pack that only contained the German translation (the files for the German translation, because there is still a lot to do).

I am not sure how to do an update procedure. So for now I compared a new version with the current version of Vox Populi by a compare tool, on my computer. I then changed the Framework and the Language Pack manually (it only contained the German language), so I only needed to change two files at the same time: the file in the Framework and the file in the Language Pack. I wrote the changes into a file afterwards for documentation.. This was a hell..

With the Language Pack on Github, I would not need the Framework anymore, because I could add new folders and files for e.g. French, Spanish, etc.

My question is, if I could do changes to a dummy language and open a pull request for all languages? To be more precise here an example:

  • G released a new version and he changed something in:
    (1a) Community Patch INT (v 1)\Core Files\Core Tables\en_US\SampleEvents.xml
  • He maybe changes something here from:
    <Row Tag="TXT_KEY_NOTIFICATION_EVENT_WANDERER_CHOICE_1">
    <Text>{1_Playername} invited a wandered to settle in {2_City}, increasing its population.</Text>
    </Row>
  • To:
    <Row Tag="TXT_KEY_NOTIFICATION_EVENT_WANDERER_CHOICE_1">
    <Text>{1_Playername} invited a big fan of Vox Populi to settle in {2_City}, increasing its awesomeness.</Text>
    </Row>
If the Language Pack on GitHub would contain more than the German files, it would be a pain to pull requests for all languages that are available there and it would be a lot of work for just one line of code that has been changed.

What would be the best procedure here, if I have several folders containing the same file (SampleEvents.xml), but for different languages:
(1a) Community Patch INT (v 1)\Core Files\Core Tables\
  • de_DE
  • fr_FR
  • es_ES
  • etc.
Is a dummy language the best solution, or is it possible to pull a request for several files.. but how should that work?

Here is the link to the repository: LINK
 
I need some time to think and understand you question.

In the meantime, I translated about 50 per cent of the luxuries mod and made a pull request,

Is it correct, that cocoa is commented out?


If we reach 100%, maybe this could also be integrated in the git of the whole cbp?
 
I need some time to think and understand you question.

In the meantime, I translated about 50 per cent of the luxuries mod and made a pull request,

Is it correct, that cocoa is commented out?
If we reach 100%, maybe this could also be integrated in the git of the whole cbp?
Cool I saw it on Github, I am going to add you to the repo, so you could add pull requests directly.
Yes this is correct and therefore must not be translated.

Ok let me choose an other example. I want to add more languages to the repo, so I will not only have all files for German, but also for French, Spanish etc.

On GitHub, if you would navigate to e.g. "(1a) Community Patch INT (v 1)\Core Files\Core Tables" then, you could see a folder for German (de_DE), for French (fr_FR), etc. So you would have one SampleEvents.xml for each language, meaning three SampleEvents.xml as a result. The same would be for all other files of the language pack: A folder for each language that contains more or less files for the specific language.

I am wondering about the update procedure for future updates. If something changed in the SampleEvents.xml, it would be required for doing a pull request for all languages: German, Spanish, French. This would result in 3 Pull requests for just one file and this is too much work. So my question is how this could be resolved and I thought of having a dummy language (xx_XX) (you could see the Framework as the dummy language and the Language Pack as the actual language). I could open pull requests on the dummy language and all collaborators could see them there and would be able to create pull requests for their language. In my opinion this is still a bit complicated and so I asked for another solution.

If it would be possible to create one pull request for:
(1a) Community Patch INT (v 1)\Core Files\Core Tables\de_DE\SampleEvents.xml
(1a) Community Patch INT (v 1)\Core Files\Core Tables\fr_FR\SampleEvents.xml
(1a) Community Patch INT (v 1)\Core Files\Core Tables\es_ES\SampleEvents.xml

It would be a lot easier, but I don't know if this is possible or how.
 
May I offer an alternative?
Since you have already gone into a lot of work making this and have also wisely chosen to use GitHub as a means of maintaining it, why not ask @Gazebo to be added as collaborators to the official repo and simply create new branches from the 'master'?
Each branch could be dedicated to a separate language and when you are suffuciently happy with the status you could push a merge of those files to the master.
You could also do this without being collaborators but I'm a bit rusty on pushing commits from separate forked repo to the original.

Just an idea.
 
Top Bottom