{"id":32125468,"url":"https://github.com/tempo-riz/flutter-extract-to-arb-vscode","last_synced_at":"2025-10-20T22:53:38.816Z","repository":{"id":300038286,"uuid":"1004866712","full_name":"tempo-riz/flutter-extract-to-arb-vscode","owner":"tempo-riz","description":"VS Code Extension to Extract and auto-translate Flutter text into ARB localization files. Skip the painful part !","archived":false,"fork":false,"pushed_at":"2025-08-19T10:18:56.000Z","size":2964,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-20T22:53:12.452Z","etag":null,"topics":["arb","dart","deepl","extract","flutter","internationalization","l10n","translation"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=ZealousFoundry.flutter-extract-to-arb","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tempo-riz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2025-06-19T09:52:01.000Z","updated_at":"2025-08-19T10:19:00.000Z","dependencies_parsed_at":"2025-06-19T15:42:13.681Z","dependency_job_id":null,"html_url":"https://github.com/tempo-riz/flutter-extract-to-arb-vscode","commit_stats":null,"previous_names":["tempo-riz/flutter-extract-to-arb-vscode"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tempo-riz/flutter-extract-to-arb-vscode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempo-riz%2Fflutter-extract-to-arb-vscode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempo-riz%2Fflutter-extract-to-arb-vscode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempo-riz%2Fflutter-extract-to-arb-vscode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempo-riz%2Fflutter-extract-to-arb-vscode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tempo-riz","download_url":"https://codeload.github.com/tempo-riz/flutter-extract-to-arb-vscode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempo-riz%2Fflutter-extract-to-arb-vscode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280173630,"owners_count":26284901,"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","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["arb","dart","deepl","extract","flutter","internationalization","l10n","translation"],"created_at":"2025-10-20T22:53:35.366Z","updated_at":"2025-10-20T22:53:38.811Z","avatar_url":"https://github.com/tempo-riz.png","language":null,"funding_links":["https://github.com/sponsors/tempo-riz"],"categories":[],"sub_categories":[],"readme":"# Flutter Extract to ARB \n[![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/zealousFoundry.flutter-extract-to-arb?label=Version)](https://marketplace.visualstudio.com/items?itemName=zealousFoundry.flutter-extract-to-arb)\n[![Visual Studio Marketplace Downloads](https://img.shields.io/visual-studio-marketplace/d/zealousFoundry.flutter-extract-to-arb?label=VS%20Marketplace%20Downloads)](https://marketplace.visualstudio.com/items?itemName=zealousFoundry.flutter-extract-to-arb)\n[![Open VSX Downloads](https://img.shields.io/open-vsx/dt/zealousfoundry/flutter-extract-to-arb?label=Open%20VSX%20Downloads)](https://open-vsx.org/extension/ZealousFoundry/flutter-extract-to-arb)\n\n## 🔗 Links\n\nDownload the extension from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=zealousFoundry.flutter-extract-to-arb) or the [Open VSX Registry](https://open-vsx.org/extension/ZealousFoundry/flutter-extract-to-arb)\n\nIf you want to add a feature or file a bug, please open an issue on the [GitHub repository](https://github.com/tempo-riz/flutter-extract-to-arb-vscode)\n\n\n## 💡 Code Action\n\n**Extract String to ARB** : Right-click a string (or quick fix it with `⌘.` / `Ctrl+.`) and select \"Extract String to ARB\".\n\n\u003cimg src=\"https://github.com/tempo-riz/flutter-extract-to-arb-vscode/blob/049cb13ef79d7209b9ec8716cf471af803476dc2/demo/demo-action.gif?raw=true\" width=\"1000\"/\u003e\n\n## 🚀 Getting Started (Auto Setup)\n\nAccess from the Command Palette (`⇧⌘P` / `Ctrl+Shift+P`):\n\n**Setup Localization for Project** : \n  Sets up all necessary files for localization in your Flutter project, including `l10n.yaml`, `pubspec.yaml` and `arb` files.\n\n\u003cimg src=\"https://github.com/tempo-riz/flutter-extract-to-arb-vscode/blob/ff1e41f908f57a950fe457fee54c13c732b0ca19/demo/demo-setup.gif?raw=true\" width=\"1000\"/\u003e\n\n## ⚡️ Commands (Premium Features)\n\n🛒 *Premium only*: Requires a valid license key. [Buy one for $9.90 →](https://zealousfoundry.lemonsqueezy.com/buy/ce399620-be05-4078-b75d-a2a52e32888f \"Purchase a license to unlock premium features\")\n\n\nAccess from the Command Palette (`⇧⌘P` / `Ctrl+Shift+P`):\n\n- **Extract Texts (Current File)** : Extracts all `Text()` widget strings in the current Dart file to your ARB files.\n\n- **Extract Texts (Project)** : Extracts all `Text()` widget strings from the `lib/` folder to your ARB files.\n\n\n\u003cimg src=\"https://github.com/tempo-riz/flutter-extract-to-arb-vscode/blob/049cb13ef79d7209b9ec8716cf471af803476dc2/demo/demo-file.gif?raw=true\" width=\"1000\"/\u003e\n\n\n## 🔧 Manual Setup (I recommend using the setup command instead)\n\nYou should already have a `l10n.yaml` file in your project. If not, create one.  \nThis extension uses Flutter's official options for internationalization. See [Flutter's i18n docs](https://docs.flutter.dev/ui/accessibility-and-internationalization/internationalization#configuring-the-l10n-yaml-file)\n\nThe extension also supports additional options:\n\n### Extension-specific `l10n.yaml` options (with defaults)\n```yaml\n# Enable translation (via DeepL)\ntranslate: true              \n\n# Auto-run flutter gen-l10n after extraction              \ngenerate: true       \n\n# Key prefix for translations             \nkey-prefix: AppLocalizations.of(context)!.  \n\n# Generate key name\n# \"ask\" = Prompt with a suggested key name, true = infer from text, false = prompt manually  \nauto-name-key: true       \n\n# Language to use for key name generation                 \nkey-name-language: en       \n\n# Import line to insert if needed                \nimport-line: \"\"\n\n# Explicitly set source language for google trad fallback\nsource-language: \"\"                             \n```\n\n\nFor translation to work, you need to add your Deepl API key in vscode settings.json file (`⇧⌘P` / `Ctrl+Shift+P` → `Preferences: Open User Settings (JSON)`):\n\n`\"flutter.deeplApiKey\": \"your-key\",`   \n\nYou can get a generous free API key [here](https://www.deepl.com/en/pro#developer)\n\nFinally, make sure `generate: true` is set in your `pubspec.yaml`:\n\n```yaml\nflutter:\n  generate: true # \u003c---\n```\n\nAnd that's it! You're ready to go 🚀\n\n\n## 😎 Pro tips\nYou can define an extension getter to access your translations more concisely:\n```dart\nextension ContextExt on BuildContext {\n  AppLocalizations get t =\u003e AppLocalizations.of(this);\n}\n\n// then instead of this\nText(AppLocalizations.of(context).yourKey)\n\n// use it like this:\nText(context.t.yourKey)\n```\nDon't forget to update the `key-prefix` \u0026 `import-line` options in l10n.yaml ;)\n\n\n\n## ☕ Support\n\nIf you'd like to support this project, consider contributing [here](https://github.com/sponsors/tempo-riz). Thank you! :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftempo-riz%2Fflutter-extract-to-arb-vscode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftempo-riz%2Fflutter-extract-to-arb-vscode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftempo-riz%2Fflutter-extract-to-arb-vscode/lists"}