Je n'ai pas encore trouvé de description succincte de la création d'un thème multilingue WordPress.
Je suis un développeur assez compétent et j'ai créé quelques thèmes personnalisés à mon époque. Pour un projet sur lequel je travaille, je commence tout juste le processus de conversion de ma structure filaire en WordPress. Je sais déjà que ce site n'utilisera que ce thème personnalisé que je crée et je sais que le site sera disponible dans environ 5 langues différentes.
Il y aura un sélecteur de langue en haut de la page où l'utilisateur pourra simplement cliquer sur le drapeau de son pays et actualisera certains paramètres internes qui modifieront la langue de l'ensemble du site. D'après ce que j'ai compris, vous pouvez utiliser des fichiers po/mo pour traduire des sites, mais je n'arrive malheureusement pas à comprendre.
Le scénario idéal serait que je développe le thème en anglais et que toute chaîne ayant plusieurs traductions utilise une fonction de localisation (__ () & _e ()?). Une fois le développement terminé, je dois pouvoir ajouter une traduction à chacune des chaînes traduisibles de chaque langue. Je suis à peu près sûr que la solution consiste à utiliser POEdit, mais je ne comprends pas comment tout cela est lié.
Pour plus de précision, je ne cherche pas de plug-in dans lequel vous avez différentes traductions pour différentes pages/publications. Je recherche une solution qui me permet de traduire des chaînes individuelles dans mon thème personnalisé.
Merci d'avance pour tout conseil que vous pouvez donner.
La réponse de Daniel était très similaire, mais s'appliquait aux plugins plutôt qu'aux thèmes. Pour cette raison, j'expliquerai comment je l'ai fait spécifiquement pour les thèmes de quiconque rencontre ce problème.
Ajoutez le code suivant en haut du fichier de fonctions de votre thème:
function mytheme_localisation(){
function mytheme_localised( $locale ) {
if ( isset( $_GET['l'] ) ) {
return sanitize_key( $_GET['l'] );
}
return $locale;
}
add_filter( 'locale', 'mytheme_localised' );
load_theme_textdomain( 'mytheme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'mytheme_localisation' );
Pour résumer: pour traduire des chaînes dans votre thème, utilisez le code suivant:
__( 'Hello, World!', 'mytheme' )
Où "mytheme" est le domaine de texte que vous avez défini dans la fonction de l'étape 18. Si vous combinez cela avec la création des fichiers PO/MO à l'aide de Poedit, vous pourrez rendre votre thème multilingue. Dans mon cas, c’était la solution idéale, car je pouvais changer de langue de façon dynamique en utilisant un sélecteur d’indicateurs sur mon site, et je pouvais enregistrer les préférences de l’utilisateur dans un cookie, puis les rediriger à leur retour.
J'espère que cela aidera quelqu'un d'autre qui a un problème similaire, car cela m'a pris ages à résoudre.
Moi-même, je l'ai fait plusieurs fois ces dernières années, mais seulement pour les plug-ins que j'ai fabriqués. Mais je pense que cela fonctionnera en quelque sorte ou moins identique. Vous devez en effet utiliser la fonction __ () ou une fonction similaire, mais vous devrez toujours au préalable charger le domaine de texte. Je charge le domaine de texte immédiatement après la construction de la classe supérieure et est lancé explicitement par les descendants des contrôleurs front-end et back-end afin de le générer, de sorte que les constantes, etc.
/*
* Init localization text domain
*/
public static function plugin_load_textdomain(){
load_plugin_textdomain( PLUGIN_TEXTDOMAIN, false, dirname(
plugin_basename( __FILE__ ) ) . '/languages' );
}
// This action hooks to WordPress init event and triggers it on init event
add_action( 'init', array($plugin->model, 'plugin_load_textdomain'), 10 );
Cela devrait fonctionner de la même façon avec les fonctions de modèle, je pense. Puis utilisez-le avec une chaîne pour traduire dans la couche de vue, c’est-à-dire
<?php echo __( 'Translate me!', PLUGIN_TEXTDOMAIN ); ?>
Pour que cela fonctionne, le dossier plugin_basename (FICHIER)). '/ languages' doit contenir les fichiers PO avec les chaînes traduites. J'utilise Poedit pour créer les fichiers. Les fichiers créés avec Poedit sont conformes à la manière native de WordPress de traduire et au fonctionnement de MO avec WordPress. Https://codex.wordpress.org/I18n_for_WordPress_Developers }.
J'espère que cela aide et je conviens que de bonnes informations ne sont pas très disponibles à ce sujet. N'hésitez pas à demander plus si nécessaire! Gr