Modern mobile operating systems increasingly rely on on-device machine learning to translate text across languages without transmitting sensitive user content to remote cloud servers. Introduced in Android 12 (API level 31), the platform Translation Manager system service provides a unified API that allows applications, system components (such as Live Caption, Chrome, and System UI), and accessibility tools to translate text seamlessly. When debugging why an app fails to offer offline translations, inspecting downloaded machine learning language models, or diagnosing rate-limiting bottlenecks, developers can query the underlying framework using Android Debug Bridge (ADB). This article explains how to inspect translation service providers, language capabilities, active sessions, and request limits using adb shell dumpsys translation.
Understanding Android Translation Architecture and Private Compute
Before Android 12, every application that needed multi-language translation had to bundle separate SDKs or make external network calls to cloud translation endpoints. The Android Translation framework centralizes translation processing within an isolated system framework governed by the com.android.server.translation system service:
- System Translation Service: Android delegates the actual machine learning translation processing to an authorized system-level provider, typically implemented within Google Play Services or an OEM’s Private Compute Core.
- On-Device Machine Learning Models: Translations are processed using quantized neural network models stored on the device filesystem, ensuring that user conversations and clipboard text never leave the device.
- Session-Based Processing: Client applications request translation through a
TranslationContext, defining source and target language pairs (such as English to Spanish or German to French). Android handles session lifecycle management, memory allocation, and batch queuing. - Security and Rate Throttling: To prevent rogue third-party applications from exhausting battery resources or monopolizing CPU/NPU hardware, the service enforces strict rate limits on per-package translation requests.
Connecting to ADB and Querying dumpsys translation
To inspect the translation subsystem, enable USB debugging on your Android device, connect it to your workstation, and verify connectivity with adb devices. Then execute the service dump:
adb shell dumpsys translation
To capture the telemetry for analysis or script processing, save the output to a text file:
adb shell dumpsys translation > translation_diagnostics.txt
If executed on older Android versions or minimal custom ROMs lacking the translation subsystem, ADB reports Service translation does not exist.
Inspecting the Active Translation Provider and Service Binding
At the top of the dumpsys translation output, inspect the active translation service implementation:
adb shell dumpsys translation | grep -A 10 "TranslationManagerService:"
Key provider indicators include:
mTranslationServiceComponent: Identifies the package name and service class handling translation inference (typicallycom.google.android.as/com.google.android.apps.miphone.aiai.translation.TranslationServiceon Google Pixel devices or equivalent OEM Private Compute components).mBoundService: Confirms whether the system service has successfully established an active IPC binding with the translation provider process.mServiceEnabled: Indicates whether the on-device translation capability is globally enabled or administratively disabled by enterprise policy.
Auditing Supported Language Capabilities and Model Dictionaries
To perform translation, the underlying service must support specific language pair configurations. Examine the capability matrix:
adb shell dumpsys translation | grep -A 15 "TranslationCapabilities:"
The output lists supported translation pairs structured as follows:
Source: en, Target: es, State: SUPPORTED
Source: en, Target: fr, State: SUPPORTED
Source: de, Target: en, State: DOWNLOADED
Source: ja, Target: en, State: NOT_SUPPORTED
Review the reported operational states:
SUPPORTED: The language pair is supported by the platform, but the necessary machine learning translation model has not yet been downloaded to local storage.DOWNLOADED: The neural translation dictionary is resident in on-device storage, enabling instantaneous offline translation without internet access.NOT_SUPPORTED: The language combination is not currently recognized or supported by the installed translation engine.
Inspecting Active Translation Sessions and Request Queues
When an application uses the Translation API, the service creates a dedicated session. To view currently open and recently closed translation sessions, run:
adb shell dumpsys translation | grep -A 20 "TranslationSession:"
A representative session entry details:
SessionId&Uid: The unique integer identifying the translation session and the Linux UID of the calling application.CallingPackage: The application initiating the translation (e.g.com.google.android.apps.messagingorcom.android.chrome).Context: The requested source and target BCP-47 language tags (e.g.en-US -> de-DE).LastActivityTime: Timestamp of the most recent translation request dispatched through this session.
Monitoring Request Throttling and Service Limits
The Translation Manager enforces limits to prevent application abuse. To check whether an app has triggered rate limiting, review the request statistics:
adb shell dumpsys translation | grep -A 10 "RequestStats:"
Examine metrics including total translation requests handled, successful completions, timeouts, and rejected requests caused by rate limiting or uninitialised model dictionaries.
By using adb shell dumpsys translation, Android developers and system testers can quickly verify that on-device machine learning translation engines are bound correctly, ensure language models are downloaded for offline use, and resolve application translation failures efficiently.