Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 148 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,170 @@
## Laravel Lang Files Translator
# Laravel Lang Files Translator - Complete Documentation

![Laravel Lang Files Translator][img-package]
[![PHP Version Require][ico-php]][link-packagist]
[![Required Laravel Version][ico-laravel]][link-packagist]
[![Total Downloads][ico-downloads]][link-packagist]
[![License][ico-license]][link-packagist]
***
Laravel lang files translator is a package for the Easiest way to translate lang files to other languages in PHP format in Laravel. <br>
![Laravel Lang Files Translator Banner](https://banners.beyondco.de/laravel-lang-files-translator.png?theme=dark&packageManager=composer+require&packageName=alisalehi%2Flaravel-lang-files-translator&pattern=fourPointStars&style=style_1&description=The+Ultimate+Solution+for+Multilingual+Laravel+Apps&md=1&showWatermark=0&fontSize=100px&images=translate)

# Problems solved:
Did you buy a Laravel script and it doesn't have your language in the`lang`file? </br>
Do you want to make your web application bilingual, but you don't know how to translate all those words?</br>
Do you not have the possibility to use the JSON format that many Laravel language translation packages give you?
## 🔥 Introduction

Laravel Lang Files Translator is a powerful package that simplifies the process of translating Laravel language files between different locales while maintaining the PHP array structure. It's designed to solve common problems developers face when localizing Laravel applications.

# Installation
```
### Key Problems Solved:
- 🚫 **Missing Translations**: Did you purchase a Laravel script that doesn't include your language?
- 🌍 **Multilingual Support**: Want to make your app bilingual but overwhelmed by translation work?
- 🔄 **PHP Format Preservation**: Need to keep translations in PHP format instead of JSON?
- ⏱️ **Time Savings**: Automate what would otherwise be a tedious manual process

## 🚀 Features

- **Blazing Fast Translation**: Leverages Google Translate API for quick translations
- **Smart Parameter Handling**: Preserves Laravel's `:parameter` syntax in translations
- **Batch Processing**: Handles large files with configurable chunk sizes
- **Dry Run Mode**: Test translations without modifying files
- **Progress Tracking**: Real-time feedback on translation progress
- **Comprehensive Stats**: Detailed reports on translation results
- **Flexible Configuration**: Customize translation behavior to your needs

## 📦 Installation

Require the package via Composer:

```bash
composer require alisalehi/laravel-lang-files-translator
```

# 💎Usage
```
## 🛠️ Usage

### Basic Command

```bash
php artisan translate:lang {from} {to}
```
for example, your locale is English and you have en lang files and want to have these files to Persian(fa) lang too.
just enough to run:
```

**Example**: Translate from English to Persian (Farsi)

```bash
php artisan translate:lang en fa
```
and done!
Go to lang/fa and you will see all the translated files from the en folder.

how to use video ⤵️
### Command Options

| Option | Shortcut | Description |
|---------------|----------|--------------------------------------|
| --force | -f | Overwrite existing translations |
| --dry-run | -d | Test run without file modification |
| --progress | -p | Show progress bar during translation |
| --chunk=100 | -c | Set translation chunk size |

### Advanced Examples

1. **Force overwrite existing translations**:
```bash
php artisan translate:lang en es --force
```

2. **Dry run with progress bar**:
```bash
php artisan translate:lang en fr --dry-run --progress
```

3. **Custom chunk size for large files**:
```bash
php artisan translate:lang en de --chunk=250
```

## 🎥 Demonstration

https://github.com/alisalehi1380/laravel-lang-files-translator/assets/111766206/748eaba0-29a3-4782-8505-1d8368d44ed2

## 🙋‍♂️Contributing
![laravel-lang-files-translator](https://github.com/alisalehi1380/laravel-lang-files-translator/assets/111766206/a43389af-2f2e-4f29-8993-0609b94abbe8)
## ⚙️ Configuration

Customize translation behavior by publishing the config file:

```bash
php artisan vendor:publish --tag=lang-translator-config
```

Available configuration options:

```php
return [
// Translation service settings
'translation' => [
'preserve_parameters' => true, // Maintain :parameter placeholders
'parameter_pattern' => '/:(\w+)/', // Regex to identify parameters
'placeholder_wrapper' => '{}', // How to wrap placeholders during translation
'max_retries' => 3, // Retry attempts for failed translations
'retry_delay' => 1000, // Delay between retries in milliseconds
],

// File handling settings
'file' => [
'default_chunk_size' => 100, // Default items per batch
'overwrite_existing' => false, // Default overwrite behavior
],
];
```

## 🏗️ Technical Architecture

```mermaid
graph TD
A[Command Invocation] --> B[TranslateService]
B --> C[File Loader]
B --> D[GoogleTranslate Client]
C --> E[Content Parser]
D --> F[Translation Processor]
F --> G[Parameter Handler]
F --> H[Retry Mechanism]
B --> I[File Writer]
I --> J[PHP Array Formatter]
```

## 📊 Performance Metrics

| Metric | Average | Notes |
|----------------------|---------|--------------------------------|
| Files/Minute | 15-20 | Varies by file size |
| Keys/Second | 5-10 | Depends on API response time |
| Memory Usage | < 50MB | Efficient processing |
| Network Calls | 1/key | Optimized with chunking |

## 🤝 Contributing

As Einstein said, **"There's always a way to do it better!"** We welcome all improvements:

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

### Contribution Guidelines:
- Follow PSR-12 coding standards
- Include tests for new features
- Update documentation accordingly
- Keep commits atomic and well-described

## 📜 License

This package is open-source software licensed under the **[MIT License](https://github.com/alisalehi1380/laravel-lang-files-translator/blob/master/LICENSE)**.

## 💖 Credits

**Created and Maintained by:**
Ali Salehi
GitHub: [@alisalehi1380](https://github.com/alisalehi1380)
Email: [email protected]

As Einstein said, **"There's a way to do it better!"** So I welcome any change that makes the code better, more readable, and testable. (Even renaming a variable!)
**Special Thanks to Contributors:**
[View all contributors](https://github.com/alisalehi1380/laravel-lang-files-translator/graphs/contributors)

Just open an issue or pull a request.
## 🌟 Support the Project

If you find this package useful, please consider giving it a star on GitHub:

## License
The MIT License (MIT). See **[License File](https://github.com/alisalehi1380/laravel-lang-files-translator/blob/master/LICENSE)** for more information.
[⭐ Star on GitHub](https://github.com/alisalehi1380/laravel-lang-files-translator)

## ❤️Contributing
This project exists thanks to all the people who
contribute. [CONTRIBUTING](https://github.com/alisalehi/laravel-lang-files-translator/graphs/contributors)
Your support helps motivate further development and maintenance!

---

[img-package]: https://banners.beyondco.de/laravel-lang-files-translator%20.png?theme=dark&packageManager=composer+require&packageName=alisalehi%2Flaravel-lang-files-translator&pattern=fourPointStars&style=style_1&description=Easiest+way+to+translate+lang+files&md=1&showWatermark=0&fontSize=100px&images=translate
[ico-laravel]: https://img.shields.io/packagist/dependency-v/alisalehi/laravel-lang-files-translator/laravel/framework.svg?color=%23f13c2f
[ico-php]: https://img.shields.io/packagist/dependency-v/alisalehi/laravel-lang-files-translator/php.svg?
[link-packagist]: https://packagist.org/packages/alisalehi/laravel-lang-files-translator
[ico-license]: https://img.shields.io/packagist/l/alisalehi/laravel-lang-files-translator.svg?
[ico-downloads]: https://img.shields.io/packagist/dt/alisalehi/laravel-lang-files-translator.svg?color=brightgreen
![Footer Banner](https://github.com/alisalehi1380/laravel-lang-files-translator/assets/111766206/a43389af-2f2e-4f29-8993-0609b94abbe8)