OSLanguageFeatures

ContentPack Structure

Directories within OSLanguageFeatures are created by default and follows this logical arrangement

OSLanguageFeatures\$ReleaseId $Architecture

Source Content

Source Content is copied from the Features On Demand ISO which can be downloaded from MSDN or VLSC. The LanguageFeatures are in the root of the ISO

My Recommendation

If you are working with MultiLang (Multiple Languages), follow this recommendation

New-OSDBuilderContentPack

Create a new ContentPack for each of the languages you are working with. In this example, I will create the following ContentPacks in PowerShell for my additional languages

PS C:\> New-OSDBuilderContentPack -Name "MultiLang de" -ContentType MultiLang
PS C:\> New-OSDBuilderContentPack -Name "MultiLang es" -ContentType MultiLang
PS C:\> New-OSDBuilderContentPack -Name "MultiLang en" -ContentType MultiLang
PS C:\> New-OSDBuilderContentPack -Name "MultiLang fr" -ContentType MultiLang

Copy LanguageFeatures

Copy the Language Features to the proper destination directory. If a destination directory doesn't exist, create one using the same naming format as the existing directories. This can be somewhat tricky, so if you can automate it, give it a go. This is the script I used

#Path to your Features On Demand ISO
$SourceISO = 'G:\'
#The Language of Base Media
$BaseLanguage = 'en-us'
#Language to copy
$Languages = @('de','en','es','fr')
#Initialize OSDBuilder Variables
Initialize-OSDBuilder
foreach ($Language in $Languages) {
New-OSDBuilderContentPack -ContentType MultiLang -Name "MultiLang $Language"
$Destination = "$GetOSDBuilderHome\ContentPacks\MultiLang $Language\OSLanguageFeatures\1903 x64"
$DestinationB = "$GetOSDBuilderHome\ContentPacks\MultiLang $Language\OSLanguageFeatures\1909 x64"
#Exclude your Base Language
$LanguageFeatures = Get-ChildItem $SourceISO | ? {$_.Name -match 'LanguageFeatures'} | ? {$_.Name -like "*-$($Language)-*"}
foreach ($item in $LanguageFeatures | ? {$_.Name -notmatch $BaseLanguage}) {
Copy-Item $item.FullName $DestinationA -ea SilentlyContinue
Copy-Item $item.FullName $DestinationB -ea SilentlyContinue
}
}

Which gives me the following results (keep in mind the same files are used for ReleaseId 1903 and 1909)