=== xili-language === Contributors: MS dev.xiligroup.com Donate link: http://dev.xiligroup.com/ Tags: theme,post,plugin,posts,page,category,admin,multilingual, bilingual, taxonomy,dictionary,.mo file,.po file,localization, widget, language, international, i18n, l10n, wpmu, multisite, blogroll, japanese, khmer Requires at least: 3.0 Tested up to: 3.3 Stable tag: 2.2.2 xili-language lets you create and manage multilingual WP site in several languages with yours or most famous localizable themes. Ready for CMS design. == Description == **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.** * 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](http://multilingual.wpmu.xilione.com). 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. TRILOGY FOR MULTILINGUAL CMS WEBSITE : [xili-language](http://wordpress.org/extend/plugins/xili-language/), [xili-tidy-tags](http://wordpress.org/extend/plugins/xili-tidy-tags/), [xili-dictionary](http://wordpress.org/extend/plugins/xili-dictionary/) * With [xili-tidy-tags](http://wordpress.org/extend/plugins/xili-tidy-tags/), it is now possible to display sub-selection (cloud) of **tags** according language. With [xili-dictionary](http://wordpress.org/extend/plugins/xili-dictionary/) plugin (beta), it is easier to create or update online, via admin UI, the files .mo of each language. * xili-language plugin **does not create addition tables in the database**. xili-language simply makes proper use of the taxonomy tables and postmeta table offered by WordPress to define language and link items between them. Because xili-language plugin does not modify deeply the post edit UI, it is possible to use **iPhone / iPod Touch** Wordpress app to prepare and draft the post. * **Documentation**: A [table](http://dev.xiligroup.com/?p=1432) summarizes all the technical features (widgets, template tags, functions and hooks) of this powerful plugin for personalized CMS created by webmaster. * Check out the [screenshots](http://wordpress.org/extend/plugins/xili-language/screenshots/) to see it in action. = roadmap = * Delivery of a *premium* version (with attractive fees) packaged with professional support. * Improved documentation for template tags and functions - [started here](http://dev.xiligroup.com/?cat=393&lang=en_us&post_type=xilifunctions). = 2.2.0 - 2.2.2 = * ready for permalink uses in language (need special functions). * languages settings menu in admin bar. * fixes - `wp_list_pages` improved for current language subselection (see code) * improved date formatting options if no *Server Entities Charset* for language like khmer. * improved search form - findposts ajax added in linked metabox for post and page * deep tests with official release of WP 3.2 = 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](http://wordpress.org/extend/plugins/xili-language/changelog/) = Technical infos = * REMEMBER : xili-language follows the WordPress story since more than 4 years. Initially designed for webmasters with knowledge in WP, PHP,… step by step the plugin will improved to be more and more plug and play. So don't forget to visit this [demo site](http://multilingual.wpmu.xilione.com) and [Forum](http://forum2.dev.xiligroup.com/). **Prerequisite:** Verify that your theme is international compatible (translatable terms like `_e('the term','mythemedomaine')` and no displayed texts 'hardcoded' (example in default theme of WP named *twentyten* or *twentyeleven* ). * Works with WP > 3.0 in mono or multisite. For version 2.9 and less, use release 1.7 or less **CMS** * Contains features dedicated to multilingual theme's creators and webmasters. Don't forget to read documented source code. **Documentation for developers** A [table](http://dev.xiligroup.com/?p=1432) summarizes all the technical features (widgets, template tags, functions and hooks) of this powerful plugin for personalized CMS created by webmaster. * Provides infos about **text direction** *ltr* ou *rtl* of languages (arabic, hebraic,...) of theme and of each post in loop * unique id for category link hook [see expert's corner posts](http://dev.xiligroup.com/?p=1045) * hooks to define header metas or language attributes in html tag. **More infos and docs** * Other posts, articles and more descriptions [here](http://dev.xiligroup.com/xili-language/ "why xili-language ?") and [here in action](http://multilingual.wpmu.xilione.com). * Visit also [Forum](http://forum2.dev.xiligroup.com/) to obtain more support or contribute to others by publishing reports about your experience. = Compatibility = xili-language is compatible with the plugin [xili-dictionary](http://dev.xiligroup.com/xili-dictionary/) which is able to deliver .mo files on the fly through the WP admin UI (and .po files translatable by other translators). [xili-dictionary](http://dev.xiligroup.com/xili-dictionary/) used a specific taxonomy without adding tables in WP database. xili-language is compatible with the plugin [xili-tidy-tags](http://dev.xiligroup.com/xili-tidy-tags/ ). xili-tidy-tags lets you create multiple group of tags. That way, you can have a tag cloud for tags in English, another cloud for French tags, another for Spanish ones, and so on. You can also use the plugin for more than multilingual blogs. Basically, you can create any group of tags you want. xili-language is full compatible with the plugin [xilitheme-select](http://wordpress.org/extend/plugins/xilitheme-select/ "xilitheme-select") to be used with iPhone, iPod Touch or other mobiles. More informations about other plugins in the website [dev.xiligroup.com](http://dev.xiligroup.com/ "xiligroup plugins") or in [WP Repository](http://wordpress.org/extend/plugins/search.php?q=xili&sort=) == Installation == READ CAREFULLY ALL THE README AND PREREQUISITES 1. Upload the folder containing `xili-language.php` and language files to the `/wp-content/plugins/` directory, 2. 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](http://dev.xiligroup.com/xili-dictionary/) can be used) 3. verify that a domain name is defined in your theme - see note at end list below, 4. Activate the plugin through the *'Plugins'* menu in WordPress, 5. 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). 6. Modify each post by setting (checking) the language in xili-language box at the right of the post editing window before publishing. 7. Before using your own theme, to understand how xili-language works, install the child theme of twentyten shown in this commented [demo site](http://multilingual.wpmu.xilione.com). 8. Child of TwentyTen and Child of Twenty Eleven themes include a navigation menu - [downloadable here](http://multilingual.wpmu.xilione.com/download/) -. In xili-language settings it is possible to insert automatically languages menu in the menu previously set by you. 9. If you are webmaster and want to add lot of personalizations in your theme, visit [expert's corner](http://dev.xiligroup.com/?cat=480&lang=en_us). = 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](http://multilingual.wpmu.xilione.com) . 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 for visitors or authors = To change the language of the frontpage according to the language of the visitor's browser, check the popup in right small box in settings. To change the default language of a new post according to the language of the author's browser, check the popup in right small box in settings. = xili-language and widgets = Three widgets are created to enrich sidebar : list of languages, recent posts and recent comments with sub-selection according current language. = xili-language and shortcode = Shortcode to add a link to other language inside content of a post like `[linkpost lang="fr_FR"]` is available in a [library](http://dev.xiligroup.com/?p=1111) in complement to xili-language. = xili-language and template tags = * xili-language "*translates*" template tags and permits some variations for webmasters: The most current template tags don't need special work: `wp_list_categories()`, `wp_title()`,... `wp_get_archives` Possible that very special permalinks need to use hook named `xiliml_get_archives_link`. - Sub selection of archives for `wp_get_archives()` with &lang= (see § below) `wp_list_pages()` with optional query tag &lang= * xili-language "*provides*" new template tags (or widgets) to solve issues from WP core or add new features for CMS: `xili_language_list()` - outside loop (sidebar) display the languages of the site (used also by widget) `xiliml_the_category()` - replace the_category() template tag of WP Core improved `xiliml_the_others_posts()` function and theme tag 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. * widget for recent comments that can subselect those for current language. (a function `xiliml_recent_comments()` is also available if you want to create a template tag with resulting objects array). = 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. = text direction = Examples *for theme's designer* of functions to keep text **direction** of theme and of current post : (see child theme of twentyten example [in](http://multilingual.wpmu.xilione.com/300/episode-2-creation-of-a-multilingual-website-with-xili-language/)) `
... ` example in loop : ` 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 !* == Frequently Asked Questions == = What about WPMU and the trilogy ? = [xili-language](http://wordpress.org/extend/plugins/xili-language/), [xili-tidy-tags](http://wordpress.org/extend/plugins/xili-tidy-tags/), [xili-dictionary](http://wordpress.org/extend/plugins/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. = How to see post or page ID in dashbord ? = Now since 1.6.0, IDs are displayed in sidebox UI of post edit window. = Where can I see websites using this plugin ? = dev.xiligroup.com [here](http://dev.xiligroup.com/?p=187 "why xili-language ?") and www.xiliphone.mobi [here](http://www.xiliphone.mobi "a theme for mobile") also usable with mobile as iPhone. As multisite demo, visit the working site made with twentyone default theme: [as shown here](http://multilingual.wpmu.xilione.com). This website contains articles to prepare a multilingual cms site. And as you can see in [stats](http://wordpress.org/extend/plugins/xili-language/stats/), hundreds of sites use xili-language. = For commercial websites, is it possible to buy support ? = Yes, use contact form [here](http://dev.xiligroup.com/?page_id=10). = What is gold functions ?, is it possible to buy them ? = Some gold functions (in xilidev-libraries) are explained [here](http://dev.xiligroup.com/?p=1111) and some belong to pro services for commercial websites. Yes, use contact form [here](http://dev.xiligroup.com/?page_id=10). = Support Forum or contact form ? = Effectively, prefer [forum](http://forum2.dev.xiligroup.com/) 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](http://multilingual.wpmu.xilione.com/300/episode-2-creation-of-a-multilingual-website-with-xili-language/). = Is poEdit mandatory to edit .po and to build .mo file ? = [xili-dictionary](http://wordpress.org/extend/plugins/xili-dictionary/) avoids to use poEdit to update .mo files with contents of terms of your database (categories, ...) == Screenshots == Here a selection of main screenshots. 1. an example of wp-content/themes folder. 2. the admin settings UI. 3. the language setting in post writting UI. 4. Source coding extract with 'international' text in 'xiliphone' theme. 5. xili-dictionary: Admin Tools UI - functionalities windows. 6. xili-language: Admin Tools UI - set homepage and author according his browser's language. 7. xili-tidy-tags: Admin Tools UI - see this compatible plugin to group tags according languages. 8. xili-language widget: Admin widgets UI - since 0.9.9.6, "multiple" languages list widget. 9. xili-language: Special Admin UI sidebox - infos about theme's content for multilingual settings. 10. xili-language: Post Edit UI - when clicking Add New, a new browser window is open and links input are prefilled. 11. xili-language: Widget to display recent posts in choosen target language. 12. xili-language: Post Edit UI - Check option to auto search will be useful for editor when working on existing posts and with multiple authors to collect translated linked posts. 13. Since 1.8.0, if checked in settings, a custom post type can be multilingual like post or page type. 14. Edit screen: example of a custom post type named book. 15. Blogroll and bookmarks taxonomies and language sub-selection. 16. Dashboard: Posts edit list with language sub-selection, quick edit and bulk edit available. 17. Since 2.2.0, new xili-language trilogy menu in admin bar menu to group main settings for multilingual website. == Changelog == = 2.2.2 = * fixes - `wp_list_pages` improved for current language subselection (see code) * improved date formatting options if no *Server Entities Charset* for rare languages. * improved search form - findposts ajax added in linked metabox for post and page = 2.2.1 = * fixes error in navmenu and defaults options of xili_language_list. = 2.2.0 = * source reviewed, folder reorganized, ready for option with lang inside permalink. Screenshots renewed from WP 3.2 RC * deep tests with official release of WP 3.2 = 2.1.1 = * fixes uninstall white screen, fixes focus error = 2.1.0 = * new navigation when singular linked post in xili_language_list, multiple nav menus location, new filter for xili_nav_lang_list see code = 2.0.0 = * erase old coding remaining for 2.9.x - Improve (progressively) readme... = 1.9.1 = * fixes in xili widget recent posts - only post-type display by default - input added to add list of type (post,video,…) * fixes query_var issues when front-page as page or list of posts (thanks to A B-M) = 1.9.0 = * Released as current for 3.1 = 1.8.9.2, 1.8.9.3 = * bulk edit in posts list * add option to adapt nav home menu item = 1.8.9.1 = * add `n` in date formatting translation. * new column in dashboard to see visibility of a language in Languages list - new checkbox in edit and one in widget to subselect only visible langs. * twentyten-xili child theme : now use version 1.0 * Webmaster : xili_language_list hook has now 5 params - see source. * Webmaster : to get linked post ID, don't use `get_post_meta` but `xl_get_linked_post_in` function (see lin #4115) (future changes in linking mechanisms) = 1.8.9 = * filter by languages in Posts edit list. * add filter 'xili_nav_lang_list' to control nav menu automatic insertion by php webmasters. * add filter 'xili_nav_page_list' to control automatic sub-selection of pages. * add id and class for separator in nav menu automatic insertion. * set language available in quick-edit mode of posts list. = 1.8.6 to 1.8.8 = * complete gettext filters - include optional activation of the 3 widgets. - add use `WPLANG` with 2 chars as *ja* for japanese * add gettext filter to change domain for visitor side of widget and other plugins. * optional total uninstall with all datas and options set by xili-language. * readme rewritten - email metabox at bottom. = 1.8.5 = * improve automatic languages sub-folder detection and caution message if `load_textdomain()` is missing and not active in functions.php * repairs oversight about bookmarks taxonomies (blogroll) : now it is possible in widget to sub-select links according language and in template tag `wp_list_bookmarks()` = 1.8.3 - 1.8.4 = * query for posts with undefined language `lang=*`, improved widget languages list (condition) * widgets rewritten as widget class extend. * search form improved * fixes = 1.8.2 = * as expected by some webmasters, 'in' before language is not displayed before name in language list. * better automatic insertion of nav menu for theme with several location. * now compatible with child theme - see [Forum](http://forum2.dev.xiligroup.com/forum.php?id=1) * improve date to strftime format translation. = 1.8.0 = * now, if checked in settings, a custom post type can be multilingual as post or page type. = 1.7.0 - 1.7.1 = * some functions are improved through new hooks (front-page selection). * fixes unexpected rewritting (when permalinks is set) and fixes query of category without languages. * optional automatic insertion of selection by language of pages in top nav menu (WP 3.0 and twentyten) before list of languages. Possible to adapt parameters as in template-tag ` wp_pages_list()` . * **For developers:** `xiliml_cur_lang_head` filter is now obsolete and replace by `xiliml_curlang_action_wp` - see code source - the mechanism for frontpage (home recent posts list or page) is changed and don't now use redundant queries. * **For developers:** if you use `xili_language_list` hook action to create your own list - verify it if you use page as frontpage because 'hlang' querytag is now obsolete. * **Latest version compatible with WP 2.9.x** = 1.6.0 - 1.6.1 = * Add new features to manage sticky posts ( [see this post in demo website](http://multilingual.wpmu.xilione.com/) ) * Fixes refresh of THEME_TEXTDOMAIN for old WP 2.9.x * Improvements mainly for WP 3.0 * more functions to transform without coding site based on famous new twentyten theme. (article later) * possible to complete top nav menu with languages list for website home selection in two ways. * new functions for developpers/webmasters: `xili_get_listlanguages()`, see source. * example of language's definition (popup) to add new language. * Language list widget: list of available options added (hookable also). * some parts of source rewritten. = 1.5.2, 3, 4, 5 = * WP 3.0 (mono or multisite): incorporates automatic detection of theme domain and his new default theme 'twentyten' * A demo in multisite mode with WP 3.0 and 'twentyten' is [here](http://multilingual.wpmu.xilione.com). * remains compatible for previous versions WP 2.9.x * some fixes - see changes log. = 1.3.x to 1.4.2a = * Rename two filters for compatibility with filters renamed by WP3.0. Incorporate posts edit UI modifications of WP3.0. * no unwanted message in homepage when theme-domain is not defined - plugin must be activated AFTER theme domain settings. * improved template_tags : xiliml_the_category, xiliml_the_other_posts (see source doc) * Browser's window title now translated for categories (`wp_title()`). Option in post edit UI to auto-search linked posts in other languages - [see this post](http://dev.xiligroup.com/?p=1498). * New option to adapt the home query according rules defined by chief editor. If home page loop is filled by most recent posts (via index or home.php), formerly, by default xili-language is able to choose the theme's language but not to sub-select the loop (without php coding). Now when checking in Settings *'Modify home query'* - no need to be a php developer. * New widget for **recent posts** (able to choose language). This new widget solves conflicts or issues occuring when WP default widget is present (contains an *obscur* `wp_reset_query`). Also a choice of language of this list of recent posts is possible - not necessary the same of the current page. And you can install multiple widgets. **Replace WP Recent Posts widget by this one named** - *List of recent posts* - * New functions to change and restore loop's language query-tag (see functions [table](http://dev.xiligroup.com/?p=1432) ). * Better dashboard post UI to create linked post (and page): *from one post, it possible to create linked post in another language and the links are prefilled. Just need to save draft to save the links between root and translated posts filled by authors.* [See](http://dev.xiligroup.com/?p=1498) * fixes lost languages's link when trash or untrash (WP 2.9.1). = main features improved in previous releases up to 1.3.1 = * *see readme in [previous versions](http://wordpress.org/extend/plugins/xili-language/download/) to read the changelog chronology* * … = 0.9.0 = first public release (beta) © 20111004 - MS - dev.xiligroup.com == Upgrade Notice == Please read the readme.txt before upgrading. As usually, don't forget to backup the database before major upgrade or testing no-current version. Upgrading can be easily procedeed through WP admin UI or through ftp (delete previous release folder before upgrading via ftp). Verify you install latest version of trilogy (xili-language, xili-tidy-tags, xili-dictionary). v2.1.0 is compatible with settings of previous release BUT introduces now a way to choose multiple navmenu locations - so revisit the settings page to confirm your previous choice or sets to new navigation way including singular links. == More infos == = What about plugin admin settings UI localization ? = It is simple, if you have translated the settings UI of plugin in your mother language, you send us a message through the contact form that contains the link to your site where you have add the .po and .mo files. Don't forget to fill the header of the .po file with your name and email. If all is ok, the files will be added to the xili-language wp plugins repository. Because I am not able to verify the content, you remain responsible of your translation. = What about languages with 2 letters WPLANG as in wp-config.php like japanese ? = Before version 1.8.8, it was necessary to change wp-config.php like japanese and set **WPLANG** to ISO : from *ja* to **ja_JA**. Now with 1.8.8, the trilogy is updated, it is not necessary. So very easy for a japanese to transform his site in a multilingual site by adding other language files. For other mother languages, just add the japanese (ja.mo) inside languages sub-folder ot the theme [kept here](http://ja.wordpress.org/). = What about bookmarks and sub-selection according current language of displayed loop ? = Since version 1.8.5, xili-language has inside his class filters and actions to permit displaying sub-selection of links and bookmarks. * case of default widget-links : in xili-language settings, only check link categories where sub-selection is wanted. * case of template tags : `the_curlang() ) ; ?>` here this new arg named *lang* is set to the current language. Visit links list editor settings page and set for each link the language. = What happens if frontpage is a page ? = The page as frontpage must have its clones in each other languages. Like 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. [home page of website dev.xiligroup.com](http://dev.xiligroup.com/) uses this feature. The plugin is frequently updated. Visit [Other versions](http://wordpress.org/extend/plugins/xili-language/download/). See also the [dev.xiligroup Forum](http://forum2.dev.xiligroup.com/). © 2008-2011 - MS - dev.xiligroup.com