這是一個很酷的技巧(JSP的形式採取了朱利安和拼寫出來)手冊。我發現了一個Ask Tom article,它提供了更多細節。但基本上,jsp格式只能用於英文,但可以將其包裝在一個函數中,並將英語翻譯爲另一種語言。
例如,湯姆的spell_number功能如下:
create or replace
function spell_number(p_number in number)
return varchar2
as
type myArray is table of varchar2(255);
l_str myArray := myArray('',
' thousand ', ' million ',
' billion ', ' trillion ',
' quadrillion ', ' quintillion ',
' sextillion ', ' septillion ',
' octillion ', ' nonillion ',
' decillion ', ' undecillion ',
' duodecillion ');
l_num varchar2(50) default trunc(p_number);
l_return varchar2(4000);
begin
for i in 1 .. l_str.count
loop
exit when l_num is null;
if (substr(l_num, length(l_num)-2, 3) <> 0)
then
l_return := to_char(
to_date(
substr(l_num, length(l_num)-2, 3),
'J'),
'Jsp') || l_str(i) || l_return;
end if;
l_num := substr(l_num, 1, length(l_num)-3);
end loop;
return l_return;
end;
/
而對於一個版本法語(顯然)只是使用了一些法語翻譯spell_number:
create or replace
function spell_number_french(p_number in number)
return varchar2
as
begin
return replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(
replace(
lower(spell_number(p_number))
, 'duodecillion', 'bidecillion')
, 'quintillion' , 'cintillion')
, 'billion' , 'milliard')
, 'thousand' , 'mille')
, 'hundred' , 'cent')
, 'ninety' , 'quatre-vingt-dix')
, 'eighty' , 'quatre-vingt')
, 'seventy' , 'soixante-dix')
, 'sixty' , 'soixante')
, 'fifty' , 'cinquante')
, 'forty' , 'quarante')
, 'thirty' , 'trente')
, 'twenty' , 'vingt')
, 'nineteen' , 'dix-neuf')
, 'eighteen' , 'dix-huit')
, 'seventeen' , 'dix-sept')
, 'sixteen' , 'seize')
, 'fifteen' , 'quinze')
, 'fourteen' , 'quatorze')
, 'thirteen' , 'treize')
, 'twelve' , 'douze')
, 'eleven' , 'onze')
, 'ten' , 'dix')
, 'nine' , 'neuf')
, 'eight' , 'huit')
, 'seven' , 'sept')
, 'five' , 'cinq')
, 'four' , 'quatre')
, 'three' , 'trois')
, 'two' , 'deux')
, 'one' , 'un')
, 'dix-six' , 'seize')
, 'dix-cinq' , 'quinze')
, 'dix-quatre' , 'quatorze')
, 'dix-trois' , 'treize')
, 'dix-deux' , 'douze')
, 'dix-un' , 'onze')
, '-un ' , '-une ')
, 'un cent' , 'cent')
, 'un mille' , 'mille')
, 'une' , 'un');
end spell_number_french;
做一些類似的語言的東西你的選擇。請參閱Ask Tom鏈接進行更詳細的討論。
最後一段中的註釋非常重要。在某些語言中,名詞有「性別」(男性和女性),用於「百」和「千」等數字的詞語也沒有區別。不定性和定冠詞可能因不同性別而不同。所以可能是形成複數名詞的方式。簡單地說,將所有語言的單詞之間從英語翻譯爲另一種語言可能會失敗。 (也許甚至可以在美國英語和英語之間進行翻譯 - 即英式英語。) – mathguy