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 <m@perlmeister.com> 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.