POEditor design changes: what’s new

Every now and then, redesigns need to happen. It’s never an easy job, because you want to please everyone. However, with a clear head and a tight-knit team, you can put together the feedback you received from your users and the best UX practices and come up with a better product.

For those who already know the POEditor localization platform for a while, we’ve put together this blog post to present the main design changes. Rest assured that they’re not that big.

Options Menu moves to the top

For easier navigation, the Options Menu in the Project Page was moved to the top of the work space.

The same happened to the Options Menu in the Language Page.

View or Add Terms gets a makeover

The View or Add terms page finally got the attention it deserved. We renamed it Terms and had our designer give it a fresher look.

Navigating between various pages at project level as well as at language level should also be easier from now on. This is because the menu never disappears, regardless of the page you’re working on.

Translation Orders also moves

We also moved the Translation Orders feature on account level, to make it easier to find for old and new users alike.

On top of these three main (not exactly dramatic) design changes, we’ve also made some minor tinkerings here and there, where there was room for improvement.

And that is all. Nothing too major, because POEditor has already proved that it works. And we know very well that we have a duty to preserve the product our already existing pool of users and customers know and love.

Callbacks: a tool to get localization project alerts

At POEditor, we are comitted to find the best ways to achieve localization automation for our users.

To make devs’ lives easy, we thought it would be nice to offer a way to trigger an external link on particular events. As usual, our users’ feedback weighed heavily in deciding to add this new feature. So without further ado, we give you POEditor callbacks.

POEditor Integrations
POEditor integrations

What are callbacks and why use them

Callbacks are simple way to get notications about specific events in POEditor localization projects. They can be set up by the project owner and admins.

They are a good way to save resources, because you no longer need to poll the API at certain intervals. When the events are triggered, POEditor fires a request to a specific URL you set for that event.

How to set up and track callbacks

Setting up a callback is easy. You need to first access Account Settings > Integrations > Callbacks. Here, choose a localization project and the event that should trigger the callback, then add the web address you want fired when the event is triggered.

Currently there are three events you can choose:
• Language Completed
• Language Proofread (which requires Proofreading to be enabled in Project Settings )
• New Terms

POEditor callbacks form
POEditor callbacks form

To protect the endpoint, it is possible to also add a secret to the calls. The call will have a “X-Callback-Secret” header added with that value.

After you set your callback, you can send a test to your endpoint:

{
    "event": {
        "name": "test"
    }
}

The JSON payload examples we send for each event:

{
    "event": {
        "name": "language.completed"
    },
    "project": {
        "id": ******,
        "name": "Load data #2",
        "public": 0,
        "open": 0,
        "created": "2019-05-17T10:31:50+0000"
    },
    "language": {
        "name": "German",
        "code": "de"
    },
    "stats": {
        "strings": {
            "translated": 3,
            "fuzzy": 0,
            "proofread": 0
        }
    }
}
{
    "event": {
        "name": "language.proofread"
    },
    "project": {
        "id": ******,
        "name": "Android localization",
        "public": 1,
        "open": 0,
        "created": "2015-08-13T09:39:32+0000"
    },
    "language": {
        "name": "English",
        "code": "en"
    }
}
{
    "event": {
        "name": "new_terms.added"
    },
    "project": {
        "id": ******,
        "name": "Android localization",
        "public": 1,
        "open": 0,
        "created": "2015-08-13T09:39:32+0000"
    }
}

You can track your callbacks activity with your callbacks log. The log is available for the last the last 10 days.

Observations

The data is sent via POST and the JSON is put in a payload parameter.

Keep in mind that we listen for a response with HTTP status code 200 when we send the callback only for a short time (30 seconds at this point). If we don’t get a reply, a timeout error is generated after this,

Also, please make sure you don’t do all your processing on that endpoint and create a separate process for it. If we don’t get a 200 HTTP code when we fire the callback we try again 2 more times. After that we stop trying.

Localization project notifications on Microsoft Teams

Plenty of things happen when you localize software and keeping up to date with the events in your localization projects is key to maintaining a smooth workflow. Since nothing beats realtime notifications in terms of communicating events efficiently to the members of your localization team, we decided to make it possible to connect to another popular chat software – Microsoft Teams.

How to connect POEditor to Microsoft Teams

Connecting to Microsoft Teams is pretty easy and straightforward. If you need help with this, you can find the steps described in detail in our Knowledge Base.

Note that only the POEditor user hosting the localization projects needs to make the setup with Microsoft Teams. The other localization team members need just to join the Teams channel designated to receive notifications about the localization projects.

Microsoft Teams integration settings - POEditor translation and localization management system

Supported localization project events

You can choose what events in your localization projects to push notifications to your preferred Microsoft Teams channel.

The Teams integration sends an immediate notification when:

  • a project was created/deleted
  • a language was added/completed/deleted/proofread
  • strings were imported
  • a contributor was added/removed/joined the project
  • a comment was added
  • Automatic Translation characters were used
  • a translation order was completed
  • translations were flushed from a languages
  • all terms and translations were flushed from the project
  • translations were updated via API
  • a term was manually added in the user interface
  • terms were added via API
  • terms were synced via API
  • new terms were added (regardless of how)
  • the string limit was reached
  • the subscription renewal failed

If you and your colleagues are using Microsoft Teams, this new feature should make internal communication much more fluent. We are open to suggestions for other event notifications and to any kind of feedback, so don’t be shy to leave a comment if you have something on your mind.

Continuous localization with GitHub and POEditor

Why continuous localization

In today’s digital world, more and more software is becoming alive. This is due to a shift in the software industry from a linear approach to software development to an angile approach. Apps and websites are updated all the time, in small chunks, instead of being built in long development cycles, culminating with big releases. Thus, when the software product is launched, it is no longer the end of the development process for it, but the beginning. 

Naturally, if you are continuously developing your multilingual software product, you should also continuously localize it. You don’t want to leave behind any of your users when you roll out new features. Nor do you want to look unprofessional, by not localizing parts of your software in certain languages. So it’s a good idea to aim for a continuous approach on localization.

What is POEditor

POEditor is an online localization service and translation management system, designed to help all parties involved in the localization process on their quest to achieve a continuous workflow.

As a freemium SaaS, POEditor offers free and paid accounts and supports free of charge the localization of open source software with an OSI-approved licence.

If you use a translation and localization management service like POEditor, you’re likely to see better collaboration between team members, an increase in automation and productivity, and more streamlined workflows all around.

Using POEditor’s integration with GitHub for continuous localization

Connecting POEditor to GitHub, it becomes a lot easier for translation teams to receive string updates from dev teams. Also, dev teams find out in real time when new translations are ready and add them to the software.

Setting up a localization project at POEditor

To start integrating POEditor into your localization workflow, first register or log in to your POEditor account. Then add a project in your Dashboard and the languages your software currently supports (including the source language). Then add the languages you want to further localize into.

Setting up the GitHub integration

POEditor can connect with both GitHub and GitHub Enterprise. To connect, follow the instructions in the GitHub Integrations page, accessible in Account Settings.

GitHub Integration - POEditor localization platform

Once you set up the connection, you can start linking the languages in your POEditor project with the localization files in your repos.

Import the terms and the translations from the source file and from here on, you can start customizing things.

Each linked language has its own settings. In settings, you can tag particular groups of string on import (all, new, obsolete, with changed translations) or to set filters for exporting to GitHub.

POEditor GitHub Integration Page

For a plus of automation, you can use Webhooks. They help to keep the files in your repos in sync with your POEditor projects. With a webhook, you or anyone in your team can update from anywhere the strings in your source language in POEditor. You can also signal (with the fuzzy flag) if translations in the other languages need revision.

POEditor Webhooks page

Translation options

To translate the strings brought from your files on GitHub, POEditor offers multiple translation options:

  1. Assigning translators to specific languages (by adding them as contributors)
  2. Crowdsourcing translations from your community (using public projects)
  3. Ordering human translation services
  4. Machine translation

According to your resources and needs, you can combine the available translation options in whatever way suits you best.

Improved POEditor webhooks

We have recently changed the way webhoooks work with POEditor in order to improve security. On March the 1st, 2019, we will discontinue the former webhooks format. This is just a change in the format of the webhooks, the funtionality remains the same, as described below.

How webhooks work

Webhooks work in the same way for all the code hosting services supported by POEditor: GitHub, Bitbucket, GitLab or Visual Studio Teams Service – VSTS. They can be called from anywhere, and can be maintained, modified and managed by any third-party users. In your account, you can access the webhooks page via the Add/Manage webhooks link in the bottom right corner of the integration page.

POEditor GitHub Integration Page

Webhooks work on a project / language basis. So, if you have several files linked to a language, it’s enough to run one webhook with an operation and that operation will be executed for all the files linked to that language.

You can create webhooks for the following operations:

  • Import new terms: Brings the terms (without the translations) from GitHub to POEditor.
  • Import translations: Brings the translations from the GitHub file to POEditor for the matching terms.
  • Import terms and translations: Brings the terms and the translations from the GitHub file to the POEditor project.
  • Synce terms and translations: Brings the terms and translations from the GitHub file to POEditor, deleting the obsolete terms from the project.
  • Export terms and translations: Takes the terms and translations from POEditor to GitHub, overwriting the original file.

The Import translations, Import terms and translations and Synce terms and translations webhooks have two options you can also check:

  • Overwrite Translations: overwrites the translations in the project with those in the file for the matching terms.
  • Mark corresponding translations from the other languages as fuzzy for the updated values: puts a fuzzy flag on the translations in all the languages in the project, which correspod to the term with the updated value.

POEditor Webhooks page

We strongly recommend that you do not use the sync webhook if you have multiple files linked to the source language. The sync webhook deletes the terms which are in the project, but are not in the connected file. So you may end up losing terms you imported from other files. The terms from the file last synced is what remains in your POEditor project.

Webhooks – a tool for localization project admins to manage data

Webhooks are a simple solution to allow an admin or someone else to manage the data between POEditor projects the GitHub, Bitbucket, GitLab or VSTS account connected with the localization project owner’s POEditor account.

First, the project owner should set the links between the language file in your repo and the corresponding language in POEditor. After this, anyone can trigger the updates both ways: to get the terms (and translations) from the repos and to export the translations in POEditor to the linked file in your repos.

How to track webhooks

You can easily observe your webhooks activity with the help of the Webhooks log which stores for 30 days all the requests that can be identified as being yours (using a webhook generated from your account).

If you are not using webhooks but are looking for a solution to automate the synchronization between the POEditor localization platform and your repos, then we encourage you to give these “user-defined HTTP callbacks” a try. If you’re using them and have not already switched to the new format, we encourage you to do so, for better security and in order not to experience any interruptions in your workflow.

For any questions or feedback, feel free to drop us a comment or an email at info@poeditor.com.

App localization: reading language files from an API

App localization: reading language files from an API

From time to time, someone sets their (mobile) app to read language files directly from the POEditor API.

Subsequently, for every language update made in POEditor, even for the smallest typo or text change, an update is pushed to their app. At a first glance, it’s a great idea. Users will always have the latest language version. It becomes unnecessary to deploy new versions of the code/binary/app every time a new translation is added or changed. Also, errors are corrected quickly and spread instantly to the userbase.

As attractive as the benefits of reading language files from an API may appear, there are issues with this approach. Some of them might even kill your app or you users’ experience with it.

Some of the pitfalls of loading language files to your mobile app from an API are:

  • you rely on the client bandwidth (which might not be great);
  •  an API request takes longer than reading a cached file. In fact, to download a single language file, POEditor requires you to make 2 requests, first to generate a link and the second to actually download the file. Imagine doing that for 5, 10 or 20 languages;
  •  your own app’s success might be lethal. Reading language files from an API may work during tests and when you don’t have many users, but it doesn’t scale well. Imagine a sudden burst of thousands of users. All those users would have to download the language files roughly at the same time. That stress would have to be transferred to the source of the files, in this case the API.
  • APIs are usually throttled, queued, rate limited, have concurrency protections etc. This is to protect from abuse, faulty scripts or bad software design. It would be no surprise if some your users end up not receiving the content they ask for.

If you don’t want to risk running into such issues and want to keep your mobile app successful, we recommend taking the following measures:

  • keep a cached version of the language files in the app. Even if you update it later, your users will always have a running app;
  • read the updated language files from the API yourself. You can control better how often you do that, what to do when it’s not working and what your users get;
  • keep an updated version of the language files on your own server or some CDN that is able to handle spikes, bursts;
  • always have a fallback in case a language file doesn’t work, is corrupted or incomplete.

We hope these recommendations will help you on your quest to making your app multilingual. App localization is not a journey without challenges, but taking the right steps, it can be less of a pain.

If you wish to learn more about how to work with the POEditor API, have a look here.

VSTS and TFS, now integrated with POEditor

VSTS integration with POEditor

You’ve been asking for it and we’ve heard you, so here it is! The Visual Studio Team Services (VSTS) and Team Foundation Server (TFS) integration is the latest entry on our list of integrated code hosting platforms. Among integrations with other great players, such as GitHub, Bitbucket and GitLab, it is here to make your life easier.

How to set up the integration with VSTS/TFS

The setup takes just a few clicks. Since this is an account-level feature, the integration can only be made by the account (and, thus, project-) owner. We describe how to connect your POEditor account with both Microsoft services here.

How the ingrations works

The integration with VSTS and TFS functions similarly to the other integrations with code hosting platforms supported by POEditor. To get a quick idea of the functionality, check out this article.

Automation and webhooks

Just like with GitHub, GitLab and Bitbucket, you can automate your work with this integration using webhooks. You can trigger the webhooks from anywhere to send data from the localization files in your repos to the assigned languages/projects on POEditor.

Webhooks are also useful if a project owner wants to let an admin take over the file management, after they make the connection between the POEditor account and the VSTS account.

Where to send your impressions

If you have any questions or comments about the newest kid on our block of integrations, just drop a few lines in the comments below. Also, feel free to show us some love on our Visual Studio Marketplace page if your work with Visual Studio Team Services or Team Foundation Server and this feature is useful to you.

Auditing a POEditor account with Logs

To audit your POEditor account, you can access the Logs section in Account Settings. The Logs section is divided into three sub-sections: Activity Log, API Log and Webhooks Log.

POEditor Logs (Account Settings) - POEditor Translation Management System

The Activity Log

The Activity Log tracks events related to translation, project management, API activity, integrations with code hosting services, settings changes (both project and account settings) and other events relevant to the user.

To more easily find the events of interest, use the search bar at the top of the Activity Log page. You can also filter events by user, language and project.

We keep most tracked events for 15 days. The ones which have to do with data deletion are kept for 30 days.

Activity Log - POEditor Translation Management System

The API Log

To check your API activity, go to Account Settings > Logs > API Log.
The API Log stores for 15 days all the requests that POEditor can identify as yours (using an API token generated from your account).
You can filter the API logs by date, using the date range picker at the top right corner of the page.

API Log - POEditor Translation Management Platform

The Webhooks Log

As a POEditor user, you can see what actions have been triggered in your account using webhooks. For this, go to Account Settings > Logs > Webhooks Log.
The Webhooks Log stores for 30 days all the requests that POEditor can identify yours (using a webhook generated from your account).
To filter the webhook logs by date, use the date range picker at the top right corner of the page.

Webhooks Log - POEditor Translation Management Platform

Note: POEditor uses UTC to express the time when an event took place.

Bitbucket commit, now available with POEditor integration

A Bitbucket push method for our integration is something we’ve all been expecting for years.

Up until recently, the Bitbucket API did not support this method, unlike GitHub and GitLab. But, thanks to many Bitbucket users asking for it, your preferred code hosting platform has finally added this feature!

Upon hearing the news, we’ve immediately made it our main priority to update the Bitbucket integration. So, now, we’re happy to announce that you can export translations from your POEditor localization projects to your repos with just a few clicks.

We’ve also updated the Webhooks generator to reflect the implementation of the commit.

Bitbucket commit - POEditor localization platform

If you’re new to the Bitbucket integration, you can learn how to set it up here. More information about how to manage localization files between POEditor and Bitbucket is available here.

Cheers to all of you who took the time to push for this change! Don’t be shy to let us know if you have any feedback.

 

Translation options with the localization platform POEditor

According to the nature of your project and the localization resources you have available, you can choose to translate strings with POEditor using one or a combination of the translation options below.

Assigning contributors to specific languages

Whether your company has its own translation department, you collaborate with a translation agency or you have some friends willing to help with the translation, this option is for you. You know exactly who will be translating the project into what language.

Add contributor - POEditor localization management platform

Assigning a contributor to a language in a POEditor project is easy. There’s an ‘Add contributor’ button in the Project page for each project language, and one in each Language page. Click on one of these buttons and type in the name and email of the person you want to assign to the language. They will receive an invitation to join your localization project, which will allow them to start translating right away.

You can add contributors to a localization project via API also.

Human translation orders

If your project needs to be localized into a language quickly and professionally, and you don’t have a translator to assign to your project, the human translation order module is what you’re looking for.

Human translation module - POEditor localization management platform

 

At POEditor, we offer an integrated translation order system, which allows you to seamlessly send strings to professional human translators. Once the translations are completed, the localized strings are sent back to your POEditor account and you can import them to your project with a few clicks. No need to send localization files back and forth, or for any external accounts/keys/credits.

Sounds easy? It is.

Crowdsourced translation (community translation)

Have an active community, who you would trust with localizing your project? That’s where public projects come in.

After you make your localization project public in Project Settings, you can share a link to its public join page, where anyone can volunteer to translate into one or more languages.

A public join page for a crowsourced localization project

There are ways to control the access to your crowdsourced localization project. For new contributors, check the options available in Project Settings > Advanced Settings. For current contributors, see the Contributors page. More information about public projects is available here.

Machine Translation

For pseudolocalization purposes, or for the translation of short, simple strings, you can always opt to use machine translation engines. We offer two vendors for automatic translation, Google and Microsoft Translate.

To access the Automatic Translation feature, click the button with the same name in any Language page.

As handy as it can be in some cases, and as much as it may have advanced over the years, we would advise you to use human translation for production environments.

Have you decided upon the localization strategy you are going to use for your project? Feel free share your thoughts by leaving a comment below.