{"id":13406481,"url":"https://github.com/ibitcy/eo-locale","last_synced_at":"2025-05-15T00:09:06.584Z","repository":{"id":33273823,"uuid":"132908162","full_name":"ibitcy/eo-locale","owner":"ibitcy","description":"🌏Internationalize React apps 👔Elegant lightweight library based on Internationalization API","archived":false,"fork":false,"pushed_at":"2024-12-10T20:29:42.000Z","size":9548,"stargazers_count":347,"open_issues_count":13,"forks_count":10,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-12T09:23:41.233Z","etag":null,"topics":["globalization","hacktoberfest","i18n","i18next","icu","internationalization","intl","localization","messageformat","preact","react","react-components","react-hooks","react-intl","reactjs","reactjs-components","tiny","translation"],"latest_commit_sha":null,"homepage":"https://eo-locale.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ibitcy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-10T13:59:53.000Z","updated_at":"2025-03-23T10:08:21.000Z","dependencies_parsed_at":"2024-01-18T17:43:57.290Z","dependency_job_id":"4b9b9c7a-4ccd-4e40-801f-2e4568cb0aeb","html_url":"https://github.com/ibitcy/eo-locale","commit_stats":{"total_commits":545,"total_committers":18,"mean_commits":30.27777777777778,"dds":0.3559633027522936,"last_synced_commit":"e4c8d02cbd3b5d6b37828b908f6c47886df78fdd"},"previous_names":[],"tags_count":91,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibitcy%2Feo-locale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibitcy%2Feo-locale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibitcy%2Feo-locale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibitcy%2Feo-locale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibitcy","download_url":"https://codeload.github.com/ibitcy/eo-locale/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249206,"owners_count":22039029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["globalization","hacktoberfest","i18n","i18next","icu","internationalization","intl","localization","messageformat","preact","react","react-components","react-hooks","react-intl","reactjs","reactjs-components","tiny","translation"],"created_at":"2024-07-30T19:02:31.424Z","updated_at":"2025-05-15T00:09:01.565Z","avatar_url":"https://github.com/ibitcy.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","JavaScript","📦 Libraries","I18N"],"sub_categories":["JavaScript / TypeScript","Reactive Programming"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://eo-locale.netlify.app/\"\u003e\n    \u003cimg src=\"assets/hello.png\" width=\"400\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://eo-locale.netlify.app/\"\u003e\n    \u003ch1\u003eeo-locale\u003c/h1\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n[![build status](https://badgen.net/travis/ibitcy/eo-locale?icon=travis)](https://travis-ci.org/ibitcy/eo-locale)\n[![types included](https://badgen.net/npm/types/@eo-locale/core?icon=typescript)](https://www.npmjs.com/package/@eo-locale/core)\n\n* 💪Runs in all browsers and Node.js\n* ☎Can be used not only in React.Component but also in Vanilla JS\n* 📦Really tiny size. Calculated by [size-limit](https://github.com/ai/size-limit) and [bundlephopia](https://bundlephobia.com/result?p=eo-locale@latest).\n* 📚Message format is strictly implemented by [ICU standards](http://userguide.icu-project.org/formatparse/messages)\n* 🎓Support for 150+ languages\n* 🎉Support HTML in message. Support React Elements as variables\n* 🎢Locale data in [nested JSON format](https://github.com/ibitcy/eo-locale/releases/tag/7.4.0) are supported \n* 👫Simple. Only four components and one hook\n* ⚙️TypeScript and Flow types out of the box. Library has written on TypeScript\n* 🎄Optimized for [tree shaking](https://webpack.js.org/guides/tree-shaking/)\n\n# [Official website](https://eo-locale.netlify.app/)\n\n# Motivation\n\nInternationalization is the process of adapting an application to work with different languages and regions. That can bring some benefits. Your target group can be broader than the one with the default language of the app. So by internationalizing an app, you may reach a bigger audience.\n\n\u003e Internationalization it's not only about translation text. Users expect localized Dates, Number separators, Currencies.\n\n# Compare with most popular libraries\n\nToday each dependency drags more dependencies and increases your project’s bundle size uncontrollably. But size is very important for everything that intends to work in a browser.\n\n**eo-locale** is a simple library for those who care about their bundle size and client-side performance. It is fast and lightweight because:\n\n- built with hooks and functional components only (no classes and polyfills for them);\n- ships only a minimal amount of manually optimized algorithms;\n\nTo show you the problem that **eo-locale** is trying to solve, we have performed a simple benchmark (using [bundlephobia.com](https://bundlephobia.com)) against popular React localization libraries:\n\n| Name | Bundle size | Bundle size (gzip)|\n| ---- | ----------- | ----------------- |\n| **eo-locale** | [![](https://badgen.net/bundlephobia/min/@eo-locale/react@latest?color=6ead0a\u0026label=)](https://bundlephobia.com/result?p=@eo-locale/react@latest) | [![](https://badgen.net/bundlephobia/minzip/@eo-locale/react@latest?color=6ead0a\u0026label=)](https://bundlephobia.com/result?p=@eo-locale/react@latest) |\n| react-intl | [![](https://badgen.net/bundlephobia/min/react-intl?color=red\u0026label=)](https://bundlephobia.com/result?p=react-intl) | [![](https://badgen.net/bundlephobia/minzip/react-intl?color=red\u0026label=)](https://bundlephobia.com/result?p=react-intl) |\n| react-i18next | [![](https://badgen.net/bundlephobia/min/react-i18next?color=red\u0026label=)](https://bundlephobia.com/result?p=react-i18next) | [![](https://badgen.net/bundlephobia/minzip/react-i18next?color=red\u0026label=)](https://bundlephobia.com/result?p=react-i18next) |\n| react-intl-universal | [![](https://badgen.net/bundlephobia/min/react-intl-universal?color=red\u0026label=)](https://bundlephobia.com/result?p=react-intl-universal) | [![](https://badgen.net/bundlephobia/minzip/react-intl-universal?color=red\u0026label=)](https://bundlephobia.com/result?p=react-intl-universal) |\n| @lingui/react | [![](https://badgen.net/bundlephobia/min/@lingui/react?color=red\u0026label=)](https://bundlephobia.com/result?p=@lingui/react) | [![](https://badgen.net/bundlephobia/minzip/@lingui/react?color=red\u0026label=)](https://bundlephobia.com/result?p=@lingui/react) |\n\n\n# Projects using eo-locale\n\n- [gambit.gg](https://gambit.gg/) — Gambit Esports website by [lessmess](https://lessmess.agency/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibitcy%2Feo-locale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibitcy%2Feo-locale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibitcy%2Feo-locale/lists"}