При можете избежать проблем локализации в коде при соблюдении приведенных ниже руководств.

Expand image Тестирование версий для международного использования

Если для вашего приложения важно определить, в какой языковой среде запущен Visual FoxPro, то вы можете вызвать функцию VERSION(). Знание языкового окружения может помочь в определении - какой текст отобразить, как отформатировать данные и тому подобному. Например, в приведенном ниже примере определяется языковое окружение, в котором запущен Visual FoxPro и затем запускается форма для конкретного языка:

  CopyCode image Скопировать код
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 в которой он работает. Примечание переводчика)

Expand image Использование строк

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

ЗамечаниеЗамечание

Производительность вашего приложения может пострадать, если вы удалите из него все текстовые строки. Например, производительность может пострадать, если программа ищет содержание строки внутри цикла.

Одним из путей работы со строками в приложении, которые будут транслированы, является путь использования строковых констант по всему приложению. Вы тогда можете опрелить текст для этих констант в отдельном текстовом файле, к которому можно обращаться из ваших программ используя препоцессор директив #INCLUDE. Например, вместо включения текста сообщения об ошибке "file not found," вы можете использовать константу ERR_FILE_NOT_FOUND. Текст для этой константы может быть размещен в файле с именем ERR_TEXT.H. Программный код, который использует такую методику может выглядеть так:

  CopyCode imageСкопировать код
#INCLUDE ERR_TEXT.H

* обработка происходит здесь

IF ERR THEN
   MESSAGEBOX( ERR_FILE_NOT_FOUND )
ENDIF

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

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

(Указанная методика достаточно широко используется, однако следование этой методике приводит к необходимости иметь несколько вариантов приложения, компилированных с учетом локализации. Примечание переводчика)

Работа со строками в двухбайтном окружении

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

Большинство DBCS функций эквиваленты их однобайтным двойникам, за исключением того, что их имена дополнены суффиксом C для их различия между собой. Вы можете использовать эти функции как однобайтными и двухбайтными данными; функции DBCS возвращают точно такой же результат, как и их двойники, предназначенные для работы с однобайтными, когда им посылаются данные в однобайтном представлении. Несколько других функций помогут вам в работе со строками, именно в двухбайтном окружении.

DBCS строковые функции Описание

AT_C( )

Возвращает позицию одной строки внутри другой (регистро-чувстительная), начиная слева.

ATCC( )

Возвращает позицию одной строки внутри другой (регистро-нечувстительная).

CHRTRANC( )

Замещает символы в строке.

IMESTATUS( )

Переключает двухбайтное редактирование в окне Browse.

ISLEADBYTE( )

Тестирует - является ли символ DBCS символом.

LEFTC( )

Возвращает крайне левый символ из строки.

LENC( )

Возвращает число символов в строке.

LIKEC( )

Определяет совпадение двух строк.

RATC( )

Возвращает позицию одной строки внутри другой (регистро-чувстительная), начиная справа.

RIGHTC( )

Возвращает крайне правый символ из строки.

STRCONV( )

Конвертирует символы между одно- и двухбайтным представлением.

STUFFC( )

Замещает символы в строке другой строкой.

SUBSTRC( )

Возвращает подстроку.

При работе с двухбайтными строковыми функциями, помните, что предел максимальная длины для переменных, имен и тому подобного обрезается до половины. Для получения более подробной информации, смотрите Возможности системы.

ЗамечаниеЗамечание

Visual FoxPro функции DBCS functions не поддерживаются в ранних версиях Visual FoxPro, и их вызов может привести к непредсказуемым результатам. Если вы используете любые DBCS функции в вашем приложении, используйте функцию VERSION(1) чтобы убедиться в том, что используемая версия Visual FoxPro позднее, чем 3.0.

Expand image Работа с форматами даты, времени и валюты

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

  • Позволить Visual FoxPro использовать установки, определенные в Control Panel.

  • Указать язык или конкретный формат, который вы желаете использовать, в диалоговом блоке Visual FoxPro "Options ".

Для форматирования информации о датах, времени и вылюте в коде, используйте команды SET SYSFORMATS и SET DATE. Как правило, вы должны выпускать эти команды во время инциализации вашего приложения (например в конфигурационном файле). По умолчанию значением для SET SYSFORMATS является OFF, так что вы должны явно установить его в ON при запуске вышего приложения.

Вы можете организовать проверку данных в индивидуальных текстовых боксах с помощью установки их свойства Format. Однрако, поскольку форматирование текствого бокса имеет преимущество над системным форматированием, это может привести к затруднениям в локализации вашего приложения в окружении, которое использует разные форматы для дат, валюты и тому подобного.

Для получения более подробной информации об установки локальных форматов, смотрите Как: установить форматы даты, времени и валюты.

Expand image Использование директив препроцессора

Вы можете создать варианты приложений для разных локализацией с помощью директов препроцессора. Они управляют компиляцией кода в приложении и включают в себя конструкции #INCLUDE, #DEFINE, #UNDEF и #IF...#ENDIF.

Использование директив препроцессора может быстро производить локализованные варианты; однако, такие директивы имеют приведенные ниже недостатки:

  • Для использования директив, вы заклюкаете код в скобки, и это может привести к усложению кода.

  • Константы времени компиляции доступны только в программе, которая их создает.

Expand image Смотрите также