Possibility to change the language of the user interface

Dear Omeka-Team,

it would be great if a user who is surfing an Omeka-powered website would be able to change the language of the user interface according to it's linguistic preference.

Why is this important to us and maybe also for others? We are operating in South Tyrol / Alto Adige, an autonomous region of Italia where a huge part of the population besides Italian speaks also German. By law and also from a political point of view it is quasi obligatory to offer multilingual support for websites.

If I'm not mistaken, the same thing is also true for other regions in Europe, e.g. Catalonia and the Basque region.

Best regards, Matthias Einbrodt

We'll definitely keep these kinds of use cases in mind for Omeka 2.0.

The current Omeka 1.5 language support, as you seem to have noticed, doesn't offer a reasonable way to change languages from user to user on the fly.

While we were initially most concerned with getting translation of the interface up and running with Omeka 1.5, we definitely want to at least make it possible for plugins to handle language switching, which should enable lots of possible uses for the language support.

Hi John,

thank you for the reply. That sounds very good. I read on your Omeka-Roadmap, that you plan to ship out the 2.0 version in summer 2012. Is that more summer in terms of august/september or june/july?

Regards, Matthias

Hi!
What i think as the best way (for this version that we have) for switching languages into interface is with a get parameter and depend on the get parameter select a different config.ini file. Can you help us in which file do we have to change this?
Do you think that this solution will have problem??

Thanks
Stauros.

Hi Stauros, did you ever find a solution using the get parameter or was this functionality added in the 1.5.2 release?

What i did for a recent solution is with a session parameter which a config it in the common/header.php
Admin->Header.php
<?php
session_start();
// store session data
//echo $locale = Zend_Registry::get('Zend_Locale');
$_SESSION['get_language']=get_language_for_switch();
?>

depend on this session parameter i change the:
Libraries->Omeka->Core->Resources->Locale.php
$locale=get_language_for_omeka_switch();
if(strlen($locale)>0){

$this->setOptions(array(
'default' => $locale,
'cache' => $cache
));

$this->_setTranslate($locale, $cache);

}elseif (($locale = $config->locale)) {....

i forgot the functions :) :

function get_language_for_omeka_switch(){
if(isset($_GET['lang'])){$get_language=transform_language_id_for_omeka($_GET['lang']);
}elseif(isset($_SESSION['get_language_omeka'])){$get_language=$_SESSION['get_language_omeka'];
}else{$get_language='en_US';}
//echo $_GET['lang'];
return $get_language;
}

function transform_language_id_for_omeka($language_id){

$omekatypearray=array("en" => "en_US", "el" => "el_GR", "es" => "es");

foreach($omekatypearray as $key=>$omekatypearray){if($key==$language_id){$type=$omekatypearray;}}
return $type;

}

Before I start messing with the header code and so on, has there ever been a proper solid solution to this problem? Or is this still the way to go at the moment?

There's no built-in stuff for actually detecting the language, but there's now a locale filter for easily changing the locale based on whatever criteria you want (Accept-Language headers, GET params, whatever).

I'm not sure I'd call it a proper solid solution, but I experimented a bit with a Multilanguage plugin that might get at parts of this. Suggestions and pull requests very welcome, as always!

Ooops, John and I were writing simultaneously. The plugin experiment I linked to uses the filter he references. A less complicated plugin should be able to use that easily.