Localizing an application
-
OK, this is maybe kind of a programming question but I'm really curious how people tackle internationalization/localization since I can't see how simply bunging all your strings in an RC file works. In English, the structure of a sentence changes if it is talking about countable objects e.g. "There is 1 banana" vs. "There are five bananas" so you can't just have an RC string of "There are %1 bananas." And I believe this kind of problem is worse in other languages. I came up with a custom solution for Awasu to handle this kind of thing but it makes using standard tools for the translation work a bit tricky.
0 bottles of beer on the wall, 0 bottles of beer, you take 1 down, pass it around, 4294967295 bottles of beer on the wall. Awasu 2.2.2 [^]: A free RSS/Atom feed reader with support for Code Project.
There is another factor that makes localization even more complicated, and it's almost never taken in account. In some languages (like spanish, french, and most latin-born ones), there are different "traits" when talking or writing. For example, in english, you jast say "Click the Cancel button", but in spanish you can say it in at least three different ways, depending on how formal you want to sound (or even on which country you are located). You can say: - "Presione el botón Cancelar". This is the most formal one, called taking in "usted". - "Presiona el botón Cancelar". This is more informal, called talking in "tú". It's used on most countries, but not all of them. - "Presioná el botón Cancelar". Tthis is a particular informal trait ( a bit similar to the last one), but it's only used in some countries, like Costa Rica and Argentina. The difference is apparently very subtle, but it can be very very important to your users. This happens in french as well. It's not the same to way "voulez vous manger" than "veux tu manger" or even "tu veux manger"... I can just keep on and on giving examples. Each one is almost a language subcategory. The verbs are conjugated differently, the connotations of the text may vary, etc. I work for a company that develops eLearning, and we have to be very aware if the trait must be formal, informal or some other, since we really need to talk to our users the same way they talk themselves. So, when translating to spanish, for example, it's not just one set of new labels, it can be up to three, and may change from country to country. Just as french from France is very different to french from Canada, spanish from Spain is very different to spanish from Latin America, and even each latinamerican country has it's own particular language set (most of the countries use "tú", but some use the weird "vos"). And I'm not talking about just vocabulary (some words that may mean something else from country to country), I'm talking about core gramatics and semantics. I hope I make myself clear... its a kind of complicated subject to describe so briefly. Just be aware that, when you are translating an application, you may not have only one language in hands, you may have lots of variations, which can be very relevant, depending on how your application is intended to be used. -------------------------------- Enhance the trance
-
Not a programming question. Our company got a deal with a major paper manufacturer. Unfortunately, this company has two mills in Canada and due to the influence of Canadian labor unions we need to supply a French version of our software to the two mills. Luckily, the application was designed for localization so all that needs to be done is to translate the English resources to French. What are the different options? How has your company tackled this issue? Ideally I will like to hand over the resource files (VC++ .rc) to someone and expect them to give me back the translated resource files. I remember someone (Jon Sagara?) posting about a translation service which he was very happy about, but I can not find the link.
Last year I wrote a small c# windows application which loads up the base English version of 'resx' file and talks to BabelFish webservice and translates on the fly and stores the translated the strings into the new language which we choose in the first step. So everything gets converted. All buttons text, error messages...etc... I used this approach when we sent application to non-English spoken country.
Got Signature?
-
Being from Canada, and, specifically, a region with a French speaking population of about 25%, I would urge you to find a company that is familiar with Canadian French - it is VASTLY different from the language used in France. I have not had to translate anything for 25 years and cannot offer a suggestion as to a service or company, but, I would suggest you try to find one with an office in or based in the provinces of Ontario, Quebec or New Brunswick - these will represent the greatest truly bilingual populations. Tim
-
Not a programming question. Our company got a deal with a major paper manufacturer. Unfortunately, this company has two mills in Canada and due to the influence of Canadian labor unions we need to supply a French version of our software to the two mills. Luckily, the application was designed for localization so all that needs to be done is to translate the English resources to French. What are the different options? How has your company tackled this issue? Ideally I will like to hand over the resource files (VC++ .rc) to someone and expect them to give me back the translated resource files. I remember someone (Jon Sagara?) posting about a translation service which he was very happy about, but I can not find the link.
One thing that most companies -- americans spring to mind -- seems to forget that many other languages are not as terse but rather verbose... So if there's a question of internationalization, it should be considered during design. Never the less, I needed to translate an NIH product from swedish to danish -- written in VB6, no RC-files and no access to the source code... I found a tool that translates dynamically, eg. it will allow the user to write his/her own translation if so wanting. Software Translate from Eurocity Software www.eurocitysoftware.com[^] Unfortunately it didn't work if you load the application to be translated by OLE/COM:( Seems that their software must be made aware of the launch. We are now investigating with the original manufactor and Eurocity if anything can be done to solve this shortcoming (but due to it being summer in Sweden right now, nothing will be accomplished until everyone is back from their vaccations... end of August:mad:) rgds /Jonas
-
Not a programming question. Our company got a deal with a major paper manufacturer. Unfortunately, this company has two mills in Canada and due to the influence of Canadian labor unions we need to supply a French version of our software to the two mills. Luckily, the application was designed for localization so all that needs to be done is to translate the English resources to French. What are the different options? How has your company tackled this issue? Ideally I will like to hand over the resource files (VC++ .rc) to someone and expect them to give me back the translated resource files. I remember someone (Jon Sagara?) posting about a translation service which he was very happy about, but I can not find the link.
http://www.worldlingo.com/en/products_services/worldlingo_translator.html[^] I'v used this sight a time or two Pablo www.aes4you.com
-
OK, this is maybe kind of a programming question but I'm really curious how people tackle internationalization/localization since I can't see how simply bunging all your strings in an RC file works. In English, the structure of a sentence changes if it is talking about countable objects e.g. "There is 1 banana" vs. "There are five bananas" so you can't just have an RC string of "There are %1 bananas." And I believe this kind of problem is worse in other languages. I came up with a custom solution for Awasu to handle this kind of thing but it makes using standard tools for the translation work a bit tricky.
0 bottles of beer on the wall, 0 bottles of beer, you take 1 down, pass it around, 4294967295 bottles of beer on the wall. Awasu 2.2.2 [^]: A free RSS/Atom feed reader with support for Code Project.
Actually, I use this approach: "There are one or more bananas (%1) here." "%1" is the actual number of bananas. This type of wording has worked well for translations to German, French, and Japanese. On a few occasions a translator has asked me to provide a slightly different English text (or add messages to handle the 'countable' issue), but it's fairly unusual. Using parentheses or other punctuation to isolate the parameter in the text seems to help as well.
Software Zen:
delete this;
-
OK, this is maybe kind of a programming question but I'm really curious how people tackle internationalization/localization since I can't see how simply bunging all your strings in an RC file works. In English, the structure of a sentence changes if it is talking about countable objects e.g. "There is 1 banana" vs. "There are five bananas" so you can't just have an RC string of "There are %1 bananas." And I believe this kind of problem is worse in other languages. I came up with a custom solution for Awasu to handle this kind of thing but it makes using standard tools for the translation work a bit tricky.
0 bottles of beer on the wall, 0 bottles of beer, you take 1 down, pass it around, 4294967295 bottles of beer on the wall. Awasu 2.2.2 [^]: A free RSS/Atom feed reader with support for Code Project.
BTW: I don't know why people are giving you 1's. You brought up a personal experience with the topic under discussion, and indicated you had some questions about it. I think your questions are pertinent to the subject at hand, so you get a 5 from me.
Software Zen:
delete this;
-
Not a programming question. Our company got a deal with a major paper manufacturer. Unfortunately, this company has two mills in Canada and due to the influence of Canadian labor unions we need to supply a French version of our software to the two mills. Luckily, the application was designed for localization so all that needs to be done is to translate the English resources to French. What are the different options? How has your company tackled this issue? Ideally I will like to hand over the resource files (VC++ .rc) to someone and expect them to give me back the translated resource files. I remember someone (Jon Sagara?) posting about a translation service which he was very happy about, but I can not find the link.
Being a hobbyist developer and not a company, it's not easy for me to do localisation in my apps as I can't pay someone to do it. About the best I can hope for is to use free web translators, but I dread to think what they might actually produce! :omg:
-
Not a programming question. Our company got a deal with a major paper manufacturer. Unfortunately, this company has two mills in Canada and due to the influence of Canadian labor unions we need to supply a French version of our software to the two mills. Luckily, the application was designed for localization so all that needs to be done is to translate the English resources to French. What are the different options? How has your company tackled this issue? Ideally I will like to hand over the resource files (VC++ .rc) to someone and expect them to give me back the translated resource files. I remember someone (Jon Sagara?) posting about a translation service which he was very happy about, but I can not find the link.
-
We've gone down several different paths when it comes to translating our software. We've contracted to translators, used an internal employee and had one of our forein reps do it once. The worst experience was one contracted translator... they clearly weren't used to doing software. They were doing a translation to German for an embedded device with a pretty small screen, so just about everything was abbreviated. Every string we gave them had a length limit on it. Well, some of their translations just wouldn't fit, so they reduced the font size on the printout they gave us to make it fit. :doh:
I have found that most translators do just that: translate. Many do not have the specific technical ability necessary to perform a proper, get into the real ideas behind the language, change necessary to effect a "real" translation and are therefore little better than automated translator programs. This is one of the major reasons for the lengthening of translated text. My second language is German - the text of which which everyone "knows" is always longer than English. Wrong! Translating the sense, rather than the words, ends up with about the same length text (many times it's MUCH shorter, sometimes it's longer). This is for real-rime process control applications. Your mileage might vary. The key is to think about the possibility that your application may have to be localized (or "localised" if you're English) as part of the design phase. You will then have fewer problems at the localization phase.
-
Not a programming question. Our company got a deal with a major paper manufacturer. Unfortunately, this company has two mills in Canada and due to the influence of Canadian labor unions we need to supply a French version of our software to the two mills. Luckily, the application was designed for localization so all that needs to be done is to translate the English resources to French. What are the different options? How has your company tackled this issue? Ideally I will like to hand over the resource files (VC++ .rc) to someone and expect them to give me back the translated resource files. I remember someone (Jon Sagara?) posting about a translation service which he was very happy about, but I can not find the link.
In the article: SpokenWord - Text-To-Speech and Office Automation in 1! http://www.codeproject.com/vb/net/SpokenWord\_1\_0.asp GWSyZyGy has a cool trick of using BabelFish WebServices for Translation, eg: Select Case parts(0) Case "Borland" Dim borland As New com.borland.ww6.IBorlandBabelservice borland.Timeout = 1000 tmp = borland.BabelFish(Trim(parts(1)), tmp) Case "AspxRunway" Dim aspxrunway As New com.aspxpressway.www.piglatin aspxrunway.Timeout = 1000 tmp = aspxrunway.toPigLatin(tmp) Case "BabelFish" Dim babelfish As New net.xmethods.www.BabelFishService babelfish.Timeout = 2000 ' translation services are kinda slow ShowStatus("... translating to French") tmp = babelfish.BabelFish("en_fr", tmp) ShowStatus("... translating to German") tmp = babelfish.BabelFish("fr_de", tmp) ShowStatus("... translating to English") tmp = babelfish.BabelFish("de_en", tmp) Case "WebserviceX" Dim webx As New net.webservicex.www.TranslationService Dim lang As net.webservicex.www.Language webx.Timeout = 2000 ' translation services are kinda slow ShowStatus("... translating to French") tmp = webx.Translate(lang.EnglishTOFrench, tmp) ShowStatus("... translating to German") tmp = webx.Translate(lang.FrenchTOGerman, tmp) ShowStatus("... translating to English") tmp = webx.Translate(lang.GermanTOEnglish, tmp) End Select HTH!