1 <?php
2
3 /**
4 * Class File
5 *
6 * @author Tobias Munk <schmunk@usrbin.de>
7 * @link http://www.phundament.com/
8 * @copyright Copyright © 2005-2010 diemeisterei GmbH
9 * @license http://www.phundament.com/license/
10 */
11
12 /**
13 * Handles language detection and application setting by URL parm specified in
14 * DATA_KEY. Uses first language as a fallback language.
15 *
16 * Based upon http://www.yiiframework.com/extension/langhandler/
17 *
18 * @see P3LangUrlManager
19 *
20 * @author Tobias Munk <schmunk@usrbin.de>
21 * @package p3extensions.components
22 * @since 3.0.3
23 */
24 class P3LangHandler extends CApplicationComponent {
25 /**
26 * $_GET param used for language detection
27 */
28 const DATA_KEY = 'lang';
29 /**
30 * Available languages
31 * @var type
32 */
33 public $languages = array();
34
35 /**
36 * Handles language detection and application setting by URL parm specified in DATA_KEY
37 */
38 public function init() {
39 // parsing needed if urlFormat 'path'
40 Yii::app()->urlManager->parseUrl(Yii::app()->getRequest());
41
42 if (!isset($_GET[self::DATA_KEY])) {
43 $preferred = Yii::app()->getRequest()->getPreferredLanguage();
44 if (in_array($preferred, $this->languages)) {
45 Yii::app()->setLanguage($preferred);
46 } else {
47 Yii::app()->setLanguage(Yii::app()->language);
48 }
49 } elseif ($_GET[self::DATA_KEY] != Yii::app()->getLanguage() && in_array($_GET[self::DATA_KEY], $this->languages)) {
50 Yii::app()->setLanguage($_GET[self::DATA_KEY]);
51 }
52
53 # array_push($this->languages, Yii::app()->getLanguage());
54
55 # $this->parseLanguage();
56
57 #if (Yii::app()->getUrlManager()->showScriptName)
58 # Yii::app()->homeUrl = Yii::app()->getRequest()->getScriptUrl();
59 #else
60 # Yii::app()->homeUrl = $this->Yii::app()->getRequest()->getBaseUrl() . '/' . Yii::app()->language . '/';
61 }
62
63 /**
64 * Determines langauge
65 */
66 private function parseLanguage() {
67 Yii::app()->urlManager->parseUrl(Yii::app()->getRequest());
68 }
69
70 }
71
72 ?>