1C:Enterprise the localization issues
Localization of the platform
Localization support by functionality of platform
The
localization support of 1C:Enterprise platform allows using various
interface languages when developing an applied solution, also at user's
work. Besides, there are means for international data/time/numbers
representation and written form for numbers and periods (spelling).
All applied solution configuration texts are stored in a database in UNICODE
format. This format allows using characters from different languages at
a time. So a user can enter data in various languages, for example if a
product item description should include some text in the language of
the manufacturer. At that the system allows performing filtration and
sorting across such texts.
International dates and numbers support for most European languages
There
is a capability to adjust a particular applied solution to use locales
specific for a particular country. At that, regional settings used in a
database may be set by an administrator, other than the default system
settings (see the picture).
If none of the properties is set, the locales are defined by the operating system settings.
Language
(country)' field defines a set of predefined locales for a certain
country. Selection of a country provides proper formatting of dates,
time, numbers and strings collator functionality for the country. At
present, the following locales are supported: |
Afrikaans (South Africa) Belorussian (Belorussia) Bulgarian (Bulgaria) Catalan (Spain) Czech (Czech Republic) Danish (Denmark) German (Austria) German (Switzerland) German (Germany) German (Liechtenstein) German (Luxemburg) Greek (Greece) English (Australia) English (Belize) English (Canada) English (Great Britain) English (Ireland) English (Jamaica) English (New Zeland) English (Philippines) English (Trinidad and Tobago) English (USA) English (South Africa) English (Zimbabwe) Spanish (Argentina) Spanish (Bolivia) Spanish (Chile) |
Spanish (Colombia) Spanish (Costa Rica) Spanish (Dominican Rep.) Spanish (Ecuador) Spanish (Spain) Spanish (Spain, traditional sort) Spanish (Guatemala) Spanish (Honduras) Spanish (Mexico) Spanish (Nicaragua) Spanish (Panama) Spanish (Peru) Spanish (Puerto Rico) Spanish (Paraguay) Spanish (El Salvador) Spanish (Uruguay) Spanish (Venezuela) Estonian (Estonia) Basque (Spain) Finnish (Finland) Faroese (Faroe Islands) French (Belgium) French (Canada) French (Switzerland) French (France) French (Luxemburg) French (Monaco) |
Croatian (Croatia) Hungarian (Hungary) Indonesian (Indonesia) Icelandic (Island) Italian (Switzerland) Italian (Italy) Kazakh (Kazakhstan) Lithuanian (Lithuania) Lettish (Latvia) Dutch (Belgium) Dutch (Netherlands) Norwegian (Bokmal)(Norway) Norwegian (Nynorsk)(Norway) Polish (Poland) Portuguese (Brazil) Portuguese (Portugal) Roumanian (Rumania) Russian (Russia) Slovak (Slovakia) Slovenian (Slovenia) Albanian (Albania) Serbian (Cyrillic alphabet) (Serbia) Serbian (Roman alphabet) (Serbia) Swedish (Finland) Swedish (Sweden) Turkish (Turkey) Ukrainian (Ukraine) |
Bottom pane of the window shows representation of formats according to a locale selected.
If no specific formats for date/time/numbers are specified, default settings for a defined country are used. Two variants of the embedded language

All
embedded language operators have Russian and English variants, both are
accepted by the system equally without any special settings.
No additional modifications during localization process is required.
Documentation and Syntax Assistant contain English syntax and synonyms for all constructions of the embedded language.
Internationalization support by the embedded language
The embedded language itself provides a number of means for applied solutions to be multi-lingual.
There
are functions in the language that return text strings according with
the language settings specified. So an applied solution can generate
texts in languages according to user's preferences.
NStr function
The
function returns a string in the user's language or the main language
of the applied solution, taking it from a predefined set of strings in
different languages. For example, the string
Message ( NStr ( ru = !; en = Good Evening! , en ));
results in the following:

PeriodPresentation function
This
function allows building a period description, defined as start date
and end date in one of the supported languages. Execution of the code:
CurrentDate = CurrentDate ();
BegOfPeriod = BegOfMonth ( CurrentDate );
EndOfPeriod = EndOfMonth ( CurrentDate );
Message ( PeriodPresentation ( BegOfPeriod , EndOfPeriod , L = en_US ));
Message ( PeriodPresentation ( BegOfPeriod , EndOfPeriod , L = uk_UA ));
results in the following:

At present, this functionality is provided for the following languages:
- English
- Estonian
- Byelorussian
- Bulgarian
- Finnish
- German
- Georgian
- Kazakh
- Latvian
- Lithuanian
- Romanian
- Russian
- Ukrainian
- Vietnamese
NumberInWords function
This
function generates a written representation of a number in one of the
supported languages, according to a formatting string. Here is an
example:
Message ( NumberInWords( 1457.25 , L=en_US , dollar, dollars, cent, cents, 2 ));
Result of this function looks like the following:

At present, the number spelling functionality is provided for the following languages:
- English
- Estonian
- Byelorussian
- Bulgarian
- Finnish
- German
- Georgian
- Kazakh
- Latvian
- Lithuanian
- Romanian
- Russian
- Ukrainian
- Vietnamese
Format function
This
function formats values representation for convenient reading. The
representation may reflect standard format of a selected language or
country. For example, boolean, numeric and date type values:
Message ( Format (True, "L=en_US ));
Message ( Format (True, "L=uk_UA ) + Chars.CR );
Message ( Format ( 1475.25 , "L=en_US ));
Message ( Format ( 1475.25 , "L=uk_UA ) + Chars.CR );
Message ( Format ( '20010520105635' , "L=en_US ));
Message ( Format ( '20010520105635' , "L=uk_UA ) + Chars.CR );
will result the following representation in English and Ukrainian:

With this function one can use a values representation format from one of 80+ locales.
Getting a template in a language specified
When
a developer creates output report forms from templates of text and
spreadsheet documents, he can specify a language for the template; the
language may differ from the one used by current business application
user.
The platform interface
When
developing an applied solution one can choose GUI language. At present,
the platform interface includes the following versions:
- English
- Bulgarian
- German
- Georgian
- Kazakh
- Latvian
- Lithuanian
- Romanian
- Russian
- Ukrainian
- Vietnamese
and more to come.
Localization of the platform into other languages
Process of localization of the platform into other languages includes the following parts:
-
Localization of date/time/number formats according to formats of the
target locales. They must be formatted according with the standards
accepted in the particular country (region). Localization of string collator functionality. Strings in reports and forms must be sorted properly. Localization of spelling totals and periods functionality.
These
three localization parts are always done by 1C developers on the basis
of formalized information on wording algorithms for spelling numbers,
provided by the company partner. The partner can only check if they
work properly setting a required Infobase Regional Settings, after a test release of localized platform.
However, before going on with the localization process, localizer
must make sure there is a proper locale code in Database Regional
Settings window. Presence of a proper code means, that existing
platform functionality supports formats and sorting order according to
those accepted in the target country.
ATTENTION! If there is no proper country in the Country list of
the window, one has to try to find another country with proper format
settings, then to check sorting order for that country. Results of
these checks, together with detailed explanations of the check
procedures done, should be immediately sent to 1C before going on
further with localization process!
Localization of the platform interface
The platform interface must be readable in standard user conditions without special (3rd party's) software support.
This work is usually done by 1C Company's partners and implies mostly translation work.
For this work to be done there is a resource database (in 1C:Enterprise 8 format) that is used by our partners.
They
unload resources from the database into external files and then use
special localization tools (also provided) to localize them.
For
localization purpose, the database and the localization tools can be
sent to our partners by e-mail. It's required the partner to have
1C:Enterprise 8 platform, to open the resource database.
Localizable resources include:
- Pictures. Can be edited with any graphic editor. Templates are localized with 'hlpedit' utility.
-
Help - is localized with 'hlpedit' utility, too. When translating, it's
suggested to go through the tree in 'Files' tab, translating each file
included into a particular .hbk file. Going through "Contents" cannot
guarantee all help files will be translated. Strings
translated directly in the database itself, without unloading into
external files. Can be accessed through 'Operations - Catalog
Strings' menu items. Forms are localized with 'FormDes' utility.
Help resources can also be exported into .xml format, edited with 3rd party software and then imported back into resource files.
After translation of resources, they are uploaded back into the database and in its turn it's sent back to 1C.
If these points are completed and checked for proper functioning, the platform is considered localized.
Localization of the installation wizard
The
installer generates several messages during installation process. To be
represented in a proper language, these messages should be localized as
well. Since there may be several localization processes going at a
time, for different locales, these strings are sent separately by 1C,
as the localization process goes.
The platform localization process management
1C
Company provides all relevant materials and the platform localization
technology to its partners (contractor). The partner performs the
localization and sends a resulted database back to 1C. 1C builds in the
localized resources with the main release and produces a localized
version of the platform.
One should also take into account,
that localization, like development, is an on-going process. Help and
forms are updated as the development moves on, and localizer is
responsible for keeping localized version up-to-date, even after a
format software release. All contract terms with localizer are detailed
in a separate Localization Agreement, signed between a localizing
entity (a company) and 1C. To the top