• 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!

WIP Spanish translation

You'll probably find similar issues in all periods, as kings did not have the foresight to die in the years at which our periods end. xD In general I'd probably leave Joseph Bonaparte on the throne, the reason being you can occasionally see steamships in "Napoleonic" and they only started appearing late in the period, so in general we're depicting a time in which he'd have been the king.

But if I can figure out how to change a king from within the game, specifically within a "StartStoryline.c", then Charles IV will be king of Spain when you're playing "Hornblower". That's set fairly early in the period (1798, to be exact), right in the middle of Charles IV's reign. And "FreePlay" could probably have something added so that you get the right king depending on whether you're playing before or after Joseph Bonaparte takes the throne.
If steam frigates are the matter, they are too modern for Joseph aswell, so Ferdinand VII would be more appropriate. In any case my main point was that Joseph Bonaparte was never recognized as king by the Spanish colonial authorities who proclaimed Ferdinand instead, and those are the ones we are dealing with in the game.

I know inaccuracies are bound to happen as periods and rulers can't be exactly matched but, even if not perfect, I think Charles IV or even Ferdinand VII are slightly better options for this particularly complex case (a good foreshadowing of the clusterfu@k that Spanish politics would be for the remainder of the 19th century :p).
 
Last edited:
That opens up a whole new issue. If we accept that the colonies backed Ferdinand VII when Joseph Bonaparte was officially on the throne then they did so to ally themselves with the British and against France. And that means default relations in "Napoleonic" would need to change - if the colonial governors are all backing the alliance against France then Spain has to be hostile to France, and allied to Britain, Holland and Portugal. (Which would indeed be the case later in the period after Spain revolted against French rule.)
 
That's why I first suggested Charles IV as the main option, as he was still an ally of France. The thing is that Joseph Bonaparte never had full control of Spain (and none whatsoever of its colonies), the revolt against French rule began in force the moment he took the crown.

For example, by the time Joseph was king of Spain, another of Napoleon's brothers, Louis, was king of Holland, so Holland should be allied to France aswell. The Napoleonic period is so full of changes in alliances, that I honestly think the best option is setting the relations and rulers roughly as they were at the start of the period (except for Napoleon himself, as he's too central to the period to be left out even if he wasn't in charge in 1790) and assume that everything that happens since is just an alternate history scenario (which it's already the case, at least on free play as relations can change randomly)
 
Last edited:
Oops, Joseph was marked for SPAIN. I didn't remember that and was posting on the assumption that he was for FRANCE. :facepalm

The entire game is "alternate history". We try to replicate some measure of accuracy, but it is all vastly simplified.

If you want to override any period stuff in mid-game or through StartStoryline.c, you can use some code like this:
Code:
       makeref(period, Periods[GetCurrentPeriod()]);
       period.Nations.OfficialName.Pirate = "Brethren of the Coast";
You can probably replace 'GetCurrentPeriod()' with 'PERIOD_NAPOLEONIC' in your particular case so you'll be certain it doesn't affect any of the others.
 
How about this, to go into "PROGRAM\Storyline\FreePlay\StartStoryline.c" right after the bit which sets relations for the War of the League of Augsburg?
Code:
   if (GetDataYear() >= 1789 && GetDataYear() <= 1808)
   {
     Periods[GetCurrentPeriod()].Royal.Spain.Name = "Carlos IV";
   }
All other Spanish kings named "Charles" in English are given their Spanish names in "periods.c", so we may as well be consistent. This code ought to give the correct Spanish king even if you start your FreePlay game in the last year of "Revolutions", as "Napoleonic" starts in 1790. Charles IV, alias Carlos IV, took the throne in December 1788 but there's little point giving him the job within the game year 1788 if it was only for the last month.

A similar line doesn't even need the date condition if it goes into "StartStoryline.c" for "Hornblower" - that storyline is fixed to start in 1798.
 
Hello @Pieter Boelen and @Homo eructus . Sorry for not being very active these last months. The explanations of why is here, on that thread. I will be able to return back with more free time on July, just when I finish my degree.

Homo erectus, if by July you haven't still finished your works, leave me the work I was assigned for (Translating file conversations into spanish, that is).

Again, I'm sorry for not being able to do anything special, but I hope you understand me. Cheers men :cheers
 
I'm free to pick up where I left. I'll keep working with the july 28 version until I'm finished or a new public release comes out.
 
I'm free to pick up where I left. I'll keep working with the july 28 version until I'm finished or a new public release comes out.
If you get the chance, I would recommend WinMerging with the latest version found in the link in my signature.
That's the way forward.
 
If you get the chance, I would recommend WinMerging with the latest version found in the link in my signature.
That's the way forward.
I don't know. If I keep updating and going over what's already done to add all the little changes, I won't move forward much. I rather have everything translated and then update all the needed changes at once.
 
I think effectively there aren't many changes that should affect you.
The changes that do, should probably be INcluded in the next modpack update because those are probably changes to the .c files.
 
Translating the Cartagena Hotel dialogs I found a discrepancy between the dialog and ItemsDescribet.txt. One of the ghosts asks for a Sextant and a Pair of Compasses in the dialog, but the Items file llists a Sextant and a Drawing Kit as the Navigator's items, while the Pair of Compasses is nowhere to be found. It may be fixed by now, but I want to be sure what the correct item is and which of the files is mistaken.
 
Last edited:
Translating the Cartagena Hotel dialogs I found a discrepancy between the dialog and ItemsDescribet.txt. One of the ghosts asks for a Sextant and a Pair of Compasses in the dialog, but the Items file llists a Sextant and a Drawing Kit as the Navigator's items, while the Pair of Compasses nowhere to be found. It may be fixed by now, but I want to be sure what the correct item is and which of the files is mistaken.
@Jack Rackham: I think this is for you?
 
Another thing, this one seems tricky. I've come to the part in the Governor dialog when he asks you to eliminate the hostiles in his waters, and the ship description he gives you of the target doesn't make sense once translated due to the order of the strings in it ([nation] [number of guns] [ship type] "Name"). For it to make sense in Spanish it should be [ship type][nation][number of guns] "Name". I've found what looks like the root code for that dialog in dialog_func.c but my question is: is it possible to change the order in which the strings are phrased in a way that only affects the Spanish vesion while the English one remains the same?

This is the relevant text in Dialog_func.c, I believe
Code:
// MAXIMUS: can be used in any situation [used in Silehard-dialog] --> // KK -->
string GetShipDescribe(string charId, bool nation, bool nguns, bool shipname, bool accusative)
{
   ref chr, shipRef;
   int canQuantity;
   aref arShip;
   string shipType;
   string shipDescribe = "";

   chr = characterFromID(charId);
   shipRef = GetShipByType(GetCharacterShipType(chr));
   shipType = XI_ConvertString(shipRef.Sname);

   if (nation) shipDescribe += XI_ConvertString("sw_" + GetNationDescByType(sti(chr.nation))) + " ";
   if (nguns) shipDescribe += GetMaxCannonQuantity(chr) + XI_ConvertString("cannonsQuantity") + " ";
   shipDescribe += strlower(shipType);
   if (accusative) {
     switch (LanguageGetLanguage()) {
       case "Polish":
         int dl = strlen(shipDescribe);
         if (GetSymbol(shipDescribe, dl - 1) == "a") {
           string tmpstr = "";
           for (int i = 0; i < dl - 1; i++) {
             if (GetSymbol(shipDescribe, i + 1) == " ")
               tmpstr += "№";
             else
               tmpstr += strcut(shipDescribe, i, i);
           }
           tmpstr += "Ч";
           shipDescribe = tmpstr;
         }
       break;
       // default:
     }
   }
   if (shipname) shipDescribe += " " + GetMyShipNameShow(chr);

   if(HasSubStr(shipType,"0") || HasSubStr(shipType,"1") || HasSubStr(shipType,"2") || HasSubStr(shipType,"3") || HasSubStr(shipType,"4") || HasSubStr(shipType,"5") || HasSubStr(shipType,"6") || HasSubStr(shipType,"7") || HasSubStr(shipType,"8") || HasSubStr(shipType,"9"))
   {
     if(!HasSubStr(shipType," 0") && !HasSubStr(shipType," 1") && !HasSubStr(shipType," 2") && !HasSubStr(shipType," 3") && !HasSubStr(shipType," 4") && !HasSubStr(shipType," 5") && !HasSubStr(shipType," 6") && !HasSubStr(shipType," 7") && !HasSubStr(shipType," 8") && !HasSubStr(shipType," 9"))
     {
       shipDescribe = shipType;
     }
   }
   return shipDescribe;

It seems to have a language specific variant for Polish, I assume it is to allow for special characters. Could the same procedure be used to change the order of the strings in just one language?
 
Last edited:
Thanks for finding that @Homo eructus, :doff
Drawing Kit is right as that's what the picture shows.
I have changed in the Cartagena hotel_dialog.h now to Drawing Kit.
Obs bugfix.
 

Attachments

  • Cartagena hotel_dialog.h
    3.1 KB · Views: 100
Back
Top