Page MenuHomePhabricator

Implement the instrumentation to track usage of MinT in the Translate extension
Closed, ResolvedPublic8 Estimated Story Points

Description

As part of the work to track the usage of MinT in the Translate extension (T350483), this ticket focuses on implementing the schema defined (T362750).

Details

Other Assignee
KCVelaga_WMF
Related Changes in Gerrit:
SubjectRepoBranchLines +/-
mediawiki/extensions/Translatemaster+39 -16
mediawiki/extensions/Translatemaster+1 -1
mediawiki/extensions/Translatemaster+1 -1
mediawiki/extensions/Translatemaster+1 -1
mediawiki/extensions/Translatemaster+1 -1
mediawiki/extensions/Translatemaster+154 -1
mediawiki/extensions/Translatemaster+4 -1
mediawiki/extensions/Translatemaster+6 -4
mediawiki/extensions/Translatemaster+27 -0
mediawiki/extensions/Translatemaster+30 -2
mediawiki/extensions/Translatemaster+41 -1
mediawiki/extensions/Translatemaster+10 -30
mediawiki/extensions/Translatemaster+1 -1
mediawiki/extensions/Translatemaster+11 -0
mediawiki/extensions/Translatemaster+60 -1
mediawiki/extensions/Translatewmf/1.44.0-wmf.8+2 -2
mediawiki/extensions/Translatewmf/1.44.0-wmf.8+14 -2
mediawiki/extensions/Translatemaster+14 -2
mediawiki/extensions/Translatemaster+2 -2
mediawiki/extensions/Translatemaster+4 -0
mediawiki/extensions/Translatewmf/1.44.0-wmf.6+2 -2
mediawiki/extensions/Translatemaster+2 -2
operations/mediawiki-configmaster+34 -0
operations/mediawiki-configmaster+6 -0
mediawiki/extensions/Translatemaster+5 -0
mediawiki/extensions/Translatemaster+4 -0
mediawiki/extensions/Translatemaster+5 -1
mediawiki/extensions/Translatemaster+2 -0
mediawiki/extensions/Translatemaster+192 -8
mediawiki/extensions/TranslationNotificationsmaster+2 -1
Show related patches Customize query in gerrit

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Change #1092921 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: User accepts a translation suggestion[DNM]

https://gerrit.wikimedia.org/r/1092921

Change #1094375 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: User exits the translation dashboard

https://gerrit.wikimedia.org/r/1094375

Change #1097499 had a related patch set uploaded (by Wangombe; author: Wangombe):

[operations/mediawiki-config@master] Add Metrics Platform stream configuration for translate_extension

https://gerrit.wikimedia.org/r/1097499

As at the posting of this comment, several patches from this Gerrit topic have been merged. Some require a configuration patch to be scheduled for a backport on 9th Nov 2024 prior to further testing to confirm that they are in order, ready to post the metrics.

A note: This Google Sheet has helped in keeping track of the instrumentation items. The 'patch' column has an entry against each instrument with a link to the individual patches.

Change #1101503 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: Update streamName and schemaId

https://gerrit.wikimedia.org/r/1101503

Change #1097499 merged by jenkins-bot:

[operations/mediawiki-config@master] Add Metrics Platform stream configuration for translate_extension

https://gerrit.wikimedia.org/r/1097499

Mentioned in SAL (#wikimedia-operations) [2024-12-09T14:06:10Z] <lucaswerkmeister-wmde@deploy2002> Started scap sync-world: Backport for [[gerrit:1097499|Add Metrics Platform stream configuration for translate_extension (T364460)]]

Mentioned in SAL (#wikimedia-operations) [2024-12-09T14:11:45Z] <lucaswerkmeister-wmde@deploy2002> lucaswerkmeister-wmde, wangombe: Backport for [[gerrit:1097499|Add Metrics Platform stream configuration for translate_extension (T364460)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-12-09T14:23:23Z] <lucaswerkmeister-wmde@deploy2002> Finished scap sync-world: Backport for [[gerrit:1097499|Add Metrics Platform stream configuration for translate_extension (T364460)]] (duration: 17m 12s)

Change #1101503 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: Update streamName and schemaId

https://gerrit.wikimedia.org/r/1101503

Change #1101829 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: User edits a translation | User publishes a translation

https://gerrit.wikimedia.org/r/1101829

Change #1101830 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@wmf/1.44.0-wmf.6] Event Logging: Update streamName and schemaId

https://gerrit.wikimedia.org/r/1101830

Change #1101830 merged by jenkins-bot:

[mediawiki/extensions/Translate@wmf/1.44.0-wmf.6] Event Logging: Update streamName and schemaId

https://gerrit.wikimedia.org/r/1101830

Mentioned in SAL (#wikimedia-operations) [2024-12-10T14:40:00Z] <lucaswerkmeister-wmde@deploy2002> Started scap sync-world: Backport for [[gerrit:1101830|Event Logging: Update streamName and schemaId (T364460)]]

Mentioned in SAL (#wikimedia-operations) [2024-12-10T14:44:30Z] <lucaswerkmeister-wmde@deploy2002> lucaswerkmeister-wmde, wangombe: Backport for [[gerrit:1101830|Event Logging: Update streamName and schemaId (T364460)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-12-10T15:05:40Z] <lucaswerkmeister-wmde@deploy2002> Finished scap sync-world: Backport for [[gerrit:1101830|Event Logging: Update streamName and schemaId (T364460)]] (duration: 25m 40s)

Change #1104947 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: click event - User publishes a translation

https://gerrit.wikimedia.org/r/1104947

Change #1105268 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event logging: Add interactionData to submitIntraction

https://gerrit.wikimedia.org/r/1105268

Change #1078542 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: Add 'message_prompt' action

https://gerrit.wikimedia.org/r/1078542

Change #1105268 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event logging: update schemaId

https://gerrit.wikimedia.org/r/1105268

Change #1105283 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@wmf/1.44.0-wmf.8] Event logging: update schemaId

https://gerrit.wikimedia.org/r/1105283

Change #1105290 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event logging: pass empty object to translation property

https://gerrit.wikimedia.org/r/1105290

Change #1105290 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event logging: pass empty object to translation property

https://gerrit.wikimedia.org/r/1105290

Change #1105341 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@wmf/1.44.0-wmf.8] Event logging: pass empty object to translation property

https://gerrit.wikimedia.org/r/1105341

Change #1105341 merged by jenkins-bot:

[mediawiki/extensions/Translate@wmf/1.44.0-wmf.8] Event logging: pass empty object to translation property

https://gerrit.wikimedia.org/r/1105341

Mentioned in SAL (#wikimedia-operations) [2024-12-19T08:15:22Z] <kartik@deploy2002> Started scap sync-world: Backport for [[gerrit:1105341|Event logging: pass empty object to translation property (T364460)]]

Mentioned in SAL (#wikimedia-operations) [2024-12-19T08:28:01Z] <kartik@deploy2002> wangombe, kartik: Backport for [[gerrit:1105341|Event logging: pass empty object to translation property (T364460)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-12-19T08:37:14Z] <kartik@deploy2002> Finished scap sync-world: Backport for [[gerrit:1105341|Event logging: pass empty object to translation property (T364460)]] (duration: 21m 52s)

Change #1105283 merged by jenkins-bot:

[mediawiki/extensions/Translate@wmf/1.44.0-wmf.8] Event logging: update schemaId

https://gerrit.wikimedia.org/r/1105283

Mentioned in SAL (#wikimedia-operations) [2024-12-19T08:51:57Z] <kartik@deploy2002> Started scap sync-world: Backport for [[gerrit:1105283|Event logging: update schemaId (T364460)]]

Mentioned in SAL (#wikimedia-operations) [2024-12-19T08:57:50Z] <kartik@deploy2002> kartik, wangombe: Backport for [[gerrit:1105283|Event logging: update schemaId (T364460)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-12-19T09:17:17Z] <kartik@deploy2002> Finished scap sync-world: Backport for [[gerrit:1105283|Event logging: update schemaId (T364460)]] (duration: 25m 20s)

Change #1094375 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: User exits the translation dashboard

https://gerrit.wikimedia.org/r/1094375

Change #1104947 abandoned by Wangombe:

[mediawiki/extensions/Translate@master] Event Logging: User clicks publish translation

Reason:

Changes integrated into: 1104947

https://gerrit.wikimedia.org/r/1104947

Change #1109662 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: Use translation object for interactionData

https://gerrit.wikimedia.org/r/1109662

Change #1111886 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: replace `target_lang` with `target_language` in translate.js

https://gerrit.wikimedia.org/r/1111886

Change #1111886 abandoned by Wangombe:

[mediawiki/extensions/Translate@master] Event Logging: replace `target_lang` with `target_language` in translate.js

Reason:

Can be resolved in 1109662

https://gerrit.wikimedia.org/r/1111886

Change #1109662 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: Use translation object for interactionData

https://gerrit.wikimedia.org/r/1109662

Change #1084043 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: Translation editor of a message is opened

https://gerrit.wikimedia.org/r/1084043

Change #1092915 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: When translation suggestions are shown to the user

https://gerrit.wikimedia.org/r/1092915

Change #1078615 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: Add 'switch_translate_content' action

https://gerrit.wikimedia.org/r/1078615

Change #1092921 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: User accepts a translation suggestion

https://gerrit.wikimedia.org/r/1092921

Change #1120656 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event logging: User makes an edit in the translation editor

https://gerrit.wikimedia.org/r/1120656

Change #1101829 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: User publishes a translation

https://gerrit.wikimedia.org/r/1101829

Change #1120656 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event logging: User makes an edit in the translation editor

https://gerrit.wikimedia.org/r/1120656

Change #1122722 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event Logging: fix `translation.source_id' should be integer`

https://gerrit.wikimedia.org/r/1122722

Change #1122722 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event Logging: fix `translation.source_id' should be integer`

https://gerrit.wikimedia.org/r/1122722

@Wangombe confirmed that all the instrumentation has been deployed to testwiki. I will start the QA work next week.

User opens the translation interface ✅

{
    "action": "interface_open",
    "translation": {
        "source_language": "en",
        "target_language": "te",
        "source_title": "!additions",
        "source_type": "page",
        "translatable_count": 0,
        "translated_count": 0
    },
    "action_source": "direct_open",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "0 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "3725f3573ab2a152a563"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:11:17.470Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User is shown, "Please select another language to translate into." ✅

{
    "action": "message_prompt",
    "translation": {},
    "action_subtype": "change_lang",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "0 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "3725f3573ab2a152a563"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:19:27.867Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

Users changes the target language ✅

{
    "action": "click",
    "translation": {
        "target_language": "te",
        "translatable_count": 0,
        "translated_count": 0
    },
    "action_subtype": "change_target_lang",
    "action_source": "language_selector",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "0 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "3725f3573ab2a152a563"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:20:48.476Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

Users switches the content to translate ✅

{
    "action": "click",
    "translation": {
        "source_title": "page-Gothic Sports",
        "source_type": "translatable-page",
        "translatable_count": 2,
        "translated_count": 0
    },
    "action_subtype": "switch_translate_content",
    "action_source": "message_group_menu",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "0 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "14093d2f3d10c307ca6b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:24:10.806Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

Translation editor of a message is opened ✅

{
    "action": "click",
    "translation": {
        "source_title": "Translations:Gothic Sports/Page display title/te",
        "source_type": "message"
    },
    "action_subtype": "open",
    "action_source": "edit_translation_button",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "0 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "14093d2f3d10c307ca6b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:24:10.865Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

A translation suggestion is shown to the user

The events are not being logged as expected.

  • In the example below, the first message is "page-Advanced question settings|Translations:Advanced question settings/Page display title/te" - this is fine.
  • The second event is of the next message, which I haven't opened. There is no suggestion shown when I actually opened the message. A suggest event is being logged without action_source -- this event shouldn't be logged as there is no suggestion.
  • It seems to be happen only the first time a new group of messages is selected.
{
    "action": "suggestion",
    "translation": {
        "source_title": "page-Advanced question settings|Translations:Advanced question settings/Page display title/te",
        "target_title": "Translations:Advanced question settings/Page display title/te",
        "source_language": "en",
        "target_language": "te"
    },
    "action_source": "MinT",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:44:43.111Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}
{
    "action": "suggestion",
    "translation": {
        "source_title": "page-Advanced question settings|Translations:Advanced question settings/1/te",
        "target_title": "Translations:Advanced question settings/1/te",
        "source_language": "en",
        "target_language": "te"
    },
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:44:43.199Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

{F59041188}

And here is a mismatch between the actual message ID/title on the interface vs. what's being logged. The selected message is Translations:Advanced question settings/3/te, whereas in the event it is Translations:Advanced question settings/4/te, which is the next message.

{F59041190}

User accepts a translation suggestion ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "accept_suggestion",
    "action_source": "MinT",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:57:38.451Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User publishes a translation, and is successful (and the translation was edited when publishing) ✅

{
    "action": "click",
    "translation": {
        "target_type": "message",
        "source_title": "Translations:Advanced question settings/3/te"
    },
    "action_subtype": "edit",
    "action_source": "publish_translation_button",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:58:22.815Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}
{
    "action": "edit",
    "translation": {
        "modification_rate": 0.09090909090909094,
        "source_title": "Translations:Advanced question settings/3/te"
    },
    "action_subtype": "publish_success",
    "action_source": "translation_text",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:58:24.362Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User closes the message editor ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "close",
    "action_source": "close_button",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T12:01:13.560Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User copies source text ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "copy",
    "action_source": "copy_text_button",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "a4ad46e0d70581ffa66b",
        "active_browsing_session_token": "781ebc7e2b652dda66f5",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "70637a99c2ae417edd2b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-18T16:04:46.136Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User pastes the text ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "paste",
    "action_source": "paste_source_button",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "a4ad46e0d70581ffa66b",
        "active_browsing_session_token": "781ebc7e2b652dda66f5",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "70637a99c2ae417edd2b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-18T16:04:56.788Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User changes the translation view/mode

list view ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "change_mode",
    "action_source": "list",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "a4ad46e0d70581ffa66b",
        "active_browsing_session_token": "781ebc7e2b652dda66f5",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "70637a99c2ae417edd2b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-18T16:05:41.531Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

page view ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "change_mode",
    "action_source": "page",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "a4ad46e0d70581ffa66b",
        "active_browsing_session_token": "781ebc7e2b652dda66f5",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "70637a99c2ae417edd2b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-18T16:06:00.156Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

review mode ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "change_mode",
    "action_source": "review",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "a4ad46e0d70581ffa66b",
        "active_browsing_session_token": "781ebc7e2b652dda66f5",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "70637a99c2ae417edd2b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-18T16:07:11.090Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User reviews a translation ✅

{
    "action": "click",
    "translation": {},
    "action_subtype": "review",
    "action_source": "review_button",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "a4ad46e0d70581ffa66b",
        "active_browsing_session_token": "781ebc7e2b652dda66f5",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "70637a99c2ae417edd2b"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-18T16:10:00.719Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

User exits the translation dashboard; end of session ✅

I couldn't verify the exit event from the browser, but I can confirm that it is being logged. I checked out the destination table, event.mediawiki_product_metrics_translate_extension

The exit event was logged 81 times so far, with subtypes as

browser_tab_close - 74 events
inactivity - 7 events

QA summary

All the events are being logged fine, expect for the events related to translation suggestion being shown, which I have noted in: T364460#10733074

Logstash errors

Logstash is showing a few errors, which majority of the errors being: '.translation.source_id' should be integer

For example in one of the events: source_id was logged as page-Template:AWC Header; and all the error-ed events are for action: interface_open

The source_title field should be used instead.

Summary from the data logged so far

Destination table: event.mediawiki_product_metrics_translate_extension

We have 5201 events logged so far (testwiki only); breakdown by action, subtype and source:

actioncount
click3862
suggestion1151
edit87
exit81
interface_open12
message_prompt8
action_subtypecount
open2766
accept_suggestion501
paste463
edit98
browser_tab_close74
publish_error61
publish_success26
change_target_lang14
close10
change_lang8
copy7
inactivity7
switch_translate_content3
action_sourcecount
publish_translation1849
edit_translation_button884
MinT721
paste_source_button391
translation memory237
translation_memory215
MinT; translation_memory112
publish_translation_button98
direct_paste72
translation_text62
skip_to_next33
translation_modified25
language_selector14
direct_open12
close_button10
copy_text_button7
message_group_menu3
assistant language1

An minor issue I identified here is, there are two variations for translation memory source being logged: translation memory and translation_memory -- this should be fixed to only use the latter (with underscore). This for events with:

action: click
action_subtype

Similarly, for consistency we can use assistant_language instead of assistant language.


Other notes

I can think of some improvements to events where capturing additional data would be helpful. For example, capturing target_title for review events. However, that hasn't been included before, so it is out of scope for this task. After I do an initial analysis to answer some of the questions mentioned in T350483, we can think of any further improvements if gap has been identified.

100% of the data is currently being sanitized. So all the data older than 90 days will be dropped. I will create a task to add the stream to event sanitization allowlist, which can be done once the above issues are fixed and the instrumentation is about go live on all other wikis.

A translation suggestion is shown to the user

The events are not being logged as expected.

  • In the example below, the first message is "page-Advanced question settings|Translations:Advanced question settings/Page display title/te" - this is fine.
  • The second event is of the next message, which I haven't opened. There is no suggestion shown when I actually opened the message. A suggest event is being logged without action_source -- this event shouldn't be logged as there is no suggestion.
  • It seems to be happen only the first time a new group of messages is selected.
{
    "action": "suggestion",
    "translation": {
        "source_title": "page-Advanced question settings|Translations:Advanced question settings/Page display title/te",
        "target_title": "Translations:Advanced question settings/Page display title/te",
        "source_language": "en",
        "target_language": "te"
    },
    "action_source": "MinT",
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:44:43.111Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}
{
    "action": "suggestion",
    "translation": {
        "source_title": "page-Advanced question settings|Translations:Advanced question settings/1/te",
        "target_title": "Translations:Advanced question settings/1/te",
        "source_language": "en",
        "target_language": "te"
    },
    "$schema": "/analytics/product_metrics/web/translation/1.0.0",
    "mediawiki": {
        "database": "testwiki",
        "site_content_language": "en"
    },
    "page": {
        "content_language": "en"
    },
    "agent": {
        "client_platform": "mediawiki_js",
        "client_platform_family": "desktop_browser"
    },
    "performer": {
        "session_id": "87bd5190ba12deca61c3",
        "active_browsing_session_token": "b2aee02366be1ab6b4fd",
        "name": "KCVelaga (WMF)",
        "is_bot": false,
        "is_logged_in": true,
        "edit_count_bucket": "1-4 edits",
        "groups": [
            "*",
            "user",
            "autoconfirmed"
        ],
        "registration_dt": "2024-12-02T10:20:31.000Z",
        "is_temp": false,
        "language": "en",
        "pageview_id": "fbc4847d07f44256d5bf"
    },
    "sample": {
        "unit": "pageview",
        "rate": 1
    },
    "dt": "2025-04-11T11:44:43.199Z",
    "meta": {
        "stream": "mediawiki.product_metrics.translate_extension",
        "domain": "test.wikipedia.org"
    }
}

{F59041188}

And here is a mismatch between the actual message ID/title on the interface vs. what's being logged. The selected message is Translations:Advanced question settings/3/te, whereas in the event it is Translations:Advanced question settings/4/te, which is the next message.

{F59041190}

The images attached by KC are restricted. Cannot view.

To ensure a smooth user experience, the behavior noted is actually a feature. Upon landing on Special:Translate, the editor opens. This event is followed by two requests to cxserver. The first gets the translation of the current message. The subsequent request gets the translation for next message (even though the message was not opened). I'll post a patch with a different approach to resolve this issue.

Change #1140137 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event logging: Translation suggestion shown to the user

https://gerrit.wikimedia.org/r/1140137

Change #1140473 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event logging: correct translation memory action subtype

https://gerrit.wikimedia.org/r/1140473

Change #1142408 had a related patch set uploaded (by Wangombe; author: Wangombe):

[mediawiki/extensions/Translate@master] Event logging: correct assistant language action subtype

https://gerrit.wikimedia.org/r/1142408

Change #1142408 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event logging: correct assistant language action subtype

https://gerrit.wikimedia.org/r/1142408

Change #1140473 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event logging: correct translation memory action subtype

https://gerrit.wikimedia.org/r/1140473

Change #1140137 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Event logging: Translation suggestion shown to the user

https://gerrit.wikimedia.org/r/1140137

@KCVelaga_WMF Please verify if the issues you mentioned have been fixed.

In the video below, only one translation suggestion event is logged. This functionality was added in https://gerrit.wikimedia.org/r/114013. Notice as well that the translation_memory action subtype now reads as expected with the underscore _.

Wangombe closed this task as Resolved.EditedMay 27 2025, 1:55 PM

In relation to https://gerrit.wikimedia.org/r/1142408, the result of accepting the suggestion displays the correct action source as assistant_language

Sorry, I couldn't get to this earlier. Thanks for the QA @Wangombe! I checked as well, everything looks good to me.