sheet_loader_localization 1.0.0 copy "sheet_loader_localization: ^1.0.0" to clipboard
sheet_loader_localization: ^1.0.0 copied to clipboard

Download an CSV file and generates the localization keys from an online Google Sheet.

sheet_loader_localization #

Sheet Localization Generator #

Download a CSV file and generate localization keys from an online Google Sheet to work with easy_localization and easy_localization_loader.

This tool is inspired by flutter_sheet_localization_generator and the original author RinLV.

🔩 Installation #

Add to your pubspec.yaml:

dependencies:
  easy_localization: <latest_version>
  easy_localization_loader: <latest_version>

dev_dependencies:
  build_runner: <latest_version>
  sheet_loader_localization: <latest_version>

🔌 Usage #

1. Create a CSV Google Sheet

Create a sheet with your translations (follow the format below; example sheet here):

CSV example

2. Share the Sheet

There are two options:

  • If your Google Sheet is public, keep the setup as-is.
  • If your Google Sheet is private, follow these steps:
    1. Enable Google Drive API and Generate an API Key
      Follow this guide: How to Use Google Drive API and Get an API Key

    2. Set the apiKey parameter in the @SheetLocalization annotation.


3. Declare the Localization Delegate

Create a Dart file (lib/utils/multi-languages/locale_keys.dart) with the following content:

import 'dart:ui';
import 'package:sheet_loader_localization/sheet_loader_localization.dart';

part 'locale_keys.g.dart';

@SheetLocalization(
  docId: 'DOCID',
  version: 1,
  outDir: 'resources/langs',
  outName: 'langs.csv',
  preservedKeywords: [],
  // OPTIONAL: Only required if your sheet is private
  apiKey: 'YOUR_GOOGLE_API_KEY',
)
class _LocaleKeys {}

4. Generate the Localizations

Run the command below to generate the localization file:

flutter pub run build_runner build
# or
flutter pub run build_runner build --delete-conflicting-outputs

5. Configure Your App

Follow the setup guide from the easy_localization README.


To eliminate the manual toil of translating keys, we provide an Automation Script that runs directly inside your Google Sheet. This bridges the gap between creating a key and having it ready for the Dart generator.

Why use the automation script?

  • Instant Multi-Language Support: Translate an entire sheet into 10+ languages (Vietnamese, French, Japanese, etc.) with one click.
  • Incremental Updates: Only translate new keys ("Fill Missing"), preserving your existing manual adjustments.
  • Error Highlighting: Automatically flags rows that fail to translate in red background for easy debugging.
  • Zero Configuration: Automatically detects language codes from your headers (e.g., vi_VNvi).

Setup Automation

  1. In your Google Sheet, go to Extensions > Apps Script.
  2. Copy the code from localization_script.gs and paste it into the editor.
  3. Save the project, Click Run button and refresh your Spreadsheet browser tab.
  4. A new menu "🌐 Localization Hub" will appear in your toolbar.

Localization Hub Config


🛡️ Security & Privacy (For Engineers) #

We prioritize data sovereignty and local execution:

  • Local Execution: This script runs entirely within your Google Workspace environment (Apps Script). No data is ever sent to third-party servers.
  • No Data Collection: We do not collect or track your sheet IDs, translation content, or user identity.
  • Direct API Usage: The script uses Google's built-in LanguageApp, communicating directly between your sheet and the translation service.
  • Transparent Code: 100% open-source. We encourage you to audit the code before adding it to your workflow.

⏱️ Productivity Comparison #

Task Manual Workflow With This Tool & Script
Adding a new key (5 languages) ~10 mins (Manual Copy/Paste) < 10 seconds
Fixing translation errors Manual search & fix "Translate Selected" (2 clicks)
Handling placeholders High risk of breaking {var} Preserved via script logic
Security Audit Unknown 3rd party apps 100% Transparent Script

🛠 Troubleshooting #

Ghosting Menus: If you see duplicate menus (like "Translation Tools" and "Localization Hub") after updating the script, simply refresh your browser tab. Google Sheets caches UI elements; a reload clears the old definitions.

⚡ Regeneration #

To force regeneration of the CSV and localization files (due to caching), simply increment the version field in @SheetLocalization and rerun the build command.


❓ Why This Tool? #

easy_localization supports code generation, but not directly from Google Sheets. This tool simplifies localization workflows by using Google Sheets (ideal for collaboration with non-devs) and supports Flutter null safety.

14
likes
150
points
415
downloads

Publisher

unverified uploader

Weekly Downloads

Download an CSV file and generates the localization keys from an online Google Sheet.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-2-Clause (license)

Dependencies

analyzer, build, build_config, csv, file, flutter, http, intl, path, pub_semver, source_gen

More

Packages that depend on sheet_loader_localization