mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
Yesterday I installed GetSimple and didn't find support for multilanguage sites.
So I've created a plugin http://get-simple.info/extend/plugin/i18n/69/, which adds multilanguage support and hierarchical menus to your website.
The language is determined by the language in the user session (if previously set with the URL parameter "setlang") and the http accept language header. By using the URL parameter "lang" this can be overridden for the current request.
If you want to show the language in the URL, see here.
Installation
Copy i18n.php to your plugin directory, change the constant I18N_DEFAULT_LANGUAGE in i18n.php, and replace the following functions in your template(s):
- get_component with get_i18n_component
- get_navigation with get_i18n_navigation
Usage
To internationalize a page,
- create another page with the same slug/URL and the 2-letter language code separated by a "_" (e.g. for page "index" create another one "index_it" for italian),
- set its meta data, esp. the title and the menu text.
- The properties "parent page", "template" and "add to menu" are ignored, the properties of the base page (without language) are used instead.
The base page (without language) is assumed to be in the language specified as I18N_DEFAULT_LANGUAGE in i18n.php.
To use the internationalized hierarchical menu,
- ensure that the hierarchical structure of the base pages (without language) is set up correctly (property "parent page"),
- the "add to menu" property of the relevant base pages is checked,
- all language pages have at least the "title" property set,
- add to your template(s) "get_i18n_navigation(return_page_slug(), minlevel, maxlevel)", e.g.
- "get_i18n_navigation(return_page_slug(),0,0)" for your top level menu in the header, and
- "get_i18n_navigation(return_page_slug(),1,10)" for the remaining menu levels in the sidebar menu
- for a menu, which should only contain entries, which are available for the current language use "get_i18n_navigation(return_page_slug(),0,10,I18N_SHOW_LANGUAGE)"
- for a site map use "get_i18n_navigation(return_page_slug(),0,10,I18N_SHOW_PAGES)" (all pages, menu texts) or "get_i18n_navigation(return_page_slug(),0,10,I18N_SHOW_TITLES)" (all pages, titles) or "get_i18n_navigation(return_page_slug(),0,10,I18N_SHOW_MENU)" (only the pages visible in the menu).
get_i18n_navigation adds the following css classes to the list items:
- slug of the page
- slug of the page's parent
- "current", if the page is the current page
- "currentpath", if the page is a parent, grandparent, etc. of the current page
- "open", if the page has children whose menu items are currently displayed
- "closed", if the page has children whose menu items are currently not displayed
If you want a one-level menu only, you have to make sure that all your base pages that are in the menu have "--- None ---" as parent.
Problem Solving
If, when visiting the site (with Chrome), the languages switches back to the default language, after you have switched to another language (with parameter setlang=...)
- make sure that you have a favicon.ico on your site. Requesting favicon.ico MUST NOT return the GetSimple not-found page!
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
(This post was last modified: 2013-01-06 02:42:44 by mvlcek.)
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
A new version (0.7) is available, which adds an I18N view on the admin pages tab, which shows all pages and their language variants in a table.
Installation (additional)
To make best use of the add links on the I18N view (some fields prefilled), you must patch the file admin/edit.php as follows:
Code:
...
if ($id)
{
...
}
else
{
// --- add the following lines
if (isset($_GET['parent'])) $parent = $_GET['parent'];
if (isset($_GET['template'])) $template = $_GET['template'];
if (isset($_GET['metak'])) $metak = $_GET['metak'];
if (isset($_GET['metad'])) $metad = $_GET['metad'];
if (isset($_GET['menu-enable'])) $menuStatus = $_GET['menu-enable'];
if (isset($_GET['menu-order'])) $menuOrder = $_GET['menu-order'];
if (isset($_GET['private'])) $private = $_GET['private'];
if (isset($_GET['title'])) $title = $_GET['title'];
if (isset($_GET['menu'])) $menu = $_GET['menu'];
if (isset($_GET['newid'])) $url = $_GET['newid'];
// --- add end
$buttonname = $i18n['BTN_SAVEPAGE'];
}
...
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
marrco
Member
Posts: 128
Joined: Dec 2009
|
Support for multilanguage sites, Internationalization (I18N)
looks really interesting. Will test this soon
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
A new version (0.8) is available, which simplifies the selection of a parent page and the position in the menu and allows any number of levels in your page structure.
A demonstration and screen shots can be found on http://mvlcek.bplaced.net.
Installation (changes)
Just unzip the plugin zip into your plugins directory.
The file admin/edit.php does NOT need to be changed any more!
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
ditlev
Junior Member
Posts: 1
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
Works like a charm! Thank you very much for this nice plugin!
|
|
|
|
Oleg06
Posting Freak
Posts: 998
Joined: Apr 2010
|
Support for multilanguage sites, Internationalization (I18N)
Yes, the plugin useful and works well
|
|
|
|
marrco
Member
Posts: 128
Joined: Dec 2009
|
Support for multilanguage sites, Internationalization (I18N)
does it cache the menu structure ?
|
|
|
|
Oleg06
Posting Freak
Posts: 998
Joined: Apr 2010
|
Support for multilanguage sites, Internationalization (I18N)
how to switch languages and components for the language to do?
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
marrco wrote:does it cache the menu structure ?
Yes, it does.
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
Oleg06 wrote:how to switch languages and components for the language to do?
Not sure, if I understand your question correctly: The language is automatically switched based on the user's language preferences in the browser. If the site is e.g. english (default) and german and the user's prefered languages are italian and german, he will see the german page, if they are italian and spanish, he will see the default language (english).
You can also switch languages for the next request or for the current session, see http://mvlcek.bplaced.net/get-simple/i18n/ at the bottom of the page.
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
Oleg06
Posting Freak
Posts: 998
Joined: Apr 2010
|
Support for multilanguage sites, Internationalization (I18N)
I created a pages index_de and index_ru, written links http://neowebtime/01/?setlang=de and http://neowebtime/01/?setlang=ru and http://neowebtime/01/?setlang=en
but somehow it does not work http://neowebtime.ru/01/
teach me please :-)
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
Your language links use neowebtime instead of neowebtime.ru
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
Oleg06
Posting Freak
Posts: 998
Joined: Apr 2010
|
Support for multilanguage sites, Internationalization (I18N)
 thanks, works
|
|
|
|
Oleg06
Posting Freak
Posts: 998
Joined: Apr 2010
|
Support for multilanguage sites, Internationalization (I18N)
þхрõýõть, plugin is excellent, wonderful
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
I have uploaded a new version, which also has functions to display breadcrumbs.
See http://mvlcek.bplaced.net/multi-level-na...eadcrumbs/ for a demo and details.
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
iggy
Junior Member
Posts: 5
Joined: Feb 2011
|
Support for multilanguage sites, Internationalization (I18N)
Hi!
Thanks for plugin. I have a question...
How can I call language name from a template?
I need to add something to a template when specific language is active.
Sorry, I don't know php
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
iggy wrote:Hi!
I need to add something to a template when specific language is active.
There is a global variable $language set, if the current language is not the default language, thus use for a non-default language 'de':
Code:
<?php if (isset($language) && $language == 'de') { ?>
...
<?php } ?>
and for the default language:
Code:
<?php if (!isset($language)) { ?>
...
<?php } ?>
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
ldac
Junior Member
Posts: 13
Joined: Feb 2011
|
Support for multilanguage sites, Internationalization (I18N)
This isn't a bug but It should be improved: When you try to name a new page with a "_" (e.g. index_en) it automatically hides the "Template" options. This can be a problem, for example I wanted to use a different template for the main page and its English version but I couldn't because of this.
GS fan
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
ldac wrote:This isn't a bug but It should be improved: When you try to name a new page with a "_" (e.g. index_en) it automatically hides the "Template" options. This can be a problem, for example I wanted to use a different template for the main page and its English version but I couldn't because of this.
Currently it is not possible to use different templates for languages with the I18N plugin, which is the reason, why the option is hidden. As the default language is used when a translation is not available, the different templates shouldn't have many differences in any case, lest the user be baffled by the layout changing between pages.
Why do you want to have a different template?
If it's just for small differences, you can include conditionals like
Code:
<?php if ($language == 'de') { ?>...<?php } ?>
in your template.
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
Texta
Member
Posts: 52
Joined: Nov 2009
|
Support for multilanguage sites, Internationalization (I18N)
Hello,
thanks mvlcek for this plugin!
But it doesn't seem to work with the new beta "GetSimple_3.0Beta_r323". Btw thats the only beta version I tried it with.
The problem is, I can't create a page called something_en, because the slug/URL with somehow "loose" the underscore after clicking on save.
|
|
|
|
ultrastudio
Junior Member
Posts: 3
Joined: Dec 2010
|
Support for multilanguage sites, Internationalization (I18N)
I've high problem with the installation of this plugin.
I use Get Simple 2.0.1 and I18N Plugin 0.9.1, but in administration page the file editextras.php stop his code print to the first line of XML section.
The result is that the plugin is totally unusable because whene I would to create a new page I can see only the title input and the link "Options", but I can't see all the form.
Where is the problem?
|
|
|
|
ultrastudio
Junior Member
Posts: 3
Joined: Dec 2010
|
Support for multilanguage sites, Internationalization (I18N)
ultrastudio wrote:I've high problem with the installation of this plugin.
I use Get Simple 2.0.1 and I18N Plugin 0.9.1, but in administration page the file editextras.php stop his code print to the first line of XML section.
The result is that the plugin is totally unusable because whene I would to create a new page I can see only the title input and the link "Options", but I can't see all the form.
Where is the problem?
I've resolve: sorry all, the solution was update core to the new stable version of GetSimple.
Well, this plugin is actually compatible with GetSimple 2.03.1 and not with GetSimple 2.01.
(This post was last modified: 2011-03-02 05:55:54 by shafayet61.)
|
|
|
|
Texta
Member
Posts: 52
Joined: Nov 2009
|
Support for multilanguage sites, Internationalization (I18N)
Texta wrote:But it doesn't seem to work with the new beta "GetSimple_3.0Beta_r323".
Oh, just found in the changelog for GS 3:
Quote:Conversion of all i18n calls to a new function
What does that mean? And how do I use it now?
|
|
|
|
mvlcek
Posting Freak
Posts: 1,742
Joined: Jan 2011
|
Support for multilanguage sites, Internationalization (I18N)
Texta wrote:Oh, just found in the changelog for GS 3:
Quote:Conversion of all i18n calls to a new function
I think this is only how translations for the admin part are handled. It has nothing to do with the I18N plugin (which provides multiple languages for the public part).
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
|
|
|
|
ccagle8
Administrator
Posts: 1,847
Joined: Aug 2009
|
Support for multilanguage sites, Internationalization (I18N)
mvlcek wrote:I think this is only how translations for the admin part are handled.
correct assumption.
- Chris
Thanks for using GetSimple! - Download
Please do not email me directly for help regarding GetSimple. Please post all your questions/problems in the forum!
|
|
|
|