air18n 0.1.39 → 0.1.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -108,7 +108,9 @@ module Air18n
108
108
  else
109
109
  message = error
110
110
  end
111
- elsif latest && latest.user_id != user_id
111
+ elsif latest && (latest.user_id != user_id || latest.is_verification)
112
+ # If the translator is different than the last, or the last
113
+ # translation was already a verification, this one is too.
112
114
  pt.is_verification = true
113
115
 
114
116
  do_save = true
@@ -1,3 +1,3 @@
1
1
  module Air18n
2
- VERSION = "0.1.39"
2
+ VERSION = "0.1.40"
3
3
  end
@@ -177,7 +177,8 @@ describe Air18n::PhraseTranslation do
177
177
  unchanged_translation = phrase.latest_translation(:es)
178
178
  unchanged_translation.id.should == translation.id
179
179
 
180
- ##### 3. Tweak to existing translation to delete a word.
180
+ ##### 3. Tweak to existing translation to delete a word by a different
181
+ ##### translator.
181
182
 
182
183
  response = Air18n::PhraseTranslation.create_translation(
183
184
  phrase.id, phrase.key, :es, 'whyo helloo newword1 newword2', user_id_second, do_xss_check, allow_verification)
@@ -187,6 +188,16 @@ describe Air18n::PhraseTranslation do
187
188
  translation.source_word_count.should == 3
188
189
  translation.source_hash.should == "2ac1a5cdad0d3ca0b0c318000c2f7378"
189
190
 
191
+ ##### 3. Tweak to verified translation by same translator.
192
+
193
+ response = Air18n::PhraseTranslation.create_translation(
194
+ phrase.id, phrase.key, :es, 'whyo helloo newword1 newword3', user_id_second, do_xss_check, allow_verification)
195
+
196
+ translation = phrase.latest_translation(:es)
197
+ translation.value.should == 'whyo helloo newword1 newword3'
198
+ translation.source_word_count.should == 3
199
+ translation.source_hash.should == "2ac1a5cdad0d3ca0b0c318000c2f7378"
200
+
190
201
  # Since November 2012, we automatically mark edits as verifications.
191
202
  # This one is done by a different translator as the previous
192
203
  # translator, so is a verification.
@@ -196,7 +207,7 @@ describe Air18n::PhraseTranslation do
196
207
  ##### already verified.
197
208
 
198
209
  response = Air18n::PhraseTranslation.create_translation(
199
- phrase.id, phrase.key, :es, 'whyo helloo newword1 newword2', user_id_first, do_xss_check, allow_verification)
210
+ phrase.id, phrase.key, :es, 'whyo helloo newword1 newword3', user_id_first, do_xss_check, allow_verification)
200
211
  response.should include(
201
212
  :status => 'error', :message => 'Translation already verified; nothing saved.')
202
213
 
@@ -209,12 +220,12 @@ describe Air18n::PhraseTranslation do
209
220
  phrase.save!
210
221
 
211
222
  response = Air18n::PhraseTranslation.create_translation(
212
- phrase.id, phrase.key, :es, 'whyo helloo newword1 newword2', user_id_second, do_xss_check, allow_verification)
223
+ phrase.id, phrase.key, :es, 'whyo helloo newword1 newword3', user_id_second, do_xss_check, allow_verification)
213
224
  response.should include(
214
225
  :status => 'success', :message => 'Translation marked as up-to-date.')
215
226
 
216
227
  translation = phrase.latest_translation(:es)
217
- translation.value.should == 'whyo helloo newword1 newword2'
228
+ translation.value.should == 'whyo helloo newword1 newword3'
218
229
  translation.source_word_count.should == 3
219
230
  translation.is_verification.should == true # Because last touch was verification.
220
231
  translation.source_hash.should == "2ac1a5cdad0d3ca0b0c318000c2f7378"
@@ -224,12 +235,12 @@ describe Air18n::PhraseTranslation do
224
235
  phrase.save!
225
236
 
226
237
  response = Air18n::PhraseTranslation.create_translation(
227
- phrase.id, phrase.key, :es, 'whyo helloo newword1 newword2', user_id_first, do_xss_check, allow_verification)
238
+ phrase.id, phrase.key, :es, 'whyo helloo newword1 newword3', user_id_first, do_xss_check, allow_verification)
228
239
  response.should include(
229
240
  :status => 'success', :message => 'Translation verified.')
230
241
 
231
242
  translation = phrase.latest_translation(:es)
232
- translation.value.should == 'whyo helloo newword1 newword2'
243
+ translation.value.should == 'whyo helloo newword1 newword3'
233
244
  translation.source_word_count.should == 5
234
245
  translation.is_verification.should == true
235
246
  translation.source_hash.should == "9fd16f4422eadae1c159d60ba063405f"
@@ -618,6 +629,25 @@ describe Air18n::PhraseTranslation do
618
629
  words_translated.should == 1 # 3 / 17 * 5 = 0.88, ceils to 1
619
630
  words_verified.should == 4
620
631
 
632
+ # Example from Chinese translators wondering if word count computation
633
+ # is fair.
634
+ pair = {
635
+ :translation=>"Airbnb是一個值得信賴的社區市場,在這里人們可以發布、尋找和預訂來自全球各地的獨特住所。",
636
+ :previous_translation=>"Airbnb的是市場的人列表中,發現一個值得信任的社區,和世界各地的本書獨特的住宿",
637
+ :was_stale=>false,
638
+ :locale=>"zh",
639
+ :user_id=>5,
640
+ :previous_user_id=>6,
641
+ :datetime=>Date.new(2012, 11, 04),
642
+ :source_word_count=>Air18n::PhraseTranslation.segment(
643
+ "Airbnb is a trusted community marketplace for people to list, " +
644
+ "discover, and book unique accommodations around the world").size,
645
+ :phrase_key=>'Airbnb is sick'
646
+ }
647
+ words_translated, words_verified = Air18n::PhraseTranslation.word_counts_from_translation_pair(pair)
648
+ words_translated.should == 11
649
+ words_verified.should == 7
650
+
621
651
  # Test that Greek works. There was once a bug where word segmentation
622
652
  # didn't work for non-Latin alphabets.
623
653
  pair = {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: air18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.39
4
+ version: 0.1.40
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2012-11-21 00:00:00.000000000 Z
16
+ date: 2012-11-27 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: i18n