Подтвердить что ты не робот

I18n для реакции, formatjs, реакция-intl

Я хочу использовать стандарт ICU для своего i18n в своем приложении для реагирования. Я хочу сохранить мои языковые файлы, например http://userguide.icu-project.org/locale/localizing#TOC-.txt-resource-bundles:

de {
  key1 { "Deutsche Sprache "
         "schwere Sprache" }
  key2 { "Düsseldorf" }
}

Я нашел эту библиотеку http://formatjs.io/react/. http://formatjs.io/ поддерживает ICU, однако я не могу найти хороший пример, как подключить мои языковые файлы к моему приложению.

Я проходил их учебник, и, похоже, я мог использовать компонент <FormattedMessage>. Так, например,

var intlData = {
    "locales": "en-US",
    "messages": {
        "photos": "{name} took {numPhotos, plural,\n  =0 {no photos}\n  =1 {one photo}\n  other {# photos}\n} on {takenDate, date, long}.\n"
    }
};

React.render(
    <Component {...intlData} />,
    document.getElementById('example')
);

то в некотором компоненте I

...
render: function () {
        return (
            <p>
                <FormattedMessage
                    message={this.getIntlMessage('photos')}
                    name="Annie"
                    numPhotos={1000}
                    takenDate={Date.now()} />
            </p>
        );
    }

Моя самая большая проблема заключается в том, как преобразовать мой языковой файл, например.

en-US {
  photos { "{name} took {numPhotos, plural,\n  =0 {no photos}\n  =1 {one photo}\n  other {# photos}\n} on {takenDate, date, long}.\n" }
}

в формате:

var intlData = {
    "locales": "en-US",
    "messages": {
        "photos": "{name} took {numPhotos, plural,\n  =0 {no photos}\n  =1 {one photo}\n  other {# photos}\n} on {takenDate, date, long}.\n"
    }
};

Есть ли какой-либо парсер/конвертер?

4b9b3361

Ответ 1

Вы должны проверить этот репозиторий https://github.com/gpbl/isomorphic500. В подкаталоге intl есть входные файлы для разных языков.

Вы также можете увидеть, какой тип разбора они принимают! Надеюсь, это поможет.