PHP code example of litepie / trans

1. Go to this page and download the library: Download litepie/trans library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

litepie / trans example snippets


'providers' => [
    // Other providers...
    Litepie\Trans\TransServiceProvider::class,
],



return [
    // Supported locales with metadata
    'supportedLocales' => [
        'en' => [
            'name' => 'English',
            'script' => 'Latn',
            'native' => 'English',
            'regional' => 'en_US',
            'dir' => 'ltr',
        ],
        'es' => [
            'name' => 'Spanish',
            'script' => 'Latn', 
            'native' => 'Español',
            'regional' => 'es_ES',
            'dir' => 'ltr',
        ],
        // More locales...
    ],

    // Use Accept-Language header for negotiation
    'useAcceptLanguageHeader' => true,

    // Hide default locale in URLs (/en/page becomes /page)
    'hideDefaultLocaleInURL' => false,

    // Auto-detect and redirect to user's preferred locale
    'autoDetectLocale' => true,

    // Additional configuration options...
];

// In routes/web.php
Route::group(['middleware' => 'localization'], function () {
    Route::get('/', 'HomeController@index');
    Route::get('/about', 'AboutController@index');
    // Your localized routes...
});



use Litepie\Trans\Trans;

class HomeController extends Controller
{
    protected Trans $trans;

    public function __construct(Trans $trans)
    {
        $this->trans = $trans;
    }

    public function index()
    {
        // Get current locale
        $currentLocale = $this->trans->getCurrentLocale(); // 'en'

        // Get localized URL for different locale
        $spanishUrl = $this->trans->getLocalizedURL('es'); 

        // Check if multilingual
        $isMultilingual = $this->trans->isMultilingual(); // true/false

        // Get all supported locales
        $locales = $this->trans->getSupportedLocales();

        return view('home', compact('currentLocale', 'spanishUrl', 'locales'));
    }
}

// resources/lang/en/routes.php
return [
    'about' => 'about',
    'contact' => 'contact',
    'products' => 'products',
];

// resources/lang/es/routes.php  
return [
    'about' => 'acerca-de',
    'contact' => 'contacto', 
    'products' => 'productos',
];

Route::group(['middleware' => 'localization'], function () {
    Route::get(trans('routes.about'), 'AboutController@index')->name('about');
    Route::get(trans('routes.contact'), 'ContactController@index')->name('contact');
});

use Litepie\Trans\LanguageNegotiator;

$negotiator = new LanguageNegotiator(
    'en', // default locale
    ['en' => [...], 'es' => [...]], // supported locales
    $request
);

$bestLocale = $negotiator->negotiateLanguage();

Route::group(['middleware' => 'localization'], function () {
    // Your routes
});

public function handle($request, Closure $next)
{
    // Custom logic before localization
    
    $response = $next($request);
    
    // Custom logic after localization
    
    return $response;
}

// Set current locale
$trans->setLocale('es'); // Returns: 'es'

// Get current locale  
$trans->getCurrentLocale(); // Returns: 'en'

// Get default locale
$trans->getDefaultLocale(); // Returns: 'en'

// Check if locale is supported
$trans->checkLocaleInSupportedLocales('fr'); // Returns: true/false

// Get locale display name
$trans->getCurrentLocaleName(); // Returns: 'English'

// Get locale native name  
$trans->getCurrentLocaleNative(); // Returns: 'English'

// Get text direction
$trans->getCurrentLocaleDirection(); // Returns: 'ltr' or 'rtl'

// Get locale script
$trans->getCurrentLocaleScript(); // Returns: 'Latn'

// Get regional locale
$trans->getCurrentLocaleRegional(); // Returns: 'en_US'

// Generate localized URL
$trans->getLocalizedURL('es', '/products'); 
// Returns: 'https://site.com/es/productos'

// Generate non-localized URL
$trans->getNonLocalizedURL('/es/productos');
// Returns: 'https://site.com/productos'

// Get URL from route name
$trans->getURLFromRouteNameTranslated('es', 'products');

// Check if application is multilingual
$trans->isMultilingual(); // Returns: true/false

// Get all supported locales
$trans->getSupportedLocales(); // Returns: array

// Get supported locale keys
$trans->getSupportedLanguagesKeys(); // Returns: ['en', 'es', 'fr']

// Negotiate best language
$negotiator->negotiateLanguage(); // Returns: 'es'

// Get supported languages  
$negotiator->getSupportedLanguages(); // Returns: array

// Check if language is supported
$negotiator->isLanguageSupported('fr'); // Returns: true/false

// Get best match for language
$negotiator->getBestMatch('en-US'); // Returns: 'en'



use Litepie\Trans\Trans;
use Litepie\Trans\LanguageNegotiator;

class TransTest extends TestCase
{
    public function test_can_set_and_get_locale()
    {
        $trans = $this->app->make(Trans::class);
        
        $result = $trans->setLocale('es');
        
        $this->assertEquals('es', $result);
        $this->assertEquals('es', $trans->getCurrentLocale());
    }

    public function test_can_generate_localized_url()
    {
        $trans = $this->app->make(Trans::class);
        
        $url = $trans->getLocalizedURL('es', '/products');
        
        $this->assertStringContains('/es/', $url);
    }
}

   'cacheRouteTranslations' => true,
   'routeTranslationCacheTTL' => 60, // minutes
   
bash
php artisan vendor:publish --provider="Litepie\Trans\TransServiceProvider" --tag="trans-config"
bash
   php artisan route:cache
   
bash
   php artisan config:cache