nanopkg/laravel-bangla-text-converter
Laravel package to convert Bengali text between Unicode and Bijoy encodings. Use the BanglaTextConverter facade to quickly transform strings (toBijoy/toUnicode) in your app, with simple Composer install and test support.
Installation:
composer require nanopkg/laravel-bangla-text-converter
The package auto-registers via Laravel's service provider.
First Use Case: Convert Unicode Bengali text to Bijoy format in a controller or blade template:
use Nanopkg\BanglaTextConverter\Facades\BanglaTextConverter;
$unicodeText = 'আমি বাংলায় লিখছি';
$bijoyText = BanglaTextConverter::toBijoy($unicodeText);
Or convert Bijoy back to Unicode:
$bijoyText = 'Avmi evgla‡v lixvi';
$unicodeText = BanglaTextConverter::toUnicode($bijoyText);
Where to Look First:
Nanopkg\BanglaTextConverter\Facades\BanglaTextConverterNanopkg\BanglaTextConverter\BanglaTextConverterServiceProvidertoBijoy() and toUnicode()Form Handling:
// In a FormRequest or controller
public function store(Request $request) {
$request->validate(['bangla_text' => 'required']);
$convertedText = BanglaTextConverter::toUnicode($request->bangla_text);
// Save $convertedText to database
}
Blade Templates:
@php
$bijoyText = BanglaTextConverter::toBijoy('আমার সোনার বাংলা');
@endphp
<textarea>{{ $bijoyText }}</textarea>
Database Storage:
// Store Bijoy format in DB for legacy systems
$user->bangla_bio = BanglaTextConverter::toBijoy($request->bio);
$user->save();
Middleware for Automatic Conversion:
// app/Http/Middleware/ConvertBanglaText.php
public function handle($request, Closure $next) {
if ($request->has('bangla_text')) {
$request->merge([
'bangla_text' => BanglaTextConverter::toUnicode($request->bangla_text)
]);
}
return $next($request);
}
API Responses:
return response()->json([
'unicode_text' => BanglaTextConverter::toUnicode($request->bijoy_text),
'bijoy_text' => BanglaTextConverter::toBijoy($request->unicode_text)
]);
Validation:
use Illuminate\Validation\Rule;
$validator = Validator::make($request->all(), [
'bangla_text' => [
'required',
Rule::unique('posts')->ignore($post->id),
function ($attribute, $value, $fail) {
if (strlen(BanglaTextConverter::toUnicode($value)) > 500) {
$fail('The bangla text may be too long.');
}
}
]
]);
Eloquent Accessors/Mutators:
// In User model
public function getBanglaNameAttribute($value) {
return BanglaTextConverter::toUnicode($value);
}
public function setBanglaNameAttribute($value) {
$this->attributes['bangla_name'] = BanglaTextConverter::toBijoy($value);
}
Artisan Command:
// Convert all records in a table
public function handle() {
DB::table('posts')->whereNotNull('bangla_content')
->update(['bangla_content' => BanglaTextConverter::toUnicode(DB::raw('bangla_content'))]);
}
Character Encoding Issues:
.env:
DB_CONNECTION=mysql
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
Partial Conversions:
if (preg_match('/[\x{0980}-\x{09FF}]/u', $text)) {
// Proceed with conversion
}
Performance with Large Texts:
ConvertBanglaJob::dispatch($largeText)->onQueue('bangla');
Facade Caching:
php artisan cache:clear
Invalid Output:
\Log::debug('Input:', ['text' => $inputText, 'converted' => $outputText]);
Case Sensitivity:
Avmi vs avmi).Special Characters:
$text = 'আমি ১০০ টাকা খাই।';
Custom Conversion Rules:
php artisan vendor:publish --tag=bangla-text-converter-config
config/bangla-text-converter.php:
'custom_mappings' => [
'special_symbol' => 'বিশেষ_সিম্বল',
],
Service Provider Binding:
AppServiceProvider:
public function register() {
$this->app->bind(\Nanopkg\BanglaTextConverter\Contracts\BanglaConverter::class, function () {
return new \App\Services\CustomBanglaConverter();
});
}
Testing:
$this->app->instance(
\Nanopkg\BanglaTextConverter\Contracts\BanglaConverter::class,
Mockery::mock(\Nanopkg\BanglaTextConverter\Contracts\BanglaConverter::class)
);
Default Conversion Direction:
toBijoy() or toUnicode().Environment-Specific Settings:
if (env('BANGLA_AUTO_CONVERT', false)) {
$text = BanglaTextConverter::toUnicode($request->input);
}
Localization:
Batch Processing:
// Convert all records in a table using Laravel's chunk
DB::table('articles')->whereNotNull('bangla_content')
->chunk(200, function ($records) {
foreach ($records as $record) {
$record->update([
'bangla_content' => BanglaTextConverter::toUnicode($record->bangla_content)
]);
}
});
API Versioning:
// v1 uses Bijoy, v2 uses Unicode
Route::prefix('v2')->group(function () {
Route::post('/articles', [ArticleController::class, 'storeUnicode']);
});
User Preferences:
$user->preferred_bangla_format = $request->format; // 'bijoy' or 'unicode'
$user->save();
$format = auth()->user()->preferred_bangla_format ?? 'unicode';
$text = $format === 'bijoy' ? BanglaTextConverter::toBijoy($text) : $text;
How can I help you explore Laravel packages today?