|
Due to the increasing dependency on
Information Systems in the Middle East region a great urge to have and Arabic
enabled applications. By Arabic enabled we don’t mean that it can only display
the characters in Arabic but we mean it can actually store, sort, index, and
manipulate Arabic data.
Microsoft is always aiming to
provide operating systems, applications, and development environment that can
be used internationally and Arabic in no exception to that. From this
perspective and with Visual Basic becoming the industry standard development
tool world wide, Arabic data manipulation was taken into consideration. In this
document we will try to highlight the various Arabic issues that VB provide to
facilitate the development of an Middle East applications with complete Arabic
support.
In order to understand the concepts
and considerations that are required for the successful development of Arabic
enabled application some general introduction of commonly used terminology is
provided in the following part.
General Terminology
In order to
enable your software for international use, you must understand that language
and cultural differences impinge upon your program designs in three ways Direction,
Symbology, And Usage. Then you should develop a general understanding of
these characteristics for the locales that you’re likely to encounter.
Direction
Written languages are typically page oriented, and users of
these languages arrange elementary symbols (characters) into rows and columns
on the page. The human eye then transverses these rows and columns in a way
that varies from one language to another.
Arabic is
scanned by row from right to left and top to bottom, except for numbers and
foreign words, which are presented from left to right. These bi-directional, or
BIDI, languages are “unnatural” in most computer environments and can cause
numerous software design problems. For instance, when you scan an input string
to detect a parenthetical phrase, you normally look for a left parenthesis to
begin the phrase and a right parenthesis to end it. With a bi-directional
language, you must look for the right parenthesis first. Parsing numbers is
also a problem because the parser sees the low order digit first, whereas the
high-order digit appears first in a left-to-right language.
Arabic Symbology
Although Arabic is SBCS language, it present a special
challenge to programmers. Because they’re script language traditionally written
with a pen, a character can take on a different shape depending on where it
appears in a word. This is similar to use capital letters at the beginning of
European and American words. Many Arabic characters, however, have four
variations for when the character appears at the beginning, middle, or end of a
word and for when it appears by itself.
To further
complicate matters, an individual Arabic symbol can be composed from several
characters, one of which is the root symbol, while the others are nuance called
diacritical marks or accents. While many European languages also employ
diacritical marks, the popular European character sets contain accented
characters that can be expressed with a single byte. This isn’t as practical in
the Arabic world, which uses more diacritical marks.
Usage
The term usage refers to the spelling, punctuation,
collation, and other idiomatic rules in a country. When running under an
internationally aware operating system, programs can automatically adjust to
these differences by consulting “Country Information Table” for the usage rules
that are currently in force. Microsoft Windows provides an extensive repertoire
of international settings that the user can select through the Control Panel.
The final
area of usage differences is text length. The length of a prompter or other
message will often vary quite a bit from one language to another. International
programs must automatically adjust screen displays and reports to allow for
these size differences. Also, the program must be prepared to receive different
inputs, depending on the language.
The Evolution Of UNICODE
Microsoft and other industry leaders began looking for a
solution to the problems caused by code page switching and shifted code pages.
Since they were searching for a truly universal code page, they formed a
committee called the UNICODE consortium.
Fortunately,
the ISO and Unicode efforts merged almost as soon as they became aware of each
other in 1991. as a result, the ISO-10646 wide character standard and the
universal wide character code page, called Unicode, are closely related and
often thought of as identical.
At this point
it’s clear that Unicode is rapidly gaining acceptance among operating system
designers, software toolmakers, and application programmers. It is the native
character set of Windows 2000, which is arguably becoming the standard
workstation and server operating system.
Do Visual Basic Supports Arabic???
The answer is yes and in the following text we will prove
it, most of visual basic programmers know that it’s a control based development
environment, so controls (.OCX, or user built Controls) provide the corner
stone in the successful development of applications. Microsoft have provide VB
6.0 with a set of BIDI aware controls that enable the developers to deliver
BIDI enabled applications that is in most of the cases can correctly and
accurately represent, and manipulate BIDI data.
No matter what type of application
you are developing weather it is Desktop, Database, or an Internet application
the Arabic support is there. Even with the introduction of Windows 2000 and the
innovative new features provided in it such as Active Directory the Arabic
support is available if you are running VB 6.0 SP3.
To develop completely integrated
database application you can use VB6.0 with Microsoft SQL 7.0 or Microsoft
Access to provide completely integrated, Scalable, high performance, and most
of all Arabic enabled applications that can satisfy all customer needs with as
small effort as changing a property within a control on a from.
Bi-directional
'Bi-directional' is a generic term
used to describe software products that support Arabic
and other languages that are written right-to-left. More specifically,
bi-directional refers to the product ability to manipulate and display text for
both left-to-right and right-to-left languages. For example, to display a
sentence containing words written in both English and Arabic
requires bi-directional capability.
RTL is frequently used as an abbreviation for
right-to-left. Similarly, LTR is frequently used as an abbreviation for
left-to-right.
Visual Basic Bi-directional Features
Visual Basic is bi-directional
(also known as "BIDI")-enabled. Bi-directional is a generic term used
to describe software products that support Arabic
and other languages, which are written right-to-left. More specifically,
bi-directional refers to the product ability to manipulate and display text for
both left-to-right and right-to-left languages. For example, displaying a
sentence containing words written in both English and Arabic
requires bi-directional capability.
Microsoft Visual Basic includes standard features to create
and run Windows applications with full bi-directional language functionality.
However, these features are operational only when Microsoft Visual Basic is
installed in a bi-directional 32-bit Microsoft Windows environment, such as Arabic Microsoft Windows 95. Other bi-directional
32-bit Microsoft Windows environments are available as well.
The Right-To-Left property has been added to forms,
controls, and other Visual Basic objects to provide an easy mechanism for
creating objects with bi-directional characteristics. Although Right-To-Left is
a part of every Microsoft Visual Basic installation, it is operational only
when Microsoft Visual Basic is installed in a bi-directional 32-bit Microsoft
Windows environment.
Bi-directional Features documentation describes all
Microsoft Visual Basic bi-directional features. You can find this information
under Additional Information under Reference in the Visual Basic table of
contents. Click the See Also under the title of this topic to go directly to
the overview topic.
For compatibility with Microsoft Visual Basic 4.0, two
versions of the 32-bit Grid control (Grid32.ocx) are included with Microsoft
Visual Basic 6 but not installed. Both are located in the \Tools folder of the
product media. The standard and bi-directional versions are located in the
\Controls and \ControlsBiDi subfolders, respectively.
Specific Features
Although the Microsoft Visual Basic 6.0 user interface
(menus, dialog boxes, and Help) is in English, you will find the convenience
and ease of use of Microsoft Visual Basic 6.0 bi-directional
features are indispensable for your bi-directional programming needs:
-
Create bi-directional
applications quickly and easily Many bi-directional
features appear as new properties in the Properties window for easy
program development.
-
Combine languages Mix
right-to-left and left-to-right language text (for example, Arabic and English) in your code as you build
applications for a bi-directional 32-bit Microsoft Windows environment.
-
Create right-to-left
visual features Add right-to-left visual features to
forms, menus, and more than 15 custom controls such as grids, list boxes,
and combo boxes.
-
Database support Develop
database solutions with support for Arabic
and other right-to-left language sort orders.
Single solution there is no need to
install a separate bi-directional version of Visual Basic to create
bi-directional applications.
VB Controls & Arabic Support
Right-To-Left Property
Returns a Boolean
value that indicates the text display direction and controls the visual
appearance on a bi-directional system.
Syntax
object.RightToLeft
The object placeholder represents an
object expression that evaluates to
an object in the Applies To list.
Settings
The possible Boolean return values
from the RightToLeft property are:
|
Setting
|
Description
|
|
True
|
The control is running on a bi-directional platform, such
as Arabic Windows95 or
Hebrew Windows95, and text is running from right to left. The control should
modify its behavior, such as placing vertical scroll bars at the left side of
a text or list box, placing labels to the right of text boxes, and so on.
|
|
False
|
The control should act as though it was running on a
non-bi-directional platform, such as English Windows95, and text is running
from left to right. If the container does not implement this ambient
property, this is the default value.
|
- Common
Controls
|
Control Name
|
RTL Reading
Order
|
RTL Alignment
|
Comments
|
|
Form (MDI, SDI)
|
þ
|
ý
|
|
|
Printer
|
þ
|
ý
|
|
|
Label
|
þ
|
þ
|
|
|
Text Box
|
þ
|
þ
|
|
|
Command Button
|
þ
|
þ
|
|
|
Dialog box Control
|
þ
|
þ
|
Operating System Dependent
|
|
Frame Control
|
þ
|
þ
|
|
|
Check Box
|
þ
|
þ
|
|
|
Radio Button Control
|
þ
|
þ
|
|
|
List Box / Combo Box
|
þ
|
þ
|
|
|
Rich Edit Control
|
þ
|
þ
|
Depend on saved file layout
|
|
Menu Control
|
þ
|
þ
|
|
|
Microsoft Chart
|
þ
|
ý
|
|
- Database
Controls
|
Control Name
|
RTL Reading Order
|
RTL Alignment
|
Comments
|
|
Microsoft DAO
|
þ
|
þ
|
|
|
Microsoft ADO (OLEDB)
|
þ
|
þ
|
|
|
Microsoft Grid Control
|
þ
|
þ
|
|
|
Microsoft Data Bound List Controls
(List Box / Combo Box)
|
þ
|
þ
|
|
|
Microsoft Flex Grid
|
þ
|
þ
|
|
|
Microsoft Data Report
|
þ
|
þ
|
|
|
Microsoft Data List
|
þ
|
þ
|
|
|
Microsoft Data Repeater
|
þ
|
þ
|
|
Data Report Designer Bi-directional Features
Bi-directional Features
The Data Report Properties window provides a Right-To-Left
property that will:
-
Determine the report caption
reading order.
-
Establish the default
RightToLeft property value for newly added controls that have a
RightToLeft property.
-
Determine printing behavior.
Reports are RTL or LTR depending on the setting of their
RightToLeft property. If the RightToLeft property is set to True:
- Report captions have an RTL reading
order and are right-aligned in the title bar.
- Printed text will have an RTL
reading order and, if alignment is not set explicitly, text will be right
aligned.
Note An exported HTML file will
include the HTML DIR attribute for RptLabel, RptTextBox, and RptFunction
controls (see below). Dir=RTL if the RightToLeft property setting for the
control is True.
RptLabel RightToLeft Property
The RptLabel Properties window provides a RightToLeft
property. Label controls will initially be created with a RightToLeft property
setting inherited from the RightToLeft setting of the parent report.
When the RightToLeft property is set to true:
- Caption text reading order is
RTL
- The Alignment property is set
to Right Justify to right align the caption text.
Subsequently, setting RightToLeft and Alignment
independently controls caption reading order and alignment behavior. The
Alignment property can be set at design time or run time.
RptTextBox RightToLeft Property
The RptTextBox Properties
window provides a RightToLeft property. Textbox controls will initially be
created with a RightToLeft property setting inherited from the RightToLeft
setting of the parent report.
When the RightToLeft property
is set to true:
-
Text reading order is RTL
-
The Alignment property is set to Right Justify to
right align the caption text.
Whenever word wrap occurs,
alignment of wrapped lines is determined by the Alignment property. Text can be
Middle East, Latin, or mixed.
Subsequently, setting
RightToLeft and Alignment independently controls caption reading order and
alignment behavior. The Alignment property can be set only in design time,
following the same behavior the property displays in a non-bi-directional
Windows environment.
RptFunction RightToLeft Property (Arabic
only)
When the RightToLeft property is set to true:
-
Numerals will appear in
Hindi
Developer's Tip
Compiled reports have some buttons on the viewer user
interface (for example, Zoom) that cannot be localized. Middle East developers
should be aware of these when creating and distributing localized reports.
Using Bi-directional Visual Basic on Non-Bi-directional Platforms
Project files that contain
bi-directional feature references can be directly opened and edited in any
environment that supports Microsoft Visual Basic 6.0. However, the file will
run successfully only in a bi-directional 32-bit Microsoft Windows environment.
Project files that contain no bi-directional feature
references can be opened, edited and run in any environment that supports
Microsoft Visual Basic 6.0. Microsoft Visual Basic 6.0 provides full forward
compatibility for project files saved in earlier versions of Microsoft Visual
Basic, including bi-directional versions such as Arabic
Add-On Pack for Microsoft Visual Basic 4.0.
Locales
-
Locale: The features
of the user's environment those are dependent on language, country/region,
and cultural conventions. The locale determines conventions such as sort
order; keyboard layout; and date, time, number, and currency formats. In
Windows, locales usually provide more information about cultural
conventions than about languages.
-
Locale-sensitive: Exhibiting
different behavior or returning different data, depending on the locale.
For example, the Win32 sorting functions return different results
depending on the locale parameter sent to each function.
-
National standard: A
linguistic rule, measurement, educational guideline, or technology-related
convention as defined by a government or an industry standards
organization. Examples include character sets, keyboard layouts, and some
cultural conventions, such as punctuation. Windows incorporates many
International Standards Organization (ISO) naming conventions.
-
Script: A system of
characters used to write one or several languages. Characters denote
isolated sounds, syllables, or word elements and are governed by a general
set of rules for creating text, such as default writing direction.
-
Separators: Symbols
used to separate items in a list, mark the thousands place in numbers, or
represent a decimal point. Different locales follow different conventions
for separators.
Geographically speaking, a locale is a place. In software
terms, a locale is a set of information associated with a place. Locale
information on Windows includes the name and identifier of the spoken language,
the script used to write the language, and cultural conventions.
Locale-sensitive standards include keyboard layouts, default paper sizes and
envelope sizes, common printers, common monitor resolutions, character sets or
character encoding ranges, text directionality (left-to-right or right-to-left,
horizontal or vertical), and input methods.
Windows supports a large set of locales, which it tags with
language and sub language pairs. The sub language generally corresponds to a
country/region. One way to think of this is in terms of the phrase "X language
as spoken in Y country/region." The way people speak or write a
particular language may not change dramatically from one country/region to the
next (German as spoken in Austria, Germany, and Switzerland, for example), but
cultural conventions and national standards often differ.
Microsoft Windows 95 supports 75 locales, and Microsoft
Windows NT 3.5 supports 50. Windows supports four Chinese-language locales
(Hong Kong SAR, China, the People's Republic of China, Singapore, and Taiwan),
six English locales (Australia, Britain, Canada, Ireland, New Zealand, and the
United States), and five French locales (Belgium, Canada, France [Standard],
Luxembourg, and Switzerland). In addition, Windows 95 supports 16 Arabic locales (Algeria, Bahrain, Egypt, Iraq,
Jordan, Kuwait, Lebanon, Libya, Morocco, Oman, Qatar, Saudi Arabia, Syria,
Tunisia, the United Arab Emirates, and Yemen).
Ambient Properties Object
An AmbientProperties object holds ambient information
from a container to suggest behavior to controls contained within the
container.
Remarks
Containers provide ambient properties in order to suggest
behavior to controls. As an example, BackColor is one of the standard
ambient properties; the container is suggesting what the well-behaved control
should set its BackColor property to.
The AmbientProperties
object’s properties are the ambient properties of the container. These
properties are read-only. Some ambient properties are standard, while others
are specific to certain containers. A control may access non-standard ambient
properties, but this will make the control container-specific. The control
should handle the case where an ambient property is not present in the current
container. When the control is compiled, Visual Basic has no way of knowing
what container-specific ambient properties may be available when the control is
run; therefore references to container-specific ambient properties will always
be late bound.
The AmbientProperties
object is not available when the Initialize event is raised; but is available
when the InitProperties event or ReadProperties event is raised.
The AmbientProperties object
has several standard properties:
-
The BackColor
property, a Color that contains the suggested interior color of the
contained control. The Visual Basic supplied default if the container does
not support this property is 0x80000005: the system color for a window
background.
-
The DisplayAsDefault
property, a Boolean that specifies if the control is the default control.
The Visual Basic supplied default if the container does not support this
property is False.
-
The DisplayName
property, a String containing the name that the control should display for
itself. The Visual Basic supplied default if the container does not
support this property is an empty string: "".
-
The Font property, a Font
object that contains the suggested font information of the contained
control. The Visual Basic supplied default if the container does not
support this property is MS Sans Serif 8.
-
The ForeColor
property, a Color that contains the suggested foreground color of the
contained control. The Visual Basic supplied default if the container does
not support this property is 0x80000008: the system color for window text.
-
The LocaleID
property, a Long that specifies the language and country of the user. The
Visual Basic supplied default if the container does not support this
property is the current system locale ID.
-
The MessageReflect
property, a Boolean that specifies if the container supports message
reflection. The Visual Basic supplied default if the container does not
support this property is False.
-
The Palette property,
a Picture object whose palette specifies the suggested palette for
the contained control.
-
The RightToLeft
property, a Boolean that indicates the text display direction and control
visual appearance on a bidirectional system. The Visual Basic supplied
default if the container does not support this property is False.
-
The ScaleUnits
property, a String containing the name of the coordinate units being used
by the container. The Visual Basic supplied default if the container does
not support this property is an empty string: "".
-
The ShowGrabHandles
property, a Boolean that specifies if the container handles the showing of
grab handles. The Visual Basic supplied default if the container does not
support this property is True.
-
The ShowHatching
property, a Boolean that specifies if the container handles the showing of
hatching. The Visual Basic supplied default if the container does not
support this property is True.
-
The SupportsMnemonics
property, a Boolean that specifies if the container handles access keys
for the control. The Visual Basic supplied default if the container does
not support this property is False.
-
The TextAlign property,
an enumeration that specifies how text is to be aligned. The Visual Basic
supplied default if the container does not support this property is 0 -
General Align.
-
The UserMode
property, a Boolean that specifies if the environment is in design mode or
end user mode. The Visual Basic supplied default if the container does not
support this property is True.
-
The UIDead property,
a Boolean that specifies if the User Interface is unresponsive. The Visual
Basic supplied default if the container does not support this property is False.
Note When you access the Font
property of the AmbientProperties object, you do not get a reference to the
container's font. Rather, you get a copy (clone) of the font. The reason for
this is that AmbientProperties.Font is commonly used to initialize a control's
font whenever an instance of the control is added to a container. If a
reference to the font itself were supplied, then changing the control's font
would change the container's font as well. If for some reason your control requires
a reference to the container's font, you can obtain it by accessing the
container through the Parent property of the User Control object.
LocaleID Property
Returns a long value that contains the Locale identification
(language and country) of the user.
Syntax
object. LocaleID
The LocaleID property syntax has this part:
|
Part
|
Description
|
|
Object
|
An object expression that evaluates to an
object in the Applies To list.
|
Remarks
The LocaleID ambient property contains identification
of the language and country of the current user. Using this identification, the
control can modify its behavior and appearance to fit the language and country.
This could be as simple as having error notifications in the language of the
user, to more complex modifications of property, method, and event names in the
language of the user.
If the container does not implement this ambient property,
the default value will be the current System LocaleID
Hijri Calendar Support
Microsoft Visual Basic 6.0 and Microsoft Access for Windows
95-Arabic Edition (Arabic
Access) or later contain support for both the Hijri and Gregorian calendars.
The foundation for this capability is a new Calendar property in VBA and extensions
to existing date-related VBA functions.
The following paragraphs describe how to perform
calendar-related functions using Visual Basic 6.0. Unlike Arabic Access, which has user interface and other
extensions beyond VBA to automate creation and management of databases based on
either calendar, Visual Basic requires application developers to
programmatically control the calendar associated with the entry, calculation,
and display of date information.
- The Gregorian calendar is the
default calendar for all date-related information and VBA functions in Arabic Visual Basic. To see or change the
calendar setting to be used by VBA date-related functions, use the new VBA
Calendar property. The syntax for Calendar property usage is:
[VBA.] Calendar [=value]
Items in brackets are optional. 'Value’ is one of the
following settings or values.
|
Setting
|
Value
|
Description
|
|
VbCalGreg
|
0
|
(Default) Gregorian calendar used for VBA date-related
calculations and formatting.
|
|
VbCalHijri
|
1
|
Hijri calendar used for VBA date-related calculations and
formatting.
|
-
When
the calendar is Gregorian, the Date tab in the Regional Settings Control
Panel of Microsoft Windows 95 determines the language of Gregorian month
names. When the calendar is Hijri, the language of Hijri month names is
always Arabic. Hijri month names are
always returned in full month name format.
- The behavior of all
date-related functions in VBA is determined by the Calendar property
setting. Functions affected by the Calendar property setting include
CDate, Date, DateAdd, DateDiff, DatePart, DateSerial, DateValue, Day,
Format, Month, Weekday and Year.
- The Visual Basic data type
Date does not change when the calendar changes. Values of type Date are
stored in a format that is not calendar-specific. This not only allows
date information to be readily formatted for a particular calendar but
also provides a convenient way to convert formatted date values from one
calendar to another.
Creating Middle East Database Applications
Middle East sort order support is
included in the Jet database engine to enable searching, sorting, and display
of Middle East and Latin text in a widely accepted collating sequence. Separate
sort orders are provided for Arabic and other
right-to-left Middle East languages.
Each Middle East sort order accommodates both Latin and the
appropriate Middle East language text. For example, the Arabic sort order describes the collating sequence for Latin
(primarily English and French) and Arabic
text.
Refer to the discussion of the “Create Database” method in
online Help for information about how to create a database with Middle East
collating order. Databases with Middle East sort orders are supported only when
Visual Basic 6.0 runs in a bi-directional 32-bit Windows environment.
Visual Basic 6.0 running in a non-bi-directional 32-bit
Windows environment cannot open Visual Basic 6.0 databases created with a
Middle East sort order. The database must be compacted with General sort order
in a bi-directional 32-bit Windows environment before it can be opened. This
can be done programmatically using the “Compact Database” method or
interactively using the Compact Database command of Microsoft Access 97 or
later.
Creating Bi-directional Help Files
Microsoft Visual Basic 6.0 includes
two Help Workshop applications that allow you to create Help topics in Windows
Help (Win Help) format or HTML format.
Win Help
The Help Compiler Workshop
included with Microsoft Visual Basic 6.0 can be used to create online Help
files that display bi-directional text. Following are additional tips for
creating Help files.
- The created files will
display bi-directional text correctly only when run in a bi-directional
32-bit Microsoft Windows environment.
- To build an online Help file
that displays bi-directional text, you must first create an .RTF format
file containing bi-directional text and formatting attributes such as
right-to-left paragraphs. Certain enabled-enabled word processors will
automatically add this information to .RTF format files they create.
Microsoft Word for Windows 95-Arabic
Edition or later and other Middle East versions of Microsoft Word for
Windows 95 are examples of such products.
- If the online Help file you
create will be run on a platform other than a bi-directional version of
32-bit Microsoft Windows, be sure to specify the appropriate LCID language
option in the Help project file. For example, if the file will be run on
the U.S. English version of Windows 95, choose English as the language of
the Help file.
- For each .RTF file compiled
with Help Compiler Workshop, all Latin text in right-to-left paragraphs
will have the same appearance regardless of the attributes that may have
been assigned during file editing. This limitation causes the affected
Latin text to be assigned the attributes (for example, font and font size)
of the Default Latin font. This limitation does not exist for
left-to-right paragraphs.
- Right-to-left tables, a
standard feature of word processors such as Arabic
Microsoft Word, are not a supported feature of Help Compiler Workshop.
Help Compiler Workshop will compile a right-to-left table as if it is a
left-to-right table.
HTML Help
The HTML Help Workshop is a worldwide-ready Help tool that
allows you to create Help topics in HTML as well as convert existing Win Help
files. The HTML Help Workshop has built-in bi-directional support; however, to
view topics containing bi-directional text your audience will need an
enabled-enabled Internet browser. Enabled-enabled versions of Microsoft
Internet Explorer 3.x and Microsoft Internet Explorer 4.x are available in
Middle East markets. Refer to external resources such as PSS; Read me files,
and subsidiary Websites for special tips on developing HTML Help topics.
Summary
Visual Basic 6.0 constitutes a very solid base for
developing Middle East Applications that are Arabic enabled. It supports
different types of applications starting from standalone, client-server
database, distributed all the way till Internet, and Intranet Applications. The
Arabic Enabling of applications developed using VB is one property away, just
change the RightToLeft property of a control and it is there.
Arabic Database applications were never easier because of
the full integration and connectivity between VB and Different Data Sources
including Microsoft Access, Microsoft SQL 7.
|