このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
地域と言語の設定とコード生成
ソフトウェア開発ツールにおける地域と言語の設定のサポートは、効率的なグローバリゼーションの実現に不可欠です。将来的にロケールを超えて他のユーザーと共同作業を行う可能性がわずかでもある場合は、プロジェクトの開始時から地域と言語の設定を検討してください。地域と言語の設定によって、やり直しや、新しいモデル設計を開発しなければならないような状況を回避できます。関連要件はロケールの設定に関するものです。
ロケール設定
コンピューター上のロケール設定は、ユーザー インターフェイスの言語 (文字セット エンコード) と、時間、日付、通貨などの情報の表示形式を定義します。エンコードは 1 つのロケールでレンダリングできる文字数を指定します。たとえば、US-ASCII でコード化された文字セット (コードセット) は 128 文字を定義します。UTF-8 などの Unicode® コードセットは、1,100,000 を超える文字数を定義します。
コード生成の場合、ロケール設定によって、生成されたファイルの内容の文字セット エンコードが決まります。文字化けや誤って表示される文字を防ぐには、MATLAB® セッションのロケール設定がコンパイラおよびオペレーティング システムの設定と互換性がなければなりません。オペレーティング システムの設定の参照と変更の詳細については、地域と言語の設定またはオペレーティング システムのドキュメンテーションを参照してください。
複数の言語とロケールが混在するコード生成の準備
モデルのコード生成を準備するには、以下を特定します。
オペレーティング システムのロケール。
MATLAB セッションのロケール。
次のコード生成に関する要件。
Target Language Compiler ファイル
コメントを含むコード生成テンプレート ファイル (Embedded Coder® が必要)
文字セットの制約
Target Language Compiler ファイルはユーザーの既定のエンコードのみをサポートします。移植可能な国際的なカスタム生成コードを作成するには、7 ビット ASCII 文字セットを使用します。
XML エスケープ シーケンスの置換
コード ジェネレーターは、モデルの文字セット エンコードで表現されない文字を XML エスケープ シーケンスで置き換えます。エスケープ シーケンスの置換は、以下に表示されるブロック、信号および Stateflow® オブジェクトの名前に対して行われます。
生成されたコードのコメント
コード生成レポート
MAT ファイルに記録されたブロック パス
C API ファイル
(またはmodel
_capi.c.cpp
) および
に記録されたブロック パスmodel
_capi.h
CGT ファイルと XML エスケープ シーケンスの置換
コード ジェネレーターは、モデルの文字セット エンコードで表現されない文字を XML エスケープ シーケンスで置き換えます。エスケープ シーケンスの置換は、コード生成テンプレート (CGT) ファイルのコメントに表示されるブロック、信号および Stateflow オブジェクトの名前に対して行われます。
既定では、コード生成テンプレート ファイルには文字セットのエンコード情報は含まれません。オペレーティング システムは、ファイルの書き込みに使用するエンコードに関係なく、現在のエンコードを使用してファイルを読み取ります。次のトークンをテンプレート ファイルの最上部に追加することで、エスケープ シーケンスの置換を有効にできます。
<encodingIn = "encoding">
encoding
を、標準の文字エンコード スキームを指定する文字列 (UTF-8
、ISO-8859–1
、または windows-1251
など) で置き換えます。
この例では、windows-1251
の MATLAB セッションにおける rtwdemo_unicode.cgt ファイルのコンテンツを示します。この例では encodingIn
トークンを使用してエンコードを UTF–8
に設定します。これはコード生成に適切な値です。
言語およびロケールが混在するコードの生成とレビュー
この例ではコード ジェネレーターを使用して、混在する言語およびロケールで使用されるコードを生成する方法およびレビューする方法について説明します。
この例を使用する前に、地域と言語の設定とコード生成または地域と言語の設定とコード生成を参照してください。
rtwdemo_unicode
モデル コンフィギュレーションは Embedded Coder® ert.tlc
システム ターゲット ファイルを使用します。Simulink® Coder™ に関する地域と言語の設定とローカライズのサポートを確認するには、grt.tlc
システム ターゲット ファイルを使用するようにモデルを設定します。この例は、Embedded Coder に固有のサポートを示します (コード生成テンプレートなど)。
モデル コンフィギュレーションでは、コード ジェネレーターが次の内容についてローカライズを処理する方法を制御するファイルと設定を指定します。
C および C++ API インターフェイス
コード生成テンプレート (CGT) ファイル (Embedded Coder が必要)
コードのカスタマイズを適用する Target Language Compiler (TLC) ファイル (Embedded Coder が必要)
モデル例 rtwdemo_unicode
を開きます。
モデル例 rtwdemo_unicode
を開きます。モデル内のラベルは多言語 (アラビア語、中国語、英語、ドイツ語および日本語) とさまざまな Unicode の記号で表示されます。
model = 'rtwdemo_unicode'; open_system(model); %
Embedded Coder アプリを開く
[アプリ] タブで、[Embedded Coder] を選択します。
ロケール設定の確認
MATLAB® ソフトウェアのロケール設定がコンパイラと互換性があることを確認します。オペレーティング システムのドキュメンテーションまたは次の MATLAB のドキュメンテーションを参照してください。
コード生成テンプレート ファイル
コードの生成時に Unicode 文字を含むコード生成テンプレート ファイルを使用するには、次の手順を実行します (Embedded Coder が必要)。それ以外の場合は次の節に進みます。
1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。
2. [コード生成]、[テンプレート] ペインに移動します。モデルはコード生成テンプレート ファイル rtwdemo_unicode.cgt
を使用するように設定されています。このファイルは生成されたコード ファイルの最上部にコメントを追加します。コード ジェネレーターが .cgt
ファイルにエスケープ シーケンスの置換を適用するようにする場合は、次を指定して置換を有効にします。
<encodingIn = "encoding-name">
3. ファイル /toolbox/rtw/rtwdemos/rtwdemo_unicode.cgt
を開きます。
edit rtwdemo_unicode.cgt
4. 文字セット エンコード UTF-8
のエスケープ シーケンスの置換を有効にしているコード行を検出します。
<encodingIn = "UTF-8">
5. ファイル /toolbox/rtw/rtwdemos/rtwdemo_unicode.cgt
を閉じます。
生成ファイル カスタマイズ テンプレート
コードの生成時に Unicode 文字を含むファイル カスタマイズ テンプレートを使用するには、次の手順を実行します (Embedded Coder が必要)。それ以外の場合は次の節に進みます。
TLC コードを使用して、生成コード ファイルのカスタマイズを指定できます。TLC ファイルはユーザーの既定のエンコードのみをサポートします。移植可能な国際カスタム生成コードを作成するには、7 ビット ASCII 文字セットを使用します。
1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。
2. [コード生成]、[テンプレート] ペインに移動します。モデルはコード カスタマイズ ファイル example_file_process.tlc
を使用するように設定されています。このファイルは、コード ジェネレーターがコード ファイルを書き込む直前に生成コードをカスタマイズします。たとえば、C のソース ファイル、対応するインクルード ファイル、#define
ステートメントおよび #include
ステートメントを追加します。
3. ファイル /toolbox/rtw/rtwdemos/example_file_process.tlc
を開きます。
edit example_file_process.tlc
4. コードを生成する前に、コードの次の行のコメントを解除します。
%% %assign ERTCustomFileTest = TLC_TRUE
%
5. ファイル /toolbox/rtw/rtwdemos/example_file_process.tlc
を閉じます。
C コードとレポートの生成
C コードおよびコード生成レポートを生成します。
evalc('slbuild(''rtwdemo_unicode'')');
生成コードのレビュー
MATLAB の現在の文字セット エンコードではない文字については、コード ジェネレーターはエスケープ シーケンス置換を使用して、コード生成レポートの中で正しく文字をレンダリングします。
1. モデル rtwdemo_unicode
のコード生成レポートが開いていない場合は、コマンド ウィンドウで次を入力します。
coder.report.open('rtwdemo_unicode')
2. rtwdemo_unicode.c
および rtwdemo_unicode.h
の生成コードを確認します。モデル要素の名前が、ローカル言語に置換された名前としてコード コメントに現れます。
3. トレーサビリティ レポートを開きます。このレポートでは、現在のエンコードで表現できない文字が名前に含まれている場合でも、トレーサビリティ情報が維持されます。モデル要素の名前は、ローカル言語に置換された名前としてレポートに現れます。
4. 下にスクロールして、最初のチャート (State 'Selection' <S2>:23
) のコードの場所のリンクをクリックします。レポートの表示が変化し、対応するコードが rtwdemo_unicode.c
内に表示されます。
5. コード コメント内の <S2>:23
リンクをクリックします。モデル ウィンドウの新しいタブにチャートが表示されます。
6. モデル ウィンドウでチャートを右クリックします。コンテキスト メニューから [C/C++ コード]、[C/C++ コードに移動] を選択します。レポートの表示が変化し、そのチャートのコードの定数セクションが名前付きで表示されます。
7. コード生成レポート、モデル アドバイザー、モデルを閉じます。コマンド ウィンドウで以下のように入力します。
coder.report.close();
bdclose('all');
C++ コードの生成
C++ コードおよびコード生成レポートを生成します。
1. モデルを開きます。
model = 'rtwdemo_unicode';
open_system(model);
2. モデル コンフィギュレーション パラメーター [言語] を [C++
] に設定します。または、コマンド ウィンドウで次を入力します。
set_param('rtwdemo_unicode','TargetLang','C++');
3. モデル コンフィギュレーション パラメーター [コード インターフェイスのパッケージ化] を [C++ class
] に設定します。または、コマンド ウィンドウで次を入力します。
set_param('rtwdemo_unicode','CodeInterfacePackaging','C++ class');
4. C++ コードおよびコード生成レポートを生成します。
evalc('rtwrebuild(''rtwdemo_unicode'')');
5. 地域と言語の設定とローカライズのサポートを参照するには、生成されたコードを確認します。「生成コードのレビュー」を確認します。
6. コード生成レポートとモデルを閉じます。コマンド ウィンドウで以下のように入力します。
coder.report.close();
bdclose('all');