The WebTranslateIt Blog · Page 12

i18n news and Product Updates about WebTranslateIt · Page 12

New in Web Translate It: Discussions

By Edouard on May 3, 2011

The new version of Web Translate It integrates discussions. Discussions is basically an integrated forum for your projects.

The discussions page lists all comments made on strings your project, and also allows you to start new discussion threads for discussing topics regarding the project’s localization.

To get started, click on “Start a discussion” on the Discussions page.

New in Web Translate It: Custom locales

By Edouard on May 2, 2011

The other reason of migrating Web Translate It to a new architecture wasn’t only improving page speed. It was also to be able to develop a new feature: custom locales.

What is a locale?

A locale is a set of parameters that defines the user’s language, country and any special variant preferences that the user wants to see in their user interface. Usually a locale identifier consists of a language identifier and a region identifier.

When you create a locale on Web Translate, a tool assists you to build your locale. It maps your locale to a locale known by Web Translate It.

It creates well formed locales. For instance en, en-GB, en-GB_Latn, ru_Cyrl, etc. This prevents users from creating locales that don’t make sense, for instance en_Arab (English with script Arabic) or fr_Cyrl (French with script Cyrillic).

This is useful, because Web Translate It has a lot of information about locales in database, for instance the locale directionality (Left to Right or Right to Left?) or the locale plural rules and helps the translator translate accordingly.

One drawback, though, is that it forces you to use already existing locales.

Why would you want to create custom locales?

Depending on your workflow, you sometimes need to create “fake” locales to hold a temporary copy.

For instance, if your development team write an English copy that needs to be proofread, you might want to create a fake locale “English by developers”. The copy in this locale will, in turn, be modified and proofread by a professional proofreader before being translated into other languages.

Another reason could be that your app needs a specific custom locale based on a very specific location. There can be many good reasons.

So, how to build a specific locale?

In the Locale manager, start by choosing a base locale. Then, click on “Create a specific locale” to toggle additional options.

These additional options will be postfixed to the base locale code and name.

  • Postfix code is a code that will be postfixed to the locale code. For instance dev.
  • Postfix description is the description of the postfix you add. For Instance “by developers”.

This will generate a new custom locale with the code en_dev and name “English by developers”.

New in Web Translate It: Keyboard Shortcuts

By Edouard on May 2, 2011

Web Translate It now allows you to navigate the translation interface and translate strings using keyboard shortcuts. This is a great new feature, I hope you will like it.

When you load the translation interface, you will notice the first string in the list is now highlighted with a yellow background.

It means the string is selected. You can interact with selected strings in many ways.

Navigation

Press the key to select the string underneath.

Press key to move one string up.

Finally, translate any selected string by pressing the enter key.

Using keyboard shortcuts in Web Translate It is very simple and similar in many ways to other spreadsheet applications: up and down to move, enter to edit.

Editing a string

Opened strings now automatically load the translation suggestions. You can apply a suggestion by using key combinations:

  • Ctrl 1 applies the first suggestion,
  • Ctrl 2 applies the second suggestion,
  • Ctrl 3 the third, etc.

You can also save a string using Ctrl s, or leave the string without saving using esc.

Advanced navigation

On highlighted strings, you can also use the following shortcuts:

  • p for proofreading or unproofreading a string,
  • c to comment on a string
  • v to paste the source text on a string,
  • displays the translation history for that string,
  • brings you back to the translation interface from that page.

You will find some great help about all these shortcuts by clicking on the “Keyboard shortcuts available” link on the translation interface, or by hitting the h key anytime on the translation interface.

I hope you will find this improvement useful. Thank you for using Web Translate It.

New version of Web Translate It released

By Edouard on May 2, 2011

I released a major upgrade to Web Translate It yesterday evening.

This is a great update, which took 3 months in the making. It focuses on improving the Web Translate It’s performance, uses a brand new architecture for assigning translations to a locale, and introduces more than 7 new features. Here’s a quick overview of what changed. Additional posts introducing features will be post throughout the week.

Simpler design

This is the first design update since Web Translate It’s launch back in October 2009. The redesign focus on:

  • Reducing the vertical overhead by getting rid of unused elements
  • Making it simpler for newcomers to use the site.

Faster translation interface

The translation interface should now load faster. I optimised the page, reduced the amount of queries made to the database and greatly simplified the architecture under the hood.

You are now able to create your own custom locales, and some operations, such as editing a locale now perform instantly (instead of having to wait and lock the translation interface). This is a huge step forward.

Faster importers

I reworked the code used by the file importer. The improvements made to the importers increase the importing speed three folds. Importers now report the percentage done and the time estimate should be more accurate.

Keyboard shortcuts

This is a great new feature: keyboard shortcuts have been added to the translation interface. In fact, you can now navigate and work using only your keyboard. On the translation interface, press the h key or click on “Keyboard shortcuts available” to learn more about this feature.

Blog Post »

Discussions

You will notice a new “discussions” tab. The discussions page lists all comments made on your project’s strings. On this page you can also now start new discussions threads. This is a great place to discuss your project’s translations.

Blog Post »

New Dashboard and Project overview pages

The new dashboard and project pages load faster and give you a better overview about your projects.

Custom Locales

You can now create custom locales for a specific territory or use-case (you will be able to create locales such as en_GB_Singapore_Event or en_Pirate or anything you like).

Blog Post »

Planned downtime on Sunday, May 1st, 19:00 UTC

By Edouard on April 29, 2011

Web Translate It will be unavailable for a about an hour on Sunday, May 1st, 19:00 UTC as I will release an important update to the service. The total downtime shouldn’t exceed 1 hour.

This downtime was originally planned on April the 16th but was cancelled due to a few bugs and bottlenecks that needed to be fixed.

The downtime is needed to improve Web Translate It’s architecture in order to deliver new features, as well as improving the performance of the service.

On Sunday, May 1st, 19:00 UTC the service will be put in maintenance mode. The website won’t be accessible at all while we proceed to migrating the data hosted on Web Translate It to a new architecture. I estimate migrating the 6.3 million strings to the new architecture to take approximately 50 minutes.

This upgrade will bring a lot of enhancements and new features, which will be unveiled later.

Thank you for your patience as we refine Web Translate It’s architecture.

As always, you should follow @webtranslateit on Twitter for live updates.

New: Support for `zero` pluralization option

By Edouard on April 27, 2011

The Ruby i18n plugin used by Ruby on Rails supports using a zero pluralization option for all locales.

The zero pluralization option is useful because it allows to write segments like this one in English:

en:
  friendship:
    zero: "Nobody is your friend"
    one: "One person is your friend"
    other: "%{count} people are your friends"

“Nobody is your friend” reads much better than “0 people are your friends”, doesn’t it?

Web Translate It now allows you to use the zero pluralization option directly from the web interface.

Click on “Add zero rule” to add a new textarea for zero option.

Type a translation for the zero rule and that’s it! Your language files will be generated with the zero option whenever you use it.

Are you translating country and language names?

By Edouard on April 26, 2011

One thing we often need when internationalizing software is translating country and language names. Translating this data manually is a pain, and a lot of work.

Many developers don’t know about CLDR, Unicode’s Common Locale Data Repository, which contains translation and information about pretty much everything a software could need. It contains translations for country names, language names, currencies, and many other things.

However, CLDR data is a bit difficult to consume in an app, because it is composed of large XML files containing a lot of different things.

Introducing locale_data

I just released locale_data, which was extracted out of Web Translate It.

locale_data is a collection of country and language names, translated into hundreds of languages, and stored into YAML files for easy consumption in apps. For instance, here’s the list of countries in German, or in Spanish.

The data itself comes from CLDR, and rake tasks are provided to update the translation files whenever a new version of CLDR comes out.

You can get locale_data for free on Github.

New server

By Edouard on April 21, 2011

Yesterday I commissioned and successfully moved Web Translate It to a bigger server. The move went smoothly and without any downtime.

Web Translate It was hosted on a server slice from Linode since December 2009. While I’ve always been happy with Linode’s service, one big bottleneck of server slices is disk I/O because the hard disk is shared with other customers. Web Translate It uses a lot of disk I/O for reading/writing language files or accessing the database, so it is really beneficial for us to move to a dedicated server.

Besides, we were using pretty much all the memory on the slice and it was soon time to switch to something bigger. I find slices with more than 4GB of RAM too pricey compared to what dedicated servers have to offer.

I ordered a new dedicated server from DigitalOne (this is also where the newly famous Pinboard.in is hosted). The new server has roughly the same specs than our old slice (1x quad core Xeon), but with a much faster and dedicated hard drive and 16GB of memory (instead of 2,5GB previously).

I started migrating the service to the new host early yesterday morning. Around 8AM GMT the master database server was moved to the new host, without any downtime. I spent a fair amount of time setting back up the server monitoring and the database replication server, which duplicates in real time the data streamed from the master database server. Later in the afternoon I switched the DNS to point webtranslateit.com to the new host so the new server could handle the web traffic.

I’m really happy with the new server’s performance so far. Intensive disk operations such as importing/exporting/updating language files are really much faster now.

I’m also currently working on other improvements to speed things up. I hope to be able to release these changes next week.

Thank you for using Web Translate It.

Link: mashpie/i18n-node on Github

By Edouard on April 19, 2011

Link: mashpie/i18n-node on Github
i18n-node is an i18n library for node.js apps. It generates .json language files that are compatible with Web Translate It’s JSON parser.

From the documentation:

i18n-node is a lightweight simple translation module with dynamic json storage. Uses common __('...') syntax in app and templates.

Stores language files in json files compatible to webtranslateit json format. Adds new strings on-the-fly when first used in your app. No extra parsing needed.

Link: A workflow for translations on Mynewsdesk Devcorner

By Edouard on April 15, 2011

Link: A workflow for translations on Mynewsdesk Devcorner
MyNewsDesk on using Web Translate It for their translations:

As Mynewsdesk is moving into new markets, our internationalization (i18n) efforts have been stepped up a notch. Rails has pretty good i18n support, but maintenance becomes painful when projects scale up [insert “rails can’t scale” joke]. A better translation process was a big itch to scratch for us.

After exploring a few online translation tools, we settled on WebTranslateIt.com. It has a nice GUI and user friendly documentation. Our translation files took a while to import, but the payoff was immediate: graphs and stats on how up to date our translations are.

Read more at MyNewsDesk dev corner.

API update and web_translate_it gem v1.7.3.0 released

By Edouard on April 12, 2011

Web Translate It’s Project API endpoint now serve a new attribute: the language file checksum, generated by SHA-1.

The new version of the web_translate_it gem use file checksums to check if the language files need to be pulled or not. It used to compare the timestamp of the local file’s last modification against the timestamp of last modification served by Web Translate It, but comparing file checksums is much more reliable and should fix a few issues a few customers were having.

Upgrade

To upgrade the web_translate_it gem to its latest version, type in a terminal: gem install web_translate_it.


We’re currently processing the checksum for each of the 58,000 language files hosted on Web Translate It and it is taking a while. The file checksum might not be available for the endpoint for your project yet, but it’s coming really soon.

Maintenance window on Saturday, April 16th, 7AM UTC

By Edouard on April 12, 2011

Web Translate It will be unavailable for a about an hour on Saturday, April 16th, 7:00 UTC as we will release an important update to the service. The downtime won’t exceed 1 hour.

This downtime is needed to improve Web Translate It’s architecture in order to deliver new features, as well as improving the service’s performance.

In order to do this, we need to migrate some of the data hosted on Web Translate It to a new architecture. We have a lot of data, and we estimate migrating the 6.1 million strings to the new architecture to take about 45 minutes.

This upgrade will bring interesting new features, such as locales subclassing (for instance en-US is a sub-locale of en), as well as allowing the creation of custom locales for a specific territory or use-case (you will be able to create locales such as en_GB_Singapore_Event or en_Pirate or anything you like). More information about these features will be announced later.

As always, you should follow @webtranslateit on Twitter for live updates.

EDIT 14th April: The maintenance window planned next saturday is cancelled.

New in Web Translate It: Download invoices as PDF files

By Edouard on March 31, 2011

Organization owners can now download their invoices as PDF files. Click on “Account”, then browser under the “Invoices” tab. You should see this screen.

Click on “Download” and you should download our brand new PDF invoices. This improvement should make your bookkeeping easier.

web_translate_it gem v 1.7.2.1 released

By Edouard on March 31, 2011

I just released a new version of the synchronisation client wti for Web Translate It. wti is a powerful command line tool to synchronise your local translation files with the Web Translate It service.

This is a minor release. It includes one bug fix. You can read more about it in the changelog.

To upgrade to the latest version, type in a terminal: gem install web_translate_it.

web_translate_it gem v 1.7.2.0 released

By Edouard on March 10, 2011

I just released a new version of the synchronisation client wti for Web Translate It. wti is a powerful command line tool to synchronise your local translation files with the Web Translate It service.

This is a somewhat important release . It includes several new features, and deprecates a few commands.

New features

Hooks

The before_pull and after_pull hooks now work within wti pull. Prior to this version they were only used by the synchronisation server.

There are also 2 new hooks: before_push and after_push, which are executed before and after pushing new translations.

These hooks can be defined in the configuration file.

Here’s an example:

api_key: sekret

# Optional: locales not to sync with Web Translate It.
# eg. [:en, :fr] or just 'en'
# ignore_locales: 'en'

# Optional hooks
before_pull: "say 'before pull'"
after_pull:  "say 'after pull'"
before_push: "say 'before push'"
after_push: "say 'after push'"

Multi-locales push and pull

wti pull -l and wti push -l now accept several locales passed as an argument. So you can do:

$ wti pull -l "fr en ja kr"

Which will pull your language files for French, English, Japanese and Korean.

Better help

Under the hood, we replaced the option parser. The new parser gives better control over the accepted options. Each command now has its own help topic, by appending --help. For instance you can type: wti pull --help which gives:

Usage: wti <command> [options]+

The most commonly used wti commands are:

  pull        Pull target language file(s)
  push        Push master language file(s)
  match       Display matching of local files with File Manager
  add         Create and push a new master language file
  addlocale   Add a new locale to the project
  server      Start a synchronisation server
  status      Fetch and display project statistics
  init        Configure your project to sync      

See `wti <command> --help` for more information on a specific command.

[options] are:
  --config, -c:   Path to a translation.yml file (default: .wti)
     --version, -v:   Print version and exit
        --help, -h:   Show this message

Colour!

wti now use some colour and display successes in green, and failures in red.

Deprecations

  • wti autoconf displays a deprecation warning. This command will be deprecated in a future version in favour of wti init.
  • wti stats displays a deprecation warning. This command will be deprecated in a future version in favour of wti status. A new alias wti st has also been created.
  • wti push --ignore_missing and wti push --low_priority were replaced by wti push --ignore-missing and wti push --low-priority.

Upgrade

To upgrade to the latest version, type in a terminal: gem install web_translate_it.

About yesterday’s file import hiccup

By Edouard on March 3, 2011

We had a technical issue yesterday afternoon. Some file imports created duplicated strings instead of aligning the translations.

This post is fairly technical. If you’re not technically versed, rest assured I fixed the problem yesterday and I am now making sure this doesn’t happen again. I’d like to sincerely apologise if you had any issue yesterday.

Please contact support@atelierconvivialite.com if we can make it up for you or if you spot any problem.

What happened

We have 3 distinct work environments:

  • development, on my computer,

  • staging, a separate environment on the production server, where I test things before going to production,

  • and production, the live Web Translate It.

I am currently working on improving the importer’s speed. After testing my changes on my development environment, I deployed them on the staging environment.

Web Translate It’s importers are long-running tasks (sometimes up to 10 minutes for large files), so they have to run in the background. We have a queue system (delayed_job) and currently 4 workers working off jobs from the queue. We use god to monitor our workers and restart them automatically when they crash or eat too much memory or CPU.

When we deploy new code, the deploy script restarts the workers so they use the newer code. However, I didn’t expect the deployment script for the staging website to actually restart the production workers and replace them by the staging workers. I didn’t noticed it immediately, so for a few hours, we had staging workers working off jobs from the production database.

These workers were buggy and in some cases, were duplicating strings instead of aligning the translations. I’m really sorry about that.

This shouldn’t happen again

Lesson learnt. I’m moving the staging environment off to a separate server. Such mistakes should be really hard to make in the future.

web_translate_it gem v 1.7.1.6 released

By Edouard on February 25, 2011

I just released a new version of the synchronisation client wti for Web Translate It. wti is a powerful command line tool to synchronise your local translation files with the Web Translate It service.

This is a minor release, including one bug fix regarding wti server, and upgrading our dependency to Sinatra.

For more information, have a look at the detailed changelog.

To upgrade to the latest version, simply type in a terminal:

gem install web_translate_it.

Are you a Microsoft Windows user? We also have some installation instructions for you.

Better file encoding support

By Edouard on February 24, 2011

We released another small update to Web Translate It yesterday evening. You shouldn’t see much difference. However if you have unusual file encoding requirements, this should interest you.

Files used to be exclusively generated in UTF-8, with the exception of Apple .strings files, which were encoded in UTF-16 Little Endian.

Web Translate It now detect and save the original encoding of your master file. When you download your language files, they will be encoded with the same encoding as the original.

Here’s an example: if you upload a master Apple .strings file encoded in UTF-16LE, you’ll download UTF-16LE encoded files. On the other hand, if you upload a master Apple .strings file encoded in UTF-8, you’ll get UTF-8 encoded files.

4 new features and a bunch of bug fixes

By Edouard on February 23, 2011

I just released a new version of Web Translate It that brings up a few new features and a lot of bug fixes.

Add strings manually

Until now, you could only add strings by uploading a language file. However, depending on your workflow, it could make sense to author these language files directly from Web Translate It’s interface.

You can now create new strings manually. On your project’s translation interface, click on the new “Add a new string” link.

A modal window will appear, letting you create your new string.

New strings are added to a file of your choice. This feature is only available to managers.

String sorting

We used to sort strings by alphabetical order in the language files generated by Web Translate It. We now conserve the original order of your strings in most language files (in fact in all of them, except in YAML files due to technical limitations).

Hidden and Obsolete

Hidden strings are now separated from Obsolete strings in the translation interface.

Batch Operations to timeline

Batch Operations are now logged to the timeline.

Batch operations are actions managers can apply on a large selection of strings. You can read the introduction blog post about it.

One less feature: Update file periodically

We now longer propose to update your remote language file periodically. This feature wasn’t used much and wasn’t working very well, as some language file hosts have moved the URLs of their files and following their redirects could be the root of security issues.

Bug fixes

  • Fix: Make it impossible to push target, hash-based language files (.txt, .textile, .html, .markdown) through the API.
  • YAML: language root code now respects underscore or dash setting in the project settings
  • YAML: digits are now exported as Integers. Everything used to be converted to String. This was causing troubles for Rails’s active support strings.
  • YAML: Fix parsing bug happening on language files having flat keys.
  • Labels are no longer displayed in the translation interface if no strings have been labelled.
  • Fix bug with EF BB BF BOMs not being stripped by the parsers, resulting in parsing failures.
  • Fix display bugs with Chrome
  • API: Faster project endpoints
  • Fix: don’t send comments to the same person more than once, also don’t send comment the person authoring the comment.
  • Fix: Handle more gracefully cancelled invitations.

Miscellaneous

  • We now have a brand new status website, courtesy of Pingdom: http://status.webtranslateit.com
  • We’ve been working a lot on bettering our average response time, which wasn’t so good. We’ve been averaging 1,200 ms in February, we’re now down to less than 500 ms today. We’ll post another post explaining in details the improvements we did.

web_translate_it gem v 1.7.1.4 released

By Edouard on February 10, 2011

I just released a new version of our synchronisation client for Web Translate It. The Web Translate It client (also known as wti) is a powerful command line tool to synchronise your local translation files with the Web Translate It service.

Many bug fixes and small improvements were made since the version 1.7.1.0. Here’s what new in a nut:

  • wti pull is much faster

  • New command: wti addlocale to add new locales to your project. You can also chain locales, for instance: wti addlocale fr en es

  • New: wti server is now logging to log/webtranslateit.log

  • New courtesy option: --low_priority. You can use it when you upload language files en masse. Your files will be processed when Web Translate It’s server are idle. Use it like so: wti push --all --low_priority.

For more information, I invite you to have a look at the detailed changelog.

To upgrade to the latest version, gem install web_translate_it.

Are you a Microsoft Windows user? We now have some installation instructions for you.

Edit: web_translate_it 1.7.1.4 contains a small bug, which has been fixed in 1.7.1.5.