You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
### 2. Can't remove anything, even if now we know better
46
+
The most basic functionality would be adding a new formatter. Meantime ICU
47
+
added other formatters: time intervals, measurement, lists. But MessageFormat
48
+
did not keep up. And adding support for any of these new formats risks to break
49
+
existing tools.
50
+
51
+
### 1.2. Can't deprecate anything, even if now we know better
39
52
40
53
ICU is old, but also very popular (right now it is the core i18n library
41
54
for all major operating systems, and many products).
@@ -51,6 +64,23 @@ date/time parameters were added).
51
64
52
65
But the stability requirements prevent any major cleanup.
53
66
67
+
### 2. Some existing problems
68
+
* ICU added new formatters, but MessageFormat does not support them
69
+
* Combined selectors (select + plural) results in unreadable and error
70
+
prone nesting
71
+
* Select and plurals inside the message are difficult to translate because of
72
+
grammatical agreement requires words outside select / plural to change.
73
+
See https://en.wikipedia.org/wiki/Agreement_(linguistics)
74
+
* Patterns in the date / time / number placeholders are bad i18n, should use skeletons
75
+
* No official support for gender. It can be done with `select`, but it
76
+
is not the same thing (same as the difference between an `enum` and integer/strings). Developers can use masculine/feminine, masc/fem, male/female, etc.
77
+
* Formatting for “parameters” known at compile time
78
+
* Escaping with apostrophe is error prone. There is no reliable way to tell if
79
+
it has to be doubled or not.
80
+
* The # is used in plural format instead of {...}, but does not work for nesting unless the plural is the innermost selector. But named placeholders don't work
81
+
properly for plurals with offset. So there are 2 ways to do the same thing that work in 98% of cases, but in special situations only one of the ways works.
82
+
* Does not support inflections, and it would be hard to add without breaking existing tools.
83
+
54
84
### 3. Hard to map to the existing localization core structures
55
85
56
86
The format is not well supported by any major localization system. \
0 commit comments