From 7e884b51284e83b1604c9d029d3845e77e76d802 Mon Sep 17 00:00:00 2001 From: tof <> Date: Mon, 27 Aug 2007 07:16:27 +0000 Subject: Add Internationalization to Blog-Tutorial --- demos/blog-tutorial/protected/application.xml | 14 +++++++--- .../protected/common/BlogTutorialGlobalization.php | 31 ++++++++++++++++++++++ .../blog-tutorial/protected/layout/MainLayout.php | 25 ++++++++++++++++- .../blog-tutorial/protected/layout/MainLayout.tpl | 12 ++++++++- 4 files changed, 76 insertions(+), 6 deletions(-) create mode 100755 demos/blog-tutorial/protected/common/BlogTutorialGlobalization.php (limited to 'demos/blog-tutorial') diff --git a/demos/blog-tutorial/protected/application.xml b/demos/blog-tutorial/protected/application.xml index 5eac200b..2b92159f 100644 --- a/demos/blog-tutorial/protected/application.xml +++ b/demos/blog-tutorial/protected/application.xml @@ -2,12 +2,18 @@ - - - + + + + + + - + + + + \ No newline at end of file diff --git a/demos/blog-tutorial/protected/common/BlogTutorialGlobalization.php b/demos/blog-tutorial/protected/common/BlogTutorialGlobalization.php new file mode 100755 index 00000000..70435e34 --- /dev/null +++ b/demos/blog-tutorial/protected/common/BlogTutorialGlobalization.php @@ -0,0 +1,31 @@ +Application->OnBeginRequest[] = array($this, 'beginRequest'); + } + + public function beginRequest($sender, $param) + { + if(null == ($culture=$this->Request['lang'])) + { + if(null !== ($cookie=$this->Request->Cookies['lang'])) + $culture = $cookie->getValue(); + } + + if(is_string($culture)) + { + $info = new CultureInfo(); + if($info->validCulture($culture)) + { + $this->setCulture($culture); + $this->Response->Cookies[] = new THttpCookie('lang',$culture); + } + } + } +} + +?> \ No newline at end of file diff --git a/demos/blog-tutorial/protected/layout/MainLayout.php b/demos/blog-tutorial/protected/layout/MainLayout.php index 253d6c03..4b5890de 100644 --- a/demos/blog-tutorial/protected/layout/MainLayout.php +++ b/demos/blog-tutorial/protected/layout/MainLayout.php @@ -1,7 +1,30 @@ languages->DataSource = TPropertyValue::ensureArray($this->Application->Parameters['languages']); + $this->languages->dataBind(); + } + + public function languageLinkCreated($sender, $param) + { + $item = $param->Item; + if($item->ItemType == TListItemType::Item || $item->ItemType == TListItemType::AlternatingItem) + { + $params = $this->Request->toArray(); + $params['lang'] = $sender->DataKeys[$item->ItemIndex]; + unset($params[$this->Request->ServiceID]); + $url = $this->Service->ConstructUrl($this->Service->RequestedPagePath, $params); + $item->link->NavigateUrl = $url; + if($this->Application->Globalization->Culture == $params['lang']) + $item->link->CssClass="active"; + } + } } ?> \ No newline at end of file diff --git a/demos/blog-tutorial/protected/layout/MainLayout.tpl b/demos/blog-tutorial/protected/layout/MainLayout.tpl index 1ee83bae..f2bc1f96 100644 --- a/demos/blog-tutorial/protected/layout/MainLayout.tpl +++ b/demos/blog-tutorial/protected/layout/MainLayout.tpl @@ -24,7 +24,17 @@ - + + +
Available Languages:
    + + +
  • DataItem %> />
  • +
    + +
+ +
-- cgit v1.2.3