При можете избежать проблем локализации в коде при соблюдении приведенных ниже руководств.
Тестирование версий для международного использования
Если для вашего приложения важно определить, в какой языковой среде запущен Visual FoxPro, то вы можете вызвать функцию VERSION(). Знание языкового окружения может помочь в определении - какой текст отобразить, как отформатировать данные и тому подобному. Например, в приведенном ниже примере определяется языковое окружение, в котором запущен Visual FoxPro и затем запускается форма для конкретного языка:
![]() | |
---|---|
IF VERSION(3) = 34 THEN * Запуск в Испанском - запускает форму на испанском DO FORM CST_SPN.SCX ELSE * Запускаем форму на английском DO FORM CST_ENU.SCX ENDIF |
(На мой взгляд, подобный метод не является оправданным, поскольку требует разработку параллельных форм. Visual FoxPro позволяет сделать это с гораздо меньшими трудозатратами, о чем рассказано в дополнительной статье справки Практика создания мультиязычных приложений. Примечание переводчика)
![]() |
---|
Поддержка для двухбайтных символов стала доступной в Visual FoxPro начиная только с 3.0b версии. Если ваше приложение зависит от возможности использования двухбайтных (DBCS) функций, вы тогда, должны вызвать функцию VERSION(1) для определения номера версии Visual FoxPro. |
(Опять-таки спорная рекомендация, поскольку разработчик наверняка знает версию Visual FoxPro в которой он работает. Примечание переводчика)
Использование строк
Избегайте включения текста непосредственно в коде, так как это может повлечь за собой трудности в локализации приложения. Например, не включайте даты и валюты непосредственно в процедурный код. Если это возможно, пишите свой код таким образом, чтобы он мог получить строки из файлов или таблиц, поставляемых отдельно от программы..
![]() |
---|
Производительность вашего приложения может пострадать, если вы удалите из него все текстовые строки. Например, производительность может пострадать, если программа ищет содержание строки внутри цикла. |
Одним из путей работы со строками в приложении, которые будут транслированы, является путь использования строковых констант по всему приложению. Вы тогда можете опрелить текст для этих констант в отдельном текстовом файле, к которому можно обращаться из ваших программ используя препоцессор директив #INCLUDE. Например, вместо включения текста сообщения об ошибке "file not found," вы можете использовать константу ERR_FILE_NOT_FOUND. Текст для этой константы может быть размещен в файле с именем ERR_TEXT.H. Программный код, который использует такую методику может выглядеть так:
![]() | |
---|---|
#INCLUDE ERR_TEXT.H * обработка происходит здесь IF ERR THEN MESSAGEBOX( ERR_FILE_NOT_FOUND ) ENDIF |
Когда ваше приложение локализовано, переводчик может создать приведенную к нужному языку версию текстового файла описания ошибок и затем перекомпилировать приложение.
Когда ваше приложение локализовано, переводчик может создать приведенную к нужному языку версию текстового файла описания ошибок и затем перекомпилировать приложение.
(Указанная методика достаточно широко используется, однако следование этой методике приводит к необходимости иметь несколько вариантов приложения, компилированных с учетом локализации. Примечание переводчика)Работа со строками в двухбайтном окружении
Visual FoxPro включает в поставку функции для управления символьными выражениями содержащими любые комбинации одно- и двухбайтных символов. С помощью строковый функций DBCS вы можете разрабатывать приложения без необходимости писать дополнительный код для тестирования двухбайтных смимволов, когда в строке просчитываются, ищутся, вставляются или удаляются символы..
Большинство DBCS функций эквиваленты их однобайтным двойникам, за исключением того, что их имена дополнены суффиксом C для их различия между собой. Вы можете использовать эти функции как однобайтными и двухбайтными данными; функции DBCS возвращают точно такой же результат, как и их двойники, предназначенные для работы с однобайтными, когда им посылаются данные в однобайтном представлении. Несколько других функций помогут вам в работе со строками, именно в двухбайтном окружении.
DBCS строковые функции | Описание |
---|---|
Возвращает позицию одной строки внутри другой (регистро-чувстительная), начиная слева. | |
Возвращает позицию одной строки внутри другой (регистро-нечувстительная). | |
Замещает символы в строке. | |
Переключает двухбайтное редактирование в окне Browse. | |
Тестирует - является ли символ DBCS символом. | |
Возвращает крайне левый символ из строки. | |
Возвращает число символов в строке. | |
Определяет совпадение двух строк. | |
Возвращает позицию одной строки внутри другой (регистро-чувстительная), начиная справа. | |
Возвращает крайне правый символ из строки. | |
Конвертирует символы между одно- и двухбайтным представлением. | |
Замещает символы в строке другой строкой. | |
Возвращает подстроку. |
При работе с двухбайтными строковыми функциями, помните, что предел максимальная длины для переменных, имен и тому подобного обрезается до половины. Для получения более подробной информации, смотрите Возможности системы.
![]() |
---|
Visual FoxPro функции DBCS functions не поддерживаются в ранних версиях Visual FoxPro, и их вызов может привести к непредсказуемым результатам. Если вы используете любые DBCS функции в вашем приложении, используйте функцию VERSION(1) чтобы убедиться в том, что используемая версия Visual FoxPro позднее, чем 3.0. |
Работа с форматами даты, времени и валюты
Для того, чтобы облегчить форматирование дат, времени и валюты для соответствия тому, с чем привык работать пользователь вы можете использовать несколько методик форматирования. Вы можете:
-
Позволить Visual FoxPro использовать установки, определенные в Control Panel.
-
Указать язык или конкретный формат, который вы желаете использовать, в диалоговом блоке Visual FoxPro "Options ".
Для форматирования информации о датах, времени и вылюте в коде, используйте команды SET SYSFORMATS и SET DATE. Как правило, вы должны выпускать эти команды во время инциализации вашего приложения (например в конфигурационном файле). По умолчанию значением для SET SYSFORMATS является OFF, так что вы должны явно установить его в ON при запуске вышего приложения.
Вы можете организовать проверку данных в индивидуальных текстовых боксах с помощью установки их свойства Format. Однрако, поскольку форматирование текствого бокса имеет преимущество над системным форматированием, это может привести к затруднениям в локализации вашего приложения в окружении, которое использует разные форматы для дат, валюты и тому подобного.
Для получения более подробной информации об установки локальных форматов, смотрите Как: установить форматы даты, времени и валюты.
Использование директив препроцессора
Вы можете создать варианты приложений для разных локализацией с помощью директов препроцессора. Они управляют компиляцией кода в приложении и включают в себя конструкции #INCLUDE, #DEFINE, #UNDEF и #IF...#ENDIF.
Использование директив препроцессора может быстро производить локализованные варианты; однако, такие директивы имеют приведенные ниже недостатки:
-
Для использования директив, вы заклюкаете код в скобки, и это может привести к усложению кода.
-
Константы времени компиляции доступны только в программе, которая их создает.