gettext во встроенных системах? - PullRequest
4 голосов
/ 14 марта 2011

Существует ли минимальная реализация gettext для небольших встроенных систем?Мне нужно перевести мое приложение на несколько разных языков.Приложение работает на 50 МГц процессоре ARM7 с FreeRTOS и минимальным libc, но не имеет файловой системы.Я рассмотрел инструменты gettext для GNU, но задача переноса libintl на мою платформу выглядит немного сложной.Есть идеи?

Ответы [ 2 ]

5 голосов
/ 14 марта 2011

Локализация может быть огромной болью во встроенных системах.Сначала необходимо рассмотреть несколько вещей: потребуются ли для ваших переведенных языков альтернативные наборы символов?Вы выводите текст на графический дисплей или что-то вроде последовательной консоли?

Если набор переведенных языков относительно мал, а набор текстовых строк четко определен, вы можете избежать полноценного перевода.библиотека.Я унаследовал встроенный продукт, который использовал набор языковых строковых таблиц.Каждый текстовый элемент имеет позицию в таблице, поэтому конкретный переведенный фрагмент текста можно найти в 2D-таблице по языку, а затем по элементу.(Эти таблицы были сохранены в ПЗУ в этом приложении.)

Если вы пойдете по этому пути, есть ряд других вопросов, которые необходимо рассмотреть.Некоторые языки могут выразить содержание более или менее кратко, чем английский.Хороший пример - немецкий язык - простые фразы могут иметь длину, подобную предложению.В результате вы должны быть готовы к случаю, когда длина одного текстового элемента существенно отличается от языка к языку.В моем унаследованном приложении это было сделано путем расширения таблицы до 3D, чтобы текстовый элемент мог иметь более одной «строки».Разумеется, текстовое расположение (аббревиатуры, длина предложения, нумерация страниц и т. Д.) Также простирается от этого.

Если пространство в ПЗУ ограничено, вы можете рассмотреть переведенные фрагменты фраз, а затем вставить их по мере необходимости.Этот так называемый подход к консолидации строк может быть сложным, потому что нужная локализованная фраза может неуклюже перевести в фрагменты.Другими словами, будьте готовы к "Engrish", если вы вставляете фрагменты переведенного текста вместе, волей-неволей.Babelfish, и другие, могут помочь - но защита - хороший внутренний обзор конечного продукта носителем языка.(Примечание: носитель языка должен представлять «средний» диалект.)

1 голос
/ 15 марта 2011

Если вы управляете ЖК-дисплеем, возможно, стоит взглянуть на EasyGui - www.easygui.com - потому что в нем есть модуль перевода, позволяющий легко управлять переводами.

Вы можете посмотреть на раскладку дисплея на вашем компьютере и на лету поменять языки, убедившись, что текст помещается в выделенное пространство.

Существует также дополнение для перевода, которое представляет собой EXE-файл, который вы можете отправить переводчику, чтобы он мог видеть различные языки и то, как он работает на экране.

...