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.