Applications: A Guide To Using Alchemy CATALYST 4.0 To Accelerate Revenue Growth and Reduce Localization Costs
Applications: A Guide To Using Alchemy CATALYST 4.0 To Accelerate Revenue Growth and Reduce Localization Costs
NET
Applications
A Guide to using Alchemy CATALYST 4.0 to accelerate revenue growth and
reduce localization costs.
Abstract
The introduction of Microsoft™ .NET has created new and exciting challenges for the LSP (Localization
Service Provider) community and has redefined the technologies and the process of localizing
internet/wireless/mobile and desktop applications.
Existing localization technologies that provide environments for the localization of Microsoft™ Window
application can no longer be used on these newer generation .NET applications. The build, translate and
validate process used by software publishers is also undergoing a remarkable change as the
development community embraces the Microsoft .NET computing paradigm.
Gone are the now familiar and easily translated .RC files. These have been replaced with the more
versatile yet more complex .RESX files. Using XML as a core technology, while Microsoft are
expounding the virtues of this new open-standard, the LSP communities are faced with the difficult
challenge of re-tooling and re-educating their localizers. They are challenged with maintaining the
efficiency and velocity in which they had previously translated Desktop Applications while grappling with
a new technology and localization paradigm.
Alchemy Software Development, the market leader in visual localization environments has just
introduced a .NET Visual Component that allows translators and localizers work in the now familiar and
the highly visual environment of Alchemy CATALYST. Instead of focusing on the complexities of .NET
file formats, localizers and translators can now focus on the quality and precision of their translations,
improving their work efficiency and reducing the cost of translating .NET applications.
Initial tests carried out by customers have demonstrated that using the Alchemy .NET Visual Localization
Component improves the speed and efficiency of translating .NET applications dramatically, improving
quality, reducing costs and making simultaneous release of foreign language applications achievable
Copyright© 2002 Alchemy Software Development Limited. All rights reserved.
The accompanying documentation is the property of Alchemy Software
Development Limited and are copyrighted. Any reproduction in whole or in part is
strictly prohibited.
Microsoft, Visual C++, Windows and Windows NT are either registered trademarks
or trademarks of Microsoft Corporation in the U.S.A. and/or other countries.
TMX® is a registered trademark of the Localization Industry Standards Association.
All other product names or trademarks are the property of their respective owners.
CONTENTS INTRODUCTION
XML Technology
In summary
CONCLUSION
But given the new complexity of the .NET localization process, will their clients be
more willing to forgive slower translation and engineering or higher translation
costs? Highly unlikely, so the LSP that learns the quickest and establishes itself as
the experts in .NET technology will gain significant competitive advantage and
strengthen its market position.
XML Technology
At the core of the Microsoft .NET framework is XML, an open Standard supported
by almost all platforms and all major IT players such as IBM, LOTUS, Sun
Microsystems, Oracle and Novell. It offers the ability to store data easily and
describe the relationships between this data in a common, platform-independent
vocabulary. Microsoft has deployed XML as their replacement for the ubiquitous
Window resource file formats (RC, DLG) for Dialogs, Menus and Strings. These
fundamental UI components are now described in a new XML document referred to
as .RESX document.
Building on its robust and superior XML technology, introduced into Alchemy
CATALYST 4.0, Alchemy Software Development have been able to provide a full
XML editing environment coupled with a visual translation environment for these
new Microsoft XML file formats. This ensures faster translation, greater consistency
through the re-use of previous translations and glossary management tools and
reduced localization costs.
The most significant engineering benefit derived from translating binary application
files is the reduction in project complexity due to the vast reduction of files that need
to be processed. Whereas one resource binary file may be made up of 500 smaller
resource files, the engineer only has to work on this one binary file. This enormous
reduction in the number of files reduces the complexity of managing multiple
language translations. Imagine the difference between processing 10 binary DLLs
or their equivalent 5,000 source files!
Microsoft™ .NET Applications can be created using Visual Basic or C#. Application
resources are defined in a new file type called .RESX. These are XML container
documents that describe the elements of the application user interface such as
menus, dialogs and strings. There is one .RESX file for each resource type.
(2) The .resource file is embedded into an assembly 1using either the
assembly linker tool or language compiler (such as CSC for the C#
Compiler.)
1 Assembly is the technical term used by Microsoft to describe the combination of application code and application
Within this CultureInfo class, the UICulture data member determines how the
application resources will be loaded. In effect this data member specifies the
language of the user interface of a .NET application. By changing this data member,
the developer can switch the UI language of his .NET application.
By default, if the developer does not set his/her UICulture value, a .NET application
will set it to the system-installed language, which is the language of the operating
system’s resources.
Once the UICulture is set, a .NET application will load and display the specified
language user interface. It will locate the language files for the user interface of a
.NET application by loading satellite resource dlls. Using the RFC 1766 standard,
these satellite resource dlls are stored in a pre-determined directory structure off the
root from which the .NET application is launched.
As a dialog form (or Winform) is created, a resource RESX file is created within
Microsoft Visual Studio .NET.
Figure: C# Source file with embedded text for a button on a dialog panel. (Embedded text is
highlighted)
However the text strings of this Winform are not stored in the RESX file! They are
stored in the method InitializeComponent within a C# code file. This code is then
compiled into an .NET application binary file.
Obviously, this does not help the localization process, as the text strings are
essentially ‘hard-coded’ within the application’s data segments. To efficiently
translate this WinForm we need to use a method that externalizes the text strings
into an eternal file. This file then can be translated without the need to edit or
recompile the C# or VB source code.
Figure : C# method that extracts text from external resource file. (RESX) (Statement that extracts
strings from external resource file is highlighted.)
VisualStudio .NET provides the same mechanism for storing external resources, for
both C# and VB .NET, so the localization of any application developed using these
programming languages should be symmetrical.
If you compare the two code fragments above, you see the difference in the C#
code once you change the Localizable property of a WinForm. In the first instance
the text strings are hard-coded into the C# code. This makes localization difficult
and costly. In the second instance, the C# code is modified and uses the C#
methods of extracting strings from an external resource file.
To see this is action, simply click on a WinForm and change its Localizable
property to TRUE. Then select the language you wish this WinForm to be localized
into.
While Microsoft VisualStudio .NET creates all these variant RESX files for the
developer, it should be pointed out that this process has to be repeated for each
WinForm in an application. With large applications it is not unreasonable to
anticipate that this process will prove to be cumbersome and time consuming.
Imagine the overhead for a developer if he has to manage 500 base RESX files with
20 variants for each file within the one application! A whopping 10,000 files need to
be maintained!
These language .RESX files are highly optimized to reduce storage space and
tranmission time over the internet. These files only contain the changes, or deltas,
between the base RESX and their language counterpart. While this may seem
elegant in terms of economy of disk space, in reality this poses a significant
challenge for the localization teams, as each language RESX file is initially created
with no content! This means that they cannot be localized without references being
made to the original or invariant resource file created by Microsoft VisualStudio.
To see all these invariant and language . RESX files within the Microsoft IDE, click
on the Show All Files icon to see these file in the Solution Explorer tool bar.
When the .NET application is compiled, Microsoft VisualStudio .NET will create a
number of language DLLs called Satellite Assemblies. These Satellite Assemblies
enable the developer to switch the UI language of an application dynamically at run
time simply by setting the UICulture data member within the CultureInfo class.
Thread.CurrentThread.CurrentUICulture=new CultureInfo("de-DE");
This sets the application language to German and loads the UI strings from the file
contained within the de application folder.
To switch the language to French, the developer simply changes the above
statement to:-
Thread.CurrentThread.CurrentUICulture=new CultureInfo("fr-FR");
If no language is selected or defined within the application itself, the default UI will
be displayed. This is the UI that was created in the base RESX file. These
resources are automatically bound to the main application file during compilation.
3. No Version Control
Microsoft VisualStudio .NET provides no version control to help fold back
changes into the main project file of the translations and new layouts of
language variant RESX files. This has to be done manually and
consequently will be prone to a high number of errors and repeated quality
assurance problems.
In the next section, we’ll take a close look at how, Alchemy CATALYST with its
robust XML technology, can provide the only viable solution for the translation,
engineering and testing of .NET Applications.
This component plug-in fits into the existing Alchemy CATALYST 4.0 framework, so
that customers’ existing investment in Alchemy technology is maintained. This .NET
Visual Component will be a familiar environment for professional translators,
localizers and testers used to working within the Alchemy CATALYST 4.0
environment, so re-training and re-tooling costs are kept to an absolute minimum.
Once a RESX document is loaded, it will be parsed using the Alchemy XML engine.
Once the RESX document is parsed completely, a logic layer within the .NET Visual
Component interprets the XML data stream and builds a visual representation of the
RESX resources within the Alchemy CATALYST 4.0 environment. This is then
displayed in one of the .NET WYSIWYG editors.
Total Control for the Localization Engineer with this powerful and
secure XML editing environment
Using Alchemy’s secure XML environment ensures that the XML document can be
modified at any level within the Alchemy CATALYST environment while maintaining
the integrity of the document structure as defined by the XML schema supplied by
Microsoft. No other localization environment provides this level of control within
XML documents.
2 It
should be noted that this process also works for Microsoft Visual Basic .NET applications too. They use the same
RESX documents (with some minor changes) as C# applications.
In one early adopter test, a client was able to leverage 70% of previously translated
text into his newly developed .NET application!
Reduce your translation costs by leveraging As the .NET Plug-in uses the Alchemy CATALYST Framework SDK, the Validate
previous translation Expert can be used to automate the detection and tracking of localization bugs. This
reduces the time taken to test applications, log and record localization bugs and
then fix them. Automating this phase of the localization workflow can reap
tremendous payback, especially in terms of time and deployed Engineering
resources.
To address this problem, the Alchemy .NET Visual Localization Component can
also process compiled .NET applications directly.3
3 While the .NET Application binary is similar to the Windows 32 PE binaries, the UI resources are stored in different
segments. This means that existing localization tools that support binary localization cannot be used to handle .NET
binaries. The Alchemy .NET Visual Localization Component can read/write .NET binary files directly.
Key Benefits
Distribute and manage complex projects across multiple sites with easy-to-
use workflow management utilities
Alchemy Software Development has offices and facilities in Canada, Europe, Asia-
Pacific and the United States.
For more information on the company and its products, please refer to
www.AlchemySoftware.ie .