merged cont.
[opensuse:yast-rest-service.git] / webyast / vendor / plugins / lang_helper / lib / lang_helper.rb
1 # gettext_plugin.rb - a sample script for Ruby on Rails
2 #
3 # Copyright (C) 2005-2007 Masao Mutoh
4 #
5 # This file is distributed under the same license as Ruby-GetText-Package.
6
7 require 'gettext'
8
9 module LangHelper
10   include GetText
11
12   bindtextdomain("lang_helper", 
13         :path => File.join(RAILS_ROOT, "vendor/plugins/lang_helper/locale"))
14
15   LANGUAGES = { 'af' => 'Afrikaans', 'ar' => 'العربية', 'be' => 'Беларуская', 'bg' => 'Български', 'bn' => 'বাংলা',
16     'bs' => 'Bosanski', 'ca' => 'Català', 'cs' => 'Čeština', 'cy' => 'Cymraeg', 'da' => 'Dansk',
17     'de' => 'Deutsch', 'el' => 'Ελληνικά ', 'en' => 'English', 'en_GB' => 'English (UK)', 'en_US' => 'English (US)',
18     'es' => 'Español', 'et' => 'Eesti', 'fi' => 'Suomi', 'fr' => 'Français', 'gl' => 'Galego',
19     'gu' => 'ગુજરાતી', 'he' => 'עברית', 'hi' => 'हिन्दी', 'hr' => 'Hrvatski', 'hu' => 'Magyar',
20     'id' => 'Bahasa Indonesia', 'it' => 'Italiano', 'ja' => '日本語', 'ka' => 'ქართული',
21     'km' => 'ខ្មែរ', 'ko' => '한글 ', 'lo' => 'ພາສາລາວ', 'lt' => 'Lietuvių', 'mk' => 'Македонски', 'mr' => 'मराठी',
22     'nb' => 'Norsk', 'nl' => 'Nederlands', 'pa' => 'ਪੰਜਾਬੀ', 'pl' => 'Polski',
23     'pt_BR' => 'Português brasileiro', 'pt' => 'Português', 'ro' => 'Română', 'ru' => 'Русский ',
24     'si' => 'සිංහල', 'sk' => 'Slovenčina', 'sl' => 'Slovenščina', 'sr' => 'Srpski',
25     'sv' => 'Svenska', 'ta' => 'தமிழ்', 'tg' => 'тоҷикӣ', 'th' => 'ภาษาไทย', 'tr' => 'Türkçe',
26     'uk' => 'Українська', 'vi' => 'Tiếng Việt', 'wa' => 'Walon', 'xh' => 'isiXhosa',
27     'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', 'zu' => 'isiZulu'}
28
29
30   def current_locale_image
31     return "/images/flags/#{locale.language}.png"
32   end
33
34   def current_locale
35     ret = locale.language
36     Rails.logger.info("detected locale #{ret}")
37     #find locale from existing one, translate if locale came from browser to current one, fallback to american english
38     default = lambda{return "en_US"} #detect require something which response to call
39     ret = supported_languages.detect(default) { |k| ret.tr('-','_').downcase == k.downcase ? k : nil} 
40     Rails.logger.info("returned locale #{ret}")
41     return ret
42   end
43
44   def language_name(code)
45     language = LANGUAGES[code]
46     if language.nil?
47       Rails.logger.warn "Missing text for language code #{current_locale}"
48       language = code
49     end
50     language
51   end
52
53   def language_code(name)
54     language = LANGUAGES.index(name)
55     language.strip.split('_')[1]? language.split('_')[1] : language
56   end
57     
58   def current_locale_name
59     # check full locale at first (language + country)
60     if LANGUAGES.has_key?(locale.to_s)
61       return language_name locale.to_s
62     end
63
64     # use only language code
65     language_name current_locale
66   end
67
68   def show_language
69     langs = supported_languages.sort
70     ret = "<h4>" + _("Select locale") + "</h4>"
71     langs.each_with_index do |lang, i|
72       ret << link_to( language_name(lang),
73                      :action => "cookie_locale", :id => lang)
74       ret << "<br/>"
75     end
76     ret
77   end
78
79   def cookie_locale
80     cookies["lang"] = params["id"]
81     set_locale params["id"]
82 #    flash[:notice] = _('Cookie &quot;lang&quot; is set: %s') % params["id"]
83     redirect_to :back
84   end
85
86     #do not use this constant (only internal), use supported_languages method
87     SUPPORTED_LANGUAGE= [
88      "ar","cs","de","es","en_US","fr","hu","it","ja","ko",
89      "nl","pl","pt_BR","ru","sv","zh_CN","zh_TW" 
90     ]
91   def supported_languages
92     #TODO read from file if vendor want create own translations
93     #list is same as SLE11SP1 supported
94     return SUPPORTED_LANGUAGE
95   end
96 end
97