Skip to Main Content

Breadcrumb

Question and Answer

Tom Kyte

Thanks for the question, James.

Asked: August 17, 2000 - 5:46 am UTC

Last updated: June 13, 2006 - 10:33 am UTC

Version: 8.0.5

Viewed 10K+ times! This question is

You Asked

Hi, Tom

I am wondering is it possible to have a oracle database that stores data in the database in
english, but displays the data in the localized language?

Or can we have a database that stores all data for example product data
in various languages.

I would like to have a hub and spoke architect such that the spokes are inn local languages
but they update the hub in english, i.e. the spoke data is converted to english and then updated
into the hub.

Are you aware of any multi-language software for use with oracle?

Thanks in advance!

James

and Tom said...


Oracle can show error messages and such in different languages but the data YOU put in comes out the way you put it in there.

You can have a database store text in more then one language -- its very common. You must use a character set that supports all of your intended languages (UTF8 supports them all including multi-byte).

No, I am not of translation software -- but -- if you found one, it is easy enough to integrate with the database using EXTERNAL procedures (you can make it so that a PLSQL routine calls this external code as if it were plsql so a trigger could store multiple translations of the same text in the database).



Rating

  (7 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

utf8

Miguel Martinez, September 05, 2001 - 12:52 pm UTC

I'm looking for an answer about what character set i'm using and what characters are available on my database, This answer help me to understand utf8 accept all the characters.

thanks!!!

multi-language database

Clara Riva, May 23, 2002 - 4:38 am UTC

I think that the answer to the question is incomplete because it does not gives hints on how to design a multilanguage database. The only hint given is the characterset that has to be used to implement a multilanguage database.



Abdel Ghani Al Masri, September 08, 2002 - 10:15 am UTC

The answer from Tom is very useful, now oracle through utf8 supports multi languages, which means you can write into any language in the world with the same characterset utf8, no need to worry about the charachterset when you use exporting and importing -if you are using utf8-, but to design multilanguage database you should have multifields in your tables, every field contains specified language, for example i want my syetm to support English, French,and Arabic then when i create a table i do the following:
create table x(x_code number(2),
x_desc_english varchar2(50),
x_desc_french varchar2(50),
x_desc_arabic varchar2(50))
now the table contains three languages, the user can insert data in 3 languages and browse to the data in any language


Coding in other language

Reader, October 09, 2003 - 9:13 am UTC

Hello,
Since Im from english speaking country I dont have any idea of Oracle for Non-English. Regarding storing of data in database I could get it. How they query in Japanese or French or any other language ? I mean Select * from TabName. Is all the commands available in French or Japanese? And for how many languages Oracle supports. I mean the SQL, PL/SQL and other tools.



Tom Kyte
October 09, 2003 - 5:45 pm UTC

they use SELECT just like we do.

it is the DATA stored in the DATABASE that is in the foreign language.

Their error messages from Oracle (which is just data) is in a foriegn language

but they use select insert update delete....

Q on multi language

Anil Pant, December 31, 2003 - 2:13 am UTC

Hi,
I've gone thru ur previous response about multi language. We've an existing database in English and client wants to view the data in French also. It means that the same database will be used for both English and French. The front end application is developed in PowerBuilder. While logging in the front end application we'll have an drop down saying English or French. If the user selects French then he'll see all the data in French. He may Insert or Update.
If the user selects English then its in English. But the data will be stored in English only. We cannot afford to add columns. We're working on Oracle 9 on Win NT. What we 're thinking is dynamically we'll change the NLS_Language parameter to French or English for that session. Are we on the correct path? Do we need to make some changes at the O/S level? I wud appreciate if u give some suggestions ?


Tom Kyte
December 31, 2003 - 9:38 am UTC

umm, there is no builtin universal translator in the database.

we support YOU storing the same text in multiple languages.
we support presenting Oracle messages to you in multiple languages (cause we've stored them in multiple languages)

If you want to show your applications text in french and english, the only thing you can do is store both french and english text (it will require a schema modification)

and further -- if the user enters text in english, thats is. You won't be seeing that in french (or vice versa) unless someone comes along and translates it.

So, you can have all of your boiler plate text in both languages (definite schema change!)

But, the data that is input will in general be in a single language -- unless part of your software offering is a person who sits there and does translations all day (don't even think that you can use software for this except for the simpliest of text and even then....)

Multilanguage Database

A reader, December 31, 2003 - 10:15 am UTC

Yes, You can store data in any language. Use UTF8 character set or a characterset specified in the NLS specification for a specific language

Can I change my database's character set to UTF8 ?

Sinan Topuz, June 12, 2006 - 11:29 am UTC

Tom,

I have a production database which has the following character settings and I would like to store and display Japanese and Traditional Chinese in the same database. I was wondering if it is possible to change the existing character set to UTF8 since the comments above mentioned that a database needs to have UTF8 character set in order to be able to store multiple languages (different character sets).

Thank you.

SQL> select name c1, value$ c1 from sys.props$;

C1                             C1
------------------------------ ------------------------------
DICT.BASE                      2
DBTIMEZONE                     0:00
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               WE8ISO8859P1
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN

C1                             C1
------------------------------ ------------------------------
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM ZH:T                               ZM

NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_NCHAR_CHARACTERSET         WE8ISO8859P1
GLOBAL_DB_NAME                 xxx.xxx.xxx

C1                             C1
------------------------------ ------------------------------
EXPORT_VIEWS_VERSION           8
NLS_RDBMS_VERSION              8.1.7.4.1 

More to Explore

PL/SQL demos

Check out more PL/SQL tutorials on our LiveSQL tool.

PL/SQL docs

PL/SQL reference manual from the Oracle documentation library