[MOD TRANSLATION] Deutsche Übersetzung PoP3.8.4

Users who are viewing this thread

saxondragon said:
Leonion said:
You don't translate .txt files.
You translate .csv files after you have generated them this way:
3NPUWVC.jpg


I was under the impression he was going directly to the text files and changing them there...

This is what I had in mind, yes.
Up until this point I didn't knew that there are .csv files as well. All I saw was english text in the txt files right in the rootfolder. So I thought - hey - just translate everything from there to german, save the txt files and everything ingame will be german.
 
yosuke30 said:
All I saw was english text in the txt files right in the rootfolder. So I thought - hey - just translate everything from there to german, save the txt files and everything ingame will be german.
Heavens, no.
.txt files are code files. Only English can be used in code files.
 
That would make it even easier. The .csv look much more organized than the .txt files.
saxondragon mentioned that, even if you translate all .csv files, there will still be english text due to some ingame text being somewhat hardcoded english (if I understood that correct)?
Can someone give a rough figure how much % of all ingame text would still be english?
 
Leonion said:
0% if you fully translate all .csv files including ui files (see Prophesy of Pendor V3.8\languages\en).


I am astounded that string variables threaded together to create prodecurally generated sentences would be translated fully into another language complete with proper sentence structure. 


How does that work exactly Leonion? 


 
What do you mean?
Things like "Knights of {s3}" where s3 is "the Boar" or "the Hyppo" or whatever?
They're all stored either in strings or in quick_strings, and they can all be translated, though proper grammar will indeed be a big issue, especially in languages where endings of words vary a lot.
Even in Native in things like "[factionname] declared war against [factionname]" the second [factionname] is the object and its spelling differs from how the subject is spelled in languages such as Russian, so translations look grammatically incorrect, like instead of "[kingdom Swadia] declared war against [kingdoma Swadii]" we have the incorrect "[kingdom Swadia] declared war against kingdom Swadia" [this example is an attempt to show Russian specifics with English words] as the requested faction name has the subject form only while in Russian there are a total of 6 forms of each noun - 1 for subject and 5 for different kinds of objects.
So, sure, Warband translations are full of improper grammar in complicated languages.
That's why I prefer to play Warband in English.  :smile:
 
Leonion said:
What do you mean?
Part of the original code was an experiment in procedural sentence generation.
Due to time constraints we only implemented the first half of the process.  Here is a very small piece of it that covers "I have not heard any new rumors"


I am working on another project that extends this example well beyond this experiment and localization seemed impossible due to language structure issues.  However, if you have an answer to this sort of work, I am very interested in hearing how it can be accomplished without re coding for each language.





<snip>

####################################################################################
#
# Random talk and rumors
  #input
  # type is 1 is bartender/Merchant
  #          2 is Traveler
  #          3 is Red Brotherhood
  #          4 is Noble/lady--------not used
  #          5 is steward
  #           
  #  slot_troop_rumor_date
  # changes S3 for output string
  ####################################################################################


("random_rumor_talk", [
            (store_script_param, ":speaker_type", 1),
            (store_script_param, ":speaker", 2),
            (assign,reg2,":speaker_type"),
            (str_store_troop_name,s1,":speaker"),
            #(display_log_message, "@ generating rumor  speaker type {reg2}, speaker is {s1}. "),
            #Determine if they have already told their rumor this week
                    (troop_get_slot,":lastday",":speaker",slot_troop_rumor_date),
                    (try_begin),
                            (eq,":speaker_type",2),(val_add,":lastday",2),# Travelers hear stuff more often
                    (else_try),
                          (val_add,":lastday",5),
                    (try_end),
           
                     
                    (store_current_day,":control_day"),
            #(assign,reg14,":lastday"), (assign,reg15,":control_day"),## REMOVE
          # (display_message, "@ lastday of rumor is {reg14}.. today is {reg15}"),    ## REMOVE
                    #(assign,":lastday",0),(assign,":control_day",0),# testing line remove-------------------generate rumor ----------
                    # (val_add,":control_day",50),# testing line remove------------------generate a no response-----------
                  #  (str_clear,s1),(str_clear,s3),(str_clear,s4),(str_clear,s5),(str_clear,s6),(str_clear,s7),(str_clear,s:cool:,
          #  (str_clear,s0),(str_clear,s53), (str_clear,s9),(str_clear,s50),
        (try_begin),
                  (le,":control_day",":lastday"),# catch.. no new rumors
                      #(display_message, "@ determination made.. no rumor  lastday less than today"),       
                   
                    (try_begin),
                        (eq,":speaker_type",1), #bartender and merchants


                              (store_random_in_range,":adj_random",10,90),(val_div,":adj_random",10),                           
                            (try_begin),
                                (lt,":adj_random",1), (str_store_string,s5,"@no tidbits of value"),
                            (else_try),
                                (lt,":adj_random",2),(str_store_string,s5,"@no information of interest"),
                            (else_try),
                                (lt,":adj_random",3),(str_store_string,s5,"@no interesting news to give you"),
                            (else_try),
                                (lt,":adj_random",4),(str_store_string,s5,"@no new rumors to report"),
                            (else_try),
                              (lt,":adj_random",5),(str_store_string,s5,"@no new information"),
                            (else_try),
                                (lt,":adj_random",6),(str_store_string,s5,"@very little worth repeating"),
                            (else_try),
                                (lt,":adj_random",7),(str_store_string,s5,"@nothing but worthless gossip and fishwives tales"),
                            (else_try),
                                (lt,":adj_random",:cool:,(str_store_string,s5,"@nothing but innuendo and worthless boasts"),
                            (else_try),
                                (str_store_string,s5,"@no news worth repeating"),
                          (try_end),# end for adjective 1 S1
                          # (display_log_message, "@ {s5}"),
           
                            (store_random_in_range,":adj_random",10,60),(val_div,":adj_random",10),                           
                              (try_begin),
                                  (lt,":adj_random",1), (str_store_string,s2,"@ My {Captain/Lady},"),
                              (else_try),
                                  (lt,":adj_random",2),(str_store_string,s2,"@ Business has been brisk and"),
                              (else_try),
                                  (lt,":adj_random",3),(str_store_string,s2,"@ Well in truth, {playername},"),
                              (else_try),
                                  (lt,":adj_random",4),(str_store_string,s2,"@ Hmmm, {playername}.  My sources have dried up, and"),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s2,"@ My good {playername}, I have been very busy and"),
                              (else_try),
                                  (str_store_string,s2,"@ I am sorry, {playername}, "),
                              (try_end),# end for Starting Sentence
                          #(display_log_message, "@ {s2}"),


                                (store_random_in_range,":adj_random",10,100),(val_div,":adj_random",10),                           
                              (try_begin),
                                    (lt,":adj_random",1), (str_store_string,s6,"@. Try next week."),
                              (else_try),
                                  (lt,":adj_random",2),  (str_store_string,s6,"@. Perhaps you should go ask someone else."),
                              (else_try),
                                  (lt,":adj_random",3),  (str_store_string,s6,"@. You might have better luck elsewhere."),
                              (else_try),
                                  (lt,":adj_random",4),  (str_store_string,s6,"@. Ask me later, say in about a week."),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s6,"@. I am sure that there are others that have the information you are looking for."),
                              (else_try),
                                  (lt,":adj_random",6),(str_store_string,s6,"@. Perhaps later I will overhear something of interest."),
                                (else_try),
                                    (lt,":adj_random",7),(str_store_string,s6,"@. Come back another time."),
                              (else_try),                                                                                         
                                    (str_store_string,s6,"@. "),
                              (try_end), # end for adjective 1 S6
           
                            (store_random_in_range,":adj_random",10,80),(val_div,":adj_random",10),                           
                              (try_begin),
                                  (lt,":adj_random",1), (str_store_string,s3,"@ {s2} I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",2),(str_store_string,s3,"@ {s2} there have been {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",3),(str_store_string,s3,"@  {s2} I have to say there is {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",4),(str_store_string,s3,"@ {s2} few people have been talking and I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s3,"@ {s2} I have been ill, so I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",6),(str_store_string,s3,"@ {s2} I have been busy with this shipment so I have {s5} for you{s6}"),
                                (else_try),
                                    (lt,":adj_random",7),(str_store_string,s3,"@ {s2} I have just have not had the time to listen for such, so unfortunately I have {s5} for you{s6}"),
                              (else_try),                                                                                         
                                  (str_store_string,s3,"@ {s2} I have been busy with my apprentices, so I have {s5} to tell you{s6}"),
                              (try_end), # end for adjective 1 S1
                                #  (display_log_message, "@ {s3}"), 
                      (else_try),
                          (eq,":speaker_type",2), #Traveler------------------------------------------------------------   


                            (store_random_in_range,":adj_random",10,60),(val_div,":adj_random",10),                           
                              (try_begin),
                                  (lt,":adj_random",1), (str_store_string,s2,"@ Ah! It is unfortunate My {Lord/Lady}, as"),
                              (else_try),
                                  (lt,":adj_random",2),(str_store_string,s2,"@ More is the pity good {sir/madame}, as"),
                              (else_try),
                                  (lt,":adj_random",3),(str_store_string,s2,"@ I have been idle too long, and"),
                                (else_try),
                                  (lt,":adj_random",4),(str_store_string,s2,"@ I have been been busy with personal matters of late, and"),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s2,"@ My ears and eyes have been open, but,"),
                              (else_try),
                                  (str_store_string,s2,"@ I am sorry,"),
                              (try_end),# end for adjective 1 S1
                          #(display_log_message, "@ {s2}"),
           
                                  (store_random_in_range,":adj_random",10,90),(val_div,":adj_random",10),                           
                            (try_begin),
                                (lt,":adj_random",1), (str_store_string,s5,"@no information of value to"),
                            (else_try),
                                (lt,":adj_random",2),(str_store_string,s5,"@no information of interest for"),
                            (else_try),
                                (lt,":adj_random",3),(str_store_string,s5,"@very little interesting news to share with"),
                            (else_try),
                                (lt,":adj_random",4),(str_store_string,s5,"@no valuable news for"),
                            (else_try),
                              (lt,":adj_random",5),(str_store_string,s5,"@only worthless whispers to share"),
                            (else_try),
                                (lt,":adj_random",6),(str_store_string,s5,"@very little worth repeating to"),
                            (else_try),
                                (lt,":adj_random",7),(str_store_string,s5,"@nothing but the change of weather and drunken songs to give to"),
                            (else_try),
                                (lt,":adj_random",:cool:,(str_store_string,s5,"@only unconfirmed whispers of no value to tell"),
                            (else_try),
                                (str_store_string,s5,"@only unsubstianted gossip for"),
                          (try_end),# end for adjective 1 S1
                          # (display_log_message, "@ {s5}"),
                       


                                (store_random_in_range,":adj_random",10,100),(val_div,":adj_random",10),                           
                              (try_begin),
                                    (lt,":adj_random",1), (str_store_string,s6,"@. I am sorry my friend, there are times when I just not privy to the happenings of the land."),
                              (else_try),
                                  (lt,":adj_random",2),  (str_store_string,s6,"@. These things happen.  In a day or two I will have some more tantalizing gossip for you."),
                              (else_try),
                                  (lt,":adj_random",3),  (str_store_string,s6,"@. That will change however, as it always does.  Then I will hear something of great value."),
                              (else_try),
                                  (lt,":adj_random",4),  (str_store_string,s6,"@.  If you are in a hurry, try speaking to the merchants or stewards, sometimes they hear nuggets of information."),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s6,"@. Never fear, my ear is to the ground and I am bound to hear something soon.. it is, after all, my profession!"),
                              (else_try),
                                  (lt,":adj_random",6),(str_store_string,s6,"@. Perhaps later I will overhear something of interest."),
                                (else_try),
                                    (lt,":adj_random",7),(str_store_string,s6,"@. Let me to snoop about and ask some questions.  In a day or two come back and I should know more."),
                                (else_try),
                                    (lt,":adj_random",:cool:,(str_store_string,s6,"@. Perhaps you should come back tomorrow. A few drinks here, a lovers whisper there, and information flows like water."),
                              (else_try),                                                                                         
                                    (str_store_string,s6,"@. "),
                              (try_end), # end for adjective 1 S6
           
                            (store_random_in_range,":adj_random",10,80),(val_div,":adj_random",10),                           
                              (try_begin),
                                  (lt,":adj_random",1), (str_store_string,s3,"@ {s2} I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",2),(str_store_string,s3,"@ {s2} there have been {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",3),(str_store_string,s3,"@  {s2} I have to admit there is {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",4),(str_store_string,s3,"@ {s2} so few people have been gossiping.  I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s3,"@ {s2} I have encountered so few people of late, so I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",6),(str_store_string,s3,"@ {s2} I have been engaged on a secret mission, so I have {s5} you{s6}"),
                                (else_try),
                                    (lt,":adj_random",7),(str_store_string,s3,"@ {s2} I wish I had better news for you, but as the fates would have it {s5} for you{s6}"),
                              (else_try),                                                                                         
                                  (str_store_string,s3,"@ {s2} I have been occupied with business of a paying nature, so I have {s5} to tell you{s6}"),
                              (try_end), # end for adjective 1 S1


                                   
                    (else_try),
                        (eq,":speaker_type",3), # Red Brotherhood------------------------------------------------------------   




                                  (store_random_in_range,":adj_random",10,50),(val_div,":adj_random",10),                           
                              (try_begin),
                                  (lt,":adj_random",1), (str_store_string,s2,"@ Ah! It is an unlucky turn of events good {Sir/Lady}, as"),
                              (else_try),
                                  (lt,":adj_random",2),(str_store_string,s2,"@ Sad tales good {sir/madame}, as"),
                              (else_try),
                                  (lt,":adj_random",3),(str_store_string,s2,"@ I have been too busy with the flesh trade, and"),
                              (else_try),
                                  (lt,":adj_random",4),(str_store_string,s2,"@ My ears are open, but,"),
                              (else_try),
                                  (str_store_string,s2,"@ I am sorry,"),
                              (try_end),# end for adjective 1 S1
                          #(display_log_message, "@ {s2}"),
           
                                  (store_random_in_range,":adj_random",10,90),(val_div,":adj_random",10),                           
                            (try_begin),
                                (lt,":adj_random",1), (str_store_string,s5,"@so little coherent information of value"),
                            (else_try),
                                (lt,":adj_random",2),(str_store_string,s5,"@no gossip of interest"),
                            (else_try),
                                (lt,":adj_random",3),(str_store_string,s5,"@very little interesting news to share"),
                            (else_try),
                                (lt,":adj_random",4),(str_store_string,s5,"@no valuable news"),
                            (else_try),
                              (lt,":adj_random",5),(str_store_string,s5,"@only worthless slave talk"),
                            (else_try),
                                (lt,":adj_random",6),(str_store_string,s5,"@very little worth repeating"),
                            (else_try),
                                (lt,":adj_random",7),(str_store_string,s5,"@nothing but the cries of women and moans of bench slaves"),
                            (else_try),
                                (lt,":adj_random",:cool:,(str_store_string,s5,"@only the wild tales of the soon to be shackled"),
                            (else_try),
                                (str_store_string,s5,"@only minor gossip and talk of the endless wars"),
                          (try_end),# end for adjective 1 S1
                          # (display_log_message, "@ {s5}"),
                       


                                (store_random_in_range,":adj_random",10,100),(val_div,":adj_random",10),                           
                              (try_begin),
                                    (lt,":adj_random",1), (str_store_string,s6,"@. I am sorry, my profession is to enslave the unwilling, not listen to their tales of woe."),
                              (else_try),
                                  (lt,":adj_random",2),  (str_store_string,s6,"@. Information like what you seek comes to me every week or so.  Check back then."),
                              (else_try),
                                  (lt,":adj_random",3),  (str_store_string,s6,"@. Pity too, as I could use some juicy gossip to lift my spirits."),
                              (else_try),
                                  (lt,":adj_random",4),  (str_store_string,s6,"@.  If you are in a hurry, try speaking to the other patrons in the taverns and maybe even the merchants."),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s6,"@. If you want to know the real juicy stories, then seek out those wandering spies in the taverns.  They know a thing or two."),
                              (else_try),
                                  (lt,":adj_random",6),(str_store_string,s6,"@. Those guild-rats never tell me anything.  Just buy the flesh, pay the coin and staff the galleys! "),
                                (else_try),
                                    (lt,":adj_random",7),(str_store_string,s6,"@. Hell, I am bound to hear something worth passing on at some point during this next week.  I always do."),
                                (else_try),
                                    (lt,":adj_random",:cool:,(str_store_string,s6,"@. Perhaps you should come back next week.  I am expecting a delivery soon and that source always spins a good yarn."),
                              (else_try),                                                                                         
                                    (str_store_string,s6,"@. "),
                              (try_end), # end for adjective 1 S6
           
                            (store_random_in_range,":adj_random",10,80),(val_div,":adj_random",10),                           
                              (try_begin),
                                  (lt,":adj_random",1), (str_store_string,s3,"@ {s2} I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",2),(str_store_string,s3,"@ {s2} there have been {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",3),(str_store_string,s3,"@  {s2} I must tell you I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",4),(str_store_string,s3,"@ {s2} so few people have been willing to speak.  I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s3,"@ {s2} I have encountered only slaves of late, so I have heard {s5}{s6}"),
                              (else_try),
                                  (lt,":adj_random",6),(str_store_string,s3,"@ {s2} I have been speaking to the guild masters, so I have {s5} for you{s6}"),
                                (else_try),
                                    (lt,":adj_random",7),(str_store_string,s3,"@ {s2} I wish that my tidings were better. As the fates would have it I have heard {s5}{s6}"),
                              (else_try),                                                                                         
                                  (str_store_string,s3,"@ {s2} I have been overtaxed with some escaped slaves, so I have {s5} to tell you{s6}"),
                              (try_end), # end for adjective 1 S1                                   
                    (else_try),
                        (eq,":speaker_type",4), # Lady------------------------------------------------------------   
                                   
                    (else_try),
                        (eq,":speaker_type",5), # Steward  ------------------------------------------------------------                               
                            (store_random_in_range,":adj_random",10,90),(val_div,":adj_random",10),                           
                            (try_begin),
                                (lt,":adj_random",1), (str_store_string,s5,"@no information of value"),
                            (else_try),
                                (lt,":adj_random",2),(str_store_string,s5,"@no information of interest"),
                            (else_try),
                                (lt,":adj_random",3),(str_store_string,s5,"@no interesting news"),
                            (else_try),
                                (lt,":adj_random",4),(str_store_string,s5,"@no news"),
                            (else_try),
                              (lt,":adj_random",5),(str_store_string,s5,"@only worthless information"),
                            (else_try),
                                (lt,":adj_random",6),(str_store_string,s5,"@very little worth repeating"),
                            (else_try),
                                (lt,":adj_random",7),(str_store_string,s5,"@nothing but soldiers tales and the cooks gossip"),
                            (else_try),
                                (lt,":adj_random",:cool:,(str_store_string,s5,"@only unconfirmed whispers of no value"),
                            (else_try),
                                (str_store_string,s5,"@unsubstianted gossip"),
                          (try_end),# end for adjective 1 S1
                          # (display_log_message, "@ {s5}"),
           
                            (store_random_in_range,":adj_random",10,50),(val_div,":adj_random",10),                           
                              (try_begin),
                                  (lt,":adj_random",1), (str_store_string,s2,"@ My {Lord/Lady},"),
                              (else_try),
                                  (lt,":adj_random",2),(str_store_string,s2,"@ Castle business is taxing and"),
                              (else_try),
                                  (lt,":adj_random",3),(str_store_string,s2,"@ Of course good {Lord/Lady},"),
                              (else_try),
                                  (lt,":adj_random",4),(str_store_string,s2,"@  My sources are muted,"),
                              (else_try),
                                  (str_store_string,s2,"@ I am sorry,"),
                              (try_end),# end for adjective 1 S1
                          #(display_log_message, "@ {s2}"),


                                (store_random_in_range,":adj_random",10,100),(val_div,":adj_random",10),                           
                              (try_begin),
                                    (lt,":adj_random",1), (str_store_string,s6,"@. I am sorry {Lord/Lady}, I will try harder to listen in the future."),
                              (else_try),
                                  (lt,":adj_random",2),  (str_store_string,s6,"@. Perhaps you should ask someone else.  A spy perhaps?"),
                              (else_try),
                                  (lt,":adj_random",3),  (str_store_string,s6,"@. Have you tried seeking information in the Taverns?"),
                              (else_try),
                                  (lt,":adj_random",4),  (str_store_string,s6,"@. Have you thought of asking Merchants, they are in contact with many sorts of travelers and hear many rumors and newsworthy tidbits."),
                              (else_try),
                                  (lt,":adj_random",5),(str_store_string,s6,"@. I am sure that there are others that have the information you seek."),
                              (else_try),
                                  (lt,":adj_random",6),(str_store_string,s6,"@. Perhaps later I will overhear something of interest."),
                                (else_try),
                                    (lt,":adj_random",7),(str_store_string,s6,"@. I am not a rumor monger my {Lord/Lady}, so I do not have a tendency to seek out gossip."),
                                (else_try),
                                    (lt,":adj_random",:cool:,(str_store_string,s6,"@. Perhaps you should come back another time. One never knows what one will overhear in these halls."),
                              (else_try),                                                                                         
                                    (str_store_string,s6,"@. "),
                              (try_end), # end for adjective 1 S6
           
                          *************************************************


 
I am astounded that string variables threaded together to create prodecurally generated sentences would be translated fully into another language complete with proper sentence structure. 

I used to translate Floris into French. French has a few problems when translating: every noun has a gender, adjectives have to be placed either before or after a noun, and a few other differences.

Example: if you have "sword" in a file, and "white {var1}" in another, well you translate that as "épée" and "{var1} blanc(he)", so it becomes "épée blanc(he)" The word order is correctly changed, but you're forced to put a parenthesis to account for feminine and masculine, because "épée" is feminine, but bouclier is masculine.

EDIT: if you want to translate files, you have to open edit mode in windowed, and export language file. You export one in english, and one in your language if there's an ongoing translation already, then you compare each file in WINMERGE to see what has already been done.
 
saxondragon said:
Part of the original code was an experiment in procedural sentence generation.
Due to time constraints we only implemented the first half of the process.  Here is a very small piece of it that covers "I have not heard any new rumors"

I am working on another project that extends this example well beyond this experiment and localization seemed impossible due to language structure issues.  However, if you have an answer to this sort of work, I am very interested in hearing how it can be accomplished without re coding for each language.
There is little difference between this and basic
(str_store_faction_name, s1, ":faction_attacks"),
(str_store_faction_name, s2, ":faction_defends"),
(display_message, "@{s1} declared war against {s2}"),
It's just "inserted" parts are longer.
Moreover, longer sentences give translators more flexibility.
Short kingdomnames or compatibility of adjectives (like in snouz's example) is where real troubles begin. Long sentences are not a problem, unless these is wordplay.

For example, here is how some of these parts were translated into Russian:
qstr_no_tidbits_of_value|разные сплетни, но в них нет ничего ценного
qstr_no_information_of_in|разные сплетни, но в них нет никакой ценной информации
qstr_no_interesting_news|разные сплетни, но в них нет никаких ценных новостей
qstr_no_new_rumors_to_rep|разные сплетни, но в них нет никаких новых слухов
qstr_no_new_information|разные сплетни, но в них нет стоящей информации
qstr_very_little_worth_re|разные сплетни, но в них нет ничего, заслуживающего вашего внимания
qstr_nothing_but_worthles|разные сплетни, но в них нет ничего интересного. Только никчемные сплетни и треп торговок рыбой
qstr_nothing_but_innuendo|разные сплетни, но в них нет никаких новостей. Только инсинуации и ничего не стоящее хвастовство
qstr_no_news_worth_repeat|разные сплетни, но в них нет новостей, достойных повторения
qstr__My_{reg63?Captain:L|{reg63?Мой капитан:Миледи},
qstr__Business_has_been_b|Бизнес был оживленным, и
qstr__Well_in_truth_{play|По правде говоря, {playername},
qstr__Hmmm_{playername}._|Хм, {playername}, мои источники иссякли, и
qstr__My_good_{playername|{reg63?Любезный:Любезная} {playername}, я был{reg65?а:} поглощен{reg65?а:} работой, и
qstr__I_am_sorry_{playern|Я сожалею, {playername},
qstr_._Try_next_week.|. Попробуйте через неделю.
qstr_._Perhaps_you_should|. Возможно, вам стоит спросить кого-либо еще.
qstr_._You_might_have_bet|. Попытайте удачу в другом месте.
qstr_._Ask_me_later_say_i|. Спросите меня позже, скажем, приблизительно через неделю.
qstr_._I_am_sure_there_ar|. Походите тут, порасспрашивайте. Я уверен{reg65?а:}, у кого-нибудь здесь обязательно найдется информация, которую вы ищите.
qstr_._Perhaps_later_I_wi|. Возможно, позже я подслушаю кое-что действительно интересное.
qstr_._Come_back_another_|. Возвращайтесь позже.
qstr_.|.
qstr__{s2}_I_have_heard_{|{s2} я слышал{reg65?а:} {s5}{s6}
qstr__{s2}_there_have_bee|{s2} могу рассказать {s5}{s6}
qstr__{s2}_I_have_to_say_|{s2} последнее время я слышал{reg65?а:} {s5}{s6}
qstr__{s2}_few_people_hav|{s2} несмотря на то, что некоторые люди действительно заходили сюда, они рассказывали {s5}{s6}
qstr__{s2}_I_have_been_il|{s2} я плохо себя чувствовал{reg65?а:} всю неделю. Я слышал{reg65?а:} {s5}{s6}
qstr__{s2}_I_have_been_bu|{s2} я был{reg65?а:} занят{reg65?а:} отгрузкой. Таким образом, могу рассказать {s5}{s6}
qstr__{s2}_I_have_just_ha|{s2} у меня не было времени, чтобы прислушаться к чему-либо. Могу рассказать {s5}{s6}
qstr__{s2}_I_have_been_bus|{s2} я занимал{reg65?ась:ся} с моими учениками. Таким образом, я слышал{reg65?а:} {s5}{s6}
qstr__Ah!_It_is_unfortuna|Ах! Как неудачно, {reg63?милорд:миледи},
qstr__More_is_the_pity_go|Сжальтесь, любезн{reg63?ый сэр:ая мадам},
qstr__I_have_been_idle_to|Я был{reg65?а:} не при делах слишком долго, и
qstr__I_have_been_busy_wi|Я был{reg65?а:} занят{reg65?а:} личными делами в последнее время, и
qstr__My_ears_and_eyes_ha|Мои уши и глаза были открыты, но,
qstr__I_am_sorry|Я сожалею,
qstr_no_information_of_va|разные сплетни, но никакой ценной информации
qstr_very_little_interest|очень мало новостей, которыми стоило бы поделиться
qstr_no_valuable_news|довольно много слухов, но никаких интересных новостей
qstr_only_worthless_whisp|только слухи, не заслуживающие внимания
qstr_nothing_but_the_chan|только новости о погоде и слова застольных песен
qstr_only_unconfirmed_whi|только неподтвержденные слухи, никакой ценности
qstr_only_unsubstantiated|только необоснованные сплетни
qstr_._I_am_sorry_my_frie|. Я сожалею, {reg63?мой друг:моя подруга}, настали времена, когда я не посвящен{reg65?а:} в происходящее на этих землях.
qstr_._These_things_happe|. Всегда что-то случается. Через день или два я буду знать новые сплетни, которые, возможно, заинтересуют вас.
qstr_._That_will_change_h|. Все меняется, как всегда. Может, скоро я услышу что-то более ценное.
qstr_.__If_you_are_in_a_h|. Если вы спешите, попробуйте поговорить с торговцами или стюардами, они знают очень многое.
qstr_._Never_fear_my_ear_|. Не беспокойтесь, мои уши всегда открыты, и я просто обязан{reg65?а:} скоро услышать что-нибудь новое. Это, в конце концов, моя профессия!
qstr_._Let_me_snoop_about|. Позволь мне осмотреться и задать несколько вопросов. Через день или два возвращайся, и я разузнаю больше.
qstr_._Perhaps_you_should_|. Возможно, вам следует возвратиться завтра. Не исключено, что у меня будет что-то интересное для вас.
qstr__{s2}_I_have_to_admi|{s2} долж{reg65?на:ен} признаться, что слышал{reg65?а:} {s5}{s6}
qstr__{s2}_so_few_people_|{s2} очень мало людей сплетничали. Я услышал{reg65?а:} {s5}{s6}
qstr__{s2}_I_have_encount|{s2} в последнее время я мало с кем сталкивал{reg65?ась:ся}, и услышал{reg65?а:} {s5}{s6}
qstr__{s2}_I_have_been_en|{s2} я был{reg65?а:} занят{reg65?а:} на секретной миссии, таким образом, у меня есть {s5}{s6}
qstr__{s2}_I_wish_I_had_b|{s2} я хотел{reg65?а:} бы иметь больше новостей для вас, но судьба позволила мне услышать {s5}{s6}
qstr__{s2}_I_have_been_oc|{s2} я был{reg65?а:} занят{reg65?а:} бизнесом, оплачивал{reg65?а:} долги, так что могу рассказать {s5}{s6}
qstr__Ah!_It_is_an_unluck|Ах! Это неудачный поворот событий, {reg63?сэр:леди},
qstr__Sad_tales_good_{reg|Я сожалею, дорог{reg63?ой сэр:ая мадам},
qstr__I_have_been_too_bus|Я был{reg65?а:} очень занят{reg65?а:} торговлей рыбой, и
qstr__My_ears_are_open_bu|Мои уши открыты,
qstr_so_little_coherent_i|так мало ценной информации
qstr_no_gossip_of_interes|лишь неинтересные сплетни
qstr_very_little_interesti|только очередную порцию необоснованных слухов
qstr_only_worthless_slave|только рассказы ничего не стоящего раба
qstr_nothing_but_the_crie|лишь крики женщин и стоны галерных рабов
qstr_only_the_wild_tales_|только дикие рассказы осужденных
qstr_only_minor_gossip_an|только сплетни черни и бесконечные разговоры о войне
qstr_._I_am_sorry_my_prof|. Я сожалею, но моя профессия приучила меня не слушать эти горестные рассказы.
qstr_._Information_like_w|. Информация, которую вы ищете, поступает каждую неделю или около этого. Проверьте позже.
qstr_._Pity_too_as_I_coul|. Сожалею, {reg63?мой друг:моя подруга}, но бывают моменты, когда я просто не знаком{reg65?а:} с событиями, происходящими на этой жестокой земле.
qstr_._If_you_are_in_a_hu|. Если вы спешите, попытайтесь поговорить с другими людьми в тавернах, а возможно даже с торговцами.
qstr_._If_you_want_to_kno|. Если вы хотите знать скабрезные истории, то ищите блуждающих шпионов в тавернах. Они всегда знают одну или две.
qstr_._Those_guild_rats_n|. Эти крысы из гильдии никогда мне ничего не говорят. Только "купите рабов", "заплатите монету" и "укомплектуйте галеры"!
qstr_._Hell_I_am_bound_to|. Черт, я обязан{reg65?а:} услышать кое-что ценное на следующей неделе. Тогда и приходите.
qstr_._Perhaps_you_should_c|. Возможно, вам стоит вернуться на следующей неделе. Я скоро ожидаю поставку, а этот поставщик всегда очень осведомлен.
qstr__{s2}_I_must_tell_yo|{s2} я вынужден{reg65?а:} сказать вам, что я слышал{reg65?а:} {s5}{s6}
qstr__{s2}_so_few_people_h|{s2} некоторые посетители действительно говорили о чем-то интригующем. Но я смог{reg65?ла:} услышать {s5}{s6}
qstr__{s2}_I_have_encounte|{s2} я в последнее время слышал{reg65?а:} {s5}{s6}
qstr__{s2}_I_have_been_sp|{s2} я говорил{reg65?а:} с мастерами гильдии, даже они слышали {s5}{s6}
qstr__{s2}_I_wish_that_my|{s2} я хотел{reg65?а:} бы, чтобы мои новости были лучше. Но судьба позволила услышать {s5}{s6}
qstr__{s2}_I_have_been_ov|{s2} недавно я наткнул{reg65?ась:ся} на сбежавших рабов, таким образом, я услышал{reg65?а:} {s5}{s6}
qstr_no_news|малоинтересные сплетни
qstr_only_worthless_infor|только ничего не стоящие слухи
qstr_nothing_but_soldiers|только болтовню солдат и сплетни поваров
qstr_unsubstantiated_goss|лишь необоснованные сплетни
qstr__My_{reg63?Lord:Lady|{reg63?Милорд:Миледи},
qstr__Castle_business_is_|Для того чтобы замок приносил доходы, мне приходится много времени уделять налоговым сборам,
qstr__Of_course_good_{reg|Дорог{reg63?ой лорд:ая леди},
qstr__My_sources_are_mute|Мои источники притихли,
qstr_._I_am_sorry_{reg63?|. Мне очень жаль, {reg63?милорд:миледи}, я постараюсь слушать внимательней в следующий раз.
qstr_._Perhaps_you_should_a|. Возможно, вам следует спросить кого-то еще. Может шпиона?
qstr_._Have_you_tried_see|. Вы пробовали искать информацию в тавернах?
qstr_._Have_you_thought_o|. Возможно, стоит спросить у торговцев, они находятся в контакте со многими путешественниками и слышат много слухов, заслуживающих внимания.
qstr_._I_am_sure_that_the|. Я уверен{reg65?а:}, что найдется кто-нибудь еще, у кого может быть информация, которую вы ищете.
qstr_._I_am_not_a_rumor_m|. Я не торгов{reg65?ка:ец} слухами, {reg63?сэр:леди}, я не намерен{reg65?а:} искать сплетни.
qstr_._Perhaps_you_should_co|. Возможно, вы должны возвратиться позже. Никогда не знаешь, что подслушаешь в этих залах.
qstr__{s2}_few_people_have|{s2} несмотря на то, что некоторые люди тут разговаривали, я слышал{reg65?а:} {s5}{s6}
qstr__{s2}_I_have_been_busy|{s2} я был{reg65?а:} занят{reg65?а:} в замке, услышал{reg65?а:} {s5}{s6}
qstr__{s2}_I_have_not_had|{s2} у меня на работе нет времени подслушивать чужие разговоры. Таким образом, могу вам повторить {s5}{s6}
qstr__{s2}_I_wish_I_had_be|{s2} мне жаль, что у меня нет лучших новостей для вас. Я слышал{reg65?а:} {s5}{s6}
qstr__{s2}_I_have_been_busy_|{s2} я был{reg65?а:} занят{reg65?а:} с пажами, поварами и горничными, таким образом, слышал{reg65?а:} {s5}{s6}
qstr__a_little_something|кое-что
qstr__a_rumor|кое-что интересное
qstr__an_interesting_tale|интересный рассказ
qstr__something_of_intere|кое-что действительно интересное
qstr__some_dark_whispers|кое-что подозрительное
qstr__a_piece_of_informat|весьма интересную новость
qstr__a_newsworthy_story|заслуживающую внимания историю
qstr__some_troubling_news|кое-какие волнующие новости
qstr__some_worthwhile_inf|немного стоящей информации
qstr__a_story|одну историю
Let's just take first pieces of RB dialogue as an example.
(lt,":adj_random",1), (str_store_string,s3,"@ {s2} I have heard {s5}{s6}"),
(lt,":adj_random",1), (str_store_string,s2,"@ Ah! It is an unlucky turn of events good {Sir/Lady}, as"),
(lt,":adj_random",1), (str_store_string,s5,"@so little coherent information of value"),
(lt,":adj_random",1), (str_store_string,s6,"@. I am sorry, my profession is to enslave the unwilling, not listen to their tales of woe."),

Ah! It is an unlucky turn of events good {Sir/Lady}, as I have heard so little coherent information of value. I am sorry, my profession is to enslave the unwilling, not listen to their tales of woe.

Now, the translation:
qstr__{s2}_I_have_heard_{|{s2} я слышал{reg65?а:} {s5}{s6}
qstr__Ah!_It_is_an_unluck|Ах! Это неудачный поворот событий, {reg63?сэр:леди},
qstr_so_little_coherent_i|так мало ценной информации
qstr_._I_am_sorry_my_prof|. Я сожалею, но моя профессия приучила меня не слушать эти горестные рассказы.

Ах! Это неудачный поворот событий, {reg63?сэр:леди}, я слышал{reg65?а:} так мало ценной информации. Я сожалею, но моя профессия приучила меня не слушать эти горестные рассказы.

Grammatically speaking, it's perfect Russian. All the parts are ideally compatible with each other. I would only replace a couple of words in the middle of these parts (this replacement will not affect compatibility in any way) to make it more "Native" and closer meaning-wise to the original, like:

Ах! Какой неудачный поворот событий, {reg63?сэр:леди}, я слышал{reg65?а:} так мало ценной информации. Я сожалею, но моя профессия - обращать смердов в рабство, а не выслушивать их нытьё.
 
You made some changes to a specific procedurally generated sentence for the localization effort. 
The goal would be NOT to need "verbal massages" to make a sentence combination work.


We create an extensive process of procedural generated verbal responses.
You seem to be telling me that all we need to do is to change individual words or sentence fragments to another language and that will work fine.
This could be my lack of understanding, which I will admit is a strong possibility.  However, are not the sentence structures in various languages and wording different based upon masculine/feminine aspects as well as question/statement and verb/preposition/noun/adjective orientations?  In other words, do the "order" for verb/noun/adjective work the same in all languages?  I do not believe they do.  Am I under a misconception?


Further, are there not idioms in each language/culture that will be lost in the translation process? 
Nuanced meanings and inference that cannot be adequately translated without a person fluent in both doing the translating, hence someone fluent in in both languages and able to code the sentence generation process?


Sample sentence in English:
See the white goat run
verb preposition adjective noun verb


Russian translation:
Посмотрите бегство белой козы.
Look at the flight of the white goat
verb preposition verb adjective noun


The translation changes the structure,  and to make this work as intended (without coding) the structure cannot change.


Another simple example:
See spot run
or
Spot run see I
or
Run Spot see I










 
I don't understand what you mean and what your point is.

Your "goat" example sounds like this in good Russian:
Посмотрите, как бежит белая коза ("посмотрите, как белая коза бежит" is also a fine option)
See how runs the white goat / See how the white goat runs
In the second case the only difference is "how".

In you phrases you combine large parts of sentences, not separate words. Combining large parts of sentences is not difficult as you can be flexible within these parts.
Combining separate words (in cases when the whole sentence would look like "{s1}{s2}{s3}{s4}{s5}") would be more problematic, but snouz showed an example of how adjective-noun order is simply reversed when translating into French or, for example, into Spanish. If {s2} is a verb, in translation into German we can just put it into the end, if it is required.
Your current procedurally generated sentences are much easier to translate than basic Native "blahblablah did something to [adjective] troopname/factionname/soldiername/etc.".

You/thou, noun/adjective genders, noun forms are difficult to translate.
But in your sentences each part is a certain construct. All options for a certain part play the same role in the sentence (otherwise you simply wouldn't be able to combine sentences properly) and therefore all of them are inserted in the same place and in the same form and are only modified internally, with universal external compatibility.


This reminds me of an old table from the Russian segment of the Internet - the universal speech template:
1382010115_1018927222.jpg
The first part is always introduction, the second part is always the subject with adjectives connected to it, the third part is always the verb and a bunch of connected objects, the forth part is always one more object that is always in genitive case.
Despite the seemingly complex structure, the same role that each part plays allows to combine them freely and also translate them without much difficulties (adjectives are included in the same clauses as nouns to which they are connected; nouns that are directly connected to verbs are also included in the same clauses which results in 0 incompatibility between nouns and verbs, nouns and adjectives).
Now, I only speak Russian, English, a little bit of German and Spanish, so people who speak languages from other groups (such as Arabic or Eastern) may have something to add to it...
 
My apologies for being unclear Leonion.  This is a highly nuanced conversation and I am appreciative that you are taking the time to engage me.


I do not believe at this moment, that a "procedural process that generates sentences" is easily translated between languages.


I understood from some of the earlier responses in this thread, that this would be no problem as it is just a matter of flipping a switch or just "translating" it easily.


My goal was to understand how this could be accomplished, as I am under the impression that the various languages we work under have different structures that make the creation of such sentences difficult as they would come out as nonsensical. 


Thus either I
a) Wanted to learn something I did not know .. how to translate these sentence fragments in a way that was understood in other languages.. or 
b) Confirm my understanding that this was extremely difficult or impossible to convert these fragments to other languages at this level.


Background:
The whole goal of this approach was an experiment to make the NPC's in the game seem "More Alive" by varying their responses and making them nuanced and interesting.  What we have done here in POP was an early prototype of this concept that I am using extensively in another project with a great deal of success. 


Side Note:
What has come out of this dialogue with you is I have realized that perhaps there is a possibility the ending sentence, after it has been constructed, can be run through some conversion process at this level.  I will have to explore this possibility, so for that, I very much thank you.















 
To my knowledge, the interchangeability of different options within a particular part of the sentence in English (like - you have {s3} and 10 options for it, all of them are interchangeable) guarantees the same for other languages as long as the following is true:
1) Adjectives are not separated from nouns. "Knights of the [blue/pink/purple/yellow] [castle/unicorn/fairy/hyppo/moon]" will not work well because nouns have genders in several languages (even counter-intuitive ones, such as "das Madchen") and the endings of adjectives have to match these genders.
2) Nouns are either not separated from verbs or all verbs in the same clause require the connected noun to be in the same form. "I think about paper", "I see paper", "I made it from paper", "I owe it to paper", "I covered it with paper" are all about "paper" in English, while in Russian all these verbs require different noun forms that are spelled differently.
3) If verbs/adjectives are separated from subjects or are attached to genderless pronouns, they should have reg check based on subject's gender, e.g. "That {reg33?evil:evil} {reg33?beatch:****} {reg33?wanted:wanted} to usurp my throne!", though translators can do it themselves (as long as there is data in the register), as you can see in the examples of Russian translation of your sentences.

Basically, it all matters only when you break down sentences into tiny pieces, like each word is a variable.
When entire clauses are variables, there should be no problems with translation.
Like:

Recently / lately / just today in the morning / last night...
I have heard / I have overheard / I received news / I have found out / I have learned / ...
that
the knights of .../.../.../.../
did blablablah.
And by the way / and / moreover / besides / ...
I was told / I was said / It was told / There are rumors
that
the person behind all this was / it was all orchestrated by / their commander was / their leader was / ...
the father / the son / the brother / the bastard son / ...
of
so-and-so.

saxondragon said:
Further, are there not idioms in each language/culture that will be lost in the translation process? 
And this is an entirely different area.
All sorts of linguistic jokes / wordplay / idioms / etc. require creative translation regardless of what kind of text this is. Full sentences won't save translators from inability to translate some jokes if there is just no similar wordplay in their language. Like, for example, some of Buddy's jokes from FO4 are simply replaced with completely different ones in Russian version because there is just no way to translate them.
Some short English expressions can only be translated as much longer expressions into other languages, so workarounds are required.
"... then ZAP! Frog time!" - there is no way to translate "Frog time!" into Russian directly&naturally. It has to be replaced with something. Like "а потом ВЖУХ! И ква-ква."
 
Leonion said:
0% if you fully translate all .csv files including ui files (see Prophesy of Pendor V3.8\languages\en).
I can support leonion's words.
PoP will be 100% translated into Chinese after each update, it is fairly easy to figure out English from Chinese, but there is no feedback for not 100% translation in our community yet.
And I saw at least two Korean screenshots here so I guess for Korean translation there is no problem as well.

So if you are going to translate PoP, just fully translate all text you putted is okay.

P.S. Of course some sentence cannot be directly translated according to the difference of culture/language constructure, for normal sentence the point of translation is express the same meaning of original words, and make it comprehensive.
E.g. The feature of lord's CKO translated perfectly in Chinese.
Knight of {} {} {}—{} {} {} 骑 士
I have no access to my lovely computer now so I cannot give example for long sentence, just want to say they are fine.
Translation is not a difficult job for PoP, it is just boring :fruity:
 
snouz said:
[....]
EDIT: if you want to translate files, you have to open edit mode in windowed, and export language file. You export one in english, and one in your language if there's an ongoing translation already, then you compare each file in WINMERGE to see what has already been done.

Why not just translate the .csv files? What is the difference?

It's still csv files, it's for the case where you have a partial translation already done.
 
Hoot I don't care for your gatekeeping. This topic is about translating the game to make it more comfortable and accessible for people for whom English is not the first language. It is uncalled-for to insult people based on their tongue, especially given the diversity of the user base and the dev team.
 
Back
Top Bottom