Writing Content for Localization

Writing Content for Localization

Localization in any organization doesn’t limit only to translating and adapting source texts and other materials to a target market. A good and also cost-effective localization process starts earlier than in the moment when the developers send texts to translators. It naturally contains all necessary technical steps, but we’ll skip them this time and focus on the translatable texts themselves and what you can do to make them efficient from a localization point-of-view.

Many of these tips are quite general so they will help you improve your original texts too. They have been written especially with UI, help and support materials in mind – writing for your landing page might be a completely different ballgame but many of the rules apply there too.

Fluent and Correct

Would you trust a linguist to do code for you? I wouldn’t either (and I’m a linguist). Don’t put too much trust in your developer’s linguistic ability either.

Software and other web content are nowadays mostly written in English, which often is a good choice for localization and translation purposes, as the most translators around have English as one of their source languages. But other languages are used too.

Whichever your writing language of choice is, make sure the texts are well written. If your own or your developer’s English is not that good, have the texts edited by someone whose knowledge is more solid. “Engineering English” might create misunderstandings for your users, and those misunderstandings will get multiplied in localization.

Consistent Terminology

Stick to the terminology you choose and make everybody who is writing content also aware of it. This also means not using one term for several concepts. This might in many cases leave the translator wondering which of the concepts you’re referring to – and even get yourself in trouble when you want to mention those two concepts in the same sentence. Put a system in place to manage and spread terminology in your organization.

Reuse

At school, you learn that you shouldn’t be overly repetitive when writing, so you don’t make the reader bored. This is mostly true, I don’t want to argue with your elementary school teacher, but when writing software texts, repetition is your best friend. And this goes for basically any help and support texts too – or anything you write with localization in mind.  Identify parts of text that appear in many places and don’t rewrite them. The commonly used localization tools identify what has been translated earlier and you can usually have those parts translated automatically. The more similarities the new texts have with old ones, the less their translation costs. Repeated terms and structures are easy for the translators.

Using the same terms and structures also makes things easy for your user: they will be more familiar with different parts of the UI and have a more fluent experience.

Be Concise

Don’t write overly long texts unless you have a true motivation for that. English is often shorter than many other languages, e.g. German translations tend to be around 3o% longer than English texts, so don’t aim at filling all available space already in the English version. Other than that, concise texts are mostly user-friendly, too. You don’t want your users to leave your page because of texts that take ages to read and are difficult to understand, right?

Localization cost is almost always directly tied to text length, so this point is also directly linked to your bottom line.

Text in Graphics

If you want to make localization easy, embed as little text as possible into graphics. Each time you localize texts that you have as graphics means manual labor, which means more costs. Each time you add a language you need to update all graphics manually.

Cultural References

Funny slang words can nicely spice up a text, as will idiomatic expressions. And make you sound like someone who really masters the language. But at the same time, they make localization more difficult and might even be nearly impossible to translate. For translators, there are ways to get around that, but you don’t want to make translating more difficult and error-prone. The same goes rid of jargon and metaphors, you need to get rid of them.

A Final Pointer

Being customer centric pays off in localization too: if a text is optimal for a user in your own language area, it probably is easy to localize.

Photo by Thomas Lefevbre.

Hidden Costs Of Localization

Hidden Costs Of Localization

icebergWhen you think about localization costs, what is the first thing that to your mind? Did you just say translation prices? You are not the only one who would say that. Sometimes that might even be true, but let’s consider a more likely alternative.

We have come across localization projects, where the actual translation cost is somewhere around 10% of the cost of the whole project (and no, I’m not exaggerating). It doesn’t take that advanced math to see where the possibilities for biggest cost savings lie in those cases.  To be honest the ratio of translation and other localization costs is usually not quite this extreme, but would most likely surprise you anyway.

What are those other 90% of costs then? Those costs can e.g. be related to various project management tasks and handling different file formats. Of course, you can’t take away all of that, but for sure some of it.

So here’s a short checklist for you. If you recognize some of the below tasks as something you or your colleagues often do in localization projects, then you have an idea of what hidden costs of localization are:

  • Copy-pasting texts from your resource files to various file formats for translation and then again translations from various file formats to your resource files
  • Sending emails to translators to check how much they have translated
  • Converting your files to different formats
  • Getting charged by translation agencies for converting your files to formats used by the translators
  • Receiving several Excel worksheets with queries from translators

The key to getting rid of these hidden costs? To put it simply, a thought-out process and tools that are focused on you, not only the translation service provider. Lean localization is not a myth, but something most organizations can achieve by taking a critical look at their old habits.

Looking Forward to a Busy Autumn

Looking Forward to a Busy Autumn

Over here the weather is getting colder, but the conference season is getting hotter. We’ll be keeping busy and here are a few places where you can find us in the coming months:

Web Summit in Dublin (October 30–31)

tekom-Jahrestagung 2013 in Wiesbaden (November 6–8). Check out our presentation about Crowdsourcing in the Localization Process and our stand in booth 442 in Hall 4.

Slush 2013 in Helsinki (November 13–14)

Nordic Translation Industry Forum in Stockholm (November 21–22). We’ll be presenting on the second day about ‘Lean Approach – Better Customer Service’.

Looking forward to meeting lots of interesting people and hearing a bunch of killer presentations! Get in touch with us if you would like to exchange thoughts about localization, start-ups, your app, the weather in Finland – or anything else.

See you there!

Meet Innova

Meet Innova

Today we’ll continue with short presentations of some of our awesome clients and meet Mika from Moscow based Innova.

innova_logo

Q1. Tell us about Innova!

We publish MMO games such as Lineage 2, Aion, PlanetSide2 among others and design iPhone based projects. If you have ever heard about DigitWar and Creativium they will be one of them. We also offer an online cinema store ayyo.ru and invest a lot of effort into the development of our online gaming platform 4game that lets you download and launch titles directly from your browser. There are currently around 250 employees all hugely committed and passionate about their work. Our offices are located in Luxembourg, Moscow and Yerevan.

Mikael Geletsyan

Q2. Please tell us about yourself.

I am Mikael Geletsyan and have been in a Product Manager role for 4game from the inception of the project. I care deeply about each of our efforts and try my best to hear out any great idea that can add value to our project and take it on board. I make sure every detail, everything that ends up in front of our users’ eyes gets our best attention.

Q3. How are you using Get Localization?

We have been using Get Localization to support the multi-language availability of the gaming platform 4game. The program feeds us with all the texts on the website, emails and the game application. Currently we are maintaining Russian, English and German and Polish languages. We further plan to offer our users Korean and Portuguese versions. The implementation of Get Localization into our routine was quite smooth as it supports PHP Array, the most suitable format for us. That coupled with API allowed us to entirely and easily automate the integration across all our localization processes.

Q4. Would you have localization tips or best practices that you would like to share?

Here’s my tip: use Get Localization not only to translate texts but also to edit and copywrite them already after their publication. Just sign up your translators, editors and copywriters and you will see the synergy it will produce. We are already ripping these benefits.

de4game

Thanks for taking a few moments to chat with us, Mika!

Get Localization Testfront (BETA) and other updates

Get Localization Testfront (BETA) and other updates

Introducing Get Localization Testfront

We have always been strong advocates of giving translators context information and have emphasized its importance in pursuing an efficient translation process. Whether the translators are professional or from the community, they will translate the content wrong if they don’t understand the context. However, the performance of the translators is also equally important, they need to be able to work fast and immediately get it right.

Websites and web apps are challenging as they can be huge and contain a lot of hidden content such as dialogs and different pages. There’s a lot of content to translate and therefore testing and finding the right context is difficult. Get Localization Testfront is an additional tool to our editor to test & refine the translations on the page itself. There you can immediately see whether your translation properly fits in layout-wise and context-wise.

As they say, a screenshot is worth a thousand words so here are a few:

Image
You can preview the translation in the web page itself

Image

So what you can do is that you can review the translation in its actual layout right in the editor, the same place where you do the translation. You can also edit the translation on the page itself and switch between the normal editor and Testfront by just clicking a button. Testfront also learns more when it’s used and is able to find the exact page where the string appears.

We are currently in the beta stage with this, so you can enable the feature in the Settings if you want and let us know how it works for you.

New Profiles

You can also see that the new profiles have finally landed. Your profile page is now much clearer than before and provides more information about the projects you are participating in. This has been a very popular wish so let us know what you think!

Android Context Information

Android files can now contain context information by defining a comment attribute to string element, for example:

<string name="menu_stop" comment="After item Start in Menu">Stop</string>

This context information will be displayed in the context field in the translation editor and help the translators to get their translation right the first time.

Updates to Get Localization Editor

Updates to Get Localization Editor

We are today introducing a new version of our editor. It brings a lot of new features and improvements especially for power users, professional translators and proof-readers.

1. New toolbar design and search

ribbon+search

We have removed the old menu bar and introduced a simple toolbar design that brings all the most needed features to one place. For example all the different search functions are now merged to one simple UI.

2. Better tag/placeholder management

editor+interpolator

You can now use shortcut (ALT+DOWN) to copy the next placeholder or tag to editor. You can also browse placeholders and tags using ALT+RIGHT and ALT+LEFT shortcuts. Or you can simply copy the placeholder by clicking it.

3. Screenshots

editor+screenshots

Additionally to context text, you can now add screenshots to provide more information about the string.

And much more…

You can now try the new version by clicking the link in the old editor. Old editor will retire on 6th of May. However premium project owners who contact support may continue using the old editor six months from now.

Introducing Get Localization for Mac (BETA)

Introducing Get Localization for Mac (BETA)

gl-mac-iconNo more ibtool, genstrings or dragging xib and strings files around. Get Localization for Mac is here!

Get Localization for Mac is by far the simplest way to localize your iOS and Mac OS X apps that have been developed using Xcode. It manages all the files and it generates the strings files from your Objective-C and XIB files and updates them. It also syncs them between Get Localization and your Xcode project. Just select your .xcodeproj file, log-in and select the project where you wish to sync your strings files and you are ready to go.

But first let’s walk through how to internationalize your iOS or Mac OS X app. If you are familiar with internalization for iOS and OS X you can skip this part.

Prepare Your App for Localization

Objective-C (.m and .mpp files)

In order to localize your app you simply need to wrap all the hard-coded strings with an NSLocalizedString function call in your Objective-C files. For example:

[alert setInformativeText:NSLocalizedString(@"Hello World"@"This is a comment, it appears in Get Localization editor")];

XIB files

xcode-1Get Localization for Mac will automatically manage all your XIB files and related strings files. All you have to do is to select  in Xcode which XIB files to localize.

1. First select the Xib file and then open File Inspector (typically the first document icon to the right, see screenshot)
2. Click the ‘Localize’ button. When Xcode asks if you want to localize, choose ‘yes’. It’s also recommended to select English here as a language as the BETA version only supports English as a master language at the moment.  You don’t need to add any languages here, rest will happen magically.
3. This will move the selected xib file to en.proj directory. This is normal and required by the process. Language specific folders and xib files are built automatically for you by Get Localization for Mac when you choose to sync the files.

That’s it. Now your app is ready for localization.

Localization Made Easy with Get Localization for Mac

Get Localization for Mac automates everything. It will

  • Configure your Xcode project properly
  • Generate Localizable.strings files from your Objective-C files
  • Generate XIB specific strings files from each XIB that is marked for localization in Xcode (resides in en.lproj folder)
  • Update your existing translations to Get Localization if they are available in your Xcode project
  • Add these files to the Xcode project automatically (no need to drag’n’drop every file manually)

screenshot-1

You can add multiple Xcode projects to Get Localization for Mac to sync them easily.

screenshot-1.5

Just drag’n’drop your Xcode project to a new empty Get Localization project or choose any existing project you have access to. If you have any existing translations in your project, they are updated as well. Please note that if your project is big, it may take a moment to process all your files when uploading for the first time.

screenshot-2

You can choose which languages to sync to your Xcode project. Just simply click “Sync” and  latest translations are updated to your app and new strings files are generated and sent to translation.

Try It Out – Download the Beta

Please note that Get Localization for Mac is an early beta version. It will be later available through Mac App Store but now during the public beta phase you can download it via the following link.

Download Get Localization for Mac BETA

Please report all the bugs or problems that you may find by creating a ticket in our support system.

Giving Back – Get Localization and Plan

Giving Back – Get Localization and Plan

Today we would like to tell you about a client that is especially dear to us. Since 2011 Plan Finland has been using Get Localization to coordinate their voluntary translation work. We actually started our relationship by offering them a slightly different service, but soon discovered together with the folks at Plan that the best solution for them is to use Get Localization to coordinate all translation activities of their volunteer translators.

But enough from me, now I’ll give the word to Plan Finland’s Lotta Kallio:

Plan Finland

Q1. Tell us about Plan!

Plan is an international development organization promoting children’s rights.  Plan has been operating in Finland since 1998. Plan International was founded in 1937. Today, around 30,000 people in Finland support our work. Plan is the largest organization practicing child sponsorship in Finland. Plan has no religious or political affiliations. Plan International works in 69 countries and runs development programs in 50 countries. There are fundraising national offices in 22 countries. In Plan’s world, human rights are respected and children realize their full potential as members of society. In addition to development projects and child sponsorship in developing countries, we also work on a national level in Finland, focus on corporate partnerships, advocacy work and communication.

Q2. Please tell us about yourself.

My name is Lotta Kallio and I work as a Sponsorship communications coordinator here at Plan Finland. I oversee the correspondence between our Finnish sponsors and sponsored children around the world. I also coordinate our office and translation volunteer workers.

Q3. How are you using Get Localization?

I’ve found that Get Localization is a very effective way to coordinate translation work to our volunteers. Documents are mainly Plan’s reports of sponsored children’s communities, overviews, annual reports, area updates etc. and the translation languages are English and Finnish at the moment. Get Localization provides a great way for our volunteers to do work from home, it’s easy to access and user friendly. Also, the translation memory is a great feature when the documents have similarities in structure. Loading the documents is simple to and from the program.

Q4. Do you have translation tips or best practices you would like to share with other NGOs?

Our volunteers have been very pleased with this program. Because the documents are “cut” in smaller fragments, a person can translate a few lines at the time so there’s no pressure of having to translate a whole document in a certain timeframe. I’ve found that this encourages our volunteers to do more translation work than via e-mail.

We want to thank Lotta for taking the time to inform our readers about Plan and their experiences with Get Localization! It’s our pleasure to help.

To all our readers, please check out the Plan website. Maybe it could be something for you too? If you want to know about other ways the localization and translation industry is giving back to society, you can check out Translators Without Borders.

Apps Localization for Nokia Series 40 and Asha

Apps Localization for Nokia Series 40 and Asha

700-nokia_301_dualsim

We have recently added support for the Nokia Java SDK, which is an Eclipse based IDE for Java ME development. This post covers basics on how to get started with localizing your Java ME apps for multiple languages by using the Get Localization Sync plug-in and Nokia Java SDK.

Getting Started: Install Everything

If you don’t have the latest Nokia Java SDK, you can download it from http://www.developer.nokia.com/Develop/Series_40/.

Then you need the Get Localization Sync plug-in.

    • Open your Nokia Java SDK
    • Choose Help -> Install new software…
install
Installing the plug-in
  • Click ‘Add…’
  • Enter a name for the repository, e.g. Get Localization
  • Enter the repository location, which is http://getlocalization.sync.s3.amazonaws.com
  • Click ‘Ok’
  • Check ‘Get Localization Sync’ plugin
  • Click ‘Next’ and follow instructions

Internationalization

If you are not aware of the concept of internalization or I18n, please refer to our earlier blog post Software Internalization for Dummies. Java ME is one of those frameworks that are shipped without a standard internalization framework. Fortunately Nokia provides internalization support within their SDK and it’s easy to set up.

When you create a new project, you have an option to ‘Enable Localization Support’ (see screenshot below). This feature allows you to localize  your application strings easily.

enable_l10n_support
Screenshot #1

TIP: If you already have a project and/or an existing app, you can enable the localization support by right-clicking your project and selecting ‘Mobile Tools for Java’  ⇒ ‘Enable Localization’.

So now you have everything set up, let’s see what the SDK created for us:

created_files
Screenshot #2

As you can see, there’s now two new files inside the package that we defined in the previous step.

L10nConstants.java – This is a generated Java file and will contain all the metadata of your localization data.

L10nResources.java – This is a utility class for loading the strings inside your UI.

Then we got the new editor called Localization Data. This editor is used to manage all your application strings. First you need to add your first ‘locale’ i.e. the language your application will be translated from. We recommend writing the initial version in English, as it’s easier to find translators to translate from English than other languages. Click the ‘Add locale’ button and it will add automatically en-US language for you. Make sure to check ‘Default locale’ on for this language (you can find this option to the right). You can also modify the language and country code here if you want but it’s not necessary if your app is in English.

Next you can add your first entry. Entry is a string you are using in your application, let’s say you have a ListBox element and you are setting a title for it like this:

listBox.setTitle("My Awesome App");

Now, what you want is to add this very same text as an entry to the localization file. Click ‘Add entry’ button in Localization Data editor and define key for this entry e.g. LISTBOX_TITLE and then the value ‘My Awesome App”‘ Hit save and now a few things happened:

1. Inside the res folder you can find a file called messages_en-US.properties. This is a master file which will be translated into another languages.
2. L10nConstants.java was generated and updated.

This means that you can now modify your code to use these new classes.

First of all, you need an instance of L10nResources, for example:

L10nResources res = L10nResources.getL10nResources(null);

Given parameter is null here but you could also define language code here e.g. “en-US” or “fi-FI”. It’s good for testing purposes so you don’t have to change e.g. your emulator language. Giving null means that it will try to use the same language the device is currently using.

Now we can actually load the string from resources instead of hardcoding it:

listBox.setTitle(res.getString(L10nConstants.LISTBOX_TITLE));

That’s it. Now the text is always loaded from resource files based on the phone language.

Localization

That was easy. Now it’s time to start translating your app and for that Get Localization is the perfect companion. It is a browser based service that will help you manage the files, translate them and even let you to manage your own translators if you wish. This part assumes that you are familiar with Get Localization already. If not, then please  visit the frontpage, take a tour or if you have questions, create a support ticket in the ticketing system and someone will get back to you ASAP.

Configuring the Get Localization Sync Plug-In

First you need to configure your Get Localization Sync plugin. I hope you already installed it but if not, please refer to the section ‘Getting started: Install everything’.  Now in Package Explorer, right-click your project name e.g. MyApp in Screenshot #2 and select ‘Properties’. Then find Get Localization Sync leaf in your properties and you should see the below screen:

sync
Screenshot #3

The following fields are used:

Username – Your Get Localization username

Password – Your Get Localization password

Project – Your Get Localization project name (same that appears in project URL e.g. http://www.getlocalization.com/example/, where example is your project). If you don’t have project, please create one first at http://www.getlocalization.com/signup/

Default Platform – Platform you are developing on. IMPORTANT: You should choose “Java Properties (UTF-8)”

Pull file filter allows you to filter which files you wish to pull to your Eclipse project. For example just pull all the .properties files, you can use filter:

.*?properties

Replace rules can be used to alter file names when they’re pulled to project. Typically it’s not necessary but you can e.g. rename language codes in files in case they happen to be wrong.

Replace rules can be imported and exported so if you manage to do proper rules, please do share them with us. We’re happy to add them to our library.

Sending Files to Translation

Simply right-click the file in the res folder called messages_en-US.properties, then select ‘Get Localization Sync’  ⇒ ‘Send to translation’.

send_to

Syncing Translations Back to Project

When the files have been translated, you can sync them easily back to your project. Right-click ‘res’ folder and select ‘Get Localization Sync’  ⇒ ‘Sync translations to this folder’ and that is it.

sync_back

Localizing Your Other Data

Metadata such as Store Description

It’s highly recommended to localize your store description and other meta data. You can add multiple files to Get Localization so it’s easiest to add the store description e.g. as a plain text file. You can do this via browser on Get Localization project (Files tab)  or via the plug-in.

Dates and Times

Java ME does provide some help to localize dates and times. What you want to do is to provide them both in the same format based on user settings. These settings are already configured in the device and accessing them is easy.

Dates

You can get currently used date format using following piece of code:

String format = System.getProperty("com.nokia.mid.dateformat");

This method returns for example these values with following settings:

Gregorian calendar date in little endian format: dd-MM-yyyy

Gregorian calendar date in big endian format: yyyy/MM/dd

Gregorian calendar date in big endian format: yyyy-MM-dd

Note that the date separator can be often changed from the phone settings.

Time

In a similar way you can also get the time format which the Nokia Series 40 or Asha device is configured to use.

String timeFormat = System.getProperty("com.nokia.mid.timeformat");

In this case the return values are a bit simpler:

HH:mm means 24 hours clock

hh:mm a means 12 hours clock

Performance Updates

In an ongoing effort to speed-up the service, we have today added more extra processing power to the system and at the same time pushed out optimisations especially to the file management side. This means faster uploading / downloading and decreased processing times.

In case you face any problems with performance (or any other matter), please let us know by opening a ticket to our support system at http://support.getlocalization.com. Thanks!