国際化対応(トランスレーションワークベンチ編)

Salesforceでの国際化対応に関して、提案時・設計に考慮しておいたほうが良い点を紹介します。

はじめに

まずはじめに、そもそも要求されている国際化対応の範囲の確認が必要です。

・何か国語対応か? ⇒日英2か国語でよい?10か国語以上の対応?

・対応地域は? ⇒北欧とUSでは数値区切りが違ったりしますね。

・国・地域がまたがって同一レコードを参照する必要があるか? ⇒場合によっては別組織にして、HQのみが参照できる集計用組織を構築する手もありますね。

・関連システムとの連携がある場合は、関連システムでの対応状況を確認

システムの国際化対応

Salesforceで国際化対応する際に主に考慮が必要となる要求です。

  • ・文言(翻訳)
  • ・書式(日付、数値)
  • ・通貨換算
  • ・リリース計画

今回は、これらのうち『文言(翻訳)』要求に関して、もう少し紹介したいと思います。

トランスレーションワークベンチ

Salesforceでの多言語化対応といえばトランスレーションワークベンチですね。この機能によって容易に多言語化が実現できることになります。また最近では翻訳設定ファイルをエクスポートし、翻訳後のファイルをアップロードすることも可能になったため、お客様の協力を得ながら、よりスムーズに多言語化が実装できるようになっています。

トランスレーションワークベンチで翻訳可能な機能は以下の機能になります。

  • ・Sコントロール
  • ・Web タブ
  • ・アクション
  • ・カスタムアプリケーション
  • ・カスタムレポートタイプ
  • ・カスタム項目
  • ・カテゴリノード
  • ・データカテゴリ
  • ・データカテゴリグループ
  • ・ボタンとリンクの表示ラベル
  • ・ルックアップ検索条件
  • ・レイアウトセクション
  • ・レコードタイプ
  • ・ワークフロー ToDo
  • ・国 (住所)
  • ・州 (住所)
  • ・選択リスト値
  • ・入力エラーメッセージ
  • ・標準項目ヘルプ

基本的な項目名やタブ名などよく使用する主な機能に関しては翻訳可能になっています。 一方、Visualforceなどではなく標準機能利用を前提としてシステムを構築する場合に、以下の機能に関して考慮が必要です。

ホームコンポーネント

サイドバーやホームタブにショートカットリンクなどを配置したいとき、多言語化の仕組みは別途我々で考慮すべき事項です。英語表記で統一したり、併記したり、アイコンにしたり、対応言語が少ない場合には言語ごとのホームページレイアウトを作成するというのも対応策になるでしょう。

レポート/ダッシュボード

レポート/ダッシュボード名もトランスレーションワークベンチが使えません。これらも併記するなどの対応が必要ですが、レポート名は40文字、ダッシュボードは80文字までしか設定できないので要注意です。 また、レポートでのカスタム集計項目名やバケット項目名もトランスレーションワークベンチは利用できないようです。

レコード

もちろんオブジェクトに格納されるレコードに関しては、トランスレーションワークベンチの適用ができません。レコードデータの多言語化についてもう少し掘り下げて考えていきましょう。

トランザクションレコード

一般ユーザが日々登録・編集するようなレコード値に関しての翻訳が必要となった場合でも、外部の翻訳APIを利用して、別言語利用ユーザが参照する際の補助機能を提供するぐらいまでが通常考えられる対応となるでしょう。

マスタレコード

マスタレコードは、集計軸に使用されることも多く多言語化が必須になるでしょう。

1)選択リスト化

まず第一にマスタテーブルを選択リスト項目にできないかを検討します。

考慮点

・マスタ管理を行うにはアプリケーションのカスタマイズ権限が必要となる。

・選択リスト型の制限(合計文字数 15,000文字など)

・数式で取得される値はマスタ言語となる。(英語ユーザの場合、選択リストではBlueと表示されますが、数式内では『青』となります。)

実装時のポイント SOQLで翻訳後の値を取得するにはtoLabelを使う必要があります。 データ更新時にはマスタ言語でDMLを発行してください。 ×record.color__c = 'Blue'; update record; ○record.color__c = '青'; update record;//更新ユーザに関わらずマスタ言語で

2)併記

対応言語が少ない場合、マスタレコードをオブジェクトで保持し、併記することを検討します(例: 青/Blue)。

考慮点

・Name項目は80文字、カスタム項目も255文字までですのでデータ長が収まるか?

・見栄え

・レポートなどの集計時に表示される値が長くなってしまう。

3)翻訳値 横持ち

対応言語が比較的少ない場合、マスタレコードをオブジェクトで保持し、1レコード内に翻訳した値を格納する項目を追加します。 ログインしているユーザの言語と一致している項目値を翻訳値として表示する数式項目を追加します。 横持ち

考慮点

・翻訳値数式項目の文字数制限

・Name項目をどのように使うか? SalesforceではName項目がリンクになり、またルックアップ時の検索対象項目となります。 商品コードのような言語を問わない値があれば、よいですがそういったものがない場合、ユーザがマスタを検索する際のキー値について考慮が必要です。

・SOQLで集計関数を利用する場合、GroupBy句に数式項目が使えない。

実装時のポイント ユーザの使用言語($User.LanguageLocaleKey)は数式項目で参照できません。あらかじめユーザオブジェクトにApexトリガを仕込んでおき、カスタム項目にユーザの言語をコピーしておきます。


4)翻訳値 縦持ち

対応言語が多い場合、翻訳値を対応言数分レコードを作成し、ログインユーザの言語に応じたマスタを選択可能とします。 縦持ち 考慮点

・マスタ選択時のレコードのアクセスコントロール

・レポートなどの集計時の集計キー(同一マスタを指すレコードがN件できるため、集計時には集約する必要があります)

以上国際化対応する場合に気を付けておきたいポイントでした。

最後に ちょっとTips

今回トランスレーションワークベンチを紹介させていただきましたが、最後にトランスレーションワークベンチを利用して外部システムとの連携の時に使えるTipsを合わせてご紹介したいと思います。

リクエスト
・外部システムでは、値をコード値で保持してます。  
 青→1、赤→2、黄→3 など
・Salesforceでは、[コード値:名称]で選択リスト表示したい。   
1:青、2:赤、3:黄 など

トランスレーションワークベンチがないとき
データ連携時にデータを加工してSalesforceに投入する。
例えば
・Excelで値を加工した後に、インポートしたり、
・Apexトリガで投入されたコード値から値を書き換えたり、
・参照要件のみなら、数式項目を作ってみたり といった形で対応されていたことと思います。

トランスレーションワークベンチがあるとき
以下の対応が可能です。
1.選択リスト型項目は、コード値だけで定義します。
2.トランスレーションワークベンチを使って、選択リストのエントリ値を[コード:名称]にて上書きします。
3.外部システムからの連携はコード値のまま、Salesforceにインポートします。

マスタ言語が日本語であっても、トランスレーションワークベンチで日本語が選択できます。 『1』→『1:青』といった翻訳を実施するイメージです。 もちろん英語、フランス語も設定できるので、『1』→『1:Blue』といった上書きも可能です。 マスタ言語を同じ言語で上書きするというのは、例えばAppExchangeをインストールした際に、ちょっとアプリの文言を変更したいという場合にも使えるTipsになります。