Translation reports and word count

Learn how to view translation reports and how we count words for the performed translations.

Ilya Krukowski avatar
Written by Ilya Krukowski
Updated over a week ago

Translation reports provide detailed information on a per-user basis showing what translations and reviews this user has performed, when, in which project, and how many words are credited to this user.

Translation report contents

Reports contain very detailed information on every translation-related action. You'll see the following columns:

  • project_idLokalise project unique identifier where the action took place.

  • project_name — name of the project.

  • project_branch — if the project has branching enabled, this column will contain the branch name where the action took place. Otherwise, it will be empty.

  • date_time — date and time when the action took place.

  • user — name of the user who performed the action.

  • key_idLokalise translation key ID that was modified by the action.

  • key_name — name of the translation key.

  • reference_text — base language value of the key.

  • target_text — modified text.

  • language — language of the modified translation.

  • accounted_word_count — number accounted words, or how many words will be credited to the user. Please check the section below to learn how exactly Lokalise counts this number.

  • total_words_accounted — the total number of words accounted for this user at the current timestamp.

  • action — action name. Possible values (please note that there are some edge cases listed below):

    • Translation — target translation was edited.

    • Translation (self correction) — user edited a translation value that has been already modified by them.

    • Revision — typically, this type is logged when the source translation has been changed, and the user has fixed the corresponding target language. However, there might be other scenarios so please check the edge cases to learn more on this.

    • Revision (self correction) — the user has fixed their own translation after the source translation was changed.

    • Review — translation was marked as "reviewed".

  • segment_number — if the project has segmentation enabled, this column contains the edited segment number for the given key ID. If the project does not have segmentation enabled, this column will always have a value of 1.

Here's an example demonstrating part of a personal report:

Viewing translation reports

Viewing personal reports

Every Lokalise user can view his/her own personal reports by clicking on the avatar in the bottom left corner and choosing Profile settings:

Then proceed to the Translation reports tab:

Choose a translation project from the Projects dropdown to view a report for (or choose "All projects"). Then adjust the Date range and press Download report.

Viewing team users reports

Team admins, billers, and owners can view reports for any team user. To achieve that, click on the avatar in the bottom left corner and choose Team settings:

Then proceed to the Team tab and scroll to the bottom of the page. You'll see a Translation reports button:

Clicking on this button will display a dialog box where you can choose a team user to generate a report for (you can also choose "All users") and the date range.

Once you are ready, click Download report.

How to read translation reports

For the most part, translation reports are quite self-explanatory but when things come to the accounted_word_count and total_words_accounted fields, it's not that simple. To understand what data these fields represent and how they differ from each other, let's take a look at the following report for a user named John:

John has performed eight actions in a single project: he provided Russian translations for two keys (the language column is hidden as it contains identical values), then he updated these translations, and finally set their statuses to "reviewed". But the question is, what do these word counts actually represent?

Let's move from top to bottom:

  1. action: Translation, key_name: sign_up
    John has provided a Russian translation for the text "Sign up".
    As long as the source text has 2 words and John hasn't previously edited this translation, accounted_word_count is set to 2.
    This is the first action performed by John in this report, therefore total_words_accounted equals to accounted_word_count and thus it is also set to 2.

  2. action: Translation, key_name: welcome
    John has provided a Russian translation for the text "Welcome to the app!".
    The source text has 4 words. John hasn't previously edited this translation, therefore accounted_word_count is set to 4.
    total_words_accounted had a value of 2, therefore to calculate a new value we have to take its previous value and add the current value of account_word_count. In other words, total_words_accounted = total_words_accounted_previous + accounted_word_count. This way, we get 6.

  3. action: Translation (self correction), key_name: welcome
    John is modifying Russian translation for the same key. He has already edited this translation and was credited with 4 words on the previous step. We don't need to credit him again, therefore accounted_word_count is set to 0.
    We already know that total_words_accounted = total_words_accounted_previous + accounted_word_count. As long as accounted_word_count is 0, total_words_accounted does not change and is still equal to 6.

  4. action: Translation (self correction), key_name: welcome
    John is making more changes to the same translation key, therefore accounted_word_count is once again set to 0.
    total_words_accounted is still equal to 6.

  5. action: Revision, key_name: sign_up
    Before this action took place, someone (not John) had modified the source value for the sign_up key: now it says "Sign in". John noticed this change and decided to update Russian translation accordingly. The source text has 2 words, therefore accounted_word_count is set to 2.
    total_words_accounted is calculated as 6 + 2, so we get 8.

  6. action: Revision (self correction), key_name: sign_up
    John is modifying Russian translation for the same key. John has already edited this translation since the base language value had been changed which means he was already credited with the corresponding word count. Therefore, the accounted_word_count is once again set to 0.
    Consequently total_words_accounted remains unchanged and its value is 8.
    This is the last translation-related action, the total accounted words is 8.

  7. action: Review, key_name: sign_up
    John has set Russian translation status to "reviewed". The base language value has 2 words, therefore accounted_word_count is 2.
    total_words_accounted initially equals to 0 because John has not performed any review-related actions previously (at least, none are recorded in the current report). It means that now total_words_accounted = accounted_word_count = 2.

  8. action: Review, key_name: welcome
    John has set Russian translation status to "reviewed" for another key. The base language value has 4 words, therefore accounted_word_count is 4.
    total_words_accounted = account_word_count + total_words_accounted_old = 6.
    This is the last review-related action, the total accounted words is 6.

So, after performing all the calculations we can see that John has 8 accounted words for translations and 6 accounted words for reviewing.

Special notes

If you would like to understand how many words in total have been edited (not reviewed), you should take into account all the Revision and Translation actions (including self corrections). Specifically, you can create a filter to display only the corresponding actions and then simply check the total_words_accounted column.

Let's take a look at the following example again:

Here we can see that the total words accounted for all translation and revision-related actions equals to 8.

If you are interested only in, say, Translation and Translation (self correction), you should filter out all other actions from the report and then use the SUM function for the account_word_count column. In this case you should not rely on the total_words_accounted column because it might be affected by other actions like Revision.

In the example above you can see that the accounted word count for all translation-related actions equals to 6 (2 + 4).

Edge cases and specific scenarios

Internal algorithm does multiple steps in order to carefully determine the correct action type and calculate the amount of words.

Here are some main points to consider:

  • If the base language value is empty, and you provide a target translation, the resulting action will be marked as Review, and the accounted word count will be set to 0.

  • Special processing applies if the translation that is currently being edited has at least one translation history entry (in other words, this is not a new translation). In this case we take the most recent history entry and use it for comparison. Please note that the translation history is visible only on the Essential plan and above.
    Specifically, the action will be marked as Revision if one of the following conditions are true:

    • The previous history entry was created on behalf of a different user

    • The current key belongs to a task but the previous edit to this translation has been made when the key belonged to a different task (or did not belong to a task at all). In other words, if you work within a task but the previous edits were done when the key has not yet been added to this task, we set action to Revision.

    • The previous history entry type is:

    • The previous history ID for the target translation is less than the history ID for the base language. In other words, the latest target translation update happened before the base translation was updated.

  • If none of the above conditions are true, then in many cases the action will be marked as Translation (self correction).

  • But if there are no previous translation entries (translation is new) the type will be set to just Translation. The accounted word count will be set to the reference word count.

  • The action type will be set to Revision (self correction) if the previous action was a Revision, and the accounted word count is greater than 0. This check is skipped if the accounted word count is 0.

  • If the action has been set to Revision the accounted word count will be set to the reference word count.

  • If the target translation is initially empty, someone opens it in the editor, does not enter anything, and clicks Save, this action will not be reflected in the report. However, if the same person re-opens the same translation again and provides some text, then the action will be set to Translation (self correction).

Did this answer your question?