3214 Posts in 848 Topics by 810 members
|
Page:
1
|
Go to End | |
| Author | Topic: | 1137 Views |
-
PageByLang function

8 April 2010 at 3:55am
Hello,
i'm having trouble with the PageByLang function explained at
http://doc.silverstripe.org/doku.php?id=multilingualcontent#templatesWell I pasted the code into my Page_Controller and added <% PageByLang(nuestro-despacho,es) %> to my page.ss. But it looks like the parser doesn't run the function. It just puts '<% PageByLang(nuestro-despacho,es) %>' as plain text into my html.
1. Is 'es' as second parameter correct? In the example it is: <% PageByLang(Kontakt,de) %>, but the locale isn't 'de' it is 'de_DE'
2. Is there any code it have to put around my function in the template?
@dev: Is there any example for the usage of this function?
Regards Chefkoch
-
Re: PageByLang function

8 April 2010 at 7:39pm
Well maybe i explain it a bit more precisely:
<!--<% PageByLang(nuestro-despacho,es_ES) %>--> -> doesn't work
<% if Locale = es_ES %>
<h2><a href="./nuestro-despacho/" title="Contacto">Contacto</h2>
<% else_if Locale = de_DE %>
<h2><a href="./anwaltsbuero/" title="Kontakt">Kontakt</a></h2>
<% else_if Locale = en_GB %>
<h2><a href="./office/" title="Office">Our Office</a></h2>
<% else_if Locale = ca_ES %>
<h2><a href="./el-nostre-despatx/" title="Despatx">El nostre despatx</a></h2>
<% else %>
<% sprintf(_t('SHOWINPAGE','Show page in %s'),$Locale) %>
<% end_if %>
-> hardcoded version depending in <locale> worksbut I have a lot of more links an I don't want to hardcode them all!
Did I missunderstand the PageByLang function? Does it return a link to the page depending on <locale>?When I use it like
<h2><a href="<% PageByLang(nuestro-despacho,es_ES) %>" title="Contacto">Contacto</h2>
the function isn't executed at all? Does anybody know why?Regards chefkoch
Thanks for answers =) -
Re: PageByLang function

8 April 2010 at 8:00pm
Note the docs have an error - should be <% control PageByLang(..... %>$Whatever<% end_control %>. They have been updated.
-
Re: PageByLang function

8 April 2010 at 10:20pm
thank willr. just noticed the changes in the doku and fixed the problem
-
Re: PageByLang function

28 May 2010 at 6:34am Last edited: 29 May 2010 10:21am
Hey guys,
when i try to use the function from the updated tutorial site, it breaks my site with the error message:
"Fatal error: Call to a member function getTranslation() on a non-object in [...]/mysite/code/Page.php on line 143"is there a way to fix this...
thanks
EDIT::
Today i tried it on SilverStripe 2.4 and it worked like a charm. I modified the function a little bit and now it has a nice fallback to english, if the requested page does not exist in the current locale ;)
public function PageByLang($url, $lang) {
$SQL_url = Convert::raw2sql($url);
$SQL_lang = Convert::raw2sql($lang);
$page = Translatable::get_one_by_lang('SiteTree', $SQL_lang, "URLSegment = '$SQL_url'");
if ($page->Locale != Translatable::get_current_locale()) {
// Fallback to English
if($page->hasTranslation(Translatable::get_current_locale())){
$page = $page->getTranslation(Translatable::get_current_locale());
}else{
$page = $page->getTranslation('en_US');
}
}
return $page;
}I need the same mechanism in the normal <% control Menu(x) %> function... but I just can't figure out how :S
| 1137 Views | ||
|
Page:
1
|
Go to Top |


