Интернационализация и генерация кода

Поддержка интернационализации в инструментах разработки программного обеспечения жизненно важна для включения эффективной глобализации. Если существует удаленная возможность, что вы могли сотрудничать в будущем с другими из локалей, рассмотреть интернационализацию от начала проекта. Интернационализация может предотвратить, переделывают или имеющий необходимость разработать новый дизайн модели. Соответствующее требование касается установок локализации.

Установки локализации

На компьютере установка локализации задает язык (кодирование набора символов) для пользовательского интерфейса и форматов отображения для получения информации, таких как время, дата и валюта. Кодирование диктует количество символов, которые может представить локаль. Например, кодированный набор символов US-ASCII (кодовый набор) задает 128 символов. Кодовый набор Unicode®, такой как UTF-8, задает больше чем 1 100 000 символов.

Для генерации кода установка локализации определяет кодирование набора символов сгенерированного содержимого файла. Чтобы избежать искаженного текста или неправильно отображаемых символов, установка локализации для вашего сеанса MATLAB® должна быть совместима с установкой для вашего компилятора и операционной системы. Для получения информации о нахождении и изменении настроек операционной системы, смотрите Интернационализацию или см. документацию по операционной системе.

Чтобы проверять модель на символы, которые не могут быть представлены в установке локализации вашего текущего сеанса работы с MATLAB, используйте модель Check проверки Simulink® Model Advisor для внешних символов.

Подготовьтесь генерировать код для смешанных языков и локалей

Чтобы подготовиться генерировать код для модели, идентифицируйте:

  • Локаль операционной системы.

  • Локаль сеанса работы с MATLAB.

  • Требования генерации кода для:

    • Файлы Компилятора Выходного языка

    • Файлы шаблона генерации кода, которые включают комментарии (требует Embedded Coder®),

Ограничения набора символов

Файлы компилятора выходного языка поддерживают пользовательскую кодировку по умолчанию только. Чтобы произвести международный, пользовательский сгенерированный код, который является портативным, используйте 7-битный набор символов ASCII.

Замены escape-последовательности XML

Генератор кода заменяет символы, которые не представлены в кодировании набора символов модели с escape-последовательностями XML. Замены escape-последовательности происходят для блока, сигнала и имен объектов Stateflow®, которые появляются в:

  • Комментарии сгенерированного кода

  • Отчеты генерации кода

  • Блокируйте пути, регистрируемые к MAT-файлам

  • Блокируйте пути, регистрируемые к файлам API C model_capi.c (или .cpp) и model_capi.h

Файлы CGT и замены escape-последовательности XML

Генератор кода заменяет символы, которые не представлены в кодировании набора символов для модели с escape-последовательностями XML. Замены escape-последовательности происходят для блока, сигнала и имен объектов Stateflow, которые появляются в Комментариях в файлах шаблона генерации кода (CGT).

По умолчанию файлы шаблона генерации кода не содержат информацию о кодировании набора символов. Операционная система читает файлы, с помощью ее текущего кодирования, независимо от кодирования, которое вы используете, чтобы записать файл. Можно включить замены escape-последовательности путем добавления следующей лексемы наверху файла шаблона:

<encodingIn = "encoding">

Замените encoding со строкой, которая называет схему кодирования стандартного символа, такую как UTF-8, ISO-8859–1, или windows-1251.

Этот пример показывает содержимое из файла rtwdemo_unicode.cgt в сеансе работы с MATLAB для windows-1251. Пример использует encodingIn лексема, чтобы установить кодирование на UTF–8, который является правильным значением для генерации кода.

Сгенерируйте и рассмотрите код со смешанными языками и смешанными локалями

В этом примере показано, как использовать генератор кода, чтобы произвести и рассмотреть код для использования на смешанных языках и смешанных локалях.

Перед использованием этого примера смотрите Интернационализацию и Генерацию кода или Интернационализацию и Генерацию кода.

rtwdemo_unicode настройка модели использует Embedded Coder (R) ert.tlc системный конечный файл. Чтобы видеть поддержку интернационализации и локализации с Simulink Coder®, сконфигурируйте модель, чтобы использовать grt.tlc системный конечный файл. Пример указывает на поддержку, которая характерна для Embedded Coder® (например, шаблоны генерации кода).

Настройка модели задает файлы и настройки, которые управляют, как генератор кода обрабатывает локализацию для:

  • C и API-интерфейсы C++

  • Файлы шаблона генерации кода (CGT) (требует Embedded Coder®),

  • Файлы Компилятора выходного языка (TLC), которые применяют индивидуальные настройки кода (требует Embedded Coder®),

Откройте модель rtwdemo_unicode в качестве примера.

Открытая модель rtwdemo_unicode в качестве примера. Метки в модели появляются на нескольких языках (арабский, китайский, английский, немецкий и японский язык) и различные символы Unicode.

model = 'rtwdemo_unicode';
open_system(model);
%

Откройте приложение Embedded Coder

Во вкладке Apps выберите Embedded Coder.

Проверьте установки локализации

Проверьте, что установка локализации для вашего MATLAB совместима с вашим компилятором. См. документацию для своей операционной системы или следующую документацию MATLAB:

Проверьте модель для использования внешних символов

Чтобы проверить модель для символов, которые генератор кода не может представлять в кодировании набора текущего символа модели, используйте модель Check проверки Simulink® Model Advisor для внешних символов.

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. Откройте диалоговое окно Configuration Parameters.

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. Откройте диалоговое окно Configuration Parameters.

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.

Сгенерируйте код С и отчет

Сгенерируйте код С и отчет генерации кода.

evalc('rtwbuild(''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> Navigate to C/C ++ Code. Представление отчета изменяется, чтобы показать именованный постоянный раздел кода для того графика.

7. Закройте отчет генерации кода, Model Advisor и модель. В Командном окне введите:

coder.report.close();
bdclose('all');

Сгенерируйте код С++

Сгенерируйте Код С++ и отчет генерации кода.

1. Откройте модель.

model = 'rtwdemo_unicode';
open_system(model);

2. Установите модель configuratoin Язык параметра к C++. Или в Командном окне введите:

set_param('rtwdemo_unicode','TargetLang','C++');

3. Установите упаковку интерфейса Code параметра конфигурации модели на C++ class. Или в Командном окне введите:

set_param('rtwdemo_unicode','CodeInterfacePackaging','C++ class');

4. Сгенерируйте Код С++ и отчет генерации кода.

evalc('rtwrebuild(''rtwdemo_unicode'')');

5. Чтобы видеть поддержку интернационализации и локализации, рассмотрите сгенерированный код. Смотрите Анализ Сгенерированный код.

6. Закройте отчет генерации кода и модель. В Командном окне введите:

coder.report.close();
bdclose('all');

Похожие темы