The Problem with Localizing Software for Multiple Platforms

Adobe has a long history of developing products for multiple platforms, be it desktop applications like our flagship Creative Suite applications or newer touch applications like Photoshop Touch. Most of our desktop apps have been built for both Windows and Mac and newer applications continue on this trend with support for iOS and Android including Tablet and Phone form factors for both.

Of course this would not have been possible without the careful efforts of the engineering team to largely maintain a single code base for all platforms.

While having a single code base has obvious benefits, in the UI layer it is often important to have platform specific variations for better usability. Each platform usually has a specific convention for referring to system menus, short cut keys and UI elements. For example on a windows platform a UI String could be – “Select a media file via the Browse button or enter a valid pathname.” and the same string for the Mac Platform could be – “Select a media file via the Choose button or enter a valid pathname.”

This means that translatable UI strings may have many variations in the source language depending upon which platform they are intended for. This is what our globalization group usually refers to as ‘Platform Variance’. Localizable strings are essentially multivalued entities. Each localizable string has an identifier and multiple associated values each of which can be selected based on certain criteria. The most obvious and commonly used criteria is the UI locale of the application but it need not be the only one. Platform too can decide the value of a string.

Platform variance support is not just useful for handling terminology differences for referring to system UI elements, it also helps adapt strings for different screen sizes. Modern application are designed for supporting multiple device form factors like tablet and phone with the UI being tweaked for each platform for best user experience. Platform variance in this case can be used to support longer strings for the Tablet view and shorter strings for the Phone view.

Yet another area where platform variance support could potentially be useful is in having different localizable values for a Pro version versus a Consumer version of the application.

However, localizing strings with platform variant data is a problem. The problem is two fold, one is in managing the processes and project schedule to allow for agile localization and simultaneous release for all target platforms. The second aspect is technically supporting the platform variance in both programming libraries and translation tools. Many tools and libraries assume a single value for a source and a target string, but in case of platform variance not only can there be multiple source and target values for a string there need not be a one-to-one correspondence between source and target values. There may be multiple platform variants for a source string that map to the same translated/target value or a single source string may need to be translated differently based on platform for the target locale. For example:

  • en_US: “Please close the dialog and start over.”
  • default fr_FR: “Fermez la zone de dialogue et recommencez.”
  • Windows fr_FR: “Fermez la boîte de dialogue et recommencez.”

Since I am part of the globalization tools team here at Adobe, the remainder of this post I describe the problem more from a technical tools and libraries perspective, drawing from my experience. The process problem is also pretty complex and would probably take a much longer blog post to discuss. In fact there’s a related one already on this blog, see – link.

Platform Variance Support in Libraries

Ideally the globalization libraries/APIs used in the code to manage externalized strings and the corresponding storage formats for the externalized data should have a notion of a platform variant value for each string. There should be a way to request a string value for a specific locale and platform along with a provision to fall back to a default value in case a platform specific value is not specified.

As an example, the Java ResourceBundle API supports selecting a bundle by ‘Locale’, there is no explicit mention of a ‘Platform’, but the ‘Locale’ itself is extensible to support variants. The variant mechanism in the ‘Locale’ can be used for supporting different platforms and there is also a fall back mechanism. At Adobe we have a custom developed cross platform library called ZString for managing externalized strings with explicit support for platform variance.

Platform Variance Support in Translation Tools

Most translation management systems (TMSs) have a one-to-one model of source strings with matching translated strings for each locale. This assumption is behind the architecture of the TM matching algorithms as well as the design of the translation workbench. A typical translation workbench usually offers a side by side view of source and target strings, but only supporting a single source string corresponding to a single translated value.

Typical Translation Workbench

A typical side by side view of Source and Target content in a translation tool

We are still searching for the ideal solution to this problem. For managing the TMs a possible workaround using existing systems is to have duplicate entries in the Translation Memory (TM) or a separate TM for each platform.

However, translators are still constrained by the view presented by their translation workbench. A possible solution to allow translation vendors to provide platform specific translations is to duplicate all the source strings for each possible target platform. The source value for the default platform can be used as the source value for all other platform unless the application UI already specifies a value for a specific platform in which case that is used. Now the translator can provide different translations for each platform if required. This workaround however seems to be a significant amount of additional work for the translators. Some optimization is possible by translating a single platform first and leveraging translations for all the other platforms.

In an ideal scenario the translation workbench would provide a side by side view of all platform variants for the source string and the target strings. With the ability for the translator to remove variants from the translated string where they are not required and propose variants for the translated string even if the source string does not have any. This would allow translators to work through the source content in a single pass, editing leveraged translations, providing new translations where required and proposing platform specific translated values as appropriate.

An approximation to this ideal view is an Excel sheet with each source string being represented in a row and having a separate column for each platform for both source and target strings. With blank values in a platform column signifying that the default translation is to be used for that platform and non-blank platform entries being used for the platform specific translations.

Ideal Translation Workbench

A proposed translation workbench view allowing simultaneous translations for multiple platforms

We are still experimenting to find the optimal solution for our needs, that offers flexibility to translators and yet leverages our investment in existing translation tools and processes. The goal is to be able to support faster agile release cycles with all platform releases happening simultaneously.

I think this is a good forum to ask our blog readers if they have faced similar problems and the solutions they have developed to deal with it.

Posted in English, Libraries, Technology | Tagged , , , | Leave a comment

At Adobe MAX 2013

I had the opportunity to attend Adobe MAX last week in Los Angeles, California.  It’s called the Creativity Conference, and in my opinion, the organizers delivered.

A few of us from the Adobe Globalization team established a presence at the Community Pavilion as we actively sought to engage with our customers and users from around the world. We were successful in that and I will post more information about that in the coming days.

In the meantime, please watch the following intro from Adobe TV, and keep a watch for me at 43 seconds in (I’m on the left, listening intently).

Posted in Community, Events | Leave a comment

Marketing Localization at Adobe – What works, what’s challenging

I have been asked lately to talk to a couple of peers in the industry about Marketing Localization at Adobe and thought this would make an interesting blog post as well.

At Adobe, Marketing Localization is centralized and consists of a team of International Program Managers, which I manage.

I believe this is still the right model for us. Adobe has offices all over the world and decentralizing marketing localization would actually introduce inefficiencies. That said, the challenge with a centralized model is to balance productivity with the ability to provide GEOs with the right process and tools so they can participate and provide valuable input around GEO-specific nuances, country specific content, etc. This is an on-going challenge and we work very closely with our Marketing Managers worldwide to conquer it.

The challenge here is the balance between giving more flexibility and freedom of expression to the regions and the use of productivity tools such as Translation Memory. If we want to leverage the savings that TMs and other tools offer to localization (and we do), we can offer some flexibility in the target content but not as much as sometimes the regions would like to have – for instance, complete re-writes of segments.

At Adobe we are aware to these issues and the key here is to work closely with the regional offices and offer them opportunities to provide feedback early on, directly into the source content, before localization starts. It also means providing opportunity for reviews on localized content that is presented in context in a process that allows for easy feedback. Our GEOs are Field Marketing Managers and we are sensitive to the amount of time spent in reviews.

Challenges

There are always challenges in localization and in particular in Marketing localization, where ‘good translation’ is just not good enough.

Take the Digital Marketing BU for example. Worldwide campaigns around the digital marketing solutions have to appeal to ‘marketers’, to professionals that create marketing content, and so the ‘localization quality bar’ for the content we provide to our GEOs has been raised significantly.

Here’s an example of a recent campaign that was particularly challenging for localization due to the use of the very US centric expression “ticks them off”.  For translators is not always a clear choice of words for the target language.  The ‘weight’ of the expression and what it conveys need to be taken into consideration.

12

Regional offices are free to create their own marketing materials – International Brand Guidelines are in place and Adobe’s Brand team works directly with the GEOs to ensure a consistent interpretation and use of our brand.

We are very protective when it comes to the Adobe brand and although the regional offices are given some flexibility in terms of creating some of their own marketing materials (in their original language), Adobe’s Brand team normally is involved to make sure the materials follow the established international brand guidelines.

What regions or international markets are most difficult or challenging for localization?

I think anyone that works in localization would start by saying that Japanese is a very challenging language to localize. The idea of ‘translation’ is already something that is not appreciated by the Japanese market. A very good ‘translation’ still means ‘it’s translated’ and so it has a different flow and feel than the content that is originated in Japanese.  This becomes an even greater challenge around marketing content.

At Adobe we do have a successful program for localizing marketing campaigns into Japanese and that involves working very closely with our in-country product marketing managers and employing in-country copy editors when necessary.

That said, every language and every country present challenges. We recently had to deal with orthography changes in Brazilian Portuguese, tonality changes in Spanish (formal to a more informal tone), imagery issues in the middle east, different ‘flavors’ of a single language, and so on. I guess I would say that there are no ‘easy’ regions. Our work is always interesting and we look at these challenges with a very positive attitude – these challenges are what differentiate translation from localization and it’s always exciting to be part of this process, where you see the source messaging deployed all over the world and having the intended appropriate impact in every region, around the globe.

What aspects of branding are most important to localize for regional audiences? What channels are most important?

The emphasis has greatly shifted to online content (web pages, multimedia content and social), the larger part of the content we now localize will end up on Adobe’s 57 international sites. The need for printed content has decreased but there are still certain regions that need to be supplied with printed content. We try to listen to our GEOs and provide relevant localized materials.

The Adobe ‘look and feel’ is very homogeneous in all our sites. Our regional offices have the flexibility to add country specific content but the site template is the same for all locales and all international sites are centrally managed.

Regional offices are also free to create some of their own marketing materials – International Brand Guidelines are in place and Adobe’s Brand team works directly with the GEOs to ensure a consistent interpretation and use of our brand.

I believe the big challenge now is the creation of a strong and successful Creative Cloud brand worldwide – and we are well underway :-)

Bottom line

The regional offices should be an extension of your team and taken into consideration in every step of your processes and tools.

 

Posted in English, Marketing localization | Tagged , , , | Leave a comment

Time Zones and Schedules

sample schedule image

One of the great things about being part of the globalization team here at Adobe is that we get to work regularly with people around the world, on an on-going basis, as if they are down the hall from us rather than well over the earth’s horizon.  It becomes second nature to just know what time it is now in Tokyo, Beijing, Noida, Bucharest, or Brno, all relative to each other.  It’s a known fact that if you must to schedule a live meeting with people in North America, East Asia, and Europe, someone will be stuck with a very inconvenient time slot.

These differences in time zones work for and against us, too, when it comes to project schedules, whether handing off files for localization, or delivering the final product.  Where you are in the world can be an advantage or disadvantage, depending on where your stakeholders are located.

My main job at Adobe has been program management on the product localization team. That means that I have done my share of project schedule development and maintenance.  One of the early lessons I learned being in the business, in this position, is that the details in the schedule matter, especially those that define when a task is supposed to actually happen, or rather, when it should start or be completed.

The schedules that I manage assume that the finish dates associated with any given task is relative to end-of-business-day local time for whomever the task is assigned. For example, if the task “Deliver Translated Files” is scheduled for Tuesday and is assigned to the team in Beijing, they have all day Tuesday, local time, to finish the task.  If they are delivering it to a team on the west coast of North America, then they actually have longer than that since there probably won’t be anyone in the office in San Jose to take delivery at 6PM Beijing local time (unless we’re in end-game, crunch time, of course!).

Because my team and I are on the west coast of North America, we realize that having until the very end of the day to get things done cuts into the working day for those folks in East Asia.  Therefore, we typically will account for that by adjusting the start date of the subsequent task for the folks in Asia to be their next working day. That adds a bit of flexibility for us since we then have more time to get our task done, which equates to a bit of slack in the schedule in case things don’t go as planned, a not uncommon occurrence.

This strategy seems to work out pretty well. The key is that the details must be laid out explicitly and be well known and understood. I make it a point to discuss this schedule rule exhaustively during kickoff meetings, ensuring that everyone understands. In fact, it is mentioned in the footer of my schedule files, just to be sure it gets proper ongoing visibility.

Certainly, all the details of the project should be well advertised and universally understood to ensure project success and to minimize risk.  That’s what good communication among project managers and the projects teams can do for you.  But I’ve seen the this time zone caused task deadline confusion trip people up enough to know that it’s important.

Time zones differences can be tough to get used to, especially for those who are new to working with people in various, greatly varied regions.  Time zones can help or hurt, provide you with a slight cushion or cut your day short. But if the rules are defined with your teams and stakeholders, geographical differences should not be something that slips you up.

I’d be interested to hear stories about how time zones have helped, hurt, or simply confused.  I invite you to leave your experiences in the comments section of this blog post.

Rob Jaworski
International Program Manager
Adobe

image: flickr user triciawang

Posted in Project Management | Leave a comment

Localized Prerelease Programs

The Localization team at Adobe is continually working at enabling more avenues and channels for our international user to provide us feedback on the internationalization and localization aspects of our products. One such channel is Localized Prerelease Programs. Through these programs, we encourage our international users to provide feedback on UI, translation, and overall world readiness of our unreleased products. These localized prerelease programs allow you to test products in your native language and provide feedback in a structured manner through the prerelease site. We welcome any feedback on the language used throughout the UI, ensuring that the product functions and appears natural in your language. Feel free to give us feedback on truncations, overlaps, clippings, flawed UI geometry or any cross-product inconsistency that you observe in the product in your language.

You can show your interest in participating in Adobe’s Localized Prerelease Programs by filling this form. Make sure you select ‘Yes’ to the question ‘Would you like to participate in a localized Prerelease Program ?’ and specify the language that you are interested in.

Posted in English, General announcements | 1 Comment

Internationalization as an Architecture

Creating global-ready, internationalized applications requires many people: engineers, project managers, translators, and often in-country experts. If everything goes as planned, the final product is internationalized and localized to meet the needs of a specific market. The required teamwork is amazing, and sometimes the expense can be surprisingly large. The mistaken conclusion is that internationalization must always be expensive, and that the effort simply costs too much in terms of schedules, resources, and of course money. The worst part about the conclusion is that the expense can be minimized considerably by rethinking when and how internationalization is performed.

Two causes of expensive internationalization are the delays in actively thinking about it and thinking of it as a simple feature. Often product managers and engineering teams simply do not plan for localization from the beginning of their project’s lifecycle. This is common in product teams that target English-only regions first. Unfortunately, engineers and product managers mistakenly think that they will be able to add the internationalization and localization “feature” at a later time when needed. This is an expensive mistake, and it comes from thinking of internationalization as a feature instead of an architectural and design style. The result is that the final product does not contain any framework for localization and has not been designed with internationalization and localization in mind. Ultimately, it is difficult and expensive to retrofit or “fix” an application that has a single language architecture and design. Internationalization simply touches too many areas of a product to be considered as a one-time feature that can be added to the product sometime in the future.

You can save yourself the expense and difficultly of retrofitting or fixing an English-only product by thinking of the internationalization step as an architectural element rather than a feature. A feature can be readily added to a product often because it has limited scope within the application or has few dependencies. A new feature is often “low-touch” or only lightly coupled with other features or areas of a product. Internationalization, however, often affects all aspects of an application. Areas of the product that involve number, date, time and currency formatting can cut across many areas. Internationalization is a “high-touch” activity that affects most areas of an application because user interfaces, strings, icons and colors, numbers, dates, and time values are used throughout an application. Finding and fixing those areas so that they are internationalized and localizable is an onerous task once the product already exists and is in production.

If you architect your product from the beginning so that localizable elements are isolated from core business logic, you make the localization task easier later. How can you think about internationalization as an architectural task rather than as a feature?

First, understand that internationalization will affect many aspects of your system. Think about all the areas that utilize strings and other localizable resources. The list may be bigger than you first imagined.

Secondly, after identifying those areas, extract those text strings and other resources so that they can be translated independently without touching your application’s source code. Every programming platform has a means of isolating resources from the core application. Learn about that mechanism and use it. Think of this step as creating the generic, language-neutral scaffolding upon which the rest of your application will be built. You want to create a core set of business logic and user interface layout that is independent from language and culture. Later, the language-specific elements can be translated and added onto this core architecture.

Lastly, architect your application to load needed language modules at runtime rather than having them hard-coded into the application. Placing the right internationalization architecture in the product from the beginning costs little in terms of time lines and resources, and it pays off significantly over time when product teams discover that their “English-only” application is now desired in new language markets.

Posted in English | Leave a comment