This should fix locale information for specific languages. It’s not perfect yet though.

This commit is contained in:
James Cole 2017-01-08 16:55:02 +01:00
parent 8a00101470
commit 8208d44466
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
3 changed files with 32 additions and 9 deletions

View File

@ -23,7 +23,6 @@ use Illuminate\Contracts\Auth\Guard;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Navigation;
use NumberFormatter;
use Preferences;
use Session;
use View;
@ -111,20 +110,43 @@ class Range
$monthAndDayFormat = (string)trans('config.month_and_day');
$dateTimeFormat = (string)trans('config.date_time');
$defaultCurrency = Amount::getDefaultCurrency();
$localeconv = localeconv();
// change localeconv to a new array:
$numberFormatter = numfmt_create($lang, NumberFormatter::CURRENCY);
$localeconv = [
'mon_decimal_point' => $numberFormatter->getSymbol($numberFormatter->getAttribute(NumberFormatter::DECIMAL_SEPARATOR_SYMBOL)),
'mon_thousands_sep' => $numberFormatter->getSymbol($numberFormatter->getAttribute(NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL)),
'frac_digits' => $defaultCurrency->decimal_places,
// decimal places is overruled by TransactionCurrency
$localeconv['frac_digits'] = $defaultCurrency->decimal_places;
$positiveSpace = ' ';
$negativeSpace = ' ';
// positive number:
if (!$localeconv['p_sep_by_space']) {
$positiveSpace = '';
}
// negative number:
if (!$localeconv['n_sep_by_space']) {
$negativeSpace = '';
}
// by default, put symbols before:
$accounting = [
'pos' => '%s' . $positiveSpace . '%v',
'neg' => '%s' . $negativeSpace . '-%v',
'zero' => '%s' . $positiveSpace . '%v',
];
// but might be after:
if (!$localeconv['n_cs_precedes']) {
$accounting['neg'] = '-%v' . $negativeSpace . '%s';
}
if (!$localeconv['p_cs_precedes']) {
$accounting['pos'] = '%v' . $negativeSpace . '%s';
$accounting['zero'] = '%v' . $negativeSpace . '%s';
}
View::share('monthFormat', $monthFormat);
View::share('monthAndDayFormat', $monthAndDayFormat);
View::share('dateTimeFormat', $dateTimeFormat);
View::share('language', $lang);
View::share('localeconv', $localeconv);
View::share('defaultCurrency', $defaultCurrency);
View::share('accountingConfig', $accounting);
}
/**

View File

@ -7,7 +7,7 @@
*
* See the LICENSE file for details.
*/
/** global: moment, dateRangeConfig, accounting, currencySymbol, mon_decimal_point, frac_digits, showFullList, showOnlyTop, mon_thousands_sep */
/** global: moment, accountingConfig, dateRangeConfig, accounting, currencySymbol, mon_decimal_point, frac_digits, showFullList, showOnlyTop, mon_thousands_sep */
$(function () {
@ -112,7 +112,7 @@ function currencySelect(e) {
accounting.settings = {
currency: {
symbol: currencySymbol, // default currency symbol is '$'
format: "%s %v", // controls output: %s = symbol, %v = value/number (can be object: see below)
format: accountingConfig, // controls output: %s = symbol, %v = value/number (can be object: see below)
decimal: mon_decimal_point, // decimal point separator
thousand: mon_thousands_sep, // thousands separator
precision: frac_digits // decimal places

View File

@ -208,6 +208,7 @@
var noDataForChart = '{{ trans('firefly.no_data_for_chart')|escape }}';
var showFullList = '{{ trans('firefly.show_full_list') }}';
var showOnlyTop = '{{ trans('firefly.show_only_top',{number:listLength}) }}';
var accountingConfig = {{ accountingConfig|json_encode|raw }};
</script>