言語も通貨も国際化

今回は、マルチ言語およびマルチ通貨を考慮した実装となります。

スポンサーリンク

マルチ言語

まずは、マルチ言語を実現するためには、以下の手順を設定する必要があります。

  1. 選択可能な言語の設定
  2. トランスレーションワークベンチの有効化
  3. 翻訳

言語設定

設定→組織プロファイル→言語設定からユーザが選択できる言語の有効化/無効化ができます。
デフォルトでもいくつかの主要な言語が設定されているので、デフォルト設定に問題なければ飛ばしてもいいでしょう。
ちなみに、現ユーザが選択中の言語は無効化できない親切設計になっています。
言語設定で使用する言語を選択

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

設定→管理→トランスレーションワークベンチ→翻訳設定から翻訳の有効化ができます。
トランステーションワークベンチの有効化

有効化のあとは、言語を追加します。
2つ以上設定しないと、翻訳の意味がありません。
もちろん、有効化にしていないと使えません。
トランスレーションワークベンチで言語を追加

これで、使える言語の設定ができました。

翻訳

実際の翻訳作業は、設定→管理→トランスレーションワークベンチ→翻訳から行います。
それぞれ翻訳する対象の項目が選択できますので、有効化した言語に対して文言を入力していきます。
ラベル毎に文言を設定する
面倒だったら一括インポートができますので、そちらでやったほうがいいでしょう。
むしろ、翻訳は開発とは別部隊のところで依頼して取り込むケースが多いんじゃないかと思うので、インポートの方が実用的でしょうか。

マルチ通貨

マルチ通貨実現には、以下手順が必要です。

  1. マルチ通貨の有効化
  2. 通貨設定

マルチ通貨の有効化

設定→組織プロファイル→組織情報から「マルチ通貨の有効化」にチェックを入れれば、有効化できます。
目立つように注意書きにも書いていますが、マルチ通貨を一度設定するとオフにすることはできないので、本当に必要な機能かどうかは今一度チェックしましょう。

組織情報からマルチ通過を有効化

また、同じ画面にある通貨の選択欄は、マスタの通貨を指します。
DBに保存される通貨となります。

通貨設定

マルチ通貨を有効化すると、設定→組織プロファイル→通貨の管理から通貨設定ができるようになります。

通貨のレート設定

最初はマスタ通貨(ここでは日本円)しかないため、有効な通貨の新規ボタンから通貨を追加します。
Conversion Rateにはレートを入れるんですが、ここでの注意としては、マスタ通貨から見た新通貨がいくらになるかということ。
1ドル=◯◯円という言葉はよく聞きなれるんですが、ここで設定するのは円に対してのドルの比率なので、
1円=◯◯ドルという形で表現する必要があります。
例えば、1ドル=113.87円であれば、1円=1/113.87ドル=0.0088ドルなので、0.0088をConversion Rateに設定する必要があります。

あとは、ユーザの通貨に合わせて金額欄のところに自動変換してくれます。
※日付の範囲を決めて、高度な通貨設定もできますが、今回は割愛します

コード上から使用する

Apex、VisualForceから使用する場合はユーザ情報から取得する形になります。

ユーザ言語の取得

Apex

UserInfo.getLanguage()

VisualForce

$User.LanguageLocaleKey

ロケールの取得

ロケールについては、有効化などの設定は必要ありません。
ユーザごとに地域を選択する形になります。
ロケールを変更することによって、住所や日付などの表記方法が自動的に変わります
(例:日付であれば、日本が「2018/1/1」に対し、アメリカでは「1/1/2018」になる)

Apex

UserInfo.getLocale()

VisualForce

$User.LocaleSidKey

タイムゾーンとはまた違うので注意しましょう。
タイムゾーンは単なる標準時間との時差設定であり、日時型を使用した時に、ローカル時間表示されるようになります。
(DBへの保存は標準時間)

ユーザ通貨の取得

Apex

UserInfo.getDefaultCurrency()

VisualForce

$User.DefaultCurrencyIsoCode

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

コード上は、普通にカスタム表示ラベルやカスタム項目のラベルは普通に取得すればOKです。
ハードコーディングしなければユーザの言語に合わせて自動で変換してくれます。

まとめ

  • マルチ通貨、トランスレーションワークベンチ(翻訳)は有効化が必要
  • ユーザの通貨、言語、ロケールによって入力形式や表示方法が自動的に変換される

コメント