![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hi, Someone from abroad might be interested in my application. Ha, new perspectives. The user interface's language, now, is Dutch. I want to translate all that is Dutch into English. I made a routine that is able to collect all MsgBoxes in my code and distill the Prompt part, Title part, whatever. So I could store them in a table. And put the translation in the field next to it. But many of the Messages are a combination of text with variables. e.g. MsgBox "De " & strNum & " de beste, die " & myrsB("strDing") & " vindt, krijgt een " & myrsV("strPresent"), vbInformation, "Zondagse opgave" Is there a way to store such messages so that the variables will work again locally, when MsgBox reads the message (or the translation) from a table? (To store only the text parts and let the variables in loco will not always produce natural results, since every language has it's own preferences for word order.) Asking for miracles, it feels. Or? Michiel Access 2007 |
#3
| |||
| |||
|
|
Someone from abroad might be interested in my application. Ha, new perspectives. The user interface's language, now, is Dutch. I want to translate all that is Dutch into English. I made a routine that is able to collect all MsgBoxes in my code and distill the Prompt part, Title part, whatever. So I could store them in a table. And put the translation in the field next to it. |
#4
| |||
| |||
|
|
Hi, Someone from abroad might be interested in my application. Ha, new perspectives. The user interface's language, now, is Dutch. I want to translate all that is Dutch into English. I made a routine that is able to collect all MsgBoxes in my code and distill the Prompt part, Title part, whatever. So I could store them in a table. And put the translation in the field next to it. But many of the Messages are a combination of text with variables. e.g. MsgBox "De " & strNum & " de beste, die " & myrsB("strDing") & " vindt, krijgt een " & myrsV("strPresent"), vbInformation, "Zondagse opgave" Is there a way to store such messages so that the variables will work again locally, when MsgBox reads the message (or the translation) from a table? (To store only the text parts and let the variables in loco will not always produce natural results, since every language has it's own preferences for word order.) Asking for miracles, it feels. Or? Michiel Access 2007 |
#5
| |||
| |||
|
|
"Michiel Rapati-Kekkonen" <no-mail (AT) nonsense (DOT) zz> wrote: Someone from abroad might be interested in my application. Ha, new perspectives. The user interface's language, now, is Dutch. I want to translate all that is Dutch into English. I made a routine that is able to collect all MsgBoxes in my code and distill the Prompt part, Title part, whatever. So I could store them in a table. And put the translation in the field next to it. HBinc has given you a good answer for your exact question. Other resources include Microsoft Access Multilingual/Localization Solutions http://www.granite.ab.ca/access/multilingual.htm A discusson on this topic I started a while back. http://groups.google.ca/group/comp.d...6cf8538175f20d Now a key performance tip is to arrange and read the data from the table/query in to fill your form report controls with one index read. That is if you have 30 controls and labels on your form don't do 30 different recordset index "seeks' into the table/query. Intsead arrange your data so that you do one index "seek" and then read all the thirty records belonging to your 30 controls one after the other. Now these don't have to be alphabetical sequence or anything like that. After all it's very fast changing the control and label caption. But it's relatively slow reading the data from the tables for each form and report open. Also you might want to ship your product with the translation tables in a separate MDB/MDE linked from the FE. This way you can easily update any typos without reshipping your main program. Also, down the road, it becomes easier to add new languages and ship just the language MDB. For performance reasons you probably want that located along side the users FE rather than being on the server share. Tony -- Tony Toews, Microsoft Access MVP Tony's Main MS Access pages - http://www.granite.ab.ca/accsmstr.htm Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/ For a convenient utility to keep your users FEs and other files updated see http://www.autofeupdater.com/ Granite Fleet Manager http://www.granitefleet.com/ |
#6
| |||
| |||
|
|
Clever you! To me it felt like SF: freezing a body to warm it back to life at a later time. Maybe you could attend to that problem, too? Thanks, Michiel "hbinc" <j.van.g... (AT) hccnet (DOT) nl> wrote in message news:1218c2e2-9278-4fad-a027-33dbeb3f09f1 (AT) m3g2000yqf (DOT) googlegroups.com... On Dec 12, 6:02 pm, "Michiel Rapati-Kekkonen" <no-m... (AT) nonsense (DOT) zz wrote: Hi, Someone from abroad might be interested in my application. Ha, new perspectives. The user interface's language, now, is Dutch. I want to translate all that is Dutch into English. I made a routine that is able to collect all MsgBoxes in my code and distill the Prompt part, Title part, whatever. So I could store them in a table. And put the translation in the field next to it. But many of the Messages are a combination of text with variables. e.g. MsgBox "De " & strNum & " de beste, die " & myrsB("strDing") & " vindt, krijgt een " & myrsV("strPresent"), vbInformation, "Zondagse opgave" Is there a way to store such messages so that the variables will work again locally, when MsgBox reads the message (or the translation) from a table? (To store only the text parts and let the variables in loco will not always produce natural results, since every language has it's own preferences for word order.) Asking for miracles, it feels. Or? Michiel Access 2007 Hi Michiel, The way I solved this kind of problems a couple of times is by defining the message string as "De [strNum] de beste, die [strDing] vindt, krijgt een [strPresent]"), vbInformation, "Zondagse opgave" and just before calling the MsgBox substitute the [...]-values by the current values. HBInc.- Hide quoted text - - Show quoted text - |
#7
| |||
| |||
|
|
I certainly will take your very sound performance tips to heart. but typos? me? |
|
(btw the first two links plus the fourth on your granite-multilingual page don't seem to work) |
#8
| |||
| |||
|
|
Now a key performance tip is to arrange and read the data from the table/query in to fill your form report controls with one index read. That is if you have 30 controls and labels on your form don't do 30 different recordset index "seeks' into the table/query. Intsead arrange your data so that you do one index "seek" and then read all the thirty records belonging to your 30 controls one after the other. Now these don't have to be alphabetical sequence or anything like that. After all it's very fast changing the control and label caption. But it's relatively slow reading the data from the tables for each form and report open. |
#9
| |||
| |||
|
|
"Tony Toews [MVP]" <tto... (AT) telusplanet (DOT) net> wrote: Now a key performance tip is to arrange and read the data from the table/query in to fill your form report controls with one index read. *That is if you have 30 controls and labels *on your form don't do 30 different recordset index "seeks'into the table/query. *Intsead arrange your data so that you do one index "seek" and then read all the thirty records belonging to your 30 controls one after the other.. *Now these don't have to be alphabetical sequence or anything like that. *After all it's very fast changing the control and label caption. * But it's relatively slow reading the data from the tables for each form and report open. Just to follow up on this one. *You might want to go so far as to have a normalized table with all the unique label text once. *For example "Customer". *Have the translation table for that label. * Now you programmatically read all the forms and reports willing in tableswith all the occurances of the various strings. *So you probably have at least three tables. Form/Report name, caption table and junction table with foreign keys pointing to the two just mentioned table. (There's also a message table too but we'll ignore that for now.) To get the maximum performance when opening a complex form with lots of controls you might want to create a totally denormalized, indexed table from the abovethree tables. *And do form/report lookups on that single table. * * Maybe. * Try it on a slow system and see what you think. Tony -- Tony Toews, Microsoft Access MVP Tony's Main MS Access pages -http://www.granite.ab.ca/accsmstr.htm Tony's Microsoft Access Blog -http://msmvps.com/blogs/access/ For a convenient utility to keep your users FEs and other files * updated seehttp://www.autofeupdater.com/ Granite Fleet Managerhttp://www.granitefleet.com/ |
#10
| |||
| |||
|
|
"Tony Toews [MVP]" <tto... (AT) telusplanet (DOT) net> wrote: Now a key performance tip is to arrange and read the data from the table/query in to fill your form report controls with one index read. *That is if you have 30 controls and labels *on your form don't do 30 different recordset index "seeks'into the table/query. *Intsead arrange your data so that you do one index "seek" and then read all the thirty records belonging to your 30 controls one after the other.. *Now these don't have to be alphabetical sequence or anything like that. *After all it's very fast changing the control and label caption. * But it's relatively slow reading the data from the tables for each form and report open. Just to follow up on this one. *You might want to go so far as to have a normalized table with all the unique label text once. *For example "Customer". *Have the translation table for that label. * Now you programmatically read all the forms and reports willing in tableswith all the occurances of the various strings. *So you probably have at least three tables. Form/Report name, caption table and junction table with foreign keys pointing to the two just mentioned table. (There's also a message table too but we'll ignore that for now.) To get the maximum performance when opening a complex form with lots of controls you might want to create a totally denormalized, indexed table from the abovethree tables. *And do form/report lookups on that single table. * * Maybe. * Try it on a slow system and see what you think. Tony -- Tony Toews, Microsoft Access MVP Tony's Main MS Access pages -http://www.granite.ab.ca/accsmstr.htm Tony's Microsoft Access Blog -http://msmvps.com/blogs/access/ For a convenient utility to keep your users FEs and other files * updated seehttp://www.autofeupdater.com/ Granite Fleet Managerhttp://www.granitefleet.com/ |
![]() |
| Thread Tools | |
| Display Modes | |
| |