TimeTrex Community Edition v16.2.0
This commit is contained in:
331
classes/pear/Numbers/Words/lang.pt_BR.php
Normal file
331
classes/pear/Numbers/Words/lang.pt_BR.php
Normal file
@@ -0,0 +1,331 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4: */
|
||||
//
|
||||
// +----------------------------------------------------------------------+
|
||||
// | PHP version 4 |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Copyright (c) 1997-2003 The PHP Group |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | This source file is subject to version 3.0 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at through the world-wide-web at |
|
||||
// | http://www.php.net/license/3_0.txt. |
|
||||
// | If you did not receive a copy of the PHP license and are unable to |
|
||||
// | obtain it through the world-wide-web, please send a note to |
|
||||
// | license@php.net so we can mail you a copy immediately. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Authors: Marcelo Subtil Marcal <jason@conectiva.com.br>, Mario H.C.T. <mariolinux@mitus.com.br>
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: lang.pt_BR.php,v 1.4 2005/09/18 19:52:22 makler Exp $
|
||||
//
|
||||
// Numbers_Words class extension to spell numbers in Brazilian Portuguese language.
|
||||
//
|
||||
|
||||
|
||||
/**
|
||||
* Class for translating numbers into Brazilian Portuguese.
|
||||
*
|
||||
* @author Marcelo Subtil Marcal <jason@conectiva.com.br>
|
||||
* @package Numbers_Words
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include needed files
|
||||
*/
|
||||
require_once "Numbers/Words.php";
|
||||
|
||||
/**
|
||||
* Class for translating numbers into Brazilian Portuguese.
|
||||
*
|
||||
* @author Marcelo Subtil Marcal <jason@conectiva.com.br>
|
||||
* @package Numbers_Words
|
||||
*/
|
||||
class Numbers_Words_pt_BR extends Numbers_Words
|
||||
{
|
||||
|
||||
/**
|
||||
* Locale name
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
var $locale = 'pt_BR';
|
||||
|
||||
/**
|
||||
* Language name in English
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
var $lang = 'Brazilian Portuguese';
|
||||
|
||||
/**
|
||||
* Native language name
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
var $lang_native = 'Portugu<67>s Brasileiro';
|
||||
|
||||
/**
|
||||
* The word for the minus sign
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $_minus = 'menos';
|
||||
|
||||
/**
|
||||
* The word separator
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $_sep = ' ';
|
||||
|
||||
/**
|
||||
* The array containing the digits (indexed by the digits themselves).
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $_unidade = array(
|
||||
'',
|
||||
'um',
|
||||
'dois',
|
||||
'tr<74>s',
|
||||
'quatro',
|
||||
'cinco',
|
||||
'seis',
|
||||
'sete',
|
||||
'oito',
|
||||
'nove'
|
||||
);
|
||||
|
||||
/**
|
||||
* The array containing numbers 10-19.
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $_dezena10 = array(
|
||||
'dez',
|
||||
'onze',
|
||||
'doze',
|
||||
'treze',
|
||||
'quatorze',
|
||||
'quinze',
|
||||
'dezesseis',
|
||||
'dezessete',
|
||||
'dezoito',
|
||||
'dezenove'
|
||||
);
|
||||
|
||||
/**
|
||||
* The array containing numbers for 10,20,...,90.
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $_dezena = array(
|
||||
'',
|
||||
'dez',
|
||||
'vinte',
|
||||
'trinta',
|
||||
'quarenta',
|
||||
'cinquenta',
|
||||
'sessenta',
|
||||
'setenta',
|
||||
'oitenta',
|
||||
'noventa'
|
||||
);
|
||||
|
||||
/**
|
||||
* The array containing numbers for hundrets.
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $_centena = array(
|
||||
'',
|
||||
'cem',
|
||||
'duzentos',
|
||||
'trezentos',
|
||||
'quatrocentos',
|
||||
'quinhentos',
|
||||
'seiscentos',
|
||||
'setecentos',
|
||||
'oitocentos',
|
||||
'novecentos'
|
||||
);
|
||||
|
||||
/**
|
||||
* The sufixes for exponents (singular and plural)
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $_expoente = array(
|
||||
'',
|
||||
'mil',
|
||||
'milh<6C>o',
|
||||
'bilh<6C>o',
|
||||
'trilh<6C>o',
|
||||
'quatrilh<6C>o',
|
||||
'quintilh<6C>o',
|
||||
'sextilh<6C>o',
|
||||
'setilh<6C>o',
|
||||
'octilh<6C>o',
|
||||
'nonilh<6C>o',
|
||||
'decilh<6C>o',
|
||||
'undecilh<6C>o',
|
||||
'dodecilh<6C>o',
|
||||
'tredecilh<6C>o',
|
||||
'quatuordecilh<6C>o',
|
||||
'quindecilh<6C>o',
|
||||
'sedecilh<6C>o',
|
||||
'septendecilh<6C>o'
|
||||
);
|
||||
|
||||
/**
|
||||
* The currency names (based on the below links,
|
||||
* informations from central bank websites and on encyclopedias)
|
||||
*
|
||||
* @var array
|
||||
* @link http://30-03-67.dreamstation.com/currency_alfa.htm World Currency Information
|
||||
* @link http://www.jhall.demon.co.uk/currency/by_abbrev.html World currencies
|
||||
* @link http://www.shoestring.co.kr/world/p.visa/change.htm Currency names in English
|
||||
* @access private
|
||||
*/
|
||||
var $_currency_names = array(
|
||||
'BRL' => array(array('rea'), array('centavo')) );
|
||||
|
||||
/**
|
||||
* The default currency name
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
var $def_currency = 'BRL'; // Real
|
||||
|
||||
// {{{ toWords()
|
||||
|
||||
/**
|
||||
* Converts a number to its word representation
|
||||
* in Brazilian Portuguese language
|
||||
*
|
||||
* @param integer $num An integer between -infinity and infinity inclusive :)
|
||||
* that need to be converted to words
|
||||
*
|
||||
* @return string The corresponding word representation
|
||||
*
|
||||
* @access public
|
||||
* @author Marcelo Subtil Marcal <jason@conectiva.com.br>
|
||||
* @since PHP 4.2.3
|
||||
*/
|
||||
function toWords($num) {
|
||||
|
||||
$ret = '';
|
||||
|
||||
$num = trim($num);
|
||||
|
||||
if (substr($num, 0, 1) == '-') {
|
||||
$ret = $this->_sep . $this->_minus;
|
||||
$num = substr($num, 1);
|
||||
}
|
||||
|
||||
// strip excessive zero signs and spaces
|
||||
$num = trim($num);
|
||||
$num = preg_replace('/^0+/','',$num);
|
||||
|
||||
while (strlen($num) % 3 != 0) {
|
||||
$num = "0" . $num;
|
||||
}
|
||||
|
||||
$num = ereg_replace("(...)", "\\1.", $num);
|
||||
$num = ereg_replace("\.$", "", $num);
|
||||
|
||||
$inteiro = explode(".", $num);
|
||||
|
||||
for ($i = 0; $i < count($inteiro); $i++) {
|
||||
$ret .= (($inteiro[$i] > 100) && ($inteiro[$i] < 200)) ? "cento" : $this->_centena[$inteiro[$i][0]];
|
||||
$ret .= ($inteiro[$i][0] && ($inteiro[$i][1] || $inteiro[$i][2])) ? " e " : "";
|
||||
$ret .= ($inteiro[$i][1] < 2) ? "" : $this->_dezena[$inteiro[$i][1]];
|
||||
$ret .= (($inteiro[$i][1] > 1) && ($inteiro[$i][2])) ? " e " : "";
|
||||
$ret .= ($inteiro > 0) ? ( ($inteiro[$i][1] == 1) ? $this->_dezena10[$inteiro[$i][2]] : $this->_unidade[$inteiro[$i][2]] ) : "";
|
||||
$ret .= $inteiro[$i] > 0 ? " " . ($inteiro[$i] > 1 ? str_replace("<EFBFBD>o", "<EFBFBD>es", $this->_expoente[count($inteiro)-1-$i]) : $this->_expoente[count($inteiro)-1-$i]) : "";
|
||||
|
||||
if ($ret && (isset($inteiro[$i+1]))) {
|
||||
if ($inteiro[$i+1] != "000") {
|
||||
$ret .= ($i+1) == (count($inteiro)-1) ? " e " : ", ";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $ret ? " $ret" : " zero";
|
||||
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ toCurrencyWords()
|
||||
|
||||
/**
|
||||
* Converts a currency value to its word representation
|
||||
* (with monetary units) in Portuguese language
|
||||
*
|
||||
* @param integer $int_curr An international currency symbol
|
||||
* as defined by the ISO 4217 standard (three characters)
|
||||
* @param integer $decimal A money total amount without fraction part (e.g. amount of dollars)
|
||||
* @param integer $fraction Fractional part of the money amount (e.g. amount of cents)
|
||||
* Optional. Defaults to false.
|
||||
* @param integer $convert_fraction Convert fraction to words (left as numeric if set to false).
|
||||
* Optional. Defaults to true.
|
||||
*
|
||||
* @return string The corresponding word representation for the currency
|
||||
*
|
||||
* @access public
|
||||
* @author Mario H.C.T. <mariolinux@mitus.com.br>
|
||||
* @since Numbers_Words 0.10.1
|
||||
*/
|
||||
function toCurrencyWords($int_curr, $decimal, $fraction = false, $convert_fraction = true) {
|
||||
$int_curr = strtoupper($int_curr);
|
||||
if (!isset($this->_currency_name[$int_curr])){
|
||||
$int_curr = $this->def_currency;
|
||||
}
|
||||
$curr_names = $this->_currency_names[$int_curr];
|
||||
$ret = trim($this->toWords($decimal));
|
||||
$lev = ($decimal == 1) ? 0 : 1;
|
||||
if ($lev > 0) {
|
||||
if (count($curr_names[0]) > 1) {
|
||||
$ret .= $this->_sep . $curr_names[0][$lev];
|
||||
} else {
|
||||
if ($int_curr == "BRL")
|
||||
$ret .= $this->_sep . $curr_names[0][0] . 'is';
|
||||
else
|
||||
$ret .= $this->_sep . $curr_names[0][0] . 's';
|
||||
}
|
||||
} else {
|
||||
if ($int_curr == "BRL")
|
||||
$ret .= $this->_sep . $curr_names[0][0] . 'l';
|
||||
else
|
||||
$ret .= $this->_sep . $curr_names[0][0];
|
||||
}
|
||||
|
||||
if ($fraction !== false) {
|
||||
if ($int_curr == "BRL")
|
||||
$ret .= $this->_sep . 'e';
|
||||
|
||||
if ($convert_fraction) {
|
||||
$ret .= $this->_sep . trim($this->toWords($fraction));
|
||||
} else {
|
||||
$ret .= $this->_sep . $fraction;
|
||||
}
|
||||
$lev = ($fraction == 1) ? 0 : 1;
|
||||
if ($lev > 0) {
|
||||
if (count($curr_names[1]) > 1) {
|
||||
$ret .= $this->_sep . $curr_names[1][$lev];
|
||||
} else {
|
||||
$ret .= $this->_sep . $curr_names[1][0] . 's';
|
||||
}
|
||||
} else {
|
||||
$ret .= $this->_sep . $curr_names[1][0];
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
// }}}
|
||||
}
|
||||
|
||||
?>
|
Reference in New Issue
Block a user