Revision 1297:0a574315af3e .svn/pristine/86

View differences:

.svn/pristine/86/861e14518562a688dacc2e774c007649c72f775d.svn-base
1
/* Arabic Translation for jQuery UI date picker plugin. */
2
/* Khaled Alhourani -- me@khaledalhourani.com */
3
/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */
4
jQuery(function($){
5
	$.datepicker.regional['ar'] = {
6
		closeText: 'إغلاق',
7
		prevText: '<السابق',
8
		nextText: 'التالي>',
9
		currentText: 'اليوم',
10
		monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',
11
		'تموز', 'آب', 'أيلول',	'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
12
		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
13
		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
14
		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
15
		dayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
16
		weekHeader: 'أسبوع',
17
		dateFormat: 'dd/mm/yy',
18
		firstDay: 6,
19
  		isRTL: true,
20
		showMonthAfterYear: false,
21
		yearSuffix: ''};
22
	$.datepicker.setDefaults($.datepicker.regional['ar']);
23
});
.svn/pristine/86/86b9bcb879f7b1ffb317c5c416700af50bfd5f4c.svn-base
1
# Redmine - project management software
2
# Copyright (C) 2006-2012  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17

  
18
require File.expand_path('../../../../test_helper', __FILE__)
19

  
20
class Redmine::I18nTest < ActiveSupport::TestCase
21
  include Redmine::I18n
22
  include ActionView::Helpers::NumberHelper
23

  
24
  def setup
25
    User.current.language = nil
26
  end
27

  
28
  def teardown
29
    set_language_if_valid 'en'
30
  end
31

  
32
  def test_date_format_default
33
    set_language_if_valid 'en'
34
    today = Date.today
35
    Setting.date_format = ''
36
    assert_equal I18n.l(today), format_date(today)
37
  end
38

  
39
  def test_date_format
40
    set_language_if_valid 'en'
41
    today = Date.today
42
    Setting.date_format = '%d %m %Y'
43
    assert_equal today.strftime('%d %m %Y'), format_date(today)
44
  end
45

  
46
  def test_date_format_default_with_user_locale
47
    set_language_if_valid 'es'
48
    today = now = Time.parse('2011-02-20 14:00:00')
49
    Setting.date_format = '%d %B %Y'
50
    User.current.language = 'fr'
51
    s1 = "20 f\xc3\xa9vrier 2011"
52
    s1.force_encoding("UTF-8") if s1.respond_to?(:force_encoding)
53
    assert_equal s1, format_date(today)
54
    User.current.language = nil
55
    assert_equal '20 Febrero 2011', format_date(today)
56
  end
57

  
58
  def test_date_and_time_for_each_language
59
    Setting.date_format = ''
60
    valid_languages.each do |lang|
61
      set_language_if_valid lang
62
      assert_nothing_raised "#{lang} failure" do
63
        format_date(Date.today)
64
        format_time(Time.now)
65
        format_time(Time.now, false)
66
        assert_not_equal 'default', ::I18n.l(Date.today, :format => :default),
67
                         "date.formats.default missing in #{lang}"
68
        assert_not_equal 'time',    ::I18n.l(Time.now, :format => :time),
69
                         "time.formats.time missing in #{lang}"
70
      end
71
      assert l('date.day_names').is_a?(Array)
72
      assert_equal 7, l('date.day_names').size
73

  
74
      assert l('date.month_names').is_a?(Array)
75
      assert_equal 13, l('date.month_names').size
76
    end
77
  end
78

  
79
  def test_time_for_each_zone
80
    ActiveSupport::TimeZone.all.each do |zone|
81
      User.current.stubs(:time_zone).returns(zone.name)
82
      assert_nothing_raised "#{zone} failure" do
83
        format_time(Time.now)
84
      end
85
    end
86
  end
87

  
88
  def test_time_format
89
    set_language_if_valid 'en'
90
    now = Time.parse('2011-02-20 15:45:22')
91
    with_settings :time_format => '%H:%M' do
92
      with_settings :date_format => '' do
93
        assert_equal '02/20/2011 15:45', format_time(now)
94
        assert_equal '15:45', format_time(now, false)
95
      end
96
      with_settings :date_format => '%Y-%m-%d' do
97
        assert_equal '2011-02-20 15:45', format_time(now)
98
        assert_equal '15:45', format_time(now, false)
99
      end
100
    end
101
  end
102

  
103
  def test_time_format_default
104
    set_language_if_valid 'en'
105
    now = Time.parse('2011-02-20 15:45:22')
106
    with_settings :time_format => '' do
107
      with_settings :date_format => '' do
108
        assert_equal '02/20/2011 03:45 pm', format_time(now)
109
        assert_equal '03:45 pm', format_time(now, false)
110
      end
111
      with_settings :date_format => '%Y-%m-%d' do
112
        assert_equal '2011-02-20 03:45 pm', format_time(now)
113
        assert_equal '03:45 pm', format_time(now, false)
114
      end
115
    end
116
  end
117

  
118
  def test_time_format_default_with_user_locale
119
    set_language_if_valid 'en'
120
    User.current.language = 'fr'
121
    now = Time.parse('2011-02-20 15:45:22')
122
    with_settings :time_format => '' do
123
      with_settings :date_format => '' do
124
        assert_equal '20/02/2011 15:45', format_time(now)
125
        assert_equal '15:45', format_time(now, false)
126
      end
127
      with_settings :date_format => '%Y-%m-%d' do
128
        assert_equal '2011-02-20 15:45', format_time(now)
129
        assert_equal '15:45', format_time(now, false)
130
      end
131
    end
132
  end
133

  
134
  def test_time_format
135
    set_language_if_valid 'en'
136
    now = Time.now
137
    Setting.date_format = '%d %m %Y'
138
    Setting.time_format = '%H %M'
139
    assert_equal now.strftime('%d %m %Y %H %M'), format_time(now)
140
    assert_equal now.strftime('%H %M'), format_time(now, false)
141
  end
142

  
143
  def test_utc_time_format
144
    set_language_if_valid 'en'
145
    now = Time.now
146
    Setting.date_format = '%d %m %Y'
147
    Setting.time_format = '%H %M'
148
    assert_equal now.strftime('%d %m %Y %H %M'), format_time(now.utc)
149
    assert_equal now.strftime('%H %M'), format_time(now.utc, false)
150
  end
151

  
152
  def test_number_to_human_size_for_each_language
153
    valid_languages.each do |lang|
154
      set_language_if_valid lang
155
      assert_nothing_raised "#{lang} failure" do
156
        size = number_to_human_size(257024)
157
        assert_match /251/, size
158
      end
159
    end
160
  end
161

  
162
  def test_day_name
163
    set_language_if_valid 'fr'
164
    assert_equal 'dimanche', day_name(0)
165
    assert_equal 'jeudi', day_name(4)
166
  end
167

  
168
  def test_day_letter
169
    set_language_if_valid 'fr'
170
    assert_equal 'd', day_letter(0)
171
    assert_equal 'j', day_letter(4)
172
  end
173

  
174
  def test_number_to_currency_for_each_language
175
    valid_languages.each do |lang|
176
      set_language_if_valid lang
177
      assert_nothing_raised "#{lang} failure" do
178
        number_to_currency(-1000.2)
179
      end
180
    end
181
  end
182

  
183
  def test_number_to_currency_default
184
    set_language_if_valid 'bs'
185
    assert_equal "KM -1000,20", number_to_currency(-1000.2)
186
    set_language_if_valid 'de'
187
    euro_sign = "\xe2\x82\xac"
188
    euro_sign.force_encoding('UTF-8') if euro_sign.respond_to?(:force_encoding)
189
    assert_equal "-1000,20 #{euro_sign}", number_to_currency(-1000.2)
190
  end
191

  
192
  def test_valid_languages
193
    assert valid_languages.is_a?(Array)
194
    assert valid_languages.first.is_a?(Symbol)
195
  end
196

  
197
  def test_languages_options
198
    options = languages_options
199

  
200
    assert options.is_a?(Array)
201
    assert_equal valid_languages.size, options.size
202
    assert_nil options.detect {|option| !option.is_a?(Array)}
203
    assert_nil options.detect {|option| option.size != 2}
204
    assert_nil options.detect {|option| !option.first.is_a?(String) || !option.last.is_a?(String)}
205
    assert_include ["English", "en"], options
206
  end
207

  
208
  def test_locales_validness
209
    lang_files_count = Dir["#{Rails.root}/config/locales/*.yml"].size
210
    assert_equal lang_files_count, valid_languages.size
211
    valid_languages.each do |lang|
212
      assert set_language_if_valid(lang)
213
    end
214
    set_language_if_valid('en')
215
  end
216

  
217
  def test_valid_language
218
    to_test = {'fr' => :fr,
219
               'Fr' => :fr,
220
               'zh' => :zh,
221
               'zh-tw' => :"zh-TW",
222
               'zh-TW' => :"zh-TW",
223
               'zh-ZZ' => nil }
224
    to_test.each {|lang, expected| assert_equal expected, find_language(lang)}
225
  end
226

  
227
  def test_fallback
228
    ::I18n.backend.store_translations(:en, {:untranslated => "Untranslated string"})
229
    ::I18n.locale = 'en'
230
    assert_equal "Untranslated string", l(:untranslated)
231
    ::I18n.locale = 'fr'
232
    assert_equal "Untranslated string", l(:untranslated)
233

  
234
    ::I18n.backend.store_translations(:fr, {:untranslated => "Pas de traduction"})
235
    ::I18n.locale = 'en'
236
    assert_equal "Untranslated string", l(:untranslated)
237
    ::I18n.locale = 'fr'
238
    assert_equal "Pas de traduction", l(:untranslated)
239
  end
240

  
241
  def test_utf8
242
    set_language_if_valid 'ja'
243
    str_ja_yes  = "\xe3\x81\xaf\xe3\x81\x84"
244
    i18n_ja_yes = l(:general_text_Yes)
245
    if str_ja_yes.respond_to?(:force_encoding)
246
      str_ja_yes.force_encoding('UTF-8')
247
      assert_equal "UTF-8", i18n_ja_yes.encoding.to_s
248
    end
249
    assert_equal str_ja_yes, i18n_ja_yes
250
  end
251

  
252
  def test_traditional_chinese_locale
253
    set_language_if_valid 'zh-TW'
254
    str_tw = "Traditional Chinese (\xe7\xb9\x81\xe9\xab\x94\xe4\xb8\xad\xe6\x96\x87)"
255
    if str_tw.respond_to?(:force_encoding)
256
      str_tw.force_encoding('UTF-8')
257
    end
258
    assert_equal str_tw, l(:general_lang_name)
259
  end
260

  
261
  def test_french_locale
262
    set_language_if_valid 'fr'
263
    str_fr = "Fran\xc3\xa7ais"
264
    if str_fr.respond_to?(:force_encoding)
265
      str_fr.force_encoding('UTF-8')
266
    end
267
    assert_equal str_fr, l(:general_lang_name)
268
  end
269
end

Also available in: Unified diff