In the previous tip we pointed you to the official PowerShell Language Definition which is available online in many different languages. Which raises the question about the supported languages.

Typically, multi-language online documents use the same URL and just change the language ID. For example, the English and the German edition just differ in their language ID:

To automatically find out all the available translations, we first need a list of potential language IDs and construct hypothetical URLs. We then need a way to check whether these URLs actually exist. Let's tackle the first part:

A list of all available language IDs can be retrieved like this:


This creates a hash table for easy lookup with IDs that have a hyphen only (as web URLs typically use IDs with hyphens only):

$h = [CultureInfo]::GetCultures([Globalization.CultureTypes]::SpecificCultures) |
Where-Object {$_ -like '*-*' } | 
Group-Object -Property Name -AsHashTable 

We can now get a list of available language IDs, and we can look up its display name, too:

# list all languages:
PS C:\> $h['de-de'].DisplayName 
German (Germany) 

To get a list of hypothetical URLs, simply iterate through all available language IDs and insert them one by one into the URL.

Note how I replaced the specific language ID such as “en-us” by a placeholder ({0}): the operator -f then inserts the language ID at this position inside the loop:

$URL = '{0}/powershell/scripting/lang-spec/chapter-01'

$list = $h.Keys |
  ForEach-Object { $URL -f $_ } 


We now have a list of potential URLs. In part 2 we’ll check this list to see which URLs actually exist.

Twitter This Tip! ReTweet this Tip!