File tree Expand file tree Collapse file tree 5 files changed +37
-13
lines changed
Expand file tree Collapse file tree 5 files changed +37
-13
lines changed Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ let make = () => {
1414
1515 <ReactIntl . IntlProvider
1616 locale= {locale-> Locale . toString}
17- messages= {locale-> Locale . toMessages -> ReactIntl . messagesArrayToDict }>
17+ messages= {locale-> Locale . translations -> Util . translationsToDict }>
1818 <Page locale setLocale= {locale => locale-> SetLocale -> dispatch} />
1919 </ReactIntl . IntlProvider >;
2020};
Original file line number Diff line number Diff line change 1- [@ bs . module ] external en : ReactIntl . jsonMessages = "./translations/en.json" ;
2- [@ bs . module ] external ru : ReactIntl . jsonMessages = "./translations/ru.json" ;
1+ [@ bs . module "./translations/en.json" ]
2+ external en : array (ReactIntl . translation ) = "default" ;
3+ [@ bs . module "./translations/ru.json" ]
4+ external ru : array (ReactIntl . translation ) = "default" ;
35
46type locale =
57 | En
@@ -12,7 +14,7 @@ let toString =
1214 | En => "en"
1315 | Ru => "ru" ;
1416
15- let toMessages =
17+ let translations =
1618 fun
1719 | En => en
1820 | Ru => ru;
Original file line number Diff line number Diff line change @@ -17,17 +17,17 @@ let make = (~locale, ~setLocale) => {
1717 </button >
1818 </div >
1919 <div className= "message" >
20- <ReactIntl . DefinedMessage message = pageLocale## hello />
20+ <ReactIntl . FormattedMessage id = "page. hello" defaultMessage = "Hello" />
2121 " " -> React . string
22- <ReactIntl . DefinedMessage message = pageLocale## world />
22+ <ReactIntl . FormattedMessage id = "page. world" defaultMessage = "World" />
2323 </div >
2424 <div >
25- < ReactIntl . DefinedMessage message = pageLocale##today />
25+ ReactIntl . (intl -> Intl . formatMessage( pageLocale## today) -> React . string)
2626 " " -> React . string
27- { intl. formatDate(Js . Date . make() )-> React . string}
27+ ReactIntl . ( intl-> Intl . formatDate(Js . Date . make() )-> React . string)
2828 " (intl.formatDate)" -> React . string
2929 <br />
30- < ReactIntl . DefinedMessage message = pageLocale##today />
30+ ReactIntl . (intl -> Intl . formatMessage( pageLocale## today) -> React . string)
3131 " " -> React . string
3232 <ReactIntl . FormattedDate value= {Js . Date . make() } />
3333 " (FormattedDate)" -> React . string
Original file line number Diff line number Diff line change 1+ let wrapUnicodeString = (input: string ) => { j | $input| j } ;
2+
3+ let wrapOptUnicodeString = (input: Js . nullable (string )) =>
4+ switch (input-> Js . Nullable . toOption) {
5+ | Some (input ) => input-> wrapUnicodeString
6+ | None => ""
7+ };
8+
9+ let translationsToDict = (translations: array (ReactIntl . translation )) => {
10+ translations-> Belt . Array . reduce(
11+ Js . Dict . empty() ,
12+ (dict, message) => {
13+ let unicodeMessage = message## message-> wrapOptUnicodeString;
14+ let unicodeDefaultMessage = message## defaultMessage-> wrapUnicodeString;
15+ dict-> Js . Dict . set(
16+ message## id,
17+ unicodeMessage !== "" ? unicodeMessage : unicodeDefaultMessage,
18+ );
19+ dict;
20+ },
21+ );
22+ };
Original file line number Diff line number Diff line change 1- [@bs.module ]
2- external en: ReactIntl.localeData(' t) = "react-intl/locale-data/en ";
3- [@bs.module]
4- external ru: ReactIntl.localeData(' t) = " react-intl/locale-data/ru " ;
1+ [@bs.module " react-intl/locale-data/en " ]
2+ external en: ReactIntl.localeData(' t) = "default ";
3+ [@bs.module "react-intl/locale-data/ru" ]
4+ external ru: ReactIntl.localeData(' t) = " default " ;
55
66ReactIntl.addLocaleData(en);
77ReactIntl.addLocaleData(ru);
You can’t perform that action at this time.
0 commit comments