Поддержка интернационализации в разработке инструментов для разработки программного обеспечения имеет жизненно важное значение для обеспечения эффективной глобализации. Если существует удаленная возможность совместной работы в будущем с другими пользователями в разных регионах, рассмотрите возможность интернационализации с самого начала проекта. Интернационализация может предотвратить доработку или необходимость разработки новой модели. Соответствующее требование касается параметров языкового стандарта.
Подготовка к созданию кода для смешанных языков и языковых стандартов
Создание и проверка кода со смешанными языками и смешанными языками
На компьютере параметр языкового стандарта определяет язык (кодировку набора символов) пользовательского интерфейса и форматы отображения информации, такой как время, дата и валюта. Кодировка определяет количество символов, которое может быть отображено языковым стандартом. Например, кодированный набор символов (кодовый набор) US-ASCII определяет 128 символов. Кодовый набор Unicode ®, например UTF-8, определяет более 1 100 000 символов.
Для создания кода параметр языкового стандарта определяет кодировку набора символов генерируемого содержимого файла. Во избежание искажения текста или неправильного отображения символов параметры языкового стандарта для сеанса MATLAB ® должны быть совместимы с параметрами компилятора и операционной системы. Сведения о поиске и изменении параметров операционной системы см. в разделе Интернационализация или в документации по операционной системе.
Чтобы проверить модель на наличие символов, которые не могут быть представлены в настройках языкового стандарта текущей сессии MATLAB, используйте модель проверки проверки Simulink ® Model Advisor для иностранных символов.
Для подготовки к созданию кода для модели определите:
Языковой стандарт операционной системы.
Языковой стандарт сеанса MATLAB.
Требования к созданию кода для:
Файлы компилятора целевого языка
Файлы шаблонов создания кода, содержащие комментарии (требуется Embedded Coder ®)
Файлы компилятора целевого языка поддерживают только кодировку по умолчанию. Для создания международного пользовательского кода, который является портативным, используйте 7-битный набор символов ASCII.
Генератор кода заменяет символы, которые не представлены в кодировке набора символов модели, escape-последовательностями XML. Для имен блоков, сигналов и объектов Stateflow ®, отображаемых в:
Сгенерированные комментарии к коду
Отчеты о создании кода
Пути к блокам, записанные в MAT-файлы
Пути блокировки, зарегистрированные в файлах C API (или model_capi.c.cpp) и model_capi.h
Генератор кода заменяет символы, которые не представлены в кодировке набора символов для модели, escape-последовательностями XML. Замены Escape sequence происходят для имен блоков, сигналов и объектов Stateflow, которые отображаются в комментариях в файлах шаблонов генерации кода (CGT).
По умолчанию файлы шаблонов генерации кода не содержат информации о кодировке набора символов. Операционная система считывает файлы, используя их текущую кодировку, независимо от кодировки, используемой для записи файла. Можно включить замену escape-последовательности, добавив следующий маркер в верхней части файла шаблона:
<encodingIn = "encoding">
Заменить encoding со строкой, которая называет стандартную схему кодирования символов, такую как UTF-8, ISO-8859–1, или windows-1251.
В этом примере показано содержимое файла, rtwdemo_unicode.cgt в сессии MATLAB для windows-1251. В примере используется encodingIn токен, чтобы установить кодировку в UTF–8, которое является правильным значением для генерации кода.

В этом примере показано, как использовать генератор кода для создания и просмотра кода для использования на смешанном языке и смешанном языке.
Перед использованием этого примера см. раздел Интернационализация и генерация кода или Интернационализация и генерация кода.
rtwdemo_unicode в конфигурации модели используется встроенный кодер (R) ert.tlc системный целевой файл. Чтобы увидеть поддержку интернационализации и локализации с помощью Simulink Coder ®, настройте модель для использования grt.tlc системный целевой файл. В примере показана поддержка, относящаяся к Embedded Coder ® (например, шаблоны генерации кода).
Конфигурация модели определяет файлы и настройки, которые управляют тем, как генератор кода обрабатывает локализацию для:
Интерфейсы API C и C++
Файлы шаблонов генерации кода (CGT) (требуется Embedded Coder ®)
Файлы компилятора целевого языка (TLC), применяющие настройки кода (требуется Embedded Coder ®)
Открыть пример модели rtwdemo_unicode.
Открыть пример модели rtwdemo_unicode. Метки в модели отображаются на нескольких языках (арабском, китайском, английском, немецком и японском) и различных символах Юникода.
model = 'rtwdemo_unicode'; open_system(model); %

Откройте приложение Embedded Coder
На вкладке Приложения выберите Встроенный кодер.
Проверка параметров языкового стандарта
Убедитесь, что языковые настройки программного обеспечения MATLAB ® совместимы с компилятором. См. документацию по операционной системе или следующую документацию MATLAB:
Проверка модели для использования чужих символов
Чтобы проверить модель на наличие символов, которые генератор кода не может представить в кодировке текущего набора символов модели, используйте модель проверки проверки внешних символов Simulink ® Model Advisor.
1. Откройте мастер модели. На вкладке Моделирование (Modeling) щелкните Помощник по модели (Model Advisor). Выберите Помощник по модели (Model Advisor). Или в окне команд введите:
modeladvisor('rtwdemo_unicode')
Updating Model Advisor cache... Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.
2. Развернуть по продукту.
3. Разверните узел Simulink.
4. Выберите Проверить модель для иностранных символов
5. Щелкните Выполнить эту проверку.
6. Просмотрите результаты. Появляется несколько предупреждений. Убедитесь, что символы в модели могут быть представлены в текущей кодировке набора символов.
7. Закройте мастер модели.
Файлы шаблонов создания кода
Чтобы использовать файл шаблона создания кода с символами Юникода при создании кода, выполните следующие действия (требуется Embedded Coder ®). В противном случае перейдите к следующему разделу.
1. Откройте диалоговое окно «Параметры конфигурации».
2. Перейдите в область Создание кода > Шаблон. Модель настроена на использование файла шаблона генерации кода rtwdemo_unicode.cgt. Этот файл добавляет комментарии в верхнюю часть созданных файлов кода. Чтобы генератор кода применил замены escape sequence для .cgt , включите замены, указав:
<encodingIn = "encoding-name">
3. Открыть файл /toolbox/rtw/rtwdemos/rtwdemo_unicode.cgt.
edit rtwdemo_unicode.cgt
4. Найти строку кода, позволяющую замену escape-последовательности для кодировки набора символов UTF-8.
<encodingIn = "UTF-8">
5. Закрыть файл /toolbox/rtw/rtwdemos/rtwdemo_unicode.cgt.
Созданный шаблон адаптации файла
Чтобы использовать шаблоны настройки файлов с символами Юникода при создании кода, выполните следующие действия (требуется Embedded Coder ®). В противном случае перейдите к следующему разделу.
Можно задать настройки для созданных файлов кода с помощью кода TLC. Файлы TLC поддерживают только кодировку по умолчанию. Для создания международного пользовательского кода, который является портативным, используйте 7-битный набор символов ASCII.
1. Откройте диалоговое окно «Параметры конфигурации».
2. Перейдите в область Создание кода > Шаблон. Модель настроена на использование файла адаптации кода example_file_process.tlc. Этот файл настраивает созданный код непосредственно перед тем, как генератор кода запишет файлы кода. Например, файл добавляет исходный файл C, соответствующий include-файл и #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 ®, генератор кода использует замены escape-последовательностей для корректного отображения символов в отчете о создании кода.
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 + + Code > Перейти к C/C + + Code. В представлении отчета отображается именованный раздел кода константы для этой диаграммы.
7. Закройте отчет о создании кода, Model Advisor и модель. В окне команд введите:
coder.report.close();
bdclose('all');
Создать код C++
Создайте код C++ и отчет о создании кода.
1. Откройте модель.
model = 'rtwdemo_unicode';
open_system(model);

2. Задайте для параметра конфигурации модели Язык значение C++. Или в окне команд введите:
set_param('rtwdemo_unicode','TargetLang','C++');
3. Установите параметр конфигурации модели Code interface packaging в значение C++ class. Или в окне команд введите:
set_param('rtwdemo_unicode','CodeInterfacePackaging','C++ class');
4. Создайте код C++ и отчет о создании кода.
evalc('rtwrebuild(''rtwdemo_unicode'')');
5. Для просмотра поддержки интернационализации и локализации просмотрите созданный код. См. раздел Просмотр созданного кода.
6. Закройте отчет и модель создания кода. В окне команд введите:
coder.report.close();
bdclose('all');