Forum Replies Created
-
AuteurArticles
-
17 September 2009 at 22:30 in reply to: Quelques questions-réponses
à propos de l’extension xili-language v. 1.1 #1076Quoi de neuf dans la version 1.1 ?
Cette version améliore la fonction / balise de thème «
xiliml_the_others_posts()
»
(affiche les liens des articles liés dans une autre langue)- pour être utilisé en sous-titre dans une liste contenant des articles de différences langues
- en renseignant le paramètre « type » en array, la fonction retourne un tableau des langues et id des articles liés à celui en cause (array of lang and id ) – Cet ID est aisément transformable en permalink via
get_permalink()
dans votre code php via ce tableau.
IMPORTANT : Si vous avez « hooké » cette fonction dans votre thème, vous devez réviser votre function « hookante » (qui reste fonctionnelle) dansfunctions.php
pour inclure les options qui retournent le tableau (et non affiche la liste des liens).
Où peut-on mettre la balise de thème ?
Habituellement, cette balise, comme dans le thème de dev.xiligroup se met sous le titre. Et si l’article en cause a des clones dans d’autres langues, les liens vers ceux-ci sont ajoutés.
Autres questions ?
La version en anglais de cet article donne plus d’infos pour les développeurs avec des examples de code…
M.
xili-language latest release 1.1
improves function and theme tag «
xiliml_the_others_posts()
»
(this template tag displays list of links of linked posts in other languages – by example in subtitle)- to be used in multilingual category loop and
- by option (array) to return an array of linked posts in other languages (useful for CMS webmasters) (array of lang and id ) – the id is easily transformable in permalink with function
get_permalink()
when using this array.
IMPORTANT : if this function was previously hooked for your theme, it works but you must review the hooking function of yourfunctions.php
to include new array option (see plugin code).
Where to install this template tag ?
In the single.php or category.php just under the title like here in theme of dev.xiligroup.
Example of code :< ?php the_title(); ?>
< ?php if (class_exists('xili_language')) { echo the_xili_local_time('%B %d, %Y - %H:%M',strtotime(get_the_time('m/d/Y H:i'))); } else { the_time(__('F jS, Y','xilidev'));} ?> - - < ?php xiliml_the_other_posts($post->ID); ?>For theme’s designer : what is new in the function «
xiliml_the_others_posts()
»Essentially, the feature permitting to use this tag inside loop containing posts in multiple languages. (not only in single.php).
For developer : what is new in the function «
xiliml_the_others_posts()
»In the past, this function as a template tag only displays a list of links to other posts in other language. Now, (for developer or webmaster), when setting the fourth param to « array », it returns an array of values. The key are the language slug and the value is the ID of the linked post.
print_r(xiliml_the_other_posts($post->ID,"","","array"))
will return this array (exemple of willkommen post here)
Array ( [ar_ar] => 625 [en_us] => 4 [fr_fr] => 1 [12] => de_de )
You can see that latest key is the ID of the post ID param passed to the function (to help further treatments).
Remember also that the id is easily transformable in permalink with function get_permalink() when using this array.How to display flag instead language name ?
It is possible if you personnalize your theme by adding a hook and a function inside your functions.php.
the hook (note that since 1.1, the lastest param is 4 (instead 3):
add_filter('xiliml_the_other_posts','xiliml_infunc_the_other_posts',10,4); // 1.1 090917
a example of hooking function :
/*special flags in list*/ function xiliml_infunc_the_other_posts($post_ID, $before = "This post in", $separator = ", ", $type = "display") { $outputarr = array(); $listlanguages = get_terms(TAXONAME, array('hide_empty' => false)); $langpost = get_cur_language($post_ID); // to be used in multilingual loop since 1.1 $post_lang = $langpost['lang']; foreach ($listlanguages as $language) { $otherpost = get_post_meta($post_ID, 'lang-'.$language->slug, true); if ($type == "display") { if ('' != $otherpost && $language->slug != $post_lang ) { $outputarr[] = "".__($language->description,THEME_TEXTDOMAIN) ." slug.".png' alt='' />"; } } elseif ($type == "array") { // here don't exclude cur lang if ('' != $otherpost) $outputarr[$language->slug] = $otherpost; } } if ($type == "display") { if (!empty($outputarr)) $output = (($before !="") ? __($before,THEME_TEXTDOMAIN)." " : "" ).implode ($separator, $outputarr); if ('' != $output) { echo $output;} } elseif ($type == "array") { if (!empty($outputarr)) { $outputarr[$post_ID] = $post_lang; // add a key with curid to give his lang (empty if undefined) return $outputarr; } else { return false; } } }
If I need more infos, what to do ?
Use comments below or forum
M.
[xiliinseries series="xl-expert"]xili-language plugin: Other posts for webmasters[/xiliinseries]
17 September 2009 at 19:00 in reply to: Extension xili-language : version 2.2 (compatible WP3.2) #883xili-language vous permet de créer et gérer un site web WP en plusieurs langues avec votre thème ou la plupart des célèbres thèmes localisables. L’extension xili-language permet la création d’un site multilingue grâce à la sélection automatique des fichiers .mo du thème selon la langue de(s) l’article courant(s).
N’oubliez pas de visiter ce site de démo documenté… !
[tabs-group]
[a-tab tabtitle="Description"][caption id="attachment_774" align="alignright" width="128" caption="Logo xili-language"][/caption]L’extension xili-language permet une gestion dynamique en temps réel des fichiers de langue (.mo) du thème courant et donc transforme le site en site multilingue selon la langue du (des) articles.
Un thème ‘traduisible’ peut ainsi être aisément transformé en un thème multilingue temps réel.
Cette extension est destinée aux webmestres et créateurs de thème pour site blogue ou de type CMS qui contiennent des articles de différentes langues et qui souhaitent organiser le site selon la langue des internautes visiteurs. L’extension ajoute des outils qui permettent aux menus et contextes d’être dans la langue de l’article et de sa partie. Les catégories sont traduites. xili-language procure aussi un certain nombre de techniques d’ancrage (hook) qui permettent une personnalisation très fine (sans modifier le code php de l’extension) pour un créateur de sites comportant plusieurs parties en langue différente.
Avec l’extension xili-tidy-tags [ici], il est aussi possible de présenter des sous-nuages (cloud) de mots clés selon leur langage. Avec xili-dictionary (version beta), il est aussi possible de générer les fichiers .po et .mo en temps réel via l’interface d’administration sans faire appel à des logiciels résidents sur l’ordinateur.
L’extension xili-language ne crée pas de nouvelles tables dans la base de données WordPress et utilise uniquement les puissantes possibilités de la taxinomie interne et ses tables existantes. xili-language ne modifie pas la structure de l’interface auteur qui reste donc compatible avec l’application WordPress iPhone – iPod Touch pour ajouter les brouillons que le redacteur en chef pourra affecter et relier entre langues.
Pour les webmestres et les développeurs de thèmes, un article de synthèse est disponible.[/a-tab][a-tab tabtitle="Nouveau !"]
Pensez à lire la version anglaise de ce texte qui est à jour et traduite avec quelques délais en français.1.8.1
La compatibilité avec WP 3.0 (mode mono ou multisite) permet de gérer les menus de navigation, les « custom type », l’automatisation du paramétrage du thème par défaut et les thèmes enfant (child theme).
1.5.5
Les versions 1.5.x, tout en restant compatible WP 2.9.x, incorporent progressivement les nouveautés possibles avec WP 3.0 tant en mode monosite que multisite (wpmu). N’hésitez pas à faire part de vos observations.
1.4.1
Correction d’un oubli pour la traduction du titre de fenêtre (wp_title) dans le cas de l’affichage des catégories.
Ajout d’une option permettant de forcer la langue des derniers articles affichés dans la page d’accueil (basé sur home.php).
Un nouveau widget pour les articles récents (pour corriger un pb de celui disponible par défaut dans WP – tracs #12320) avec en sus la possibilité de choisir la langue. On peut ainsi avoir ceux dans une autre langue que celle courante. Donc ne pas utiliser le widget WP.[caption id="attachment_1549" align="aligncenter" width="306" caption="xili-language : le widget Articles récents"][/caption]
1.3.1
L’interface auteur permet en un seul click de créer les articles liés à remplir dans d’autres langues – voir ce texte -.
1.1.8, 1.1.9
Quelques nouveautés pour cette version intermédiaire (avec tests pour le futur WP 2.9).
– options pour les tests avec l’extension « Cache Translation Object » du suédois Johan.
– corrections des défauts de traduction du « title » des liens des archives mensuelles en cas de permalinks sans la balise /%post_id%/. Des permaliens très particuliers peuvent nécessiter l’utilisation du hook ‘xiliml_get_archives_link’.
– détection automatique (au prix de 50 lignes php supplémentaires) du domaine du thème et du sous-dossier des langues (fichiers .mo). L’ancienne méthode par déclaration des constantes reste valide.
– Ajout de fonctions spéciales (bibliothèques partagées – exemple d’un ‘shortcode’ pour insérer un lien dans le texte sur l’article lié – et fonctions ‘Or’) pour les webmestres et créateurs de thèmes qui sont décrites dans ces articles.1.1
Cette version améliore la fonction / balise de thème «
xiliml_the_others_posts()
»
(affiche les liens des articles liés dans une autre langue)- pour être utilisé en sous-titre dans une liste contenant des articles de différences langues
- en renseignant le paramètre « type » en array, la fonction retourne un tableau des langues et id des articles liés à celui en cause (array of lang and id ) – Cet ID est aisément transformable en permalink via
get_permalink()
dans votre code php via ce tableau.
IMPORTANT : Si vous avez « hooké » cette fonction dans votre thème, vous devez réviser votre function « hookante » (qui reste fonctionnelle) dansfunctions.php
pour inclure les options qui retournent le tableau (et non affiche la liste des liens).
1.0
Wordpress 2.8 venant de sortir, la version de xili-language prend le numéro 1.0. L’extension est compatible aussi bien pour la 2.7.x que la 2.8.
Le choix de la langue de la page d’accueil d’un site est maintenant définissable via l’interface de réglages mais est toujours possible via des règles logiciels soit de base soit via les API (hook) que le webmestre designer ajoute.0.9.9.6
Le widget de la liste des langues est « pluriel ». Il peut y avoir plusieurs widgets s’il y a plusieurs menus latéraux ou en en tête. Par défaut, le type ‘typeone’ donne une liste qui n’affiche que les autres langues que celle en cours et si une catégorie est affichée, les liens ne dirigent que vers les articles dans l’autre langue sur la dite catégorie. L’utilisation des API (ancrage ou hook) permet une personnalisation comme sur le site ici (en haut et à droite…).
Un nouvel article sur les balises de modèle (thème) en anglais à ce jour0.9.9.5
Possibilité de modifier un article lié d’une autre langue directement.
[caption id="attachment_898" align="alignnone" width="298" caption="lien de modification de l\'article lié"][/caption]Compatibilité php4 pour des hébergeurs du siècle précédent !
0.9.9.4
Un nouveau widget pour les commentaires récents sélectionnant ceux uniquement dans la langue courante. (une fonction `xiliml_recent_comments()` est aussi disponible si vous voulez créer vos propres balises à partir du tableau d’objets résultants. Sous-sélection d’archives via `wp_get_archives()` avec &lang= : voir la note ici.If frontpage is a page, select correlated page according language see Other notes.
0.9.9.3
sub selection of pages for `wp_list_pages()` with &lang=, some fixes (other posts, options when activate,…)
Example 1 :wp_list_pages('title_li=&lang='.the_curlang() );
will display only pages of current lang
Example 2 :wp_list_pages('title_li=&setlang=0&lang='.the_curlang() );
will display pages of current lang AND pages with lang undefined (polyglot pages).
and soon examples how to install selected rss as visible here in the left sidebar.
0.9.9.2
fixe class of metabox has-right-sidebar for 2.8 – some other admin UI sizing, W3C – improved template-tag default function `xiliml_the_other_posts()` display (if you had hook it in previous version, verify the hook of your functions.php, see php code lines 1314, 1650).
0.9.9
now provides infos about **text direction** *ltr* ou *rtl* of languages (arabic, hebraic,…) of theme and of each post in loop see note [direction in installation](http://wordpress.org/extend/plugins/xili-language/installation/). Soon more infos and demos for designers if multilingual theme. Some fixes (thanks to Jacob about QuickEdit UI bug when post update).
[/a-tab]
[a-tab tabtitle="Installation"]
1. Télécharger sur le serveur le dossier contenant `xili-language.php` et autres fichiers dans le répertoire `/wp-content/plugins/`,
2. Vérifier que le thème est ‘international’ compatible avec des fonctions comme `_e(‘the term’,’mytheme’)` et non des descriptifs codés en dur entre les balises html –
3. déclarer le nom de domaine du thème (voir note plus bas),
4. Activer l’extension,
5. Aller dans le menu Réglages, Langage du tableau de bord et ajouter vos langues (description iso) dans la liste par défaut. L’ordre des langues peut-être choisi (1,2,3…) . (utilisable dans la balise de modèle `language_attributes()` – template_tag -.
6. Dans chacun des articles sélectionner la langue via la boite en haut à droite.NOTE SPECIFIQUE pour la version 1.1.9 et suivantes
Il y a maintenant détection automatique (au prix de 50 lignes php supplémentaires) du domaine du thème et du sous-dossier des langues (fichiers .mo). L’ancienne méthode par déclaration des constantes reste toutefois valide.
Il reste donc nécessaire d’encapsuler la fonctionload_theme_textdomain()
comme dans cet exemple pour le thème nommé fusion:if (!class_exists('xili_language')) { // class in not (!) present... load_theme_textdomain('fusion', get_template_directory() . '/lang'); }
NOTE IMPORTANTE
Dans le fichier functions php du thème : remplacer en la commentant la ligne `load_theme_textdomain` `//load_theme_textdomain(‘mythemename’); ` par un *define* `define(‘THEME_TEXTDOMAIN’,’mythemename’); //second text must be used in theme texts with _e( , ) or __( , )` where ‘mythemename’ is `’kubrik’` in default international theme.
Un autre exemple avec le thème fusion qui est ‘international’ :
remplacer
function init_language(){ load_theme_textdomain('fusion', get_template_directory() . '/lang'); }
par
function init_language(){ if (class_exists('xili_language')) { define('THEME_TEXTDOMAIN','fusion'); define('THEME_LANGS_FOLDER','/lang'); } else { load_theme_textdomain('fusion', get_template_directory() . '/lang'); } }
voir l’article [recent post](https://dev.xiligroup.com/?p=427 « Transform a theme with localization »).
Détection du navigateur
Utilisez la case à cocher dans la boite de réglage.Le sens d’écriture (depuis 0.9.9)
Exemples pour des webmestres dont les articles comportent des langues de sens d’écriture variable (arabe, hébreu, persan,…) :
< ?php $themelangdir = ((class_exists('xili_language')) ? the_cur_lang_dir() : array ()) ; ?>
...example in loop :
< ?php while (have_posts()) : the_post(); $langdir = ((class_exists('xili_language')) ? get_cur_post_lang_dir($post->ID) : array()); ?>
petit exemple dans le css :
.rtl {direction: rtl; text-align:right !important; font-size:130% !important;} .ltr {direction: ltr; text-align:left !important;}
Caution : multilingual theme with both ltr and rtl texts needs a rigourous structure of the css !
Sélection des archives selon la langue des articles
Les balises de modèle Archives sont très complexes en arrière plan et ne sont pas facilement ‘crochetables’ par les extensions comme xili-language (sauf à refaire des codes titanesques) . Aussi, on a décidé d’ajouter quelques petites spécifications: en ajoutant des clés de recherche dans la variable de wp_get_archives, il est possible d’afficher des sous-ensembles des archives mensuelles selon la langue choisie.
wp_get_archives('..your.vars..&lang=fr_fr')
ou selon la langue en cours du thème
wp_get_archives('..your.vars..&lang=')
Les liens de la liste sont traduits et seuls les articles du mois dans cette langue sont affichés.
WordPress 2.8 beta : qu’en est-il ?
A ce jour, xili-language est ‘compatible’ avec la beta 2 et des thèmes utilisant les fonctions de traduction _e() et __() et des fichiers .mo.
[/a-tab]
[a-tab tabtitle="Q. & R."]Est-ce que les fonctions et règles du noyau de l’extension sont modifiables sans y toucher ?
Oui par les développeurs de thèmes. Le script php de l’extension est documenté et décrit les méthodes d’accrochage/ancrage via add_action ou add_filter pour les fonctions essentielles de xili-language. Voici un exemple pour créer une liste des langues avec vos propres drapeaux.
Où peut-on voir des sites fonctionnant avec xili-language ?
D’après les statistiques de téléchargement lors des mises à jour, il y en a près de 150 mais voici les nôtres :
dev.xiligroup.com ( « why xili-language ? »)
et
http://www.xiliphone.mobi ( « a theme for mobile ») qui est aussi adapté à la navigation avec un iPhone ou un iPod Touch.[/a-tab]
[a-tab tabtitle="Copies d'écran"]
1. un exemple de dossier wp-content/themes avec un thème contenant des fichiers de langue (.mo)
[caption id="attachment_734" align="alignnone" width="239" caption="an example of wp-content/themes folder"][/caption]
2. L’écran de paramétrage
[caption id="attachment_735" align="alignnone" width="300" caption="the admin settings UI"][/caption]
3. La boîte de choix des langues dans l’écran de rédaction d’un article
[caption id="attachment_736" align="alignnone" width="367" caption="the language setting in post writting UI"][/caption]
4. Extrait de codage php dans un thème ‘international’ du domaine ‘xiliphone’
[caption id="attachment_737" align="alignnone" width="300" caption="coding extract with 'international' text in 'xiliphone' theme"][/caption]
5. Interface de réglage : assignation du langage par défaut au langage du navigateur de l’internaute.
[caption id="attachment_739" align="alignnone" width="350" caption="Admin Tools UI - pre-set default language of author according his browser's language."][/caption]
6. xili-tidy-tags : une extension compatible pour regrouper les mots-clés selon les langues
[caption id="attachment_740" align="alignnone" width="300" caption="xili-tidy-tags : Admin Tools UI - see this compatible plugin to group tags according languages"][/caption]
7. xili-dictionary : admistration de l’extension gérant les dictionnaires multilingues et générant les fichiers .mo
[caption id="attachment_738" align="alignnone" width="300" caption="xili-dictionary : Admin Tools UI - list of translated terms"][/caption]
[/a-tab]
[a-tab tabtitle="Autres infos"]Que se passe-t-il sur la page d’accueil est une « page » ?
Depuis la 0.9.9.4, l’extension intègre des outils qui étaient auparavant possible grâce aux potentialités des accrochages (hook) dans les fonctions et méthodes de xili-language. Cette page doit donc avoir son clone dans les autres langues. Comme pour les articles, selon les règles choisies, si le visiteur navigue via un navigateur en français, si elle existe la page en français lui sera affichée. Un article plus détaillé sera publié prochainement pour les néophytes du php.
N’hésitez pas à lire les articles et notes concernant l’extension xili-language ici.
voir sur le [WordPress plugins forum].
[/a-tab]
[a-tab tabtitle="Téléchargement"]
La version courante est disponible sur le catalogue des extensions de WordPress.org.
[/a-tab]
[/tabs-group]
[xiliinseries]Cet article est dans la série – xili-language pour les auteurs :[/xiliinseries]
xili-language lets you create and manage a WP website in multiple languages with yours or most famous localizable themes. xili-language provides for a bilingual (or multilingual) website an automatic selection of language (.mo) in theme according to the language of current post(s) or page. Theme’s behaviour can be fully personalized through hooks and api. Ready for CMS developers and designers.
Please visit this documented demo site !
[tabs-group]
[a-tab tabtitle="Description"][caption id="attachment_774" align="alignright" width="128" caption="Logo xili-language"][/caption]xili-language plugin provides an automatic selection of language in theme according to the language of one post. xili-language use on the fly the .mo files present in the theme’s folder.
- xili-language plugin provides an automatic selection of language in theme according to the language of displayed post, series of posts, page or articles. If the post is in gaelic, the texts of the theme will be in gaelic if the author checks the post as gaelic and if the theme contains the right .mo file for this target language.
- xili-language select on the fly the multilingual .mo files present in the theme’s folder.
Themes with localization can be easily transformed for realtime multilingual sites. - NEW: With now WordPress 3.0, the default theme named twentyten can be used without php coding for a multilingual site as shown here. xili-language plugin works on mono or multisite mode.
- xili-language is also dedicated for theme’s creator or webmaster with knowledges in CMS and WP and having (or not) tools to create .mo language files. Through API (hook), the plugin add automatic tools (or links or filters) for sidebar or top menus. Categories or Archives lists are translated also.
- xili-language provides also series of functions which can be hooked in the functions.php file of the theme that you create i.e. for a cms like multilingual website.
[/a-tab]
[a-tab tabtitle="New !"]
Documentation : A new table summarizes all the technical features of this powerful plugin for personalized CMS created by webmaster.2.1.0
when a singular (single or page) is displayed, linked posts of other languages are set in xili-language-list links . Previously, it was possible to offer this behaviour by using hook (filter) provided by the plugin. Now, for newbies, it will be easier to link posts according languages with widget.
for previous users of navigation menus : v2.1.0 is compatible with settings of previous release BUT introduces now a way to choose multiple menu locations – so revisit the settings page to confirm your previous choice or sets to new navigation way including singular links.News from 1.8.0 to 2.0.0
see tab and chapters in changelog
[/a-tab][a-tab tabtitle="Installation"]
READ CAREFULLY ALL THE README AND PREREQUISITES- Upload the folder containing xili-language.php and language files to the /wp-content/plugins/ directory,
- Verify that your theme is international compatible – translatable terms like _e(‘the term’,’mytheme’) and no text hardcoded – and contains .mo and .po files for each target language – (application poEdit and/or plugin xili-dictionary can be used)
- verify that a domain name is defined in your theme – see note at end list below,
- Activate the plugin through the ‘Plugins’ menu in WordPress,
- Go to the dashboard settings tab – languages – and adapt default values if necessary by adding your languages in the catalog. You can set the order (1,2,3…) of the series. (used in language_attributes() template_tag).
- Modify each post by setting (checking) the language in xili-language box at the right of the post editing window before publishing.
If you are webmaster and want to add lot of personalizations in your theme, visit expert’s corner.
XILI-LANGUAGE VERSION >=1.8.0 is not compatible with WP less than 3.0
SPECIAL NOTE FOR XILI-LANGUAGE VERSION >= 1.5.0 and WP 3.0
Nothing to do in functions.php as in former version of WP and xili-language : only verify that the theme is localizable and functions.php contains a function load_theme_textdomain(); and that the theme’s folder contains .mo files (in root or a language sub-folder) for each languages of your website. « twentyten » default WP theme is compatible with help of a child theme « twentyten-xili » available here in action and downloadable .
Plugin is backward compatible for theme of monosite. But if you upgrade xili-language, it is better to restore your theme with default load_theme_textdomain();. Delete lines concerned by constants THEME_TEXTDOMAIN and languages sub-folder THEME_LANGS_FOLDER.
NOTE FOR THEMES DESIGNER
If your theme is compatible both for newest (>3.0-apha) and older versions, add some conditional lines.NOTE FOR COMMENT FORM IN WP 3.0
Today with WP3.0, comments form language is based on default language of admin UI and not on theme’s language. xili-language solves this features. So you need to add this terms msgid in the .po of your theme for translation used by xili-language. In latest version, xili-dictionary adds this option to avoid tedious copy and paste !Browser detection
To change the language of the frontpage according to the language of the visitor’s browser, check the button in right small box in settings.text direction, since 0.9.9
Examples *for theme’s designer* of functions to keep text **direction** of theme and of current post :
< ?php $themelangdir = ((class_exists('xili_language')) ? the_cur_lang_dir() : array ()) ; ?>
...example in loop :
< ?php while (have_posts()) : the_post(); $langdir = ((class_exists('xili_language')) ? get_cur_post_lang_dir($post->ID) : array()); ?>
minimal example in css :
.rtl {direction: rtl; text-align:right !important; font-size:130% !important;} .ltr {direction: ltr; text-align:left !important;}
Caution : multilingual theme with both ltr and rtl texts needs a rigourous structure of the css !
Archives selection
Archives tags is a very complex template tag in his background and not very easy source hookable. So we decided to add few features : by adding query in vars of the function, it will be possible to display a monthly list of archives for a selected language
wp_get_archives('..your.vars..&lang=fr_fr')
or the current the theme language
wp_get_archives('..your.vars..&lang=')
The displayed list of links will be translated and link restrited to display only archives of this language.
WordPress 2.8 beta
Today, xili-language is ‘compatible’ with ‘nightly’ of next WP release.
[/a-tab]
[a-tab tabtitle="F. A. Q."]What about WPMU and the trilogy ?
xili-language, xili-tidy-tags, xili-dictionary
Since WP 3.0-alpha, if multisite is activated, the trilogy is now compatible and will include progressively some improvements dedicaded especially for WPMU context. Future specific docs will be available for registered webmasters. Contact us.
How to see post or page ID in dashbord ?
Now since 1.6.0, IDs are displayed in sidebox UI of post edit window.
Are the default rules (functions) of xili-language plugin hookable ?
Yes, by theme’s developers. In plugin’s php script, all is documented and the hooks can be added in functions.php file of the theme. Here one example to create a languages list with flag as here in left sidebar.
Where can I see websites using this plugin ?
dev.xiligroup.com (« why xili-language ? »)
and
http://www.xiliphone.mobi (« a theme for mobile ») also usable with mobile as iPhone.JacobandEric informs that these two websites are powered by xili-language :
http://terranovasite.com/blog/
http://altitude-blog.com/For commercial websites, is it possible to buy support ?
Yes, use contact form here.
What is gold functions ?, is it possible to buy them ?
Some gold functions (in xilidev-libraries) are explained here and some belong to pro services for commercial websites. Yes, use contact form here.
Support Forum or contact form ?
Effectively, prefer forum to obtain some support.
Does xiligroup provide free themes ?
No yet, but a lot of well designed themes like fusion or Arclite are very easily adaptable. Only, a child theme of twentyten is shipped here for demo.
Is poEdit mandatory to edit .po and to build .mo file ?
xili-dictionary avoids to use poEdit to update .mo files with contents of terms of your database (categories, …)
[/a-tab]
[a-tab tabtitle="Screenshots"]
1. an example of wp-content/themes folder of a theme with localization files (.mo)
[caption id="attachment_734" align="alignnone" width="239" caption="an example of wp-content/themes folder"][/caption]
2. the admin settings UI
[caption id="attachment_735" align="alignnone" width="300" caption="the admin settings UI"][/caption]
3. the language setting in post writting UI
[caption id="attachment_736" align="alignnone" width="367" caption="the language setting in post writting UI"][/caption]
4. coding extract with ‘international’ text in ‘xiliphone’ theme
[caption id="attachment_737" align="alignnone" width="300" caption="coding extract with 'international' text in 'xiliphone' theme"][/caption]
5. Admin Tools UI – pre-set default language of author according his browser’s language.
[caption id="attachment_739" align="alignnone" width="350" caption="Admin Tools UI - pre-set default language of author according his browser's language."][/caption]
6. xili-tidy-tags : Admin Tools UI – see this compatible plugin to group tags according languages
[caption id="attachment_740" align="alignnone" width="300" caption="xili-tidy-tags : Admin Tools UI - see this compatible plugin to group tags according languages"][/caption]
7. xili-dictionary : Admin Tools UI – list of translated terms
[caption id="attachment_738" align="alignnone" width="300" caption="xili-dictionary : Admin Tools UI - list of translated terms"][/caption]
[/a-tab]
[a-tab tabtitle="Other Notes"]What happens if frontpage is a page ?
Before publishing an ‘how-to‘, since 0.9.9.4, the plugin incorporates now features that are formerly possible through the hookable functions of xili-language. The page frontpage must have her clones in each other languages. As for posts, if the user’s browser is not in the default language, xili-language will display the page in the corresponding language if set by the editor. Be patient, a detailled post will arrive soon…
The first beta releases was for theme’s creator or designer.
See also the other posts about xili-language here.
and the [WordPress plugins forum].
[/a-tab]
[a-tab tabtitle="Download"]
The current version is available in the WordPress Plugins Directory repository.
[/a-tab]
[/tabs-group]
[xiliinseries]xili-language: posts series for experts[/xiliinseries]
[xiliinseries series="xl-author"]xili-language: posts series for authors[/xiliinseries]
QUESTION (coming from contact – please use forum next time)
Hi!
When translating in Xili Dictionary the categories shows up in both languages. For example « Beauty & Health (Skönhet och Hälsa)
Why?
I only want to show the english words when choosing the language « english »
Kind regards
Ulrica
Xiligroup dev Answer
Your pb don’t have origin in xili-dictionary …
It will depend if you are (or not) php easy… Effectively, by default xili-language plugin present in () the mother language you use in your theme. By using hook and small function in your theme -functions.php) you can change this feature…
Tell me if you can do that- if not – I will here present a solution…
22 July 2009 at 14:49 in reply to: From a theme with localization to a multilingual theme with xili-language : technical and general notes. #1055This post follow the tests about multilingual themes published in May.
When studying FAQ of xili-language about some themes with localization (lots of theme’s creator forget to add in tags – localization or international, translation-ready,…), we discover that lot of improvements can be done during creation/design steps to easy transform them in a real multilingual theme.
With examples like with themes – INOVE or ARCLITE, FUSION or ATAHUALPA, we will illustrate here some features that must be considered.
As introduction :
localization and multilingual :
a theme is localizable if the language of the theme can be set by the webmaster according the language of the admin dashboard (in config.php). The .mo file of the language must be present inside the theme’s folder.
A multilingual theme change LIVE his texts when, depending some rules, the language of the post or the visitor’s browser change.
With few modifications, a well made localizable theme can be multilingual with help of xili-language plugin.Chapter One
What we observe with the themes choosen as example :
ARCLITE, FUSION by digitalnature.ro
After our previous post, thanks to the author who includes the few lines of code inside the source… If xili-language is active, all the theme becomes live- multilingual.
End of august, we hope to provide more improvements to place languages selector (widget) with better design (as permitted by hooks inside xili-language plugins).INOVE by http://www.neoease.com
The languages are in a sub-folder named « languages ».
Only one line in functions.php must be modified :
/** l10n */ function theme_init(){ load_theme_textdomain('inove', get_template_directory() . '/languages'); }
to :
/** l10n */ function theme_init(){ /* * xili-language PLEASE DO NOT DELETE * @since 090422 */ if (class_exists('xili_language')) { define('THEME_TEXTDOMAIN','inove'); define('THEME_LANGS_FOLDER','/languages'); } else { load_theme_textdomain('inove', get_template_directory() . '/languages'); } }
But inside the theme, by instance in sidebar.php some texts remain coded as « hard » and don’t incorporate multilingual function __() or _e()… below « Categories » on line 121.
< ?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('east_sidebar') ) : ?>Categories
-
< ?php wp_list_cats('sort_column=name&optioncount=0&depth=1'); ?>
ATAHUALPA by BytesForAll
Here there is only the .pot file, you must create both .po and .mo files for expected languages. You must use PoEdit to complete the file by instance for french (fr_FR.po) or german (de_DE.po) and compile them in .mo (fr_FR.mo, de_DE.mo,…). The theme’s author leave these files inside folder and not in a sub-folder.
the present line of code inside functions.php :// Load translation file load_theme_textdomain('atahualpa');
the lines modified :
// Load translation file if (class_exists('xili_language')) { define('THEME_TEXTDOMAIN','atahualpa'); define('THEME_LANGS_FOLDER',''); } else { load_theme_textdomain('atahualpa'); }
Chapter Two
Dynamic elements and live translations : Categories, tags, widget’s titles must be also dynamic translatable. You can check all these english terms and add it with poEdit but it is far easiest to use xili-dictionary to complete the .po (and .mo) files. See the posts inside this website and also read the review of Jacob here.
as a preliminary conclusion
the core and the hooks
Provided as a core to offer live selections of languages according rules (post or browser), xili-language plugin remains a way to implement rich and customized solutions for CMS or blogs – the hooks are here for that. xili-tidy-tags and xili-dictionary reinforce the toolbox.webmaster or end-users
The first target of the plugin are webmasters with knowledges in WP (php and html). The future will be for end-users… with the help of theme’s designers.
next steps
After WP 2.8.2 release that introduces some powerful librairies, it will be possible soon to provide plug and play kit for non-developer people.Michel July 22th
[xiliinseries]xili-language: posts for experts[/xiliinseries]
Now you can read the post (From a theme with localization to a multilingual theme with xili-language : technical and general notes. )published today : https://dev.xiligroup.com/?p=1055 where Atahualpa is cited as example.
Je vais regarder votre problème dans les jours à venir !
Patience
This xiligroup website is powered with WP 2.8.1 and Language is visible in the settings menu on left !
What other plugins have you ?
Michel
This post is an introduction for experts in php and wordpress about filters used in xili-language.
The changes from wordpress’s version 2.7.x to 2.8, was an opportunity to verify filters and hooks used by xili-language plugin and for the plugin itself. And how to collect unique id of each filter (to, by instance, to temporary remove it or to cancel it…)
Two cases : the filter is already inside WordPress and the filter is created by the plugin itself.In these two cases, the unique id of an added function differs when added inside a class as the class of xili_language. The unique id is currently the name of the function added in the filtering queue but if added during class instantiation, this unique id contains also as prefix the class name and a suffix (suffix different in WP 2.7.x and WP 2.8.x). So, since latest versions, we decide to store these filters id in class array var (idx[]).
First example : the filter is created by the plugin itself
by instance xili_language_list()
If the default plugin function detects that you have add you function to customize the language’s list, the function remove the filter (action) built by default in the class :
function xili_language_list($before = '
- ', $after ='
', $theoption='') { /* list of languages i.e. in sidebar */ global $xili_language; if ($xili_language->this_has_filter('xili_language_list')){ remove_filter('xili_language_list',$xili_language->idx['xili_language_list']); /*no default from class*/ } do_action('xili_language_list',$before,$after,$theoption); }Second example : the class add a filter
here to adapt category_link
This function is used in customization functions when we need to know « category link » without xili-language filtering (by instance as in wp_categories_list())./** * Replace get_category_link to bypass hook from xili_language * * @since 0.9.7.4 * @updated 1.0.1 * can be used in functions.php for special action needing permalink * @param category ID * @return the permalink of passed cat_id. */ function xiliml_get_category_link($catid = 0) { global $xili_language; if ($catid == 0) { global $wp_query; $catid = $wp_query->query_vars['cat']; } remove_filter('category_link', $xili_language->idx['xiliml_link_append_lang']); $catcur = get_category_link($catid); add_again_filter('category_link', 'xiliml_link_append_lang'); return $catcur; }
It is possible because class memorize unique id when filter is added :
add_filter('category_link', array(&$this,'xiliml_link_append_lang')); $filter = 'category_link'; $function = 'xiliml_link_append_lang'; $this->idx['xiliml_link_append_lang'] = _wp_filter_build_unique_id($filter, array (&$this, $function == '' ? $filter : $function), 10); /* unique id of this filter from object fixed 1.0.1 */
By offering API and hooks, wordpress opens wide world of customizations but needs rigourous coding…
In this coding extract, some lines about how, here on this website, the language’s list on sidebar is adapted via a function inside functions.php :
} elseif ($theoption == 'siderss') { if (is_category()) { $catcururl = xiliml_get_category_link(); $currenturl = $catcururl.'&'; //print_r(); $cat_ID = $wp_query->query_vars['cat']; $currentrss = get_bloginfo('siteurl').'?feed=rss2&cat='.$cat_ID; } else { // home $currenturl = get_bloginfo('siteurl').'/?'; $currentrss = get_bloginfo('siteurl').'/?feed=rss2'; } $listlanguages = get_terms_of_groups_lite (the_cur_langs_group_id(),TAXOLANGSGROUP,TAXONAME,'ASC'); foreach ($listlanguages as $language) { if ($language->slug != 'ar_ar' && $language->slug != 'ar_ma') { if ($before=='
- ') { if (the_curlang() == $language->slug) { $beforee = '
- '; } else { $beforee ='
- '; } } $a .= $beforee ."description,THEME_TEXTDOMAIN)."'>"." slug.".png' alt='' /> ". __('in '.$language->description,THEME_TEXTDOMAIN) ." slug."'>".$after; } } if (is_category()) { $currenturl = xiliml_get_category_link(); $a .= $before.""." ".__('in all languages',THEME_TEXTDOMAIN)." ".$after; } echo $a; }
Hope that post will help and begin comments…
[xiliinseries]xili-language: others posts for expert[/xiliinseries]
-
AuteurArticles