J'ai beaucoup lu sur ce qui est optimal pour traduire votre site web (français et anglais dans mon cas)
J'ai créé un site Multi où j'ai créé deux sites, l'un français mywebsite.com/fr et l'autre en anglais mywebsite.com/en.
Je suis maintenant en train de traduire mon thème (par défaut), j'ai ajouté ceci à mon thème function.php:
load_theme_textdomain('INTERluminaires', get_template_directory() . '/languages');
puis modifié mes fichiers modèles afin de pouvoir traduire du texte
<?php _e("Design et conseils", "INTERluminaires"); ?>
créé un fichier po et mo avec poedit, tout se passe bien.
J'ai téléchargé ces fichiers dans mon dossier de thème/mes langues
ces fichiers sont nommés en_CA.po et en_CA.mo (j'ai essayé INTERluminaires-en_ca.po et mo en vain)
lorsque je change de langue de thème dans les paramètres généraux et que j'actualise mon site Web, rien n'est traduit.
aucune idée de ce qui pourrait être faux ici?
au fait, j'ai réussi à traduire un plugin que j'ai installé sans aucun problème.
Vous avez un code incomplet. Vous enregistrez le domaine textuel de votre thème, mais ne communiquez pas réellement à WordPressloadvos fichiers de traduction.
Pour ça:
load_theme_textdomain('INTERluminaires', get_template_directory() . '/languages');
Ajoute ça:
$locale = get_locale();
$locale_file = get_template_directory() . "/languages/$locale.php";
if ( is_readable( $locale_file ) ) {
require_once( $locale_file );
}
Ou, tout à fait (et correctement emballé dans un rappel):
<?php
function wpse49326_translate_theme() {
// Load Theme textdomain
load_theme_textdomain('INTERluminaires', get_template_directory() . '/languages');
// Include Theme text translation file
$locale = get_locale();
$locale_file = get_template_directory() . "/languages/$locale.php";
if ( is_readable( $locale_file ) ) {
require_once( $locale_file );
}
}
add_action( 'after_setup_theme', 'wpse49326_translate_theme' );
?>