One of our clients runs a localized version of SharePoint 2013. The operating system is a Windows 2012 R2 Server (English), the SharePoint Server itself is English as well. The German language pack is installed and sites and site collections were created in German. We are working with various custom site templates. Recently one of these templates had to be extended with a Task-list based custom lists (called ToDos). The users prepared the list in a test site, and we saved the list as a template. We created a new site using the site template (we will refer to this site later as prototype), and next we created a new list based on the custom list template. Finally, we saved the altered web site as site template, including content using the following PowerShell commands:
$web = Get-SPWeb $siteTemplateSourceUrl
$web.SaveAsTemplate($siteTemplateName, $siteTemplateTitle, $siteTemplateDescription, 1)
We created a test site using the new site template, and everything seemed to be OK. However, after a while, the users started to complain, that a menu for the new list contains some English text as well. As it turned out, some of the views for the new list were created with English title:
First, we verified the manifest.xml of the list template, by downloading the .stp file (that has a CAB file format) and opening it using IZArc. We found, that the DisplayName property of the default view (“Alle Vorgänge” meaning “All Tasks”) and a custom datasheet view (called “db”, stands for “Datenblatt”) contains the title as text, the DisplayName property of the other views contains a resource reference (like “$Resources:core,Late_Tasks;”).
Next, we downloaded the site template (the .wsp file has also a CAB file format, and can be opened by IZArc), and verified the schema.xml for the ToDos list. We found, that original, German texts (“Alle Vorgänge” and “db”) were kept, however, all other view names were “localized” to English.
At this point I guessed already, that problem was caused by the local of the thread the site template exporting code was run in. To verify my assumption, I saved the prototype site from the site settings via the SharePoint web UI (that is German in our case). This time the resulting schema.xml in the new site template .wsp contained the German titles:
We got the same result (I mean German view titles) if we called our former PowerShell code by specifying German as the culture for the running thread. See more info about the Using-Culture helper method, SharePoint Multilingual User Interface (MUI) and PowerShell here:
Using-Culture de-DE
$web = Get-SPWeb $pwsSiteTemplateSourceUrl
$web.SaveAsTemplate($siteTemplateName, $siteTemplateTitle, $siteTemplateDescription, 1)
}
We’ve fixed the existing views via the following PowerShell code (Note: Using the Using-Culture helper method is important in this case as well. We have only a single level of site hierarchy in this case, so there is no recursion in code!):
$web = Get-SPWeb http://SharePointServer
function Rename-View-IfExists($list, $viewNameOld, $viewNameNew)
{
$view = $list.Views[$viewNameOld]
If ($view -ne $Null) {
Write-Host Renaming view $viewNameOld to $viewNameNew
$view.Title = $viewNameNew
$view.Update()
}
Else {
Write-Host View $viewNameOld not found
}
}
Using-Culture de-DE {
$web.Webs | % {
$list = $_.Lists["ToDos"]
If ($list -ne $Null) {
Write-Host ToDo list found in $_.Title
Rename-View-IfExists $list "Late Tasks" "Verspätete Vorgänge"
Rename-View-IfExists $list "Upcoming" "Anstehend"
Rename-View-IfExists $list "Completed" "Abgeschlossen"
Rename-View-IfExists $list "My Tasks" "Meine Aufgaben"
Rename-View-IfExists $list "Gantt Chart" "Gantt-Diagramm"
Rename-View-IfExists $list "Late Tasks" "Verspätete Vorgänge"
}
}
}
Strange, that we had no problem with field names or other localizable texts when worked with the English culture.
