Re: An effective way to Localize my Revolution Projects for Multiple Languages
- Property profiles are nice, but it means that I have to store all of the language data for each object within a profile, making it harder to make changes to the text. Many replies but none commenting about profiles. As the gandfather of Richard used to say, "When a designer is faced with two equally compelling options, find a way to do both." So you could also make a tool which assists in building different language profiles from a central text translations repository. The steps in development would be: (1) extracts the relevant text from button label, fields, etc. and store them in the repository; (2) translate the texts in the needed languages; (3) before building your standalone the tool will navigate through all the objects of your stacks to automatically update the appropriate controls properties (button label, text of shared field...); (4) optionally when building a standalone you can choose to discard some profiles; (5) in your standalone some language script library will just have to set the revProfile or call the revSetStackFileProfile / revSetCardProfile / revSetStackProfile commands when user change the language preference. I didn't remember of much use of the Profiles apart the RunRev tutorial on Profiles (precisely illustrated by languages customisation) and I would be interesting to have developers explanations on their use of profiles, not only for languages but for platform specifics (Windows, Linux, OSX), or any other ideas... Thanks! Joel OT follows, just for fun! As for the dialogs I simply change the LABEL of the buttons in the dialogs so "Cancel" stays "cancel" "OK" stays "OK" etc... in every language. ;o) NO! "cancel" does not stays "cancel" in every language: "annuler", "abbrechen", ... ! OKay? ;o( Does anyone know what ok is the abbreviation of? I heard an explanation that in the old time an american sherif which motherlanguage was french wrote "OK" on official documents. When someone asked him what this means he replied: "oll korrect"... ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Hi Derek, I should ask this question of the list, just to see if anyone has found an effective way of working with Localized (multiple-language) projects. Most of the common approaches have been described by others; so I would only add: * Saving all program text and prompts in a different text file for each language means only the text pertinent to the currently-selected language is loaded in RAM * Storing language text & prompts in a text file in line-per-line format means your application can support _any_ language for which a text file can be created, not just the languages you build in pre release. * If text is stored in a line-per-line format, it is a simple task to display each line in turn to a translator, who then types the same line in the new language in a field below it. Once all lines are translated, the application can immediately change languages by loading text from the new file. * Any translation scheme must also deal with formatting numbers, dates, and currency amounts differently based on system preferences (actually, IMO even a single-language program should present dates, numbers, and amounts formatted as specified by the user to the OS). * I strongly advocate the use of icons (supplemented with tool tips, if you will) instead of label text to avoid spacing issues. This is especially useful for labels above columnar tables: the text may be x characters long in one language and, say, 5*x characters in another language; but the column heading width remains constant without lots of empty space in one instance or incomprehensible abbreviation or truncation in the other. Normally, I would refer you to the Serendipity Library/SDB download for working examples of all these points; however the old download went down with Andre Garzia's old web site, and it is not my intention to update it until the revisions I am working on are further tested and bundled for distribution. If you'd like to explore this further, contact me off-list. Rob Cozens CCW, Serendipity Software Company "And I, which was two fooles, do so grow three; Who are a little wise, the best fooles bee." from "The Triple Foole" by John Donne (1572-1631) ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Lynn Fredricks wrote: The one downside to almost any method is that you still have to go through and look at your interface to make sure what you've swapped fits. Text expansion can increase your strings by 20-50%. This raises a third reason to consider a very important feature: resolution independence. The other two are Windows' long-standing feature to allow the user to turn on Large Fonts, and Apple's recent transition to support resolution independence across the board. All three areas represent a need for more dynamic resizing of controls, yet all three are currently out of reach for Rev developers. Do we have any word from the mother ship on how these will be handled in the future? -- Richard Gaskin Fourth World Media Corporation ___ [EMAIL PROTECTED] http://www.FourthWorld.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
On 2/16/07 11:14 AM, "Derek Bump" <[EMAIL PROTECTED]> wrote: > Klaus Major wrote: >> Drum Roll! >> Nothing sucks like the ELECTROLUX! > > LOL... Yup, I would like to avoid mistakes like that (which may explain > why Electrolux was bought out). > Actually, it was sucked up by a competitor Jim Ault Las Vegas ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
RE: An effective way to Localize my Revolution Projects for Multiple Languages
> > - Placing all text in a file, and then just translating the file to > > multiple languages when building the standalone would be preferred, > > but that would require some massive scripting to populate > button and > > field labels, etc. > > ... > > Any ideas? ... Please! > > I've used the above technique in the past. I used a minimal > numeric tag system where each control label in the app > referenced an ID in an external text file: <1001>xyz > text at startup. You could use a named tag as > well: Willkommen. Scott's method resembles "classical" style translation methods (I say classical because its what I did when I used to have a localization business in the early '90s) and it works well. Get a unique numeric identifier, then orchestrate a "string swap". Apple's old Appleglot tool was pretty good at that. The one downside to almost any method is that you still have to go through and look at your interface to make sure what you've swapped fits. Text expansion can increase your strings by 20-50%. Its best if you can come up with a clean text file that you can hand to a translator without having to give them your application, then let them eyeball the finished product so that it makes sense within the application. I strongly recommend avoiding pure machine translation. Even the best MT makes for poor reading. Best regards, Lynn Fredricks Worldwide Business Operations Runtime Revolution Ltd http://www.runrev.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Klaus Major wrote: Drum Roll! Nothing sucks like the ELECTROLUX! LOL... Yup, I would like to avoid mistakes like that (which may explain why Electrolux was bought out). Well, I'm going to be on a little vacation for the next two days, but Thank you Klaus, Scott and Richard for your helpful suggestions and incite. I will be thinking of ways to implement what you have all suggested and hopefully I can come up with a way that I feel comfortable with. Derek Bump Dreamscape Software http://www.dreamscapesoftware.com/ ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Hi Richard, ... And of course it pays to have a native speaker do the actual translation, esp. one who is also expert in the domain the application supports. On our project this for that was easy, since one of the company owners is an Australian doctor. But the last thing you want to do is come up with unclear or misleading quasi- translations, or even embarrassing ones like when Chevrolet rolled out a car for Spanish-speaking markets named "Nova". :) LOL! :-) The best "faux-pas" ever made in my opinion was a scandinavian vacuum cleaner company that wanted to conquer the american market with this great slogan: Drum Roll! Nothing sucks like the ELECTROLUX! :-D Richard Gaskin Fourth World Media Corporation ___ [EMAIL PROTECTED] http://www.FourthWorld.com Best Klaus Major [EMAIL PROTECTED] http://www.major-k.de ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Derek Bump wrote: Now before I start down my typical path of re-inventing the wheel, I felt I should ask this question of the list, just to see if anyone has found an effective way of working with Localized (multiple-language) projects. I have never done any work with creating localized projects. I know that I will end up mutilating the native languages via the Google Translator, but I figure that a 90% translated program is better than a program that isn't used because it's not in a person's main language. - Property profiles are nice, but it means that I have to store all of the language data for each object within a profile, making it harder to make changes to the text. - Placing all text in a file, and then just translating the file to multiple languages when building the standalone would be preferred, but that would require some massive scripting to populate button and field labels, etc. - Also, I have to roll my own dialogs that don't return the name of what button was pushed, but instead a number, as the number doesn't need to be translated. (Ex: 0=Cancel,1=OK) Any ideas? ... Please! My gandfather used to say, "When a designer is faced with two equally compelling options, find a way to do both." Custom properties are handy because they bind the data to the object, keeping everything together in a world in which it's wise to assume everything will change at some point or another as the product evolves. But as you note, it would be cumbersome to edit the data there. So don't do that. :) Instead, you could make a tool which extracts the language elements relevant for a translator to work on, presents them in a convenient editing interface right inside the program so they can understand the context, and stores those back again into the object properties. One of the larger products I've worked on in recent years was a medical database for both US and UK markets, and while they're both "English" there are a great many differences between the dialects, esp. in the medical profession. We used the approach I described above, and we've been delighted with how fast Rev can walk through all objects to insert the appropriate text on preOpenCard. Never even notice the difference. We found that it was helpful during development to keep all work in one language (we used US English, since that was how the project started), and did the translation work as the last step in the process. Commands follow suit: all command names are in the base language (for us it was US English), and only the label property of controls is changed so the name remains intact. The only tricky items are background fields. Because the same object can contain different text across multiple cards, we found it helpful to store the data in the card rather than the field object. We used custom property sets named for the desired language, with the element key being the field's short ID (e.g., "USEnglish[4433]"). And of course it pays to have a native speaker do the actual translation, esp. one who is also expert in the domain the application supports. On our project this for that was easy, since one of the company owners is an Australian doctor. But the last thing you want to do is come up with unclear or misleading quasi-translations, or even embarrassing ones like when Chevrolet rolled out a car for Spanish-speaking markets named "Nova". :) -- Richard Gaskin Fourth World Media Corporation ___ [EMAIL PROTECTED] http://www.FourthWorld.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Recently, Derek Bump wrote: > Now before I start down my typical path of re-inventing the wheel, I > felt I should ask this question of the list, just to see if anyone has > found an effective way of working with Localized (multiple-language) > projects. > ... > - Placing all text in a file, and then just translating the file to > multiple languages when building the standalone would be preferred, but > that would require some massive scripting to populate button and field > labels, etc. > ... > Any ideas? ... Please! I've used the above technique in the past. I used a minimal numeric tag system where each control label in the app referenced an ID in an external text file: <1001>xyz text at startup. You could use a named tag as well: Willkommen. I disagree that this requires massive scripting. IMO, the flexibility outweighs the required scripting efforts, especially if you need multiple languages and have to share the translation docs with 3rd party translators. A text file is way easier to manage than forcing someone to get into Rev's IDE. You'll probably want to use Unicode -- my understanding is the current Unicode implementation is a bit limited in Rev but I believe searching the mail archives may help address some of the issues you might run into. BTW, if you decide to go this route, remember to have translators use a simple text editor (ie WordPad, NotePad, etc). Do not allow the use of Word or any other heavyweight text editor since these apps may add formatting garbage to the text which will make text parsing difficult. Other folks may offer different suggestions. Regards, Scott Rossi Creative Director Tactile Media, Multimedia & Design - E: [EMAIL PROTECTED] W: http://www.tactilemedia.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Hi, Hi Derek, Now before I start down my typical path of re-inventing the wheel, I felt I should ask this question of the list, just to see if anyone has found an effective way of working with Localized (multiple-language) projects. I have never done any work with creating localized projects. I know that I will end up mutilating the native languages via the Google Translator, but I figure that a 90% translated program is better than a program that isn't used because it's not in a person's main language. - Property profiles are nice, but it means that I have to store all of the language data for each object within a profile, making it harder to make changes to the text. - Placing all text in a file, and then just translating the file to multiple languages when building the standalone would be preferred, but that would require some massive scripting to populate button and field labels, etc. - Also, I have to roll my own dialogs that don't return the name of what button was pushed, but instead a number, as the number doesn't need to be translated. (Ex: 0=Cancel,1=OK) Any ideas? ... Please! Custom property sets!!! :-) Depending on the size of the project I use either the stacks cp set every cards cp sets or even every (relevant) objects cp set. Sorry, forgot to mention that I set these language values (labels etc) on openstack or opencard depending on the project. Regards Klaus Major [EMAIL PROTECTED] http://www.major-k.de ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: An effective way to Localize my Revolution Projects for Multiple Languages
Hi Derek, Now before I start down my typical path of re-inventing the wheel, I felt I should ask this question of the list, just to see if anyone has found an effective way of working with Localized (multiple-language) projects. I have never done any work with creating localized projects. I know that I will end up mutilating the native languages via the Google Translator, but I figure that a 90% translated program is better than a program that isn't used because it's not in a person's main language. - Property profiles are nice, but it means that I have to store all of the language data for each object within a profile, making it harder to make changes to the text. - Placing all text in a file, and then just translating the file to multiple languages when building the standalone would be preferred, but that would require some massive scripting to populate button and field labels, etc. - Also, I have to roll my own dialogs that don't return the name of what button was pushed, but instead a number, as the number doesn't need to be translated. (Ex: 0=Cancel,1=OK) Any ideas? ... Please! Custom property sets!!! :-) Depending on the size of the project I use either the stacks cp set every cards cp sets or even every (relevant) objects cp set. And writing a little tool for managing/editing/writing back all these cp sets is a snap with Rev :-) As for the dialogs I simply change the LABEL of the buttons in the dialogs so "Cancel" stays "cancel" "OK" stays "OK" etc... in every language. Hope that helps. Derek Bump Dreamscape Software http://www.dreamscapesoftware.com/ Best Klaus Major [EMAIL PROTECTED] http://www.major-k.de ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
An effective way to Localize my Revolution Projects for Multiple Languages
Now before I start down my typical path of re-inventing the wheel, I felt I should ask this question of the list, just to see if anyone has found an effective way of working with Localized (multiple-language) projects. I have never done any work with creating localized projects. I know that I will end up mutilating the native languages via the Google Translator, but I figure that a 90% translated program is better than a program that isn't used because it's not in a person's main language. - Property profiles are nice, but it means that I have to store all of the language data for each object within a profile, making it harder to make changes to the text. - Placing all text in a file, and then just translating the file to multiple languages when building the standalone would be preferred, but that would require some massive scripting to populate button and field labels, etc. - Also, I have to roll my own dialogs that don't return the name of what button was pushed, but instead a number, as the number doesn't need to be translated. (Ex: 0=Cancel,1=OK) Any ideas? ... Please! Derek Bump Dreamscape Software http://www.dreamscapesoftware.com/ ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution