How to force a specific locale when managing vSphere


VMware does a great job with localizing their Windows based products - that means if you have your computer configured with one of the supported locales (usually identified by their ISO 639-1 codes e.g. de, en, fr, ko and zh_CN) then the menus and messages will be displayed in your local language rather than in English (which is the default).
However, this is not always useful. There might be situations where you prefer a program to use English (or another specific locale), no matter what your local computer is configured for, e.g. ...
  • when reading a manual, blog post or other document that is in English and uses screenshots and error messages that are in English
  • when you want to create such a document yourself in English, because you want to reach the widest possible audience
  • when you use a third party script that interacts with vSphere and relies on events and message strings being formatted in English
  • when you want to write such a script on your own (which you should try hard to avoid ...)
  • when you are forced to work with a computer that is not your own and uses a language that you do not understand ...
So, how do you do this? It depends on the application that you are using to manage vSphere:

1. (Legacy) vSphere Client

Force English Locale in vSphere C# Client

To force the legacy C# vSphere Client to use English you need to edit the desktop (or start menu) shortcut of the application and append the parameter -locale en to the target string, separated by a leading blank.

2. vSphere Web Client

Force locale in the vSphere Web Client

In the new vSphere Web Client you need to append the string ?locale=en_US to the start URL.

3. PowerCLI

If you connect to a vCenter server using PowerCLI then the language that is used for formatting messages (e.g. events) is not determined by a client setting, but by the language settings of the vCenter server. They can be queried and set by using the SessionManager view of the ServiceInstance view:
# Connect to vCenter server:
Connect-VIServer vcenter

# Get ServiceInstance view
$SI = Get-View ServiceInstance
# Get SessionManager view
$SessMgr = Get-View $SI.Content.SessionManager

# Display current Default locale
$SessMgr.DefaultLocale
# Display all supported locales
$SessMgr.SupportedLocaleList

# Set current Locale to en(glish)
$SessMgr.SetLocale("en")
The change made with SetLocale() will only be valid until you disconnect the vCenter session. On a reconnect or with a later PowerCLI session the language setting will revert to what is defined as DefaultLocale.




3 comments:

  1. Yeah, apart from being harder to troubleshoot because of limited online resources, most translations just sound horribly awkward, so I use an English OS/application/site etc wherever possible.

    As with most webapps, the language of the WebClient is governed by the Accept-Language header your browser sends, so you could configure that in your browser too if you're alright with most other websites displaying their English version by default too (that's what I'm doing).

    Another interesting thing you may want is changing the language of the vCenter alarm mail messages:
    http://kb.vmware.com/kb/1015646
    How to change the language of vSphere email alerts (1015646)

    ReplyDelete
    Replies
    1. Thank you for your comments and additions, much appreciated!
      I was aware of KB1015646, but I find it to be a too massive intervention to copy configuration files around. There should be an easier, less intrusive way to do this.

      - Andreas

      Delete
  2. Thanks a lot for this post - just what I was looking for! I always used to start my client in English, because the German translation is... less intuitive. Now I needed to change the language in a PowerCLI-script that reports alarm settings.

    ReplyDelete

***** All comments will be moderated! *****
- Please post only comments or questions that are related to this post's contents!
- Advertising and link spamming will not be tolerated!