NAME Lingua::JA::Number - Translate Numbers into Japanese SYNOPSIS use Lingua::JA::Number; my @words = Lingua::JA::Number::to_string(1234); print join('-', @words), "\n"; # "sen-ni-hyaku-san-ju-yon" DESCRIPTION `Lingua::JA::Number' translates numbers into Japanese. Its `to_string' function takes a integer number and transforms it to the equivalent cardinal number *romaji* string. This'll show exactly how the number is pronounced in Japanese. Here's how the Japanese cardinal numbering scheme works: The numbers 1..10 translate to *ichi*, *ni*, *san*, *yon*, *go*, *roku*, *nana*, *hachi*, *kyu*. 10 is *yu*, 100 is *hyaku*, 1000 is *sen* and 10000 is *man*. Similar to English, multi-digit numbers are put together using decimal weights: 15 is 10 + 5, 723 is 7*100 + 2*10 + 3 and 6973 is 6*1000 + 9*100 + 7*10 + 3. Therefore, 15 is pronounced *yu-go*, 123 is *hyaku-ni-yu-san* and 6973 is *roku-san-kyu-hyaku-nana-san*. Like in all natural languages, there's a couple of exceptions: 300 isn't *san-hyaku* but *san-byaku*, 600 isn't *roku-hyaku* but *ro-p-pyaku* and 800 isn't *hachi-hyaku* but *ha-p-pyaku*. Also, in the thousands, 3000 is *san-zen* and 8000 is *ha-s-sen*. Also, there's more exceptions for numbers of 1,000,000,000,000 and greater. And, numbers aren't split into groups of 3 (like in 1,000,000) but in groups of 4, like in 100,0000, which is pronounced *hyaku-man* (100 times 10000). EXAMPLE Here's a quick script *jn* which will quiz you with random numbers (or *romaji* strings if invoked as *jn -r*) and reveal the solution after you hit the *Enter* key. It requires `Term::ReadKey', which is available from CPAN: #!/usr/bin/perl use warnings; use strict; use Term::ReadKey; use Getopt::Std; use Lingua::JA::Number qw(to_string); getopts('r', \ my %opts); my @length = (2, 3, 4); # Prompt for 2-,3- # and 4-digit numbers \$| = 1; while(1) { my \$digits = \$length[rand(@length)]; my \$ques = int rand(10**\$digits); next unless \$ques; my \$ans = join '-', to_string(\$ques); if(\$opts{r}) { (\$ans, \$ques) = (\$ques, \$ans); } print "\$ques ... "; ReadMode("noecho"); ReadLine(0); ReadMode("normal"); print \$ans, "\n"; } BUGS I've just taken a beginner's Japanese class, so bear with me. Bug reports are most welcome. Also, I'm planning on providing additional modules `Lingua::JA::Number::Tall', `Lingua::JA::Number::Flat', `Lingua::JA::Number::Person', `Lingua::JA::Number::Misc' to cover the idiosyncrasies of japanese counting of tall and flat things, persons and miscellaneous items. AUTHOR Mike Schilli COPYRIGHT Copyright (c) 2001 Mike Schilli. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.