/** * Set locale of input data * * @param string $locale Name of locale, the same format of setlocale php function * * @return Localize Current instance of that class, for chaining methods */ public static function setLocale($locale) { $locales = array($locale . '.utf-8', $locale . '.UTF-8', $locale); $os = strtolower(php_uname('s')); if (strpos($os, 'windows') !== false) { $locales = array(Formats::$windowsLocaleMap[$locale]); } if (!setlocale(LC_ALL, $locales)) { throw new LocaleException("Locale {$locale} não disponível no seu sistema."); } if (!isset(Formats::$input[$locale])) { throw new LocaleException("Localização '{$locale}' não possuí formatação definida. Tente adicionar o formato antes de usa-lo."); } self::$currentLocale = $locale; return new static(); }
/** * Wrapper to Unlocalize::decimal * * Convert a localized decimal/float to USA numeric * format * * @param mixed $value A integer, float, double or numeric string input * * @return string $value */ private function __decimal(&$value) { $value = Unlocalize::setLocale($this->systemLang)->decimal($value); return true; }
public function testUsDecimals() { Unlocalize::setLocale('en_US'); $this->assertSame(null, Unlocalize::decimal(null)); $this->assertSame('', Unlocalize::decimal('')); $this->assertSame('0', Unlocalize::decimal('0')); $this->assertSame('1', Unlocalize::decimal('1')); $this->assertSame('23.32', Unlocalize::decimal(23.32)); $this->assertSame('25.32', Unlocalize::decimal('25.32')); $this->assertSame('0.5', Unlocalize::decimal('0.5')); $this->assertSame('1300.52', Unlocalize::decimal('1,300.52')); $this->assertSame('3965300.52', Unlocalize::decimal('3,965,300.52')); // Invalid decimal $this->assertEqual('3.abc', Unlocalize::decimal('3.abc')); }
public function testUsDecimals() { Unlocalize::setLocale('en_US'); $this->assertEqual(Unlocalize::decimal(null), null); $this->assertEqual(Unlocalize::decimal(''), ''); $this->assertEqual(Unlocalize::decimal(23.32), '23.32'); $this->assertEqual(Unlocalize::decimal('25.32'), '25.32'); $this->assertEqual(Unlocalize::decimal('0.5'), '0.5'); $this->assertEqual(Unlocalize::decimal('1,300.52'), '1300.52'); $this->assertEqual(Unlocalize::decimal('3,965,300.52'), '3965300.52'); // Invalid decimal $this->assertEqual(Unlocalize::decimal('3.abc'), '3.abc'); }