Поддержка интернационализации в разработке программного обеспечения имеет жизненно важное значение для обеспечения эффективной глобализации. Если есть удаленная возможность, что вы можете сотрудничать в будущем с другими странами на локалях, рассмотрите интернационализацию с момента начала проекта. Интернационализация может предотвратить переделку или необходимость разработки нового проекта модели. Соответствующее требование касается установок локализации.
На компьютере установки локализации определяет язык (кодировка набора символов) для пользовательского интерфейса и форматы отображения для информации, такой как время, дата и валюта. Кодировка определяет количество символов, которые может отобразить локаль. Для примера набор кодированных символов (codeset) US-ASCII задает 128 символов. Unicode® codeset, такой как UTF-8, задает более 1 100 000 символов.
Для генерации кода установка локализации определяет кодировку набора символов сгенерированного содержимого файла. Чтобы избежать искаженного текста или неправильно отображаемых символов, установка локализации для MATLAB® сеанс должен быть совместим с параметрами компилятора и операционной системы. Для получения информации о поиске и изменении настройки операционной системы см. раздел Интернационализация или документацию по операционной системе.
Чтобы проверить модель на символы, которые не могут быть представлены в установку локализации текущего Сеанса работы с MATLAB, используйте Simulink® Model Advisor проверяет модель Check на наличие иностранных символов.
Чтобы подготовиться к генерации кода для модели, идентифицируйте:
Локаль операционной системы.
Локаль сеанса работы с MATLAB.
Требования к генерации кода для:
Файлы компилятора целевого языка
Файлы шаблона генерации кода, которые включают комментарии (требует Embedded Coder®)
Файлы компилятора целевого языка поддерживают только кодировку по умолчанию. Для создания международного пользовательского сгенерированного кода, которая является портативной, используйте 7-битный набор символов ASCII.
Генератор кода заменяет символы, которые не представлены в кодировке набора символов модели, выходными XML-последовательностями. Замена эвакуационной последовательности происходит для блока, сигнала и Stateflow® имена объектов, которые появляются в:
Сгенерированные коды
Отчеты генерации кода
Пути к блокам, регистрируемые в MAT-файлах
Пути к блокам, регистрируемые в файлах API на C
(или model
_capi.c.cpp
) и model
_capi.h
Генератор кода заменяет символы, которые не представлены в кодировке набора символов для модели, выходными XML-последовательностями. Замена Escape-последовательности происходит для имен блоков, сигналов и объектов Stateflow, которые появляются в файлах Comments в шаблоне генерации кода (CGT).
По умолчанию файлы шаблона генерации кода не содержат информацию о кодировке набора символов. Операционная система считывает файлы, используя свою текущую кодировку, независимо от кодировки, которую вы используете для записи файла. Можно включить замену escape-последовательности путем добавления следующей лексемы в верхней части файла шаблона:
<encodingIn = "encoding">
Замените encoding
со строкой, которая называет стандартную схему кодирования символов, например UTF-8
, ISO-8859–1
, или windows-1251
.
Этот пример показов содержимое из файла rtwdemo_unicode.cgt в Сеанс работы с MATLAB для windows-1251
. В примере используется encodingIn
лексема, чтобы задать кодировку равной UTF–8
, которое является правильным значением для генерации кода.
В этом примере показано, как использовать генератор кода для создания и просмотра кода для использования в смешанных языках и смешанных локалях.
Прежде чем использовать этот пример, смотрите Интернационализация и Генерация кода или Интернационализация и Генерация кода.
The rtwdemo_unicode
в строении модели используется Embedded Coder(R) ert.tlc
системный целевой файл. Чтобы увидеть поддержку интернационализации и локализации с Simulink Coder ®, сконфигурируйте модель, чтобы использовать grt.tlc
системный целевой файл. Пример указывает поддержку, характерную для Embedded Coder ® (например, шаблоны генерации кода).
Строение модели задаёт файлы и настройки, которые управляют тем, как генератор кода обрабатывает локализацию для:
Интерфейсы C и C++ API
Файлы шаблона генерации кода (CGT) (требует Embedded Coder ®)
Файлы компилятора целевого языка (TLC), которые применяют индивидуальные настройки кода (требует Embedded Coder ®)
Откройте пример модели rtwdemo_unicode
.
Откройте пример модели rtwdemo_unicode
. Метки в модели появляются на нескольких языках (арабском, китайском, английском, немецком и японском) и различных символах Юникода.
model = 'rtwdemo_unicode'; open_system(model); %
Откройте приложение Embedded Coder
На вкладке Apps выберите Embedded Coder.
Проверьте установки локализации
Проверьте, что установка локализации для вашего программного обеспечения MATLAB ® совместима с вашим компилятором. См. документацию по операционной системе или следующую документацию MATLAB:
Проверьте модель для использования иностранных символов
Чтобы проверить модель на символы, которые генератор кода не может представлять в текущей кодировке набора символов модели, используйте модель Simulink ® Model Advisor Check на наличие иностранных символов.
1. Откройте Model Advisor. На вкладке Моделирование (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. Выберите модель Check для иностранных символов
5. Нажмите Run This Check.
6. Проверьте результаты. Появляется несколько предупреждений. Проверьте, что символы в модели могут быть представлены в текущей кодировке набора символов.
7. Закройте Model Advisor.
Файлы шаблонов генерации кода
Чтобы использовать файл шаблона генерации кода с символами unicode при генерации кода, выполните эти шаги (требует Embedded Coder ®). В противном случае перейдите к следующему разделу.
1. Откройте диалоговое окно Параметры конфигурации.
2. Перейдите к панели «Генерация кода > Шаблоном». Модель сконфигурирована, чтобы использовать файл шаблона генерации кода rtwdemo_unicode.cgt
. Этот файл добавляет комментарии к верхней части сгенерированного кода файлов. Генератору кода применить замену escape-последовательности для .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
.
Сгенерированный шаблон индивидуальной настройки файла
Чтобы использовать шаблоны индивидуальной настройки файлов с символами unicode при генерации кода, выполните эти шаги (требуется Embedded Coder ®). В противном случае перейдите к следующему разделу.
Вы можете задать индивидуальные настройки сгенерированных файлов сгенерированного кода с помощью кода TLC. Файлы TLC поддерживают только кодировку по умолчанию. Чтобы создать международный пользовательский сгенерированный код, который является портативным, используйте 7-битный набор символов ASCII.
1. Откройте диалоговое окно Параметры конфигурации.
2. Перейдите к панели «Генерация кода > Шаблоном». Модель сконфигурирована так, чтобы использовать файл индивидуальной настройки кода example_file_process.tlc
. Этот файл настраивает сгенерированный код непосредственно перед тем, как генератор кода запишет файлы кода. Например, файл добавляет исходный файл C, соответствующий include file и #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
.
Сгенерируйте код С и отчет
Сгенерируйте код С и отчет генерации кода.
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 + + код > Перейти к C/C + + код. Вид отчета изменяется, чтобы показать именованный раздел кода константы для этого графика.
7. Закройте отчет генерации кода, Model Advisor и модель. В Командном окне введите:
coder.report.close();
bdclose('all');
Сгенерируйте код С++
Сгенерируйте код С++ и отчет генерации кода.
1. Откройте модель.
model = 'rtwdemo_unicode';
open_system(model);
2. Установите модель параметра configuratoin Language в C++
. Или в Командном окне введите:
set_param('rtwdemo_unicode','TargetLang','C++');
3. Установите параметр конфигурации модели Упаковка интерфейса кода в C++ class
. Или в Командном окне введите:
set_param('rtwdemo_unicode','CodeInterfacePackaging','C++ class');
4. Сгенерируйте код С++ и отчет генерации кода.
evalc('rtwrebuild(''rtwdemo_unicode'')');
5. Чтобы увидеть поддержку интернационализации и локализации, проверьте сгенерированный код. См. раздел Просмотр сгенерированного кода.
6. Закройте отчет генерации кода и модель. В Командном окне введите:
coder.report.close();
bdclose('all');