Globalyzer Overview and General
- 1 What programming languages does Globalyzer support?
- 2 Which is the suggested workflow to make an application i18n aware and how can Globalyzer help?
- 3 What is Unicode and why should it be used?
- 4 How thorough is Globalyzer in reviewing and modifying my code?
- 5 Why would I use Globalyzer versus my own scripts?
- 6 What results should I expect from running Globalyzer on my source code?
- 7 How long does it take to scan code with Globalyzer?
- 8 Do I have to submit my source code to the Globalyzer web site?
- 9 Are there any built-in limitations with respect to number of files, number of code lines being processed?
- 10 How do I obtain a Globalyzer account?
- 11 How can Globalyzer be leveraged across my development team?
- 12 If we customize one rule set for some specific files, how easy is it to apply the same rule set for other projects?
- 13 What are the server requirements for hosting a Globalyzer Server on premises?
- 14 What is String Concatenation and why is it an Internationalization issue?
What programming languages does Globalyzer support?
- SQL (MS SQL, MySQL, Oracle, PostgreSQL)
- VB (Classic and .NET)
For Ruby, Managed C++, and other languages not shown above, please see Scanning Additional Languages
Which is the suggested workflow to make an application i18n aware and how can Globalyzer help?
For a code base that has not been internationalized, the suggested workflow to make the application i18n aware is:
- Build, verify
Globlayzer and its clients will help with finding the issues and get the work done. Globalyzer and its clients also help in ongoing development in ensuring that your application stays internationalized.
What is Unicode and why should it be used?
Unicode is a character set that encompasses (most) all the world’s language characters. There are various encoding formats for Unicode: UTF-8, UTF-16, UTF-32. Using Unicode enables your software to support worldwide character sets with one code base. For more information and references about Unicode, see the Unicode Standard.
How thorough is Globalyzer in reviewing and modifying my code?
It is very thorough, but some of the detection and filtering specificity is controlled by the user. Globalyzer allows for strong detection and filtering controls using regular expressions, as well as built in search management capabilities. The more you learn Globalyzer's capabilities, the easier to refine your results.
With regard to modifying code, Globalyzer allows for the editing of code within its fully-functional IDE (Globalyzer Workbench), though you can use a different IDE to edit source code if you prefer. Globalyzer helps you navigate right from reports to instances in your code that need externalization or further analysis. You can also choose to mark issues with a comment for later review. Globalyzer does not modify code without the intervention of a developer. Globalyzer identifies issues, but makes no changes to code.
Why would I use Globalyzer versus my own scripts?
Globalyzer and the entire Lingoport Suite encapsulates a terrific amount of research and development regarding internationalization issues and how to resolve them. It would be extremely difficult to develop an internationalization detection script that is as comprehensive and powerful, much less easily leveraged across your software team. And, even if you could come up with your own scripts, wouldn’t your team be better off working on your product, rather than on internationalization issue detection?
Globalyzer was first released in 2001 and has been continually developed ever since, allowing for the inclusion of features desired from our broad customer base. Globalyzer in conjunction with the Lingoport Suite is an end-to-end solution for localization and internationalization from the localization manager to developers and linguistic QA.
What results should I expect from running Globalyzer on my source code?
Globalyzer looks for four categories of internationalization issues:
- Embedded Strings: Strings that must be extracted from the source code into translatable resource files so that their display can be in any language. Globalyzer also identifies concatenated strings.
- Locale-Sensitive Methods: Methods and functions (depending upon your programming language) that may restrict character encoding (ISO-Latin or Unicode support), as well as cultural formatting, including date, time, number and currency formatting
- Static File References: References to static files, such as images, which will need to be reviewed for cultural appropriateness and translation of string components within the file
- General Patterns: User-defined patterns that detect internationalization issues that are specific to your source code
How long does it take to scan code with Globalyzer?
This depends on what you are searching for and how many lines of code you are searching through, as well as if you are optionally using an additional database for tracking results. Most Globalyzer scans can review over two million lines of code in about the amount of time it takes to get a cup of coffee.
For example, an initial scan of 2.3 million lines of C++ code, on a 2.5 GHz dual core laptop, takes 3 minutes, 37 seconds; the results are similar for Java and C# source code scanning.
With each release we find ways to improve performance so be sure to download and install the latest version.
Do I have to submit my source code to the Globalyzer web site?
No. Your source code is never copied from your local machine. Globalyzer only accesses its server for Rule Set configurations, which are used to detect and filter internationalization issues, and for storing summary counts from the source code scanning process. The Globalyzer Workbench Client and Globalyzer Lite perform all code scanning and reporting on your local machine.
Once the Rule Sets have been solidified on the server, these can also be put in the local repository. Everything can be done locally without access to the Globalyzer Server.
Are there any built-in limitations with respect to number of files, number of code lines being processed?
No, Globalyzer is built to be able to work on large code bases. We test and regularly work on millions of lines of code using Globalyzer in our normal testing cycle and in our internationalization services practice.
That said, you do want to make Globalyzer manageable for your development needs. For example, often a client will create a Globalyzer project for each application component. This allows for quicker scanning and more focused results that can be addressed by that component’s development team.
Additionally, the Globalyzer Workbench can be configured to use a MySQL database (as opposed to the default HSQLDB) which will have even better performance and is recommended when you use Globalyzer to scan many large code bases.
How do I obtain a Globalyzer account?
After you register on lingoport.com, a Lingoport representative will contact you with instructions on how to download and install a trial version of the Globalyzer Workbench software. Tutorial videos will also be provided to help you learn Globalyzer's features as quickly as possible.
When you purchase a Globalyzer license, we will enable your account, allowing you to add Users to your team (dependent on your licensing).
If you have purchased a Globalyzer Enterprise Server license, we provide clear instructions on installing the server components, adding and administering User accounts, and any additional support needed to make sure you’re quickly up and running.
How can Globalyzer be leveraged across my development team?
Software internationalization involves a surprisingly complex variety of issues, depending upon your requirements, technologies and unique application needs. Globalyzer’s client/server architecture lets you build and store internationalization detection and filtering rules (which we call Rule Sets), and which can then be shared within your development team. Developers can then perform internationalization tasks efficiently, whether they are working in the next cube or in the next country.
If we customize one rule set for some specific files, how easy is it to apply the same rule set for other projects?
Multiple scans in multiple projects can use the same rule set.
What are the server requirements for hosting a Globalyzer Server on premises?
Globalyzer Server is either hosted by Lingoport, on premises, or a cloud-based server. The server requirements change as technology evolves. It is best to work with Lingoport to determine the best size server to use.
Please refer to the Lingoport Suite Installation page.
What is String Concatenation and why is it an Internationalization issue?
String concatenation is widely used in software programming. String concatenation is the operation of joining two character strings end-to-end For example:
String hi = “Hello ” + “World!”;
System.out.print(“Hello “); System.out.println(“World!”);
A typical usage is with a variable in the middle of a string:
String ua = user +“ is ”+ age + “ years old.”;
The strings "is" and " years old." could be externalized into two resources in a resource bundle, for example in a file named resources.properties:
RES1= years old. RES2=Title RES3=Navigate RES4=is
If a translator ends up with four segments to translate, the overall sentence is lost. Furthermore, even if the translator could translate it correctly, the word order is different by languages, the grammar is different too. For instance, in French, a person has four years. Without the context of the full sentence, a translator could not guess how "is" will be used.
For applications which need to execute in different locales, strings which are visible to the user should not be concatenated. Some feedback from Lingoport clients on this particular problem, before being internationalized properly:
- “We get a lot of questions from our L10N vendor”
- “Our biggest trouble area is fragmented strings in the resource bundle. At first, my team was just going along happily externalizing […]”
- “We have a lot of cases where there is a variable in the middle of the string”
- “We end up with two strings in the resources bundle rather than one string with a token for the variable piece of content”