Adobe Flash localization

Localizing structured content through translation management tools is generally a simple process. However, localizing unstructured content, such as text appearing in Adobe Flash videos, is not easy. This means that tracking translation efficiencies for unstructured content is all the more difficult.

There are, however, some best practices that could be applied to any localization of text or other assets in Adobe Flash files. A compilation of these best practices was prepared from an independent study done for a complex Adobe software product, aided by Jakub Škrabal and Petr Knápek from Moravia. This article covers some aspects of Flash localization, including creating English content correctly, so that it is internationalized and thus localization friendly. Following these best practices can lead to effort and cost savings, which when considered in context of the number of languages could be sizeable.

 

Extracting text

The ease or difficulty of localizing Flash animation depends on the globalization readiness of the source, which is usually an English Flash animation file. During the localization process, all text requiring translation is extracted from the source animation. It is then replaced by localized text and modified according to the style guide, including choice of font size and so on. In some cases, text requiring localization is not included in the text layers but is present as a graphic embedded in an image. Therefore, the source animation must be fixed first to make it ready for localization.

As a first step in the localization of Flash animation, all text requiring localization should be extracted from the animation. This step is made possible by commercial tools, such as Flash Localization Tool, or by renaming the source Flash animation file as a ZIP archive, and then extracting all XML files from the library subfolder of the ZIP archive.

The Flash native format is a ZIP archive with a defined structure. A basic knowledge of this structure enables you to easily extract all text layers from the animation. Text layers  in  XML files can be found surrounded by the <characters>Your text</characters> XML tags.

Besides storing the localizable text, the XML data stores information about the font size, font family and style. In most cases, the input parameters such as font family and size can be easily modified to obtain the desired output fonts. More details about the Flash XML file will follow in the coming sections.

 

Pseudo-localization

The first best practice is to apply pseudo-localization to identify localizable text which is not in text layers and externalize it. This ensures that the animation is ready for localization and that all text requiring translation resides in the text layers. Ideally, this is to be done by the team creating the English Flash file.

During this process, the text in the text layer requiring translation is replaced by predefined strings such as X. After doing so, original XML files in the library subfolder are replaced by modified ones. When this action is complete, the file is regenerated and played back in Flash player. By playing this rendered file, one can easily locate strings that were not pseudo-localized. Text originally present in the text layers is displayed as X in this rendering. If there is still any readable text, it usually comes from embedded videos, graphics or an ActionScript. Examples of pseudo-localization are depicted in Figures 1 and 2.

Text layers

The second best practice is to avoid breaking down a string into multiple text layers. If any text formatting is required, do it in only one text layer.

At times it is necessary to have different animations for different parts of a single string. More often than not, authors choose different ways of inserting such a text in Flash animation.

There can be many ways to insert text into Flash animation. However, one must choose between them and stick to only one approach for a given Flash project to ensure smooth localization. Avoid representing text using a scalar vector graphic. In this case it will appear correctly in the animation, but will not have anything corresponding in the XML file. Therefore, it is recommended that you use only text layers.

Also avoid breaking a single string into multiple strings, unless specifically required. Any separation in multiple substrings will result in the same amount of separation in the XML file. This is known as text segmentation, and can lead to loss of context during translation and thus incorrect localization.

Figures 3 and 4 describe the issue of text segmentation. The intended text is “Loyal customers like you save with special upgrade pricing. Adobe Photoshop Elements & Adobe Premiere Elements is now a perfect 10!” However, the underlined text reading “special upgrade pricing” has been separated as a substring for formatting issues and has been kept as a separate layer. The latest version of Flash allows authors to keep strings with different font family, color, style, size and so on in one text layer. Figure 5 illustrates an example of a complex string (part of the text is in yellow with bigger font) in one text layer.

Keep in mind that layer separation will result in the segmentation of strings in the XML file. The translator will see them as two separate strings without them being related, as in Figure 6.

With all this in mind, it is recommended that you don’t split a string into smaller substrings, no matter what tool you use for creating Flash animations. Rather, keep them in one text layer whenever possible. The advantages of this approach are that the string remains well ordered in the XML file, and translators get a better context during translation, hence improving the linguistic quality of the translations.

 

Embedded videos

Flash animations often contain embedded videos. The best way to localize embedded videos in Flash is to extract all text from the video, localize that text, replace it with the translated text and create a localized video.

For the given Flash file, embedded videos can be found in the Flash object library under the Embedded Video type.

If there are any segments to be localized within the embedded videos and only the Flash file has been provided, it is difficult and time consuming to localize the strings in it. When the video is carefully analyzed, in some cases the text can be “faked,” which is not a good localization practice. Faking normally involves the following steps:

First, screenshots are taken for each motion in the animation. Second, English characters are removed from each screenshot by using tools like Adobe Photoshop. Third, English characters are replaced by localized text of similar appearance — font size, color and so on. These screenshots are then integrated to compose a video with localized text.

This approach works only when the portion of the video behind the text is static. As mentioned earlier, this is not an efficient localization method and is limited to static videos. If the text is moving very fast (as in an animation) or text is static but the background is changing equally fast, it is almost impossible to follow this process. For this type of file, it is necessary to spend many hours to localize just a few seconds of video.

Thus, when you have a rapidly changing background on which the text is superimposed, localization can be a harrowing experience if the source video file and the externalized text layers are not available to the translators. However, with an editable video project file, the translators can modify all text layers inside embedded videos and prepare localized versions of those videos.

Again, it is recommended to not embed assets in videos if you want to localize them. Instead, provide them separately.

 

Screenshot animation

One can create an animation inside the Flash project from a series of screenshots. See an example of a screenshot series in Figure 7 and Figure 8. In this case, as the timeline drifts from left to right, the animated text on the surfboard starts to appear. Figure 7 represents when the timeline has not started, and Figure 8 represents when the timeline has ended.

Text in the screenshots is localizable, and a source Photoshop file with editable text layer needs to be created. Once this step is complete, the English text is to be replaced with the translated one.

However, if the source Photoshop file is not provided, the only way to create a localized version is to remove the English text, for example by using tools like Photoshop, and replace, say, the first English character with a localized character at the same axis in the image and take a screenshot. Then you have to repeat this for the next English character until all are done. Finally, superimpose all the screenshots on each other and set the time so that it matches English animation.

It should be obvious that doing this for every character is a significant effort. Therefore, if you have an editable source Photoshop file available, make sure you provide it to your localization engineer.

For any localizable text within a graphic (graphical text), it is important to provide the source English assets. If the source editable asset is not provided, it has to be recreated by the localization vendor to be able to replace text with a localized version and create a rendering for the Flash project. During recreation of the editable source asset, some effects can be overlooked and hence missed in the localized version.

 

Buttons and active layers

It is vital to keep all buttons with localizable texts as Movie Clip type in a Flash project and not to use different Flash types to simulate the button functionality. If the button functionality consists of multiple Flash types, it is likely that during post processing, the engineers may unintentionally use incorrect relative alignment of these objects inside frames. This may impact the Flash file functionally, and in some cases, render it corrupt.

An example of a corrupted button is shown in Figure 9. Here, the button consists of graphical text in the yellow box and an active layer (shown as a blue frame), which plays the role of “clickable” area. You may observe that the box is not aligned with the active layer and the left side of this button is not clickable. Additionally, the right side incorrectly contains an overlapped active area.

Active layers outside of the button boundary in Flash can lead to misalignment within the localized version of Flash. It requires one to resize button and active layer objects with every change in the number of text characters in the button. Creating buttons as Movie Clip will avoid such issues in Flash animations.

 

Flickering

In some Flash players, localized text can exhibit a flickering effect. That is, text is moved by one or a few pixels to the left, right, up or down when the cursor is hovered over it.

See Figure 10 for more details. Giriș*e geri shifts slightly at a low level compared to ri dön and the rest of the text when the mouse is hovered over it.

The only way to fix the flickering issue is to convert text layers within the localized Flash project into curves and then render them into the final format. Graphical texts (curves) do not show the flickering effect.

Flickering is most often visible in older versions of Flash players. It is recommended that you use the latest Flash players that do not display this effect. Otherwise, localized text layers have to be converted into curves before rendering into the final format.