It's possible.
http://blogs.msdn.com/b/shawnste/archive/2007/04/12/configuring-international-settings-from-the-command-line.aspx
http://msdn.microsoft.com/en-us/goglobal/bb964650#eyb
command line example to run the xml to add the keyboard language:
control intl.cpl,, /f:"%CD%\AddKeyboardLanguage.xml"
AddKeyboardLanguage.xml used to add Chinese keyboard language example:
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList>
<gs:InputPreferences>
<gs:InputLanguageID Action="add" ID="0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411F-A5AC-CA038EC515D7}"/>
</gs:InputPreferences>
</gs:GlobalizationServices>
RemoveKeyboardLanguage.xml example:
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList>
<gs:InputPreferences>
<gs:InputLanguageID Action="remove" ID="0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411F-A5AC-CA038EC515D7}"/>
</gs:InputPreferences>
</gs:GlobalizationServices>
Batch file to add or remove the keyboard language (save as AddRemWindowsChinese.bat
):
@echo off
if "%1"=="" echo ERROR: Missing [add]/[remove] parameter & goto :USAGE
if /i %1==add (
echo control intl.cpl,, /f:"%CD%\AddWindowsChinese.xml"
control intl.cpl,, /f:"%CD%\AddWindowsChinese.xml"
IF ERRORLEVEL 1 echo An error occured ! && goto :ERROR
)
if /i %1==remove (
echo %CD%
echo control intl.cpl,, /f:"%CD%\RemoveWindowsChinese.xml"
control intl.cpl,, /f:"%CD%\RemoveWindowsChinese.xml"
IF ERRORLEVEL 1 echo An error occured ! && goto :ERROR
)
GOTO :END
:USAGE
echo.
echo USAGE:
echo AddRemWindowsChinese.bat [add ^| remove]
echo.
pause
goto :END
:ERROR
:END