Long time ago in the stone age era, I mean a version 6.5 there was just a single dictionary under system node. It was a solution only for braveheart developers.
Till this time Sitecore introduce a lot of improvements in dictionary area.
The first big improvement was a Dictionary Domains
In a few simple words dictionary domains allow you to have a separated dictionary for each web site.
For the next big improvement we have to wait to version 8.1 release.In version 8.1 Sitecore introduce a fallback language functionality..
Fallback langugage functionality is not only dedicated for dictionaries but for all Sitecore items.
Now is time for the Dictionary Toolbox age.The Dictionary Toolbox is an answer for customer needs.
With this tool customers can easy move translated items to the other environement or export items for a translation. For development I will use very sharp tool - Sitecore Powershell Extension. The main Dictionary Toolbox functionalities will be:
Screen showns simple interface. User can choose dictionary domain item and next language to export dictionary items.
SPE team did a good job and I was able to achieved this effect in a very simple way.
For display items based on the dictionary domain template I used tree list control. To show all languages Droplist is used.
The another good thing is that this controls shown only items accessible for the logged user.
Here is powershell scrip to generate UI and fill controls with the necessary data. You just have to add code for parameters checking and exit if user do not chooose dictionary and language.
$dialog = Read-Variable -Parameters ` @{ Name = "dictionaryDomain"; Title = "dictionary"; Source="DataSource=/sitecore/content&DatabaseName=master&IncludeTemplatesForDisplay=Dictionary domain" ; Editor="treelist"}, ` @{ Name = "language"; Title = "Language"; Source="DataSource=/sitecore/system/languages" ; Editor="droplist"}, ` @{ Name = "emptyOption"; Value=$true; Title = "Export empty items" ; Editor="bool"} ` -Description "This script will export Dictionary data into file." ` -Width 400 -Height 200 ` -Title "Dictionary Toolbox" ` -OkButtonName "Export" ` -CancelButtonName "Cancel"
When a user makes a choice powershell need to get all dictionary items in proper language.
$dictionaryEntries = Get-ChildItem -Recurse -ID $dictionaryDomain.ID -Language $language.Name | Where-Object { $_.TemplateName -eq "Dictionary entry" } | ForEach-Object { return AddPathMember($_) }
Next all dictionary items will be exported to CSV file. Not all properties will be exported only item ID, item name, key, phrase and item path.
$csv = $dictionaryEntries | Select-Object -Property Name,Key,Phrase,ID, Path | ConvertTo-Csv -NoTypeInformation | Out-String $fileName = CreateFileName($language) Out-Download -Name $fileName -InputObject $csv | Out-Null
Sitecore Powershell Dictionary Toolbox