• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Need Help Updating the Russian Translation

I noticed that the audio files: Sharpe03; Sharpe04 are completely the same, you can listen. Perhaps one of them should be removed?
 
Here's Russian "interface_strings.txt" with two new strings at lines 2248 and 2249, needing to be translated:
Code:
Crewmember of{Crewmember of}
's crewmember{'s crewmember}
They're for "Tales of a Sea Hawk", for this part of "quests_reaction.c" - also attached:
Code:
            switch(LanguageGetLanguage())
            {
                case "SPANISH": Characters[GetCharacterIndex("Blaze_Crewmember_01")].name = TranslateString("","Crewmember of") + " " + GetMyName(PChar); break;
                Characters[GetCharacterIndex("Blaze_Crewmember_01")].name = GetMyName(PChar) + " " + TranslateString("","'s crewmember");
            }
Should Russian put the player's name before or after the crewmember - should it translate "Nathaniel's crewmember" or "Crewmember of Nathaniel"? If the second, I'll add a 'case "RUSSIAN" line the same as for "SPANISH".
 

Attachments

  • interface_strings.txt
    133.3 KB · Views: 70
Should Russian put the player's name before or after the crewmember - should it translate "Nathaniel's crewmember" or "Crewmember of Nathaniel"? If the second, I'll add a 'case "RUSSIAN" line the same as for "SPANISH".
That's right, "Crewmember of Nathaniel", but then there is another problem... If Nathaniel is taken from the name of the character, then it will not be correct. It would make sense that this crew member's name is Nathaniel. So it will be in Russian: "Член экипажа Натаниэль", but it should be "Член экипажа Натаниэля". This can be circumvented by translating it as "A member of the captain's crew named Nathaniel" - "Член экипажа капитана по имени Натаниэль"(I have attached the file with this translation).
 

Attachments

  • interface_strings.txt
    133.3 KB · Views: 77
Last edited:
That should not be a problem. I've just re-uploaded "quests_reaction.c" in my previous post. The code to rename the crewmembers is now moved up to the end of case "Story_leavingOxbay" and now has a Russian case:
Code:
            switch(LanguageGetLanguage())
            {
                case "SPANISH": temp = TranslateString("","Crewmember of") + " " + GetMyName(PChar); break;
                case "RUSSIAN": temp = TranslateString("","Crewmember of") + " " + GetMyName(PChar) + "a"; break;
                temp = GetMyName(PChar) + " " + TranslateString("","'s crewmember");
            }
            for(n=1; n<=3; n++)
            {
                Characters[GetCharacterIndex("Blaze_Crewmember_0"+)].name = temp;
            }
Replace the "a" with the correct character, save the file and upload it again - but make sure to save it as ANSI so that the correct ASCII character is in there. Then translate "Crewmember of" in that version of "interface_strings.txt" and upload that as well.

If the player's name always has the "ь" on the end then it should be possible to cut it off before adding "я":
Code:
case "RUSSIAN": temp = TranslateString("","Crewmember of") + " " + strleft(GetMyName(PChar), strlen(GetMyName(PChar))-1) + "a"; break;

You can test that it works. You'll need to start a new game of "Tales of a Sea Hawk". Put this into "console.c":
Code:
traceandlog("Blaze_Crewmember_01 is now called '" + GetMyFullName(CharacterFromID("Blaze_Crewmember_01")) + "'");
Then press F12 any time after the video of the French attack on Speightstown.
 
Last edited:
That should not be a problem. I've just re-uploaded "quests_reaction.c" in my previous post. The code to rename the crewmembers is now moved up to the end of case "Story_leavingOxbay" and now has a Russian case:
Code:
            switch(LanguageGetLanguage())
            {
                case "SPANISH": temp = TranslateString("","Crewmember of") + " " + GetMyName(PChar); break;
                case "RUSSIAN": temp = TranslateString("","Crewmember of") + " " + GetMyName(PChar) + "a"; break;
                temp = GetMyName(PChar) + " " + TranslateString("","'s crewmember");
            }
            for(n=1; n<=3; n++)
            {
                Characters[GetCharacterIndex("Blaze_Crewmember_0"+)].name = temp;
            }
Replace the "a" with the correct character, save the file and upload it again - but make sure to save it as ANSI so that the correct ASCII character is in there. Then translate "Crewmember of" in that version of "interface_strings.txt" and upload that as well.

If the player's name always has the "ь" on the end then it should be possible to cut it off before adding "я":
Code:
case "RUSSIAN": temp = TranslateString("","Crewmember of") + " " + strleft(GetMyName(PChar), strlen(GetMyName(PChar))-1) + "a"; break;

You can test that it works. You'll need to start a new game of "Tales of a Sea Hawk". Put this into "console.c":
Code:
traceandlog("Blaze_Crewmember_01 is now called '" + GetMyFullName(CharacterFromID("Blaze_Crewmember_01")) + "'");
Then press F12 any time after the video of the French attack on Speightstown.
File didn't load. It's not in the previous post. Anyway, Anyway, I'll watch it late at night, I need to drive off.
 
Last edited:
That should not be a problem. I've just re-uploaded "quests_reaction.c" in my previous post. The code to rename the crewmembers is now moved up to the end of case "Story_leavingOxbay" and now has a Russian case:
Code:
            switch(LanguageGetLanguage())
            {
                case "SPANISH": temp = TranslateString("","Crewmember of") + " " + GetMyName(PChar); break;
                case "RUSSIAN": temp = TranslateString("","Crewmember of") + " " + GetMyName(PChar) + "a"; break;
                temp = GetMyName(PChar) + " " + TranslateString("","'s crewmember");
            }
            for(n=1; n<=3; n++)
            {
                Characters[GetCharacterIndex("Blaze_Crewmember_0"+)].name = temp;
            }
Replace the "a" with the correct character, save the file and upload it again - but make sure to save it as ANSI so that the correct ASCII character is in there. Then translate "Crewmember of" in that version of "interface_strings.txt" and upload that as well.

If the player's name always has the "ь" on the end then it should be possible to cut it off before adding "я":
Code:
case "RUSSIAN": temp = TranslateString("","Crewmember of") + " " + strleft(GetMyName(PChar), strlen(GetMyName(PChar))-1) + "a"; break;

You can test that it works. You'll need to start a new game of "Tales of a Sea Hawk". Put this into "console.c":
Code:
traceandlog("Blaze_Crewmember_01 is now called '" + GetMyFullName(CharacterFromID("Blaze_Crewmember_01")) + "'");
Then press F12 any time after the video of the French attack on Speightstown.
COMPILE ERROR - file: storyline\standard\quests\quests_reaction.c; line: 182
Invalid Expression
RUNTIME ERROR - file: quests\quests_check.c; line: 458
 

Attachments

  • 1685566839976.png
    1685566839976.png
    102.3 KB · Views: 68
Oops!

This one does work. It checks the player's name for "ь" on the end and if the letter is there, it is cut off. I found a translation of "Bertillon's Guard" with "а" on the end of "Bertillon", so I copied the letter and added it onto the end of the player's name. Then I put some lines into "console.c" to show the names of Gordon Carpenter and all three "Blaze_Crewmember" characters:
Russian_names.jpg
All it needs now is for "Crewmember of" to be translated in "interface_strings.txt".
 

Attachments

  • quests_reaction.c
    363.9 KB · Views: 72
Oops!

This one does work. It checks the player's name for "ь" on the end and if the letter is there, it is cut off. I found a translation of "Bertillon's Guard" with "а" on the end of "Bertillon", so I copied the letter and added it onto the end of the player's name. Then I put some lines into "console.c" to show the names of Gordon Carpenter and all three "Blaze_Crewmember" characters:
View attachment 42384
All it needs now is for "Crewmember of" to be translated in "interface_strings.txt".
In the code, I changed the letter "а" to "я" so that it is correct - line 180
 

Attachments

  • quests_reaction.c
    363.9 KB · Views: 68
  • 1685618294676.png
    1685618294676.png
    129.1 KB · Views: 54
  • interface_strings.txt
    133.3 KB · Views: 71
Check "characters_names.txt", line 991, for "Bertillon's guard" - I copied the letter from there, so it may be wrong as well.

Is there a way in Cyrillic to make "Danielle" different from "Daniel"? "Daniel" stresses the first syllable, "DANiel", and is a man's name. "Danielle" stresses the second syllable, "danIELLE", and is a woman's name. Nathaniel Hawk's companion is not Daniel!
 
Last edited:
Check "characters_names.txt", line 991, for "Bertillon's guard" - I copied the letter from there, so it may be wrong as well.
Everything is right there.
Is there a way in Cyrillic to make "Danielle" different from "Daniel"? "Daniel" stresses the first syllable, "DANiel", and is a man's name. "Danielle" stresses the second syllable, "danIELLE", and is a woman's name. Nathaniel Hawk's companion is not Daniel!
This will most likely be "Даниэл" - man; Даниэль - woman. With an 'ь' at the end.
How are the sounds? Does it make sense to do them or will it not be possible to make them reproduce? There are 15 sounds left in Hornblower, but they are difficult to find, for example Keene, the dialogues are very mixed up (they are in the wrong order in the film) ... I found these phrases in English subtitles and in the film script and wrote down the approximate time in text file of all found files for the Spanish version if needed.
 
Last edited:
This will most likely be "Даниэл" - man; Даниэль - woman. With an 'ь' at the end.
Does that mean that the Cyrillic version of "Nathaniel" is wrong? The stress is on the middle syllable - nathANiel. Should it therefore have the "ь" removed?

How are the sounds? Does it make sense to do them or will it not be possible to make them reproduce? There are 15 sounds left in Hornblower, but they are difficult to find, for example Keene, the dialogues are very mixed up (they are in the wrong order in the film) ... I found these phrases in English subtitles and in the film script and wrote down the approximate time in text file of all found files for the Spanish version if needed.
I don't know if the sounds are correct because I can't speak Russian. Does the game play the Russian voice files at all?

Keene01: "Obey orders. Do your duty. And no harm will come to you." - played during the first dialog in Antigua Naval Academy.
Keene02: "It is a sure opportunity for advancement. For distinction. It is for the good of the service I have in mind Mr. Hornblower, and I insist that you take up this posting." - played when you are about to be transferred to Indefatigable in Kingston, along with the same line as dialog text. Russian would therefore be the same as line 8 of "Captain Keene_dialog.h".
Keene03: "That'll do." - the same as line 20 of "Captain Keene_dialog.h".
For Keene02 and Keene03, if the sound files you have do not match the dialog text, you may want to change the dialog text to match the sounds.

Sharpe01: "Sharpe. 2nd Battalion, sir." - the same as the first part of line 6 of "Richard Sharpe_dialog.h".
Sharpe02: "We don't use muskets. We use rifles. My men are all crack shots, we call them Chosen Men. They never miss." - line 101.
Sharpe05: "Sharpe... Sergeant... Second Battalion, 95th Rifles. Sir." - line 97 or 185.
Sharpe06: "Lieutenant Sharpe, 95th Rifles."

As for Sharpe03 and Sharpe04, I can't find anywhere that either of them are used. They won't be removed unless someone makes a new installer - my updates, being just zip files, can only add or replace files, not remove them. But it does mean you don't need to bother with Russian versions of them.

Incidentally, I don't know whether you translated all of "PROGRAM\DIALOGS\Hornblower_quest_minors_dialog.h" into Russian, but lines 4 and 16 should not be translated. They should be converted to Cyrillic letters but should still be in Spanish. In the original film "Captain Horatio Hornblower R.N.", the characters speak Spanish even though the film is in English.

Line 4: "¡Mi Supremo! ¡Mi Supremo! ¡Hay un navio a corta distancia al sureste, que viene en nuestra dirección! ¡Creo que es el Natividad!" - the character has run into the room of Don Julian, also known as El Supremo, and reported in Spanish. Don Julian then tells you what he said in lines 30-37 of "El Supremo_dialog.h".

Line 16: "¡Rendíos! ¡Rendíos, Españoles! ¡Rendíos!" - a Spanish captain tells his crew to surrender.
 
Does that mean that the Cyrillic version of "Nathaniel" is wrong? The stress is on the middle syllable - nathANiel. Should it therefore have the "ь" removed?
I used to also wonder why the main character was called that, but since the developers made this name, then let it be so, because everyone is already used to it.
I don't know if the sounds are correct because I can't speak Russian. Does the game play the Russian voice files at all?
No sounds from the Sounds\VOICE\RUSSIAN folder are not played.

I also decided to quickly check the free plot of De La Croix and at some point I am shelled by the French fort of Port-au-Prince, although I have a French flag. Even if I somehow tried to survive, the music of the exit to the global map is played, but there is no icon itself.

Also found a few untranslated things
 

Attachments

  • 23423й.png
    23423й.png
    722.7 KB · Views: 72
  • 6346346.png
    6346346.png
    274.1 KB · Views: 62
  • 463646.png
    463646.png
    863.1 KB · Views: 49
  • save and logs.7z
    579.9 KB · Views: 71
No sounds from the Sounds\VOICE\RUSSIAN folder are not played.
Here's why. In "PROGRAM\Storyline\Hornblower\dialogs\Captain Keene_dialog.c", case "First_orders3" for example:
Code:
PlaySound("VOICE\ENGLISH\Keene02.wav");
I'll need to check if "VOICE\"+GetLanguage()+"\Keene02.wav" exists, if so then play it, otherwise play "VOICE\ENGLISH\Keene02.wav" by default. And then do that for all other 'PlaySound' commands in "Hornblower" dialog files.

I also decided to quickly check the free plot of De La Croix and at some point I am shelled by the French fort of Port-au-Prince, although I have a French flag. Even if I somehow tried to survive, the music of the exit to the global map is played, but there is no icon itself.
Next time that happens, quit the game, then check "compile.log" - or post it here. There should be a message about why a fort (or ship) fired at you. Were you anywhere near Hispaniola under a different flag at any time before that? Forts can see a long way, especially in daylight, which is why if you're at Saint Martin and you dock at Philipsburg under a Dutch flag, you'll probably be attacked if you then go to Marigot under a French flag.

Also found a few untranslated things
"Mon dieu": that came from "PROGRAM\DIALOGS\Havana_Crewmember_dialog.c", line 25:
Code:
Preprocessor_Add("mygod", "Mon dieu");
There are a lot of 'Preprocessor_Add' commands so that you can say things to your crewmember based on your chosen nation - this file is used for all FreePlay Rogue and Gambler characters, not just Jean de la Croix, so you could be any nationality in the game. The attached "Havana_Crewmember_dialog.c" changes all those 'Preprocessor_Add' commands to look at 'DLG_TEXT', which is in "Havana_Crewmember_dialog.h". And so the attached Russian "Havana_Crewmember_dialog.h" has all versions needing to be converted into Cyrillic alphabet, but not translated. Note that lines 30-34 have been translated because those are for Pirate or Personal characters, so they're supposed to be in the player's language. By comparison, lines 55-59 are for English or American characters, so they're supposed to be in the character's language.

"Smuggler ship": edit this version of "interface_strings.txt" and translate line 1193.

"Palm Beach": no idea why that is not translated, it's already translated in "interface_strings.txt".
 

Attachments

  • interface_strings.txt
    133.3 KB · Views: 69
  • Havana_Crewmember_dialog.c
    6 KB · Views: 77
  • Havana_Crewmember_dialog.h
    2.3 KB · Views: 74
I found these phrases in English subtitles and in the film script and wrote down the approximate time in text file of all found files for the Spanish version if needed.
I never intended to go so far as to dub the voice lines in Spanish, to be honest.
 
Next time that happens, quit the game, then check "compile.log" - or post it here. There should be a message about why a fort (or ship) fired at you. Were you anywhere near Hispaniola under a different flag at any time before that? Forts can see a long way, especially in daylight, which is why if you're at Saint Martin and you dock at Philipsburg under a Dutch flag, you'll probably be attacked if you then go to Marigot under a French flag.
I have attached the archive
 

Attachments

  • Havana_Crewmember_dialog.h
    2.3 KB · Views: 73
  • save and logs.7z
    579.9 KB · Views: 75
  • interface_strings.txt
    133.3 KB · Views: 54
From "compile.log":
Code:
FLAGS: The 'Ïîðò-î-Ïðåíñ Fort' remembers us as Spanish
The odd characters are because my Western PC can't read the version of Cyrillic used in the game, but the important bit is that the fort has previously seen you under a Spanish flag. Jean de la Croix starts in 1690, which is in the War of the League of Augsburg, also known as the Nine Years War. Most of Europe is at war with France, and that includes Spain. The fort recognises you as Spanish and fires.

You could land at Boca de Hubon, then walk to Port au Prince. Or, if you are stuck in Port au Prince because you used "Sail-To" to get into port before the fort could react and are now being attacked when you try to leave, you could talk to the governess. You can pay for amnesty.
 
This will most likely be "Даниэл" - man; Даниэль - woman. With an 'ь' at the end.
Then at present, the translation only uses the female version - all translations of both "Daniel" and "Danielle" have that letter. That's fine for Danielle Greene but not good for Daniel Montbars, a character in the "Bartolomeu" storyline! I edited "RESOURCE\INI\TEXTS\Russian\Storyline\Bartolomeu\characters_names.txt", removed the last letter from the end of the line for "Daniel", wrote a line in "console.c" to show the name of Daniel Montbars, and started a new game in Russian.
Russian_Montbars.jpg

If that is correct, I can edit "Characters_names_ru.c", find the translations of "Daniel", and remove the last letters. Random men called Daniel will then also not have the "ь" on the end.
 
Here's why. In "PROGRAM\Storyline\Hornblower\dialogs\Captain Keene_dialog.c", case "First_orders3" for example:
Code:
PlaySound("VOICE\ENGLISH\Keene02.wav");
I'll need to check if "VOICE\"+GetLanguage()+"\Keene02.wav" exists, if so then play it, otherwise play "VOICE\ENGLISH\Keene02.wav" by default. And then do that for all other 'PlaySound' commands in "Hornblower" dialog files.
There is no Russian "Keene02.wav". But there are "Sawyer01.wav", "Sawyer02.wav", and so on. So here is "Captain James Sawyer_dialog.c" with new code to check for a language-specific voice folder and use it if it exists, otherwise use the English folder. You can test it easily because you meet Captain Sawyer in the Naval Academy right at the start of the game. One problem is that you can hear the English voice "Come on boy, we won't eat you" as well as the Russian voice. That's not because the game is trying to play both sounds, it is because "Sawyer01.wav" has both English and Russian!

Another problem is that once the dialog file has decided to use the Russian voice folder, it will play nothing if a specific file does not exist. So there's no point in doing this to "Archie Kennedy_dialog.c", for example, because there is "Archie02.wav" but there is no "Archie01.wav". It is "Archie01.wav" which is used several times in the dialog. "Archie02.wav" does not seem to be used at all, though I can see one place in the dialog where it could make sense.
 

Attachments

  • Captain James Sawyer_dialog.c
    9.5 KB · Views: 76
There is no Russian "Keene02.wav". But there are "Sawyer01.wav", "Sawyer02.wav", and so on. So here is "Captain James Sawyer_dialog.c" with new code to check for a language-specific voice folder and use it if it exists, otherwise use the English folder. You can test it easily because you meet Captain Sawyer in the Naval Academy right at the start of the game. One problem is that you can hear the English voice "Come on boy, we won't eat you" as well as the Russian voice. That's not because the game is trying to play both sounds, it is because "Sawyer01.wav" has both English and Russian!

Another problem is that once the dialog file has decided to use the Russian voice folder, it will play nothing if a specific file does not exist. So there's no point in doing this to "Archie Kennedy_dialog.c", for example, because there is "Archie02.wav" but there is no "Archie01.wav". It is "Archie01.wav" which is used several times in the dialog. "Archie02.wav" does not seem to be used at all, though I can see one place in the dialog where it could make sense.
Yesterday I uploaded almost all the audio files in Hornblower's thread except for these two because it's been a long time to find them: Hornblwr01; Hornblwr02.
Sawyer01.wav - Started playing in Russian.
If that is correct, I can edit "Characters_names_ru.c", find the translations of "Daniel", and remove the last letters. Random men called Daniel will then also not have the "ь" on the end.
The fact is that not all names depend on this sign, for example, the name Miguel. Without the "ь" at the end, it just doesn't sound right. He kind of softens the word. Miguel' - Мигель.
 
Last edited:
Back
Top