Replaced all locale str with ".UTF-8" to ".utf8"
[profile/ivi/SettingsApp.git] / js / panel-locale.js
1 /*
2  * Copyright (c) 2013, Intel Corporation.
3  *
4  * This program is licensed under the terms and conditions of the
5  * Apache License, version 2.0.  The full text of the Apache License is at
6  * http://www.apache.org/licenses/LICENSE-2.0
7  *
8  */
9
10 var localeChanged = false;
11
12 function localePanelInit() {
13     /* Locale Settings Panel */
14     $('#page_locale').on('pageshow', function(event, data) {
15         localePageReload();
16     });
17
18     $('[name="radio_locale"]').on('change', function(event, data) {
19         var new_locale = $('input[name=radio_locale]:checked').val();
20
21         if (tizen.locale) {
22             if (new_locale !== tizen.locale.getLocale()) {
23                 localeChanged = true;
24                 localeShowOption();
25             }
26         } else {
27             console.error('tizen.locale missing');
28         }
29     });
30
31     $('#button_locale_apply').on('click', function(event, data) {
32         if (localeChanged) {
33             localeChanged = false;
34             updateSystemLocale();
35         }
36
37         localeHideOption();
38     });
39
40     $('#button_locale_cancel').on('click', function(event, data) {
41         localePageReload();
42     });
43 }
44
45 function localeShowOption() {
46     $('#button_locale_apply').show();
47     $('#button_locale_cancel').show();
48 }
49
50 function localeHideOption() {
51     $('#button_locale_apply').hide();
52     $('#button_locale_cancel').hide();
53 }
54
55 function localePageReload() {
56     localeChanged = false;
57
58     localeHideOption();
59
60     if (tizen.locale) {
61         var locale = tizen.locale.getLocale();
62         var language = localeToLanguage(locale);
63         if (!locale) {
64             console.error('Failed to get current locale');
65         }
66
67         console.log('Current locale is set to ' + locale);
68         console.log('Current language is set to ' + language);
69         if (language) {
70             $('#radio_locale_' + language).prop('checked', true);
71             $('input[name=radio_locale]').checkboxradio('refresh');
72         } else {
73             console.log('Unknown locale ' + locale + ', default to English');
74             $('#radio_locale_english').prop('checked', true);
75             $('input[name=radio_locale]').checkboxradio('refresh');
76         }
77     } else {
78         console.error('tizen.locale missing');
79         $('input[name=radio_locale]').checkboxradio('disable');
80     }
81 }
82
83 function updateSystemLocale() {
84     var locale = $('input[name=radio_locale]:checked').val();
85
86     if (tizen.locale) {
87         console.log('New locale is set to ' + locale);
88         tizen.locale.setLocale('LANG=' + locale);
89         localePageReload();
90     } else {
91         console.error('tizen.locale missing - cannot update locale');
92     }
93 }
94
95 function localeToLanguage(locale) {
96     if (locale.indexOf('LANG=') == 0) {
97         locale = locale.substr(5, locale.length);
98     }
99
100     if (locale === 'C' || locale === 'en_US.utf8') return 'english';
101     else if (locale === 'de_DE.utf8') return 'german';
102     else if (locale === 'ja_JP.utf8') return 'japanese';
103     else if (locale === 'zh_CN.utf8') return 'simplified_chinese';
104     else if (locale === 'zh_HK.utf8' || locale === 'zh_TW.utf8') return 'traditional_chinese';
105     else return null;
106 }