Ziqi Zhou

Never marry your ideas, flirt with them.

Tag: localization

Wordfast Localization 101: a presentation at 2018 Wordfast Forward User Conference

Software localization is tricky. Starting from this year, I have been working as the localization project management intern at Wordfast and managed several localization projects, including the localization of Wordfast Pro 5, the localization of Wordfast product brief, training video and website. Among these projects, the localization of Wordfast Pro is the most challenging.

Invited by John Di Rico, the Sales and Marketing Manager of Wordfast, I went to Cascais, Portugal as a speaker at the Wordfast Forward User Conference and made a presentation on the Wordfast Pro localization project. With this blog post, I’m going to share some of my own experience localizing the Wordfast Pro 5 and what I’ve learned from the trip to Portugal.

Workflow

The localization project can be divided into four steps, including getting the product localization ready(sometimes can be called internationalization), which was mostly done by developers, translation and review, localization quality assurance and product release. Since I was mainly involved in the translation and QA step, I’m going to explain more about these two steps which you will probably be doing if you are going to localize Wordfast Pro.

 

Translation & Review

The following picture shows the tools that we used. We use Wordfast Pro 5 as the CAT tool for translation and review, because you can get familiar with the software in a short time and refer to listed functions immediately. Brackets and Notepad++ are text editors for coding. They may help you locate the string and figure out its meaning.

Four json files will be given from Wordfast developers with the total word count of 21,275. These files can be imported into Wordfast, and you can start translating. We two split the task and each of us translated two files. Each segment is very short compared to what we normally translate, which mostly will be a sentence. It seems easier or at least faster translating short segments, but we did encountered many challenges.

Workbench in Wordfast Pro 5

 

Translation: Challenges

Challenges in the Translation Step

  1. Lack of Context

We can only get a list of segments which are really short. I still remember I was really frustrated when I saw an orphan word like an “of”.

Solution: When you’re not sure of its meaning, leave it blank, add a note so that later you can export the notes and send it to developers for feedback.

But what if you don’t want to wait?

Should I translate the “a” or just copy the source into target?

Solution: Use the code editor notepad++ or brackets to locate the term. Thanks to developers, the code is easy to read, so I can figure out , this segment is related to case sensitive, so I may leave it the way it is.

Locate the Segment Using Notepad ++

  1. Terminology

(1) Inconsistency of terms: Since the translation was done by different people, there were many terms ended up with different translations.

(2)  No corresponding Chinese term: There are some words that are hard to translate simply because there’re no corresponding Chinese terms that can express the same meaning in this UI context. I was struggling with terms like “penalty”, for the Chinese of this term means punishment.

Solution: We searched for existing terminology database for answers but couldn’t find satisfying results. What I did was to open the Chinese version of SDL Trados for reference.

3. Polysemy

There are many terms with more than one connotation. For example, without any context, “mouse” could refer to an animal or a device we use to move the cursor.

“Check”: To verify, make sure something is correct? Tick a box when you’re selecting something?

  1. Tags & Word Order:  There are a lot of tags in the segments. There is a tag at the end of the sentence below, you don’t know what exactly will appear in this place holder. Most importantly, you don’t want to move the tag away from its original position. Because moving tags may cause a concatenation issue, I would not want developers to rewrite the code because of my translation.

    Tag in a Segment

    Solution: When the translation seems need to move tags around,  we translators should really use our brain to come up with a better and safer way to translate.

Translation Using a Word Order Friendly to Tags

Normally, if I translate this sentence into Chinese, it would be like the upper left one. Although you don’t understand Chinese, from the arrow lines, you can see how the Chinese word order differs from the English one and you need to move the tag into the middle of the sentence. You don’t want it to happen. So, in this case, we should really use our brain to come up with a translation that keeps the same word order. What’s shown in the upper right was how I finally translated this segment. You can see, the word orders stay almost the same, and you don’t need to move tags.

5. String Length

We need to pay attention to the length of your translation. Chinese is a very compact language, however, if you want to localize Wordfast into European languages, eg. German, make sure it would not be too long since we don’t want the developers to rewrite the codes for the software UI.

Localization Quality Assurance (QA):

The localization QA can make the final product really shine, personally, I think it’s as important as the translation process. In the past, when much of translation was focused on documentation, final reviews were typically completed by translators just before the files were sent to publishing. With the rise of digital content and localization activities for mobile applications, software and websites, localization QA became a necessity in the translation process and ensures the quality of the localized product.

Usually, a QA tester will analyze the product in three ways:

Localization QA

Linguistic Testing:

Accuracy of translation within context – Some words/sentences may need to be translated differently depending on their usage.

Consistency of terminology – “Submit” or “Send”? While these two words are quite similar, they can confuse a user if they are used inconsistently. (Especially the translation is done by more than 1 person, solution: term base, glossary, TM)

Missing content – Engineers who build a localized product most likely won’t speak the target language. If they miss part of the text, they’ll never know it until someone who can understand the language notices. Testers make sure that this “someone” isn’t the end user!

Format and Layout Testing:

Consistency with the source – Is everything laid out properly? Is there any truncated text? Misplaced line breaks?

Images – Are the images localized properly? Culturally appropriate? Remember the famous Microsoft photoshop slip?  Testing is your chance to avoid similar disasters.

Proper character display – It’s not uncommon to see corrupted characters in localized products. Typically, they’re displayed in the shape of empty boxes or question marks, but in some languages, such as Arabic and Vietnamese, it’s almost impossible to detect corrupted letters if you don’t speak the language.

Functional Testing:

Links – Do the links within the localized content point to correct pages?

Behavior – Is the application behaving as it is supposed to?

Input/output validation – Do the forms allow target language characters to be input? Are the error messages localized properly? What about the postal code?

Usually, the LQA process consists of four parts.

LQA Process

But for localizing WordFast, based on my personal experience, you will be mostly looking at the following aspects.

  1. Linguistic testing:
  • Accuracy of translation within context
  • Consistency of terminology
  • Untranslated Strings

Untranslated Strings

  1. Format and Layout Testing:
  • Typos, punctuation, format, spaces, line breaks
  • Truncations, text expansion

Punctuation Should Also Be Localized (“:” to “:”; “.” to “。”)

  1. Functional Testing:
  • Link, button, menu functionality: make sure each functionality works and they will not direct you to a page in English.
  • Character display: No corrupted or shown as a missing blank tofu character.
  • Error messages: Error messages should all be localized. In this project, we failed to do this because we didn’t receive the file containing strings from error messages.

When doing LQA, we found out that by clicking TransCheck function, a report will automatically be generated but it’s all in English.

 

English String in Error Message

Localization Quality Assurance: Challenges

No Existing Test Script

This is the 1st and biggest difficulty: we are the first who did the localization of Wordfast Pro, so there was no existing test script that we could follow to conduct the LQA.

Solution: The user guide of Wordfast Pro 5 was very helpful because it outlines may necessary steps when using the software. We also simulated a translation project from the very beginning to the end and went over each function tab by tab.

Terminology  Consistency

Like the translation step, LQA also needs to deal with the inconsistency issue. Since we only have two people involved in this step, two of us did the QA together.

Locating Strings in Source Files

It’s not realistic to go back and forth with developers whenever you run into a term and wait for their response, especially when you have a short turnaround time.

Solution: Use code text editors like Brackets or Notepad ++ and find the term in the editor. Thanks to the developers, the code looks clean and easy to read. You will get a hint by looking at these codes.

Best Practices

Based on my own experience, I’d like to share the following best practices with those who also want to localize a software like Wordfast Pro.

  1. Create a glossary and add terms into it from the very beginning.
  2. Add notes while translating or doing QA.
  3. Use Wordfast as the CAT tool.
  4. Update the TM frequently while translating collaboratively.
  5. Document every bug you find with a screenshot.

Demo

All the localized products have been put onto our localized website, please click here to view or download the localized Wordfast Pro 5.

Last but Not Least

Visiting Europe never came to my mind until I received the invitation message from John in February. Traveling alone in a non-English speaking country and presenting in front of a group of international audience who are mostly very experienced translators sound challenging. But if you also get a chance like this, I would say, go for it, because what you can get would be more rewarding than you may expect.

Lisboa

Creating a Localized Poster for Fortnite Using PhotoShop

Fortnite is a game developed by Epic Games and was officially introduced to mainland China on April 23th, 2018 by Tencent. Thus, the game needs a lot of localization work to make sure it is well adapted to Chinese culture with well translated UI strings, understandable names of heroes and items, and locally relevant videos or graphics.

Interested in this game, I decided to create a localized poster for it using Photoshop. The original poster shown below is quite simple: there are several heroes in the poster, the only text needs to be translated is the name of the game, and it has a clean background. Most of the times, when we talk about localizing something by doing desktop publishing, we are aimed at translating all the text in it without losing its original style or format. However, in this case, simply translating the text is far from what can be called “a localized poster”. So, I decided to recreate one based on the existing poster and make it more locally relevant, friendly and attractive to Chinese users.

(Original Poster)

Before I started everything, I wanted to be clear of my goals, which include adding in Chinese style roles, background and other elements.

Workflow

Step 1: Resource material collection

  1. Separate all the heroes so that I can move them around.

(png Files for Each Hero)

2. Add in a hero with a Chinese style outfit (Wukong outfit). Everyone in China knows Wukong, the Monkey King in the story “Journey to the West”.

(Wukong Outfit)

3. Add in a Chinese dragon, which is actually a glider in the game used by players to land onto the battle field.

(Royale Dragon Glider)

4. Create a background with Chinese characters “你好”, which literally means “hello” in Chinese. These two characters are made up by the forts in the game.

(Background Picture)

Step 2: Process pictures in PhotoShop

  1. Resize each picture and group them together in a V line, with the Wukong figure in the center so that it can be emphasized.

(The New Squad)

  1. Remove the background color of the Chinese dragon glider using the Magic Eraser tool and flip the canvas horizontally.

(Dragon Glider with Transparent Background)

3.Capture a screenshot from an advertising video of Fortnite posted on its Weibo account, clean the screenshot and resize the picture

(Screenshot from the Video)

4. Translate the text “Fortnite”.

Although there was only one word that needed translation. It did took me a long time to figure out how I can properly output the Chinese text into the right font. The problem is, I couldn’t find the same font with the game in PhotoShop. Then I decided to get a picture with the official Chinese name of the game and use it to replace the original logo.

(Bilingual Logo)

5. Put every layer together onto one canvas and make adjustments.

(Final Product)

Challenges and Solutions

  1. Resource Material Collection

Resource material collection is the main challenge I’ve encountered in the whole process. I need to get the png file for each character in the poster so that I can reposition them. Although I can find these resources from Google Images by searching “Fortnite characters transparent”, the resolution and the size of these pictures are different. Once I gathered them onto one canvas, they didn’t appear like a whole due to resolution difference.

Solution: Resize each picture carefully so that they look the same big when being put together.  Use the sharpen tool to sharpen the blurry layers to make each hero in the squad stays in the same level of definition.

Another challenge was the lack of ideal resource materials. Most of the time, I need to recreate what I’ve got and then use them for my final product.

For example, it took me a long time to find a satisfactory background picture. As I was exploring every post on Fortnite’s official Weibo page, I was impressed by its advertising video for Chinese market and decided to capture a frame from it. It was not hard to do a screenshot, but some work needs to be done for cleaning up the screenshot.

To remove the game logo and irrelevant text, I used the Content-Aware Fill tool under the Edit tab of PhotoShop.

  1. Font, font, font ……

As I mentioned above, I had trouble finding the same font used by Tencent or Epic. The walkaround solution I took was using another picture with the official Chinese translation text and making it into a layer in my final product. But since it is not a real text layer, this would be problematic if there’s a huge amount of text or the file needs to be recreated in InDesign.

In real life, however, if you are a member of the localization team of Fortnite, you probably can access to their resource library and get the font.

Conclusion

The recreation of the poster is not a difficult task and doesn’t need a lot of high-level skills in PhotoShop. But compared to the original one, the final poster looks more relevant to the Chinese market. As a Chinese player, I will appreciate Fotnite’s devotion in adapting its products for a specific market. As a localizer, I want to prove, by doing this project, that localization is much more than translation, it needs creativity, familiarity with the product, and attention to details from the localizer.

Localizing for Chinese Market: Without Access to G Suite, What Can We Do?

Recently, I’ve been working with Jeannette and Brenda on building the volunteer framework for Translation Commons(TC). This is a digital platform for translators, where they can get free access to computer assisted translation (CAT) tools, MT engines, and localization tools. It also provides learning resources and has an online community. I was excited to see such a great hub for people in the translation industry and wanted to bring it to China. In China, students majored in translation/interpretation learn little about MT, translation management system (TMS), localization workflow or best practices. For them, learning translation or interpretation means you are good at another foreign language and can envision yourself as a translator or interpreter.  And even some top language institutes in China show little interest in teaching students CAT tools, arguing these tools are too expensive. But we will finally embrace the tech-shaped future. So, I went up to Jeannette on an IMUG event and said : “I’d like to bring TC to more users in China, is there anything I can do to help?”

Jeannette then became my mentor, and building a volunteer framework has become our first thing to do.  We realized a problem as we want to promote TC among Chinese top language schools: TC is integrated with Google Suite, but G suite could not be accessed in China. Imagine that a Chinese user does a simple click on his/her dashboard and get 404 shown in the browser, or even before he/she clicks on these little icons, he/she is wondering:”What (the heck) are these?”

(Dashboard UI)

Definitely, it will result in bad user experience. Users, thinking ” I don’t know what I can do”, will soon lose interest. But I also want to ask: “What can we do?”

I talked to my friend, a principal engineer at google, asking if it’s possible to access to google suite through a third party or without using VPN, he said:”it depends but usually not”, and commented : “why don’t you fully localize your product? If you want to enter Chinese market, you need to bring a whole package of accessible toolkit!”  So, here brings out our first possible solution.

  1. Integrate accessible worktools. While products like Microsoft Outlook, Calendar can act as the counterparts for some google products, please wait a second before you put them on board. Although Microsoft Outlook is not fully blocked in China, do Chinese people really (like to) use it?
  2. Cooperate with local companies. Some IT companies like Youdao, a subsidiary of NetEase, also enable users to work collaboratively and share data on the cloud, all using one email account from NetEase (in Youdao’s case).  The problem is, there is no company like Google that can provide such a whole set of free tools. Paying is painful, especially for NGOs.
  3. Create a new Chinese web page. Adding a Chinese web page to the website may be a considerable choice since we can direct specific users in a flexible way. On this page, we may not put in G suite, YouTube videos, but we can always put in other accessible resources.

(This blog post will be modified/updated several times as I continue working on this project. For now, I haven’t come up with any effective solution yet. I’m open to your suggestions!)

 

Doing l10n? Let’s talk about something non-technical

Lessons learned from Marriott’s PR crisis in mainland China

Since I started my translation and localization program at MIIS, I found that we put so much emphasis in technical side: we’ve learned how to do localization project management by using tools like XTRF, we’ve learned HTML, CSS, and JavaScript for localizing a website, we’ve also learned how to use various CAT tools. We pay attention to details like concatenation of strings, setting language pickers while abandoning using flags, distributing tasks through automation… All these techniques can help us deliver a localized product in a more efficient way. And we all know the importance of the quality of translation. But what else? Are the accurate translation, perfect product design, and bug-zero UI enough for a safe landing of a product in another culture? Probably not. Culture awareness or even political awareness could play a big role.

Recently, the Marriott International was reprimanded by China for calling its territories independent in a questionnaire for members of its rewards program on its Chinese website. (For details, click here)

Chinese government has requested the deletion of related contents, suspended Marriott International’s Chinese website for a week, and started reviewing all the contents released on Marriott’s APPs and webpages. According to the government, Marriott was involved in the violation against China’s Cyber Security Law and Advertising Law.

Marriott Rewards has published a statement confirming its stand of not supporting separatists, and made an apology on Weibo, one of the most popular SNS in China. However, at the same time, it liked a tweet published by a political group about thanking Marriott for listing Tibet as a country together with Hongkong and Taiwan. This has made its previous public apology a joke and further negatively impacted its corporation image in mainland China.

I don’t want to go further in explaining the Chinese territory or talk about the cross-trait relation between Beijing and Taipei, but I need to say that when it comes to localization, the ignorance of local culture, law, and history is a taboo for companies that are going global. Obviously, the localization of Marriott’s website and APPs in China is a failure. What leads to this?

Thinking from a localization related prospective, maybe the translators or LSPs hired by Marriott are not qualified enough, or maybe they used machine translation. Localization is not about translating a word into a word, it’s about adapting a word according to the local culture and market. At least, these people have paid little attention to local culture and have no idea of what it means to Chinese people when it comes to territorial integrity. But it is unfair just criticizing the localization team, since they are not responsible for liking a tweet. Probably the bad localization itself was just an extension of Marriott’s political ideas.

How to avoid similar incidents from happening again? I’d like to share some ideas from a localization practitioner’s view.

  1. When hiring translators for localizing  contents targeted at a specific market, remember:

Native speakers with living experience in that country > native speakers; non-native speakers with living experience in that country > non-native speakers without living experience in that country.

2. When applying machine translation, always involve a human translator who can do proofreading.

3. Some companies completely outsource their localization work, some companies have their own localization teams. For companies with localization teams, hiring project managers with multi-culture background and objective political views is essential. For LSPs, diversifying the knowledge background of your vendors can sometimes save your clients from getting involved in big trouble.

4. Experienced translators are usually very sensitive with cultural differences and they can handle them by using flexible translation tricks. For example, when translating the word “country” into Chinese, instead of using the word “国家”, we can use “国家或地区”, meaning a country or a region.

Every country has its own culture, law or regulation, it is always safe to double check if any of your contents have conflicts with them before final shipment.

 

 

 

Format Currency Using JavaScript

Imagine you are doing online shopping. You may not want to see the price of an item in a different currency, you may also want to know when you can receive your items. For any organization that wants to go global, being aware of the different formats of currency and time is crucial to building the localizability of its own product. In our final project for the website localization class, we chose to learn how to format currency and time by using JavaScript. In this team of two, I was responsible for formatting the currency through JavaScript. With this blog post, I’d like to share some easy methods to format the currency by using the built-in function of JavaScript.

What to Consider When Doing Currency Localization

Before we get our hands dirty, think for a while what should be considered when we are localizing a currency. Here, I’ll list three basic elements we need to consider.

Symbols

Symbols like $, ¥, £,  €, are the first things people look at when they are identifying a currency.  Although many countries share the same currency symbol, the position of the symbol may vary. For example, in France, Euro sign is placed at the end of the currency, but in the Unites States, dollar sign is usually placed on the left of a number.

  • $123
  • 123€

Use of decimal points and commas

The following two numbers actually have the same value, but the use of decimal points and commas are different.

  • 1,234.56 .123
  • 1,234,560,123

Currency conversion

Although the conversion issue is not covered by my final project, it is necessary to keep in mind that automatically converting one currency into another is dispensable when building a localized website. To  perform currency conversion in JavaScript, you’ll need a reliable source of real-time exchange rates.

Built-in Internationalization (i18n) Functions in JavaScript to do Currency Localization

There are many ways to localize a currency by using different coding methods. JavaScript has some basic functions to localize a certain number into desired format, which is also one of the easiest way to do the localization.

The Intl object is the namespace for the ECMAScript Internationalization API, which provides language sensitive string comparison, number formatting, and date and time formatting.[1] By applying the i18n function (Intl.NumberFormat), we can easily turn a number to the desired format. Here, I’ll describe the needed steps.

The syntax:

new Intl.NumberFormat([locales[, options]])

Intl.NumberFormat.call(this[, locales[, options]])

Three steps to turn a number into a desired currency format:

1.In basic use without specifying any locale, a formatted string in the default locale and with default options is returned.

var number = 1234;

new Intl.NumberFormat().format(number)

// → ‘1,234’ if in US English locale

2.Now, let’s add a locale, for example de-DE.

var number = 123456.789

new Intl.NumberFormat(‘de-DE’).format(number)

// → 123.456,789

3.Now, let’s tell JavaScript we want to format the number as a currency. We can do that by specifying the options.

var number = 123456.789

new Intl.NumberFormat(‘de-DE’, { style: ‘currency’, currency: ‘EUR’ }).format(number)

// → 123.456,79 €

The toLocaleString() Method in JavaScript

Similar with the i18n function in JavaScript, the toLocaleString() method can also give the same result. However, the toLocaleString is not really language or locale responsive, it is actually using the host environment’s current locale. If we want our website responsive to the language or locale we choose from a selector, we should abandon this method.

Creating a Demo

The biggest challenge I’ve encountered when doing this project was creating a demo from scratch. Without any computer science background, using limited knowledge about html, css and JavaScript to create a demo was never easy. To better visualize the i18n function in JavaScript, I decided to put the following elements in my demo.

  1. An input box for numbers.

  1. A dropdown selector of currency type.

  1. The formatted result according to selected currency.

 

What went wrong?

  1. The i18n built-in function in JavaScript is not accurate enough in reflecting the right format of the Chinese currency CNY.

Do Chinese people use comma to separate thousands? If the number is shorter than 4 digits, comma will not be used. However, if the number is longer than 4 digits, commas will be used. This differentiation could not be performed by JavaScript’s i18n function, as it’s using comma to separate thousands all the time.

  1. The format of Euro varies in different countries.

Although Euro is the unified currency for many countries in the EU, the way of writing down the currency varies across EU countries. For example, Germany puts the currency symbol at the end of each number, and uses comma as decimal separator and period for thousands. In France, however, people don’t use period for thousands.

Obviously, when we cannot decide the original country of a user, it is important to keep in mind that there might be different countries sharing the same currency. That’s why when we are setting locales, we use both language code and the country code.

  1. The conversion and calculation between different currencies were not included.

The i18n function in JavaScript cannot convert a currency to another. To show the exact amount of money in another currency. We need to add calculation formula to our JavaScript.

(You can access the code from my GitHub)

[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl

© 2026 Ziqi Zhou

Theme by Anders NorenUp ↑