kurd_localization 2.0.0 copy "kurd_localization: ^2.0.0" to clipboard
kurd_localization: ^2.0.0 copied to clipboard

A Flutter localization package translations and Kurdish support.

Kurd Localization

A professional Flutter localization package with comprehensive Kurdish language support

FeaturesInstallationQuick StartDocumentation


Overview #

Kurd Localization is a production-ready localization package for Flutter applications, developed and maintained by Khalis IT. It provides comprehensive support for Kurdish languages (Kurmanji and Sorani) alongside standard multilingual capabilities.

Designed with enterprise applications in mind, this package offers a flexible architecture that seamlessly integrates with Flutter's localization system while providing powerful features like dynamic translations, pluralization, gender-specific translations, and translation verification tools.


Features #

🌍 Multilingual Support #

  • Kurdish Kurmanji (krm) - Full Material & Cupertino localization
  • Kurdish Sorani (ckb) - Full Material & Cupertino localization
  • RTL Support - Automatic right-to-left text direction for Arabic and Kurdish
  • Fallback Locale - Graceful degradation when translations are missing

✨ Developer Experience #

  • Easy Translation Extensions - Use .kt() on Strings and Text widgets without context
  • BuildContext Extensions - Convenient methods for accessing translations
  • JSON File Support - Load translations from external JSON files
  • Inline Map Support - Define translations directly in Dart code

🎯 Advanced Features #

  • Pluralization - Language-specific plural rules (zero, one, two, few, many, other)
  • Gender-Specific Translations - Support for male, female, and neutral variations
  • Interpolation - Insert dynamic values into translations (Hello, {name}!)
  • Translation Verification Tool - CLI tool for validating translation keys

🔧 Integration #

  • Flutter Native Compatibility - Works seamlessly with flutter_localizations
  • MaterialApp & CupertinoApp - Full support for both app types
  • Custom Loaders - Extensible architecture for custom data sources

Installation #

Add the package to your pubspec.yaml:

dependencies:
  kurd_localization: ^1.0.3
  flutter_localizations:
    sdk: flutter

Then run:

flutter pub get

Quick Start #

1. Create Translation Files #

Create a JSON file at assets/languages/translations.json:

{
  "en": {
    "app_title": "My Application",
    "welcome_message": "Welcome, {name}!",
    "items_count": "You have {} items"
  },
  "krm": {
    "app_title": "Serenîşan",
    "welcome_message": "Bi xêr hatî, {name}!",
    "items_count": "Te {} hene"
  },
  "ckb": {
    "app_title": "پرۆگرام",
    "welcome_message": "بەخێربێیت، {name}!",
    "items_count": "تۆ {} هەیە"
  },
  "ar": {
    "app_title": "تطبيقي",
    "welcome_message": "مرحباً، {name}!",
    "items_count": "لديك {} عناصر"
  }
}

Add the asset directory to your pubspec.yaml:

flutter:
  assets:
    - assets/languages/

2. Configure Localization #

import 'package:kurd_localization/kurd_localization.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Kurd Localization Demo',
      
      // Localization configuration
      localizationsDelegates: [
        KurdLocalizationDelegate.fromLoader(
          Loaders.json(path: 'assets/languages/translations.json'),
          fallbackLocale: const Locale('en'),
        ),
        ...kurdishLocalizations,
        GlobalMaterialLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      
      supportedLocales: const [
        Locale('en'),  // English
        Locale('krm'), // Kurdish Kurmanji
        Locale('ckb'), // Kurdish Sorani
        Locale('ar'),  // Arabic
      ],
      
      locale: const Locale('en'),
      home: const HomePage(),
    );
  }
}

3. Use Translations #

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('app_title'.kt()),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // Simple translation
            Text('welcome_message'.kt(args: {'name': 'Khalis'})),
            
            // Pluralization
            Text('items_count'.plural(itemCount)),
            
            // Check current language
            if (context.isKurdish)
              const Text('Kurdish language active!'),
          ],
        ),
      ),
    );
  }
}

Method 2: BuildContext Extension

Text(context.translate('app_title'))
Text(context.translate('welcome_message', args: {'name': 'Khalis'}))
Text(context.plural('items_count', 5))

Method 3: Direct Instance Access

final localizer = KurdLocalization.of(context);
Text(localizer.translate('app_title'))

Documentation #

📚 Translation Loaders #

The package supports multiple ways to load translations:

JSON Asset Loader

KurdLocalizationDelegate.fromLoader(
  Loaders.json(path: 'assets/languages/translations.json'),
  fallbackLocale: const Locale('en'),
)

Direct Map

final translations = {
  'en': {'hello': 'Hello'},
  'krm': {'hello': 'Silav'},
};

KurdLocalizationDelegate.fromMap(
  translations,
  fallbackLocale: const Locale('en'),
)

For detailed loader documentation, see loader.md

🔤 Pluralization #

Handle plural forms with language-specific rules:

{
  "item": {
    "zero": "No items",
    "one": "1 item",
    "two": "2 items",
    "few": "{} items",
    "many": "{} items",
    "other": "{} items"
  }
}
Text('item').plural(0)  // No items
Text('item').plural(1)  // 1 item
Text('item').plural(5)  // 5 items

⚧ Gender-Specific Translations #

{
  "greeting": {
    "male": "Welcome, sir",
    "female": "Welcome, madam",
    "other": "Welcome"
  }
}
Text('greeting').kt(gender: 'male')

🛡️ Fallback Locale #

Automatically use a default language when translations are missing:

KurdLocalizationDelegate.fromLoader(
  Loaders.json(path: 'assets/languages/translations.json'),
  fallbackLocale: const Locale('en'), // Falls back to English
)

✅ Translation Verification Tool #

Validate your translation files using the CLI tool:

# Verify all translations
dart run kurd_localization:verify_translations verify assets/languages

# Verify with reference locale
dart run kurd_localization:verify_translations verify assets/languages --reference en

# Compare two files
dart run kurd_localization:verify_translations compare assets/languages/en.json assets/languages/krm.json

# Find duplicates
dart run kurd_localization:verify_translations duplicates assets/languages/en.json

Available Extensions #

String Extensions #

'key'.kt()                                          // Simple translation
'key'.kt(args: {'name': 'value'})                   // With arguments
'key'.kt(gender: 'male')                            // Gender-specific
'key'.kt(locale: Locale('en'))                      // Specific locale
'key'.plural(count)                                 // Plural form
'key'.plural(count, args: {'name': 'value'})        // Plural with arguments

Text Widget Extensions #

Text('key').kt()                                    // Simple translation
Text('key').kt(args: {'name': 'value'})             // With arguments
Text('key').kt(gender: 'male')                      // Gender-specific
Text('key').plural(count)                           // Plural form

BuildContext Extensions #

context.translate('key')                            // Translate
context.translate('key', args: {...})               // With arguments
context.plural('key', count)                        // Plural
context.localization                                // KurdLocalization instance
context.currentLocale                               // Current Locale
context.languageCode                                // Language code
context.isKurdish                                   // Is Kurdish (any)
context.isKurdishSorani                             // Is Kurdish Sorani
context.isKurdishKurmanji                           // Is Kurdish Kurmanji
context.isArabic                                    // Is Arabic
context.isEnglish                                   // Is English
context.isRTL                                       // Is RTL language
context.textDirection                               // TextDirection

Example Project #

A complete example application is available in the /example directory.

To run the example:

cd example
flutter pub get
flutter run

Kurdish Language Support #

This package provides native localization for:

Feature Kurmanji (krm) Sorani (ckb)
Material Widgets
Cupertino Widgets
Text Direction LTR RTL
Date Formatting
Number Formatting

Supported Kurdish Scripts #

  • Kurmanji Latin Script - Standard Latin alphabet used in Northern Kurdistan
  • Sorani Arabic Script - Arabic-based script used in Eastern Kurdistan

Changelog #

See CHANGELOG.md for version history and updates.


Contributing #

Contributions are welcome! Please feel free to submit issues or pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Support & Community #


License #

This project is licensed under the MIT License - see the LICENSE file for details.


About Khalis IT #

Khalis IT is a software development company specializing in Flutter applications and localization solutions for the Kurdish market and the Middle East region.

We are committed to:

  • 🔤 Language Preservation - Supporting Kurdish and regional languages in technology
  • 🚀 Quality Software - Delivering production-ready, maintainable code
  • 🌐 Global Reach - Helping businesses reach diverse audiences
  • 🤝 Community Support - Providing resources and tools for developers

Our Services #

  • Flutter Application Development
  • Localization & Internationalization Consulting
  • Custom Software Solutions
  • Technical Training & Mentorship

Connect With Us #


Acknowledgments #

This package is proudly built and maintained by Khalis IT. We are dedicated to providing the best localization solutions for the Kurdish language and the wider community.

Acknowledgments:

  • The Flutter team for the excellent localization framework
  • Contributors to Kurdish language support in Flutter
  • The community for feedback and improvements

Built & Maintained by Khalis IT

Empowering Kurdish language in digital applications

⬆ Back to Top

1
likes
160
points
418
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter localization package translations and Kurdish support.

Repository (GitHub)
View/report issues

License

ISC (license)

Dependencies

flutter, flutter_localizations, intl, path

More

Packages that depend on kurd_localization