{"id":4511,"url":"https://github.com/facebook/fbt","last_synced_at":"2025-05-13T04:33:05.233Z","repository":{"id":38067997,"uuid":"143188696","full_name":"facebook/fbt","owner":"facebook","description":"A JavaScript Internationalization Framework","archived":true,"fork":false,"pushed_at":"2024-11-14T00:04:17.000Z","size":15155,"stargazers_count":3905,"open_issues_count":57,"forks_count":179,"subscribers_count":44,"default_branch":"main","last_synced_at":"2025-05-04T11:03:15.459Z","etag":null,"topics":["framework","i18n","internationalization","javascript"],"latest_commit_sha":null,"homepage":"https://facebook.github.io/fbt","language":"JavaScript","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/facebook.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-08-01T17:39:49.000Z","updated_at":"2025-05-04T07:38:45.000Z","dependencies_parsed_at":"2023-09-24T16:57:18.181Z","dependency_job_id":"589580c9-9557-4362-9e2f-8e402b8c56ea","html_url":"https://github.com/facebook/fbt","commit_stats":{"total_commits":1256,"total_committers":180,"mean_commits":6.977777777777778,"dds":0.7070063694267517,"last_synced_commit":"81614682caa6107c9dedb44c0fc4ac8ecaac4a5f"},"previous_names":["facebookincubator/fbt"],"tags_count":101,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Ffbt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Ffbt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Ffbt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Ffbt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/fbt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253384849,"owners_count":21899935,"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":["framework","i18n","internationalization","javascript"],"created_at":"2024-01-05T20:17:14.795Z","updated_at":"2025-05-13T04:33:03.538Z","avatar_url":"https://github.com/facebook.png","language":"JavaScript","funding_links":[],"categories":["Components","📦 Libraries","JavaScript"],"sub_categories":["Internationalization","JavaScript / TypeScript"],"readme":"\u003cp\u003e\n  \u003ca href=\"https://github.com/facebook/fbt/actions?query=workflow%3Abuild\"\u003e\n    \u003cimg src=\"https://github.com/facebook/fbt/workflows/build/badge.svg\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://twitter.com/fbt_js\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/fbt_js.svg?style=social\" align=\"right\" alt=\"Twitter Follow\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://discord.gg/cQvXZr5\"\u003e\n    \u003cimg src=\"https://img.shields.io/discord/102860784329052160.svg\" align=\"right\" alt=\"Discord Chat\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://www.facebook.com/groups/498204277369868\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Facebook-Group-blue\" align=\"right\" alt=\"Facebook Group\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://facebook.github.io/fbt/img/fbt.png\" height=\"150\" width=\"150\" alt=\"FBT\"/\u003e\n\u003c/h1\u003e\n\nFBT is an internationalization framework for JavaScript designed to be not just **powerful** and **flexible**, but also **simple** and **intuitive**.\nIt helps with the following:\n* Organizing your source text for translation\n* Composing grammatically correct translatable UI\n* Eliminating verbose boilerplate for generating UI\n\n## Online Resources\n\n* [Official Website](https://facebook.github.io/fbt)\n* [Documentation](https://facebook.github.io/fbt/docs/getting_started_on_web)\n\n## Examples\n* [See our demo here](demo-app/src/example/Example.react.js)\n* [See our React Native demo here](https://github.com/facebook/fbt/tree/rn-demo-app)\n\n## Requirements\n* [Node.js](https://nodejs.org/)\n* [Yarn](https://yarnpkg.com/)\n* [Babel](https://babeljs.io/)\n\n## Building the fbt library\n```\ngit clone git@github.com:facebook/fbt.git\ncd fbt\nyarn install\n```\n\n**NOTE:** if you make changes to the fbt runtime that you'd like to\ntest in the demo-app, be sure to run this command to rebuild the JS code:\n\n```\nyarn build-runtime\n```\n\n## Using fbt\nSee how to use the source directly with Babel and Webpack in [our demo-app](demo-app#babelwebpackreact-oss-fbt-demo).\n\n## How FBT works\nFBT works by transforming your `\u003cfbt\u003e` and `fbt(...)` constructs via\nBabel plugins.  These plugins serve to extract strings from source and\nlookup translated payloads generated at build-time.  FBT creates tables\nof all possible variations for the given fbt phrase and accesses this\nat runtime.\n\n## Join the fbt community\n* [Website](https://facebook.github.io/fbt)\n* [Facebook group](https://www.facebook.com/groups/498204277369868)\n* [Discord #fbt channel in reactiflux](https://discord.gg/cQvXZr5)\n* [Twitter](https://twitter.com/fbt_js)\n\nSee the [CONTRIBUTING](CONTRIBUTING.md) file for how to help out.\n\n## Change log\nSee [CHANGELOG](CHANGELOG.md).\n\n## List of npm modules published from this repo:\n\n- [babel-plugin-fbt](https://www.npmjs.com/package/babel-plugin-fbt) (build-time / server-side)\n  - See [package.json](packages/babel-plugin-fbt/package.json)\n- [babel-plugin-fbt-runtime](https://www.npmjs.com/package/babel-plugin-fbt-runtime) (server-side)\n  - See [package.json](packages/babel-plugin-fbt-runtime/package.json)\n- [@fbtjs/default-collection-transform](https://www.npmjs.com/package/@fbtjs/default-collection-transform) (build-time)\n  - See [package.json](packages/default-collection-transform/package.json)\n- [fb-babel-plugin-utils](https://www.npmjs.com/package/fb-babel-plugin-utils) (server-side, used by `babel-plugin-fbt-runtime`)\n  - See [package.json](packages/fb-babel-plugin-utils/package.json)\n- [fbt](https://www.npmjs.com/package/fbt) (client-side)\n  - See [package.json](packages/fbt/package.json)\n- [fb-tiger-hash](https://www.npmjs.com/package/fb-tiger-hash) (build-time)\n  - See [package.json](packages/fb-tiger-hash/package.json)\n- [gulp-rewrite-flowtyped-modules](https://www.npmjs.com/package/gulp-rewrite-flowtyped-modules) (build-time)\n  - See [package.json](packages/gulp-rewrite-flowtyped-modules/package.json)\n- [gulp-strip-docblock-pragmas](https://www.npmjs.com/package/gulp-strip-docblock-pragmas) (build-time)\n  - See [package.json](packages/gulp-strip-docblock-pragmas/package.json)\n- [react-native-fbt](https://www.npmjs.com/package/react-native-fbt) (build-time)\n  - See [package.json](packages/react-native-fbt/package.json)\n\n## License\nFBT is MIT licensed, as found in the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Ffbt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebook%2Ffbt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Ffbt/lists"}