Huge Collections of Software Manuals and Knowledgebase

GreatManuals.com
Huge Collections of Software Manuals and Knowledgebase

 
Home Contact Us Request to publish your help manuals Request to remove your help manuals
Introduction
» LangAgent
» System Requirements & Installation
Operational Details
» What is LangAgent?
» LangAgent Working
» Using LangAgent In Projects
LangAgent Reference
» LangAgent Workshop Reference
» LangAgent Editor Reference
» LangAgent Runtime & API Reference
» LangAgent Add-in For Developer Studio
Support Information
» FAQ, Tips & Tricks
» Support & Feedback
 

What is LangAgent?

Multilingual application: why do I need it?

The modern world is changing very fast. The Internet has eliminated the borders and united the whole world into a single global information sphere. However, there is still one barrier - the language barrier. True, English de facto has become the major language of the Internet, but a lot of its users do not know English, and the number of such users is considerably increasing as the Internet is more and more becoming the worldwide phenomenon. Today there are about 340 million non-English speaking Internet users and nearly half of all Internet users live in Asia and Europe (this figure will grow to 75% by 2005, when there will be about a billion people online).

Many companies ignore this fact and release only English versions of their software products. But the increasing competition makes this approach unreasonable. Even if the user knows English, he will choose the software supporting his native language when other conditions are equal.

Note that LangAgent can be used not only for localization into other languages but also for proofreading the main (usually English) language (it is especially important if the main language is not native for programmers engaged in a project).

Standard localization approach

Any developer knows how complicated it is to create a multilingual application. The approach to localization provided by Microsoft can hardly be called either simple or effective. Microsoft Knowledge Base articles Q198846 and Q147149 can be a good introduction into this area. In short, Microsoft's approach is to create resources containing localized menus, dialogs, string constants, etc. The work with resource files is approximately done in the following way:

HINSTANCE hInst = LoadLibrary("myres.dll");
...
...
CString str;
str.LoadString(IDS_MYSTRING);
// use str

recover data freeware data restoration data recovery utility
free undelete software download restore windows free windows undelete
ipod reset mobile forensics recover digital camera pictures

The standard approach has the following drawbacks:

  • It demands of the developer to constantly switch between editing the resource file and working with C++ code; this problem is much more serious than it seems. For example, the programmer wants to display MessageBox with an error message. For this, it is enough to type one string: AfxMessageBox("Error! some text goes here");
    In order to follow the standard approach you are to:
    1. Switch to the resource editor and open a string table window.
    2. Use the menu to insert a new string.
    3. Enter the text and give a reasonable and unique name to the string's identifier.
    4. Switch back to the code and type the string's identifier again.
    The main problem is not that you are to perform a number of additional operations -- they are quite primitive -- but the point is that it distracts the programmer from his work. A man is able to focus only on a small amount of operational information; the necessity of performing extra routine operations (even if they are quite simple) interferes with the working tempo of the programmer and, thus, considerably decreases his labour productivity and at the same time increases the chances to make a mistake.
    Besides, the readability of the source code becomes considerably low. If you are reading the source code, you can't see the message itself but only its identifier. In order to see the message, you are to switch to the resource editor and find the message.

  • There is no version control available for translated resources. Suppose, you have edited a message or added a new one, what should you do? In this case releasing new versions becomes a great problem.

  • A great number of routine operations connected with generating and counting tasks for translators is necessary.
  • Localization requires a lot of code for switching between languages.
  • Demands certain skills not usual for translators: editing resources (especially such as dialog boxes), besides, it requires some special software which is not free in most cases.
LangAgent approach

LangAgent is based on the following principles:

  • Easy to use, minimum additional operations. The programmer mustn't get distracted from his main work.
  • The division of the programmer's and the translator's work. The programmer's work is to develop software, the translator's work is to translate.
  • automatic version control. When the developer modifies/adds text, the translator should to receive the translation task containing only the modified or added text.
  • Maximum automated tasks; minimum additional code.
  • The translator doesn't need to have programming skills.
  • It is possible to use remote translators, there is no necessity to send the source code.
  • Automatically counting tasks for translators; full statistics.
  • Automated interaction between the developer and the translator; counting translation amount.
  • Minimized translation amount due to using special dictionaries. If a certain phrase has already been used (for instance, in another project), LangAgent uses the known translation. This is the way for you to avoid duplicating words and lessen the translation task size.

LangAgent is designed for MS Visual C++ developers. In the next versions we are going to implement support for other languages.

Home | Contact Us | Request to publish your help manuals | Request to remove your help manuals