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_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 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 of1
.
Here's an example demonstrating part 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 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:
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, thereforetotal_words_accounted
equals toaccounted_word_count
and thus it is also set to 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, thereforeaccounted_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 ofaccount_word_count
. In other words,total_words_accounted = total_words_accounted_previous + accounted_word_count
. This way, we get 6.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, thereforeaccounted_word_count
is set to 0.
We already know thattotal_words_accounted = total_words_accounted_previous + accounted_word_count
. As long asaccounted_word_count
is 0,total_words_accounted
does not change and is still equal to 6.action
:Translation (self correction)
,key_name
:welcome
John is making more changes to the same translation key, thereforeaccounted_word_count
is once again set to 0.
total_words_accounted
is still equal to 6.action
:Revision
,key_name
:sign_up
Before this action took place, someone (not John) had modified the source value for thesign_up
key: now it says "Sign in". John noticed this change and decided to update Russian translation accordingly. The source text has 2 words, thereforeaccounted_word_count
is set to 2.
total_words_accounted
is calculated as 6 + 2, so we get 8.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, theaccounted_word_count
is once again set to 0.
Consequentlytotal_words_accounted
remains unchanged and its value is 8.
This is the last translation-related action, the total accounted words is 8.action
:Review
,key_name
:sign_up
John has set Russian translation status to "reviewed". The base language value has 2 words, thereforeaccounted_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 nowtotal_words_accounted = accounted_word_count = 2
.action
:Review
,key_name
:welcome
John has set Russian translation status to "reviewed" for another key. The base language value has 4 words, thereforeaccounted_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 asRevision
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:
Link or merge key
Move or copy key
Performed by automations
Performed by a translator from Gengo
Performed by using a machine translation
Copy source to target
Migration
Apply translation memory
Split into segments
Merge segments.
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 aRevision
, 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)
.