Skip to main content
Translation reports and word count

Learn how to view translation reports and understand word counting for translations.

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

Translation reports offer detailed insights on a per-user basis, showing what translations and reviews each user has completed, when they did it, in which project, and how many words are attributed to them.

Translation report contents

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

  • project_id — Lokalise 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_id — lokalise 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 of accounted words, or how many words will be credited to the user. See the section below for how Lokalise calculates this number.

  • total_words_accounted — total number of words credited to the user at the current timestamp.

  • action — action name. Possible values (with edge cases noted below):

    • translation — target translation was edited.

    • translation (self correction) — user edited a translation they had previously modified.

    • revision — typically logged when the source translation changes, and the user fixes the target language. However, there are other edge cases where this might occur.

    • revision (self correction) — user corrected their own translation after the source changed.

    • review — translation was marked as "reviewed."

Here’s an example of a personal report:


Viewing translation reports

Viewing personal reports

Every Lokalise user can view their own personal reports by clicking on the avatar in the bottom-left corner and selecting Profile settings.

Next, go to the Translation reports tab.

From there, choose a project from the Projects dropdown (or select "All projects") and adjust the Date range. Finally, click Download report to view your report.

Viewing team users reports

Team admins, billers, and owners can view reports for any team user. To do this, click on the avatar in the bottom-left corner and select Team settings.

Then go to the Team tab and scroll to the bottom of the page, where you'll find the Translation reports button.

Clicking this button will open a dialog where you can select a team user (or "All users") and set the Date range. Once ready, click Download report to generate the report.


How to read translation reports

For the most part, translation reports are straightforward. However, the accounted_word_count and total_words_accounted fields can be a bit tricky.

Example

To fully understand what these fields represent and how they differ, let’s walk through an example using a report for a user named John:

John performed eight actions in a single project. He translated two keys into Russian, then updated those translations, and finally marked them as "reviewed." But the real question is: What do these word counts mean?

We’ll explain it step by step, from top to bottom:

  1. action: Translation, key_name: sign_up
    John provided a Russian translation for the key "Sign up."

    • The source text has 2 words, and since John hasn’t edited this translation before, the accounted_word_count is set to 2.

    • This is John’s first action in the report, so total_words_accounted is the same as accounted_word_count, meaning it’s also 2.

  2. action: Translation, key_name: welcome
    John translated the key "Welcome to the app!" into Russian.

    • The source text has 4 words. Again, John hasn’t previously edited this translation, so accounted_word_count is 4.

    • To calculate total_words_accounted, we add the previous value (which was 2) to the current accounted_word_count (which is 4).

    • So, total_words_accounted = 2 + 4 = 6.

  3. action: Translation (self correction), key_name: welcome
    John updates the Russian translation for "Welcome."

    • Since John already translated this key and was credited with 4 words earlier, there’s no need to credit him again. Thus, accounted_word_count is 0.

    • As accounted_word_count is 0, total_words_accounted remains 6.

  4. action: Translation (self correction), key_name: welcome
    John makes another change to the same translation key.

    • Again, since this is a self-correction, accounted_word_count is 0.

    • total_words_accounted stays at 6.

  5. action: Revision, key_name: sign_up
    Someone else modified the source text for the "sign_up" key, changing it to "Sign in." John notices this and updates the Russian translation accordingly.

    • The source text still has 2 words, so accounted_word_count is 2.

    • Now, we add those 2 words to the previous total_words_accounted, which was 6.

    • So, total_words_accounted = 6 + 2 = 8.

  6. action: Revision (self correction), key_name: sign_up
    John updates the Russian translation for the "sign_in" key again.

    • Since John already made changes after the source was updated, and was credited earlier, accounted_word_count is set to 0.

    • This means total_words_accounted stays at 8.

  7. action: Review, key_name: sign_up
    John sets the translation status to "reviewed" for the "sign_in" key.

    • The source text has 2 words, so accounted_word_count is 2.

    • John hasn’t done any review actions before, so total_words_accounted for reviews starts at 0. Now, it equals the accounted_word_count for this action:

    • total_words_accounted = 2.

  8. action: Review, key_name: welcome
    John sets the translation status to "reviewed" for the "Welcome to the app!" key.

    • The source text has 4 words, so accounted_word_count is 4.

    • We add this to the previous total_words_accounted for reviews (which was 2).

    • So, total_words_accounted = 4 + 2 = 6.

Final word count

After all these actions, John has:

  • 8 accounted words for translations, and

  • 6 accounted words for reviews.

Summary

By breaking it down like this, the difference between accounted_word_count (words credited for each action) and total_words_accounted (the running total of credited words) becomes crystal clear. Every action is carefully logged and word counts are updated only when necessary, ensuring accuracy in the reports.

How many words have been edited?

If you want to find out how many words have been edited (not reviewed), focus on all Revision and Translation actions (including self-corrections). You can create a filter to display only these actions and then check the total_words_accounted column for the sum.

Let's break it down with an example:

In this report, the total words accounted for all translation and revision-related actions equals 8.

If you’re only interested in Translation and Translation (self correction) actions, filter out the other actions from the report. Then, use the SUM function on the accounted_word_count column. Do not rely on the total_words_accounted column in this case because it could include word counts from other actions like Revisions.

In the example, the accounted word count for all translation-related actions adds up to 6 (2 + 4).

Edge cases and specific scenarios

The internal algorithm goes through several steps to determine the correct action type and calculate the word count. Here are the main points to consider:

  • If the base language value is empty and you provide a target translation, the action will be marked as Review, and the accounted_word_count will be 0.

  • Special processing happens when a translation already has at least one entry in the translation history (i.e., it’s not a new translation). The system compares the current translation to the most recent history entry. Translation history is only available on the Essential plan and above.

    The action is marked as Revision if any of the following are true:

    • The previous history entry was made by a different user.

    • The current key belongs to a task, but the previous edit was made when the key belonged to a different task or didn’t belong to a task at all. If you're working within a task but the key wasn’t part of the task during the last edit, the action is marked as Revision.

    • The previous history entry type was any of the following:

      • Link or merge key

      • Move or copy key

      • Performed by automations

      • Performed by a translator from Gengo

      • Performed using machine translation

      • Automated using Lokalise AI

      • Copy source to target

      • Pseudolocalize

      • Migration

      • Apply translation memory

    • The target translation's last update occurred before the base language was updated (i.e., the history ID for the target is less than the base language).

    If none of the above conditions apply, the action is often marked as Translation (self correction).

    However, if it’s a new translation (i.e., no previous history entries), the action type is simply Translation, and the accounted_word_count is set to the reference word count.

  • The action is marked as Revision (self correction) if the previous action was a Revision and the accounted_word_count is greater than 0. If the accounted_word_count is 0, this check is skipped.

  • If the action is marked as Revision, the accounted_word_count will be equal to the reference word count.

Other specific cases

  • If the target translation is initially empty, and someone opens it in the editor, doesn’t enter anything, and clicks Save, this action won’t be recorded in the report.
    However, if they re-open the translation and add some text, the action will be marked as Translation (self correction).

  • When using the vendor rate profiles feature, there may be rare instances where the final task report differs slightly from the rate card report. For example:

    • Imagine you assign a translation task to a translator included in a rate card. The task requires translating a key with an initial word count of 7 in the base language.

    • The translator completes the translation, but the task remains open (assuming you’ve disabled the auto-close feature).

    • You later update the base text by adding 3 more words to the key, making it 10 words total.

    • The translator then revisits the task, updates the translation for the revised text, and marks the task as completed.

    • As a result, the final task report will display 10 base words. However, the rate card report will show 17 words because the translator initially worked on 7 words and then retranslated the updated base text containing 10 words.

Did this answer your question?