Change Device language via ADB Change Device language via ADB android android

Change Device language via ADB


Your errors have nothing to do with adb. You just lack understanding of how your local shell processes your command. What you are doing is running these commands locally (on your PC):

adb shell setprop persist.sys.language frsetprop persist.sys.country CAstopsleep 5start

and the error messages you see are from local shell (i.e. there is no setprop executable on your system and start and stop commands have non-optional parameters.

the correct command would be

adb shell "setprop persist.sys.language fr; setprop persist.sys.country CA; setprop ctl.restart zygote"

or in more recent Android versions:

adb shell "setprop persist.sys.locale fr-CA; setprop ctl.restart zygote"


You can change the locale/language for testing purposes without rooting the device, also on newer (4.2+) devices. You have to create an application that changes the device locale. Or, you can use a helper app, e.g. ADB Change Language.

Next, on 4.2+ devices, you have to use grant the app CHANGE_CONFIGURATION permission via adb, adb shell pm grant <package_name> android.permission.CHANGE_CONFIGURATION.

Finally, you can use adb commands (launch activity) to switch locale.


This is all over the place, to put it simply

setprop will only work on an AVD or a rooted physical device

The alternative is to use the settings in the Launcher.

Rooted device or AVD this works:

<android-sdk path>/platform-tools/adb shellroot@generic:/ # getprop persist.sys.languagegetprop persist.sys.languageenroot@generic:/ # setprop persist.sys.language frsetprop persist.sys.language frroot@generic:/ # setprop persist.sys.country CAsetprop persist.sys.country CAroot@generic:/ # stopstoproot@generic:/ # startstartroot@generic:/ # sleep 5sleep 5root@generic:/ # getprop |grep langgetprop |grep lang[persist.sys.language]: [fr]root@generic:/ # getprop |grep countrygetprop |grep country[persist.sys.country]: [CA]root@generic:/ #