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

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

Настройки локали

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Генерация кода сообщает

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

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

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

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

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

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

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

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

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

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

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

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

model = 'rtwdemo_unicode';
open_system(model);

Проверьте настройки локали

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

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

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

1. Откройте Model Advisor в Simulink®. Выберите Analysis> Model Advisor> Model Advisor. Или в Командном окне введите:

modeladvisor('rtwdemo_unicode')

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. Измените Параметры конфигурации> Генерация кода> Язык к C++. Или в Командном окне введите:

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

3. Измените упаковку интерфейса Configuration Parameters> Code Generation> Interface> Code на C++ class. Или в Командном окне введите:

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

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

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

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

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

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

Похожие темы