概要
ServiceNowには.NETアプリケーションのように、現在の言語設定に応じて自動的に言語を切り替える仕組みが備わっている。
多言語表示用の文言は、文言のキーと言語のキーごとにテーブルに保存されている。
ユーザーが表示言語を切り替えると、自動的にその言語をキーとする文言を多言語テーブルから取得し表示される。
環境
バージョン:KINGSTONE(Developer Instance)
フォームのラベル
ServiceNowのFormはTableのカラム情報を元に生成される。Formの表示ラベルはTableのカラム情報の設定で多言語表示用のラベルを追加する。
Language列に「ja」を設定したレコードを追加することにより、ユーザーの言語設定が日本語の場合に、その「Label」列の文言がFormに表示される。
なお、各テーブルのカラム情報のLabelsに追加したレコードは、「Field Labels」に追加されている。「Field Labels」に直接追加しても同様の結果が得られる。一括で多言語対応の文言を追加したい場合は、「Field Labels」に直接追加した方が効率が良い。
メッセージ
サーバースクリプトで使用するメッセージについて、リテラルの文字列を埋め込んでしまうと当然ながら多言語対応ができない。
gs.addErrorMessage("When needed date cannot be in the past. Your request has not been saved to the database.");
gs.addErrorMessage(gs.getMessage('date_validatte_message'));
なお、「gs.getMessage」の引数はメッセージリソースのキーである。
メッセージリソースは、「System Localization」の「Messages」レコードの追加により追加する。
ユーザーの言語が英語の場合の表示
ユーザーの言語が日本語の場合の表示
ユーザー言語の切り替えについて
ユーザー言語の切り替えは、SeriveNowで直接ログインする場合は、ログイン時に選択が可能だ。
シングルサインオン(SSO)などで別の認証システムから連携されて自動的にログインした場合は、ホーム画面の右上のギアアイコンをクリックし、設定画面から設定変更する。
General(一般)設定のLanguageから言語を選択する。
なお、選択可能な言語はそのServiceNowのシステムにインストールされている言語に限定される。
参考
ServiceNowのDeveloper Instanceの初期状態では、日本語リソースがインストールされていない。
下記を参考に、日本語リソース表示用のプラグインのインストール後、日本語の切り替えが可能となる。日本語以外の言語も同様の方法で追加が可能である。