複数のSitecoreの言語ファイルを1つのファイルにまとめるPowerShellスクリプト

samatsu 9/11/2015 1555 N/A Sitecore Programming

Sitecoreでは、コンテンツのサブツリー単位で、言語ファイルをエクスポートする機能が用意されています。複数のファイルをそれぞれ別の環境でインポートするのが面倒くさいので、複数のSitecoreの言語ファイルを1つのファイルにまとめるPowerShellスクリプトを作成してみました。

カレントフォルダーの xmlファイルを読み込んで、test.txt という名前で1つの言語ファイルにしています。結合もとのファイル一覧の取得方法や保存先のファイル名は適当に変更して使ってください。

$docs = Get-ChildItem "*.xml"
$x = [xml] "<sitecore />"

foreach($doc in $docs){
    [xml] $d = Get-Content $doc
    foreach($p in $d.SelectNodes("/sitecore/phrase")){
        $n = $x.ImportNode($p,$true);
        $null = $x.DocumentElement.AppendChild($n)
    }

}

$l = Get-Location
$x.Save($l.Path +"\test.txt");

個人的に需要があったので作りました。

ちなみに、言語ファイルをエクスポートするときにエクスポートされるフィールドは Versioned(デフォルト), UnVersioned(バージョン管理なし) フィールドのみでShared(共有)フィールドはエクスポートされません。Sharedは全フィールドで共通の値のためです。