日本語版
最新ニュース
企業

リソース エディター – Optimizely C のローカリゼーション管理ツール

Optimizely CMS をある程度の時間使用したことがある人なら、XML ファイルによるローカリゼーションの管理が面倒な作業であることをご存知でしょう。コンテンツ タイプ名、プロパティ キャプション、タブ名、エディター ヒント - これらはすべて翻訳が必要ですが、これらの XML ファイルを複数の言語にまたがって整理しておくのは楽しいことではありません。 私は、翻訳はパートナーが所有し、ソース管理で管理する必要があると強く信じています。とはいえ、コードをデプロイすることなく、DXP 環境でローカリゼーションを迅速に修正する必要があることは十分に理解しています。リソース エディターは、開発中に編集して XML ファイルに保存し、本番環境で迅速な修正が必要な場合に DDS (ダイナミック データ ストア) 経由でランタイム オーバーライドを適用するという両方のシナリオを処理できるように構築されています。 このツールは小さなアイデアとして始まりましたが、機能を追加し続けるにつれてかなり大きくなりました。これは Blazor Server と MudBlazor で構築され、Optimizely プロジェクトで参照できる Razor クラス ライブラリとしてパッケージ化されています。 注: リソース エディターは、ローカライズのための手動の XML 編集を置き換える Optimizely…

リソース エディター – Optimizely C のローカリゼーション管理ツール

1771906037
2026-02-23 06:58:00

Optimizely CMS をある程度の時間使用したことがある人なら、XML ファイルによるローカリゼーションの管理が面倒な作業であることをご存知でしょう。コンテンツ タイプ名、プロパティ キャプション、タブ名、エディター ヒント – これらはすべて翻訳が必要ですが、これらの XML ファイルを複数の言語にまたがって整理しておくのは楽しいことではありません。

私は、翻訳はパートナーが所有し、ソース管理で管理する必要があると強く信じています。とはいえ、コードをデプロイすることなく、DXP 環境でローカリゼーションを迅速に修正する必要があることは十分に理解しています。リソース エディターは、開発中に編集して XML ファイルに保存し、本番環境で迅速な修正が必要な場合に DDS (ダイナミック データ ストア) 経由でランタイム オーバーライドを適用するという両方のシナリオを処理できるように構築されています。

このツールは小さなアイデアとして始まりましたが、機能を追加し続けるにつれてかなり大きくなりました。これは Blazor Server と MudBlazor で構築され、Optimizely プロジェクトで参照できる Razor クラス ライブラリとしてパッケージ化されています。

注: リソース エディターは、ローカライズのための手動の XML 編集を置き換える Optimizely CMS 用の Blazor ベースの管理ツールです。コンテンツ タイプ名、プロパティ、タブ、表示チャネル、エディター ヒント、フロントエンド翻訳のビジュアル エディターが提供され、すべて多言語がサポートされています。機能には、完全性ダッシュボード、DDS によるランタイム オーバーライド (デプロイは不要)、DeepL を利用したフィールド/アイテム/バルク レベルでの自動翻訳、CSV インポート/エクスポート、従来の XML 形式からのガイド付き移行などがあります。

はじめる

リソース エディターは、Razor クラス ライブラリとして配布されます。プロジェクト参照を追加し、「Startup.cs」にサービスを登録します。

public void ConfigureServices(IServiceCollection services)
{
    services.AddServerSideBlazor();
    services.AddMudServices();

    // Optional: Add DeepL translation (must be registered before AddResourceEditor)
    services.AddDeepLTranslation(_configuration);

    // Register Resource Editor services
    services.AddResourceEditor(_configuration);
}

設定は「appsettings.json」を通じて行われます。

{
  "ResourceEditor": {
    "TranslationFolder": "Resources/Translations",
    "EnableFileSaving": true,
    "EnableOverrides": true,
    "ShowOverridesUI": true,
    "EnableAutomatedTranslation": true,
    "DeepL": {
      "ApiKey": "your-api-key",
      "UseFreeApi": true
    }
  }
}

ツールをレンダリングする方法に応じて、Blazor コンポーネントをホストするための CSHTML ページも必要です。このツールは、標準の Optimizely レイアウトを使用せずに、フルページの Blazor アプリケーションとして実行されます。

@using Nergard.ResourceEditor.Components
@using Microsoft.AspNetCore.Components.Web
@model PageViewModel

@{ Layout = null; }




    
    
    
    Resource Editor
    
    
    


    @Html.AntiForgeryToken()

    

    

ここには、一括翻訳ボタンもあります。ワンクリックで、言語の不完全なフィールドをすべて翻訳します。

注記!自動翻訳は非マスター言語のみを対象としています。したがって、マスター言語用に適切なローカライズ テキストを作成するために努力すれば、他の言語でも恩恵を受けることができます。

オーバーライド

これは、リソース エディターを DXP 環境で適切に動作させるための機能です。オーバーライドは動的データ ストアに保存され、実行時に XML 変換よりも優先されるため、展開は必要ありません。

オーバーライド システムは、プロバイダー チェーンの位置 0 に自動的に登録されるカスタム `LocalizationProvider` を通じて機能します。 Optimizely がローカリゼーション キーを解決するとき、オーバーライド プロバイダーは最初に DDS をチェックします。オーバーライドが存在しない場合は、標準の XML ベースのプロバイダーに渡されます。

**既知の問題:** 現在、ヘルプ テキストのオーバーライドは期待どおりに機能するものの、オーバーライドされたコンテンツ タイプのキャプション (名前) が Optimizely によって正しく認識されない可能性があるという既知の問題があります。調査のために Optimizely の継続的なサポート チケットを持っています。

インラインオーバーライド

`ShowOverridesUI` が有効になっている場合、エディターのすべてのテキスト フィールドに小さなオーバーライド ボタンが表示されます。それをクリックすると、その特定のフィールドと言語のオーバーライドを作成できます。オーバーライドは DDS に保存され、すぐに有効になります。

オーバーライドマネージャー

- 言語と値を含むすべてのアクティブなオーバーライドを表示します

- 言語でフィルターし、プロパティ名で検索します

- 個々のオーバーライドを追加、編集、削除する

- **CSV にエクスポート** 文書化またはバックアップ用に

- **CSV からインポート** 一括操作

- **XML に保存**してオーバーライドを永続的な翻訳ファイルに移行します

- すべてのオーバーライドをクリアします

DeepLによる自動翻訳

自動翻訳を有効にして DeepL サービスを登録すると、リソース エディターは次の 3 つのレベルで翻訳支援を提供します。

1. **フィールド レベル** - 各テキスト フィールドには、デフォルト言語から翻訳する翻訳ボタンが表示されます。

2. **項目レベル** - 各エディターのヘッダーにある「翻訳不足」ボタンにより、現在の項目の空のフィールドがすべて翻訳されます。

3. **一括レベル** - 言語概要で、言語全体の不完全なフィールドをすべて翻訳します。

翻訳はフィールドに入力されますが、自動的には保存されません。結果を確認して満足したら保存します。

これを有効にするには、DeepL の無料枠にサインアップし、リソース エディターの前に DeepL サービスを登録します。

services.AddDeepLTranslation(_configuration);
services.AddResourceEditor(_configuration);

翻訳サービスはプラグイン可能です。 DeepL 以外のプロバイダを使用したい場合は、`AddResourceEditor()` を呼び出す前に、`ITranslationService` を実装して登録します。

XMLの移行

従来の Alloy XML 形式 (`ContentTypeNames.xml`、`PropertyNames.xml`、`GroupNames.xml` などの個別のファイル) で翻訳された既存のサイトがある場合、リソース エディターはこれを自動的に検出し、ガイドに従って独自の形式への移行を提供します。移行は、進行状況の追跡とエラーのレポートを使用して段階的に実行されます。

構成オプション

すべての構成オプションの概要を次に示します。

| Option | Default | Description |
|--------|---------|-------------|
| `TranslationFolder` | `Resources/Translations` | Path to translation XML files |
| `EnableFileSaving` | `true` | Allow saving to XML files. Set to `false` on DXP |
| `EnableOverrides` | `true` | Enable DDS-based runtime overrides |
| `ShowOverridesUI` | `true` | Show inline override buttons in editors |
| `EnableAutomatedTranslation` | `false` | Enable automated translation features |
| `ViewFilePattern` | `views_*.xml` | Glob pattern for view translation files |

一般的な DXP 構成は次のようになります。

{
  "ResourceEditor": {
    "EnableFileSaving": false,
    "EnableOverrides": true,
    "ShowOverridesUI": true
  }
}

ソースコードとライセンス

このツールは自然に成長し、私は Alloy デモ テンプレートを使用してテストしてきましたが、特に保存操作には注意して使用することをお勧めします。大きな変更を加える前に、XML ファイルをバックアップしてください。フィードバック、バグレポート、プルリクエストを喜んで受け取ります。

2026 年 2 月 23 日

#リソース #エディター #Optimizely #のローカリゼーション管理ツール

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。