Multilingua

Per aggiungere più lingue è possibile aggiungere un file in /custom/config/lang.php con il seguente codice:

<?php

    use Wonder\Localization\{ LanguageContext, TranslationProvider };

    # Imposto le lingue
    LanguageContext::addLangPath($ROOT.'/lang/')
        ::defaultLang('it')
        ::addLanguage('it', 'Italiano', "https://www.$PAGE->domain/it/", 'it', ['IT'])
        ::addLanguage('en', 'English', "https://www.$PAGE->domain/en/", 'gb', [])
        ::setLangFromPath();
    
    # Imposto le traduzioni
    TranslationProvider::init();

E aggiungere al file .htaccess nel Backend reparto Set Up -> Editor il seguente codice:

## Aggiunge lo slash finale a tutte le URL se manca
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteRule ^(.*)$ /$1/ [R=301,L]

## Reindirizza lingue alla cartella /theme/
RewriteCond %{REQUEST_URI} ^/(it|en|de)/?(.*)$
RewriteRule ^(it|en|de)/(.*)$ /theme/$2 [L,QSA]
RewriteRule ^(it|en|de)/?$ /theme/index.php [L,QSA]

Redirect

Nel file index.php è consigliato utilizzare questo codice per il redirect dell'utente alla lingua determinata dal paese del suo indirizzo IP.

<?php
    
    $FRONTEND = true;
    $PRIVATE = false;
    $PERMIT = [];

    $ROOT = $_SERVER['DOCUMENT_ROOT'];
    require_once $ROOT."/vendor/wonder-image/app/wonder-image.php";
        
    (new Wonder\Localization\LanguageRedirector())
        ->redirectByCountry($_SESSION['system_cache']['country'] ?? null);

Funzioni utili

La funzione si usa per cercare testi. Nei file JSON, puoi inserire chiavi con {{key}} e utilizzare la variabile $replacements per inserire il nome effettivo.

function __t(string $key, array $replacements = []) {}

La funzion __l si usa per sapere la lingua impostata.

function __l() {}

La funzione __ls si usa per restituire tutte le lingue impostate.

function __ls() {}

La funzione __u si usa per creare url

function __u(string $path) {}

La funzione __su si usa per cambiare url da una lingua all'altra

function __su(string $url, string $lang) {}

SEO

Per migliorare l'indicizzazione del sito aggiungere in ogni file:

$PAGE_KEY = 'home';

$SEO->title = __t("pages.{$PAGE_KEY}.seo.title");
$SEO->description = __t("pages.{$PAGE_KEY}.seo.description");
$SEO->url = __u();
$SEO->breadcrumb = [
    $SEO->url => __t("components.navigation.{$PAGE_KEY}")
];

E per indicare la lingua del sito:

<!DOCTYPE html>
<html lang="<?=__l()?>">
<head>
    ...

Utilità

<?php
    
    $dropdownLang = "";

    $defaultFlag = '<span class="fi fi-'.__ls()[__l()]['flag'].' fis" style="border-radius: 50%;border: 1px solid #fff;"></span>';
    
    foreach (__ls() as $lang => $value) {
        
        $name = $value['name'];
        $link = __su($SEO->url, $lang);
        $flag = $value['flag'];

        $dropdownLang .= '<a href="'.$link.'" hreflang="'.$lang.'/" class="wi-dropdown-item"><span class="fi fi-'.$flag.' fis" style="border-radius: 50%;"></span> '.$name.'</a>';

    }

?>

<div class="wi-dropdown-btn f-end phone-none">
    <div class="btn btn-secondary tx-upper wi-switcher" style="width: auto;padding-right:0;"> <?=$defaultFlag?> </div>
    <div class="wi-dropdown-list"> <?=$dropdownLang?> </div>
</div>

Testo

<?php

    $langHTML = [];

    foreach (__ls() as $lang => $value) {
        
        $link = __su($SEO->url, $lang);

        $bold = $lang == __l() ? "fw-700" : "";

        $langHTML[] = "<a href=\"$link\" hreflang=\"$lang\" class=\"tx-none $bold\">$lang</a>";

    }

?>

<div class="f-end c-h phone-none tx-white tx-upper">
    <?=implode(' | ', $langHTML)?>
</div>

Flag

Aggiungi al file frontend/set-up.php:

Dependencies::flagIcons()

Ultimo aggiornamento