The WebTranslateIt Blog

i18n news and Product Updates about WebTranslateIt

web_translate_it gem v1.8.1.0 released

By Edouard on June 8, 2011

I just released a new version of the web_translate_it gem. Get it while it’s hot!

Here’s the changelog:

  • Bug fix: translation.yml file wasn’t created on new projects.
  • New: Gracefully quit on interrupt.
  • New command: wti match. Displays files matching with the File Manager.
  • Improved help commands.
  • Upgrade multipart-post dependency.
  • Replace rainbow dependency by ansi, which can also format columns.

Display of commands such as wti pull or wti push are now organized better.

The new command wti match allows you to see how the files are matched between your local computer and the File Manager.

Install or Upgrade

To install web_translate_it, please refer to the gem documentation.

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

Improvements to the translation interface’s pagination

By Edouard on June 6, 2011

Pagination is essential for web applications to provide faster page load times when displaying large data sets. However, classic pagination (using “previous page” - “next page” links) is a poor solution to remediate this technical limitation: it requires the user to click a button to request the next page, and then wait until the page loads. It feels awkward, especially when it makes the user wait for the page to load to pursue her work.

To palliate this inconvenience, Web Translate It’s translation interface use “infinite scrolling”. It is a pagination technique to serve users the next pages without needing to click on a pagination link: the more you scroll down, the more content magically streams in at the bottom of the page.

This is the best kind of pagination: it allows translators to focus on translating instead of focusing on manipulating a translation tool.

Despite this obvious advantage, this technique also has one major inconvenience: it is impossible to restore a position in the list, since the user doesn’t know where she is in the list. This makes sharing a link in the translation interface with a collaborator pretty difficult.

Endless scroll with stateful position

Thankfully technology improve and modern web browser such as Google Chrome, Firefox 4 or Safari 5 have implemented the new HTML5 history API, which allows websites to update the current URL without reloading a page. The translation interface now use this technique on available browsers to dynamically update the URL when you select a string in the interface. This way, you can link and refer to a specific position in the list of strings.

Here’s a live example: https://webtranslateit.com/en/projects/406-Web-Translate-It/locales/en..fr/strings?current_id=140420

Scrolling upwards

Since we’re now able to recover any position in the translation interface, I also added the ability to scroll up to load strings positioned upwards.

So wherever you are in the list, you can scroll up and down, just like if the list of strings wasn’t paginated at all.

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

web_translate_it gem v1.8.0.1 released

By Edouard on June 1, 2011

I just released a new version of the web_translate_it gem, which fixes a SSL certificate verification bug happening on Ubuntu systems.

Install or Upgrade

To install web_translate_it, please refer to the gem documentation.

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

Web Translate It’s backup strategy

By Edouard on May 31, 2011

Web Translate It hosts your data both on database and file system. We’ve almost 2,000 users, and host over 3.8 million translations, a bit more than 50,000 files and over 350,000 labels. We’re a small website hosting a lot of data to say the least.

Data loss is the worst thing that could happen to our service. It should be hard to lose data and easy to recover it.

Here’s a quick overview of what we currently do to backup your data.

Live streaming replication

First of all, we have a live database replication set up between our production server and a back-end server. The second a string is saved on the main server, it is copied over on another server. The servers are hosted on different datacenters and use different networks: the former is based in the United States while the latter is hosted in the United Kingdom.

Should the main server fail or be unreachable, we can start over the service on a new server in a matter of minutes.

Database images

Secondly, we create images (or dumps) of the production database 4 times a day, and we store backups at multiple locations: on the production server, on the backup server and on Amazon S3. We keep 12 backups on our servers and 6 backups on Amazon S3.

Additionally, every working day I download the latest database image and test re-importing it on my computer to make sure these images are actually working.

Snapshots are great to recover from a disaster, but there’s a maximum potential data loss of 6 hours.

New: Language files backup and versioning

Finally, and this is new as of this week: we backup your language files to a git repository every 5 minutes. This repository is pulled every 5 minutes by 2 different servers.

These backups don’t include comments, labels, or string statuses, but allows to recover strings and translations of your file from 5 minutes ago, one week ago, one month ago… Should you need a backup of your file, it is possible to recover it, so don’t hesitate to open a ticket on our support website.

As the service grows, this is important to constantly refine our backup strategy. More and more users rely on Web Translate It, so it is important to be more and more reliable.

In the future I will work on saving the whole project under the XLIFF format. This should include string statuses, comments, tags as well as the translations.