Skip to content

New Features about Number.prototype.toLocaleString() for IE11 in win7 and 8, a lot of related new definitions (reopened again) #57

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 20 commits into from
Closed
62 changes: 59 additions & 3 deletions src/lib/definitions.js
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,9 @@ function getFHPaddingEntries(index)
var LOCALE_INFINITY = Feature.LOCALE_INFINITY;
var LOCALE_NUMERALS = Feature.LOCALE_NUMERALS;
var LOCALE_NUMERALS_EXT = Feature.LOCALE_NUMERALS_EXT;
var LOCALE_NUMERALS_IE11_WIN7 = Feature.LOCALE_NUMERALS_IE11_WIN7;
var LOCALE_NUMERALS_IE11_WIN7_8 = Feature.LOCALE_NUMERALS_IE11_WIN7_8;
var LOCALE_NUMERALS_IE11_WIN8 = Feature.LOCALE_NUMERALS_IE11_WIN8;
var LOCATION = Feature.LOCATION;
var MOZILLA = Feature.MOZILLA;
var NAME = Feature.NAME;
Expand Down Expand Up @@ -522,10 +525,22 @@ function getFHPaddingEntries(index)
var expr = '(' + number + ')[TO_LOCALE_STRING](' + locale + ')';
if (index != null)
{
if (index > 4)
if (index > 4 && index < 10)
{
var paddingBlock = R_PADDINGS[10 - index];
expr = '(' + paddingBlock + ' + ' + expr + ')[10]';
var padding;
var shiftedIndex;
if (index === 8)
{
padding = 3;
shiftedIndex = 11;
}
else
{
padding = 10 - index;
shiftedIndex = 10;
}
var paddingBlock = R_PADDINGS[padding];
expr = '(' + paddingBlock + ' + ' + expr + ')[' + shiftedIndex + ']';
}
else
expr += '[' + index + ']';
Expand Down Expand Up @@ -1321,6 +1336,8 @@ function getFHPaddingEntries(index)
'∞':
[
define('Infinity[TO_LOCALE_STRING]()', LOCALE_INFINITY),
define('Infinity[TO_LOCALE_STRING]("ja")[1]', LOCALE_NUMERALS_IE11_WIN7_8),
define('Infinity[TO_LOCALE_STRING]("ru")', LOCALE_NUMERALS_IE11_WIN8),
define('Infinity[TO_LOCALE_STRING]("ja")[SLICE_OR_SUBSTR]("-1")', JAPANESE_INFINITY),
define('Infinity[TO_LOCALE_STRING]("ja").at("-1")', JAPANESE_INFINITY, AT),
defineCharDefault(),
Expand Down Expand Up @@ -2640,21 +2657,60 @@ function getFHPaddingEntries(index)
useLocaleNumeralDefinition('ي', '"ar"', NaN, 1);
useLocaleNumeralDefinition('س', '"ar"', NaN, 2);
useLocaleNumeralDefinition('ر', '"ar"', NaN, 4, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ب', '"ar"', NaN, 4, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ق', '"ar"', NaN, 5, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ر', '"ar"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('م', '"ar"', NaN, 6, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ق', '"ar"', NaN, 6, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('م', '"ar"', NaN, 7, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ا', '"ar"', Infinity, 2, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ن', '"ar"', Infinity, 4, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ه', '"ar"', Infinity, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ة', '"ar"', Infinity, 8, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDigitDefinitions('"bn"', 0x09e6, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('č', '"cs"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('μ', '"el"', NaN, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('η', '"el"', NaN, 1, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('α', '"el"', NaN, 3, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ρ', '"el"', NaN, 4, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ι', '"el"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('θ', '"el"', NaN, 6, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ό', '"el"', NaN, 8, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ς', '"el"', NaN, 9, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('Ά', '"el"', Infinity, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('π', '"el"', Infinity, 1, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ε', '"el"', Infinity, 2, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ο', '"el"', Infinity, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDigitDefinitions('"fa"', 0x06f0);
useLocaleNumeralDefinition('٬', '"fa"', 1000, 1);
useLocaleNumeralDefinition('ن', '"fa"', NaN, 0, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ا', '"fa"', NaN, 1, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ع', '"fa"', NaN, 2, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('د', '"fa"', NaN, 3, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ל', '"he"', NaN, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('非', '"ja"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('数', '"ja"', NaN, 6, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('値', '"ja"', NaN, 7, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ė', '"lt"', Infinity, 7, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('ī', '"lv"', Infinity, 6, LOCALE_NUMERALS_IE11_WIN7_8);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm getting "∞" for Infinity.toLocaleString("lv") on Windows 8 with the latest updates.

useLocaleNumeralDefinition('ś', '"pl"', Infinity, 13, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('н', '"ru"', NaN, 0, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('е', '"ru"', NaN, 1, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ч', '"ru"', NaN, 3, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('и', '"ru"', NaN, 4, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('с', '"ru"', NaN, 5, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('л', '"ru"', NaN, 6, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('о', '"ru"', NaN, 7, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('б', '"ru"', Infinity, 0, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('е', '"ru"', Infinity, 1, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('с', '"ru"', Infinity, 2, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('к', '"ru"', Infinity, 3, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('н', '"ru"', Infinity, 5, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('ч', '"ru"', Infinity, 7, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('о', '"ru"', Infinity, 9, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('т', '"ru"', Infinity, 11, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('ь', '"ru"', Infinity, 12, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('正', '"zh"', Infinity, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('字', '"zh-cn"', NaN, 2, LOCALE_NUMERALS_IE11_WIN7_8);
}
)();
105 changes: 96 additions & 9 deletions src/lib/features.js
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,77 @@ var featureInfos =
},
includes: ['LOCALE_NUMERALS'],
},
LOCALE_NUMERALS_IE11_WIN7:
{
description:
'Localized number formatting exclusive to Interner Explorer 11 in Windows 7.\n' +
'This includes the letters in the Latvian string representation of Infinity ' +
'("bezgalība") and the letters in the Russian string representation of Infinity ' +
'("бесконечность").',
check:
function ()
{
var available =
checkLocaleNumeral('lv', Infinity, /^bezgalība/) &&
checkLocaleNumeral('ru', Infinity, /^бесконечность/);
return available;
},
includes: ['LOCALE_NUMERALS_IE11_WIN7_8'],
excludes: ['LOCALE_NUMERALS_IE11_WIN8'],
},
LOCALE_NUMERALS_IE11_WIN7_8:
{
description:
'Localized number formatting exclusive to Interner Explorer 11 in Windows 7 and 8.\n' +
'This includes all features of LOCALE_NUMERALS plus the output of the letters in the ' +
'second word of the Arabic string representation of NaN ("برقم"), the letters in the ' +
'Arabic string representation of Infinity ("+لا\xa0نهاية"), the letters in the the Czech ' +
'string representation of NaN ("Není\xa0číslo"), the letters in the the Greek string ' +
'representation of Infinity ("Άπειρο"), the letters in the Greek string representation ' +
'of NaN ("μη\xa0αριθμός"), the letters in the Hebrew string representation of NaN ' +
'("לא\xa0מספר"), the characters in the Japanese string representation of Infinity ' +
'("+∞"), the characters in the Japanese string representation of NaN ("NaN\xa0(非数値)"), ' +
'the letters in the Lithuanian string representation of Infinity ("begalybė"), the ' +
'letters in the Polish string representation of Infinity ("+nieskończoność"), the ' +
'characters in the Chinese string representation of Infinity ("正无穷大" or "正無窮大"), the ' +
'characters in the Simplified Chinese string representation of NaN ("非数字").',
check:
function ()
{
var available =
checkLocaleNumeral('ar', NaN, /^ليس.برقم/) &&
checkLocaleNumeral('ar', Infinity, /^\+لا.نهاية/) &&
checkLocaleNumeral('ar-td', 234567890.1, /^٢٣٤٬?٥٦٧٬?٨٩٠٫١/) &&
checkLocaleNumeral('cs', NaN, /^Není.číslo/) &&
checkLocaleNumeral('el', Infinity, /^Άπειρο/) &&
checkLocaleNumeral('el', NaN, /^μη.αριθμός/) &&
checkLocaleNumeral('he', NaN, /^לא.מספר/) &&
checkLocaleNumeral('ja', Infinity, /^\+∞/) &&
checkLocaleNumeral('ja', NaN, /^NaN \(非数値\)/) &&
checkLocaleNumeral('lt', Infinity, /^begalybė/) &&
checkLocaleNumeral('pl', Infinity, /^\+nieskończoność/) &&
checkLocaleNumeral('zh', Infinity, /^正/) &&
checkLocaleNumeral('zh-cn', NaN, /^非数字/);
return available;
},
includes: ['LOCALE_NUMERALS'],
excludes: ['LOCALE_NUMERALS_EXT'],
},
LOCALE_NUMERALS_IE11_WIN8:
{
description:
'Localized number formatting exclusive to Interner Explorer 11 in Windows 8.\n' +
'In this case, Latvian and Russian string representation of Infinity are both "∞".',
check:
function ()
{
var available = Infinity.toLocaleString('lv') === '∞' &&
Infinity.toLocaleString('ru') === '∞';
return available;
},
includes: ['LOCALE_NUMERALS_IE11_WIN7_8'],
excludes: ['LOCALE_NUMERALS_IE11_WIN7'],
},
LOCATION:
{
description:
Expand Down Expand Up @@ -1128,23 +1199,39 @@ var featureInfos =
versions: ['11'],
includes:
{
ANY_DOCUMENT: true,
DOCUMENT: false,
GMT: true,
JAPANESE_INFINITY: true,
LOCALE_NUMERALS: true,
PLAIN_INTL: true,
SHORT_LOCALES: true,
ANY_DOCUMENT: true,
DOCUMENT: false,
GMT: true,
JAPANESE_INFINITY: true,
LOCALE_NUMERALS: true,
LOCALE_NUMERALS_IE11_WIN7: true,
LOCALE_NUMERALS_IE11_WIN7_8: true,
PLAIN_INTL: true,
SHORT_LOCALES: true,
},
},
IE_11_WIN_10:
IE_11_WIN_8:
{
inherits: 'IE_11',
versions: ['11'],
compatibilityTag: 'on Windows 8',
compatibilityShortTag: 'W8',
includes:
{ LOCALE_NUMERALS_IE11_WIN7: false, LOCALE_NUMERALS_IE11_WIN8: true },
},
IE_11_WIN_10:
{
inherits: 'IE_11_WIN_8',
versions: ['11'],
compatibilityTag: 'on Windows 10',
compatibilityShortTag: 'W10',
includes:
{ LOCALE_INFINITY: true, LOCALE_NUMERALS: false, LOCALE_NUMERALS_EXT: true },
{
LOCALE_INFINITY: true,
LOCALE_NUMERALS_EXT: true,
LOCALE_NUMERALS_IE11_WIN7_8: false,
LOCALE_NUMERALS_IE11_WIN8: false,
},
},
NODE_0_10:
{
Expand Down
Loading
Loading