Laravel Domain Localization

Usage

The package provides some useful helper methods. For a full list of methods and method descriptions please refer to the DomainLocalization::class.

Please note: By default the Localization facade will be registered during package discovery. In the following examples we will use this facade directly.

Get the localized URL

By providing a valid URL and the desired locale you can automatically create a localized URL:

Localization::getLocalizedUrl('https://example.com/page', 'nl');

Would return:

https://example.nl/page

Listing supported locale configs

You can either list all configured locales:

Localization::getSupportedLocales();

Would return:

['en' => [
    'tld' => '.com',
    'script' => 'Latn',
    'dir' => 'ltr',
    'name' => 'English',
    'native' => 'English'
]]

Or list a specific locale by its name:

Localization::getSupportedLocale('en');

Would return:

[
    'tld' => '.com',
    'script' => 'Latn',
    'dir' => 'ltr',
    'name' => 'English',
    'native' => 'English'
]

Additionally you can simply check if a locale is configured:

Localization::hasSupportedLocale('en');

Would return:

true

Resolving locale configs by TLD

Instead of directly using the locale name to resolve a configuration you can also use the TLD:

Localization::getSupportedLocaleByTld('.com');

Would return:

[
    'tld' => '.com',
    'script' => 'Latn',
    'dir' => 'ltr',
    'name' => 'English',
    'native' => 'English'
]

Or resolve the locale name by TLD:

Localization::getSupportedLocaleNameByTld('.com');

Would return:

'en'

And similar to the locale name you can check for the existence of a locale config by using its TLD:

Localization::hasSupportedLocaleByTld('en');

Would return:

true

Resolving the TLD from an URL

Preferably you wouldn't parse the URL without a lookup table to resolve the TLD. This due to the unusual format of some TLDs. A great package for parsing domains is jeremykendall/php-domain-parser.

Luckily this package also supports parsing TLDs, matching them on the configured locales:

Localization::getTldFromUrl('https://example.com.local');

Would return:

true

Please note: For this to work .com.local needs to be registered as TLD in the supported locales config. This is very effective during development where you can't point multiple domains to your local machine.

Get attributes from locales

For the current locale or a specific locale you can resolve various configuration attributes using the following helpers:

Localization::getTldForCurrentLocale();
Localization::getNameForCurrentLocale();
Localization::getDirectionForCurrentLocale();
Localization::getScriptForCurrentLocale();
Localization::getNativeForCurrentLocale();
Localization::getTldForLocale('en');
Localization::getNameForLocale('en');
Localization::getDirectionForLocale('en');
Localization::getScriptForLocale('en');
Localization::getNativeForLocale('en');

Would return:

'.com'
'Latn'
'ltr'
'English'
'English'

Modifying the active locale

When not using the middleware you might want to change the active locale manually:

Localization::setCurrentLocale('en');

Or you might just want to check the currently set locale:

Localization::getCurrentLocale();

Would return:

'en'

During boot we also keep track of the default locale, this is the locale set in the app.php config file before any mutations have been made:

Localization::getDefaultLocale();

Would return:

'en'