How to Capture Mobile Website Screenshots in Multiple Locales on Android
Capture comparable Android website screenshots across locales. Set the right language context, keep device conditions consistent, and verify the rendered page.
To capture a mobile website in multiple locales on Android, choose a locale such as fr-CA, set the locale context on a physical Android device or emulator, open the same URL in the intended browser, and capture the same screen state for each locale. Then verify that the website actually changed language and that translated text, direction, dates, and layout display correctly. Changing Android’s system language alone does not guarantee that every website will render in that language: the browser’s website-language preferences and the site’s own language controls are separate things to check.
This workflow is for screenshots of a website displayed in an Android browser. An app’s per-app language setting is relevant only when you are testing that app, and only when the app supports the feature.
Understand the locale layers
A locale test can involve several independent settings. Check each one instead of assuming that one setting controls them all.
| Layer | What it affects | What to verify |
|---|---|---|
| Android system locale | The device’s language and regional context, which apps may use if they support it. | Confirm the intended language and, if relevant, region are active in Android settings. |
| App language | The language of a supported Android app. Android 13 introduced platform per-app language preferences for participating apps; only supported apps appear in the app-language list. | Use this when testing an app. It does not establish that a website has a translation. [Android Developers: Per-app language preferences] [Android Help: Change app language] |
| Chrome interface language | The language used for Chrome’s own controls. | Do not treat a translated browser menu as evidence that the website changed language. |
| Chrome preferred languages for website content | A browser preference related to website content languages. | Inspect Chrome’s website-language preferences separately. The available source distinguishes this from Chrome’s interface language but does not establish exactly how a particular site negotiates language. |
| Website language controls | The language or region selected by the site, sometimes through a menu, URL, account, or saved preference. | Check for a language or region selector and confirm the rendered page after using it. |
Android localization guidance uses BCP-47 locale tags to identify a language and optional region. For example, fr-CA identifies French as used in Canada. Include a region when you need to check regional wording, dates, or offers. [Android Developers: Localize your app]
Choose a physical device or emulator
| Method | Use it when | Keep in mind |
|---|---|---|
| Physical Android device | You need to capture the actual handset display and its behavior. | Record the device, display settings, browser, and orientation so you can recreate the capture. |
| Android emulator | You need a repeatable test setup or a particular virtual screen size and density. | Set and record the emulator’s locale, resolution, density, and orientation. Android documentation supports testing on a device or emulator and notes that resolution and density affect rendered strings and drawables. [Android Developers: Localize your app] |
Either method can work. Choose based on whether real handset behavior or a controlled, repeatable display setup matters to the test. You do not need to buy a phone if an emulator meets your requirements.
How to capture mobile website screenshots in multiple locales on Android
- List the locales to test. Use tags such as
en-US,fr-CA, orar. Keep the region when regional behavior matters; use language-only tags when it does not. - Fix the capture conditions. Choose one URL, device or emulator, browser, orientation, zoom, viewport, scroll position, and page state. Record the screen resolution and density where available, since they can affect how strings fit.
- Set Android’s locale. On a physical device, open Android’s language settings and select the intended language and region. On an emulator, use its locale controls or the device Settings app. Android’s localization guidance describes testing on devices and emulators and changing the device language in Settings. [Android Developers: Localize your app]
- Check browser settings. In Chrome for Android, inspect the preferred languages for website content separately from Chrome’s interface language. The exact effect on a specific site is not settled by the available Chrome source, so verify the result on the page. [Chromium: Android Chrome language settings strings]
- Check the site’s own language controls. If the page offers a language or region selector, use the intended option. Note whether it changes the URL or persists a preference, so you can repeat the same steps for other locales.
- Load the page into a stable state. Wait for the content you intend to compare, dismiss or preserve dialogs consistently, and use the same scroll position. Do not compare one page before a popup appears with another after it appears.
- Capture the visible screen. Use Android’s screenshot controls or the emulator’s capture controls. This records the displayed viewport. If you need the entire page, use a full-page capture method and apply it consistently to every locale.
- Name files with locale and setup details. For example,
pricing-fr-CA-pixel-emulator.pngandpricing-en-US-pixel-emulator.png. Keep a short record of URL, locale, browser, device or emulator, viewport, orientation, zoom, and capture date. - Repeat from the same baseline. Switch locale, reload or reset the site’s language state as needed, return to the same URL and page state, and capture again. Check whether cookies, account preferences, or a language selector carried over from the previous run.
What to verify in the screenshots
- Language changed: Check page headings, body copy, navigation, buttons, and form labels. A translated Android or Chrome interface does not prove the website text changed.
- Regional variant: Check region-sensitive wording, spelling, offers, dates, times, numbers, and currency where present. A language-only change may not exercise regional variants.
- Text fit: Look for clipped labels, unexpected wrapping, overlapping controls, truncated text, and content pushed below the fold.
- Direction and alignment: For right-to-left content, check text direction, alignment, navigation order, and the placement of icons or controls.
- Untranslated areas: Look for sections that remain in another language, including navigation, embedded widgets, errors, and consent controls.
- Comparable state: Confirm the screenshots use the same URL, viewport, orientation, zoom, scroll position, and meaningful page state.
Screen resolution and density can change how strings and other display assets appear. If a layout defect is difficult to reproduce, compare the capture conditions before concluding that the locale alone caused it. [Android Developers: Support different languages and cultures]
Or skip the browser setup
For a quick website capture, ScreenshotNeo is a website screenshot API and MCP server for developers. Its API accepts a URL in one GET request and returns a PNG, JPEG, WebP, or PDF. See the ScreenshotNeo API documentation for request options. This captures a website through the service; it does not reproduce an Android handset’s exact browser, system locale, viewport, or device behavior. Use a device or emulator when those are what you need to test.
cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
with open("shot.webp", "wb") as shot:
shot.write(r.content)
Node.js:
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://stripe.com'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer())));
The service removes cookie banners, newsletter popups, and chat widgets before the shot; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. These captures are useful for checking web content, but they do not substitute for validating Android’s system locale and the target site’s behavior in a real browser.
Sign up for 1,000 free screenshots a month, with no card required.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| The website stays in the original language. | The site may use its own language selector or saved preference; the browser’s preferred website languages and system locale are separate inputs. | Check the site’s language controls, inspect Chrome’s website-language preferences, and reload from a consistent baseline. Confirm the rendered text instead of assuming negotiation behavior. |
| Chrome menus changed but the page did not. | Chrome’s interface language and preferred website languages are distinct. | Inspect the website-content language preference and the site’s own controls, then verify page content. |
| The app-language option is missing. | Only apps that support Android’s per-app language feature appear in the list. | Set the Android system locale if appropriate, and remember that app-language settings do not establish a website translation. [Android Help] |
| One locale shows a different layout or missing text. | Translation length, direction, viewport, resolution, or density may affect layout. | Compare capture dimensions and density, inspect text wrapping and direction, and repeat at the same viewport and zoom. |
| Repeated captures show different language or content. | A site preference, cookie, account setting, or page state may persist between runs. | Record the site state, return to a common baseline between locales, and note any selector or URL changes. |
| A popup appears in only one screenshot. | The capture timing or prior page state differs. | Use the same wait and interaction sequence for every run; decide consistently whether the popup belongs in the comparison. |
Performance, repeatability, and cost
A manual device or emulator workflow takes time to reset and capture, but it shows the browser and display conditions you selected. Reusing one device profile and recording locale, resolution, density, browser, zoom, orientation, and page state makes comparisons easier to reproduce. If you need many locale runs, keep the URL and capture procedure in a checklist and change one locale variable at a time.
Emulators avoid needing a separate physical device for every display setup, while physical devices are useful when actual handset behavior matters. Neither choice removes the need to confirm that the site has a translation and that the intended language was actually rendered. A phone purchase is optional; an emulator may be sufficient.
ScreenshotNeo offers 1,000 captures per month free without a card; paid plans are Starter at $5 for 3,000, Growth at $15 for 15,000, Pro at $39 for 60,000, Scale at $99 for 250,000, and Business at $249 for 1,000,000. Yearly billing gives two months free, and every feature is on every plan. For locale QA, treat API captures as web page captures, not proof of Android system-locale behavior.
FAQ
Does changing Android’s language force every website to translate?
No. A website’s language controls and browser preferences may also matter, and some sites may not provide the desired translation. Verify the text on the page.
Should I use fr or fr-CA?
Use a language-plus-region tag when the regional variant matters, such as Canadian French wording or region-specific formatting. Use a language-only tag when you do not need to test those differences.
Can I use Android’s per-app language setting for a website?
That setting is for supported apps. For a website, check Android’s system locale, browser website-language preferences, and the website’s own language controls separately.
Can a cloud screenshot API confirm how Chrome for Android renders a locale?
A website screenshot API can capture web content, but it does not by itself validate a particular Android device’s system locale or browser behavior. Use the physical device or emulator workflow for that check.


