air18n 0.1.29 → 0.1.30

Sign up to get free protection for your applications and to get access to all the features.
@@ -370,10 +370,10 @@ module Air18n
370
370
  compare_to = translation_pair[:previous_translation].size
371
371
  else
372
372
  distance = levenshtein_distance_fast(
373
- PhraseTranslation.segment(translation_pair[:previous_translation]),
374
- PhraseTranslation.segment(translation_pair[:translation]),
373
+ translation_pair[:previous_translation].scan(/[[:alnum:]]+/),
374
+ translation_pair[:translation].scan(/[[:alnum:]]+/),
375
375
  1, 0, 1)
376
- compare_to = PhraseTranslation.segment(translation_pair[:previous_translation]).size
376
+ compare_to = translation_pair[:previous_translation].scan(/[[:alnum:]]+/).size
377
377
  end
378
378
 
379
379
  proportion_translated = [distance.to_f / compare_to.to_f, 1.0].min
@@ -400,7 +400,6 @@ module Air18n
400
400
  phrase_to_phrase_translations = pt_scope.all.group_by { |pt| [pt.locale, pt.phrase_id] }
401
401
  phrase_to_phrase_translations.each do |(locale, phrase_id), phrase_translations|
402
402
  phrase_translations.sort_by! { |pt| pt.created_at }
403
- LoggingHelper.info "Getting previous translation!"
404
403
  previous_translation = PhraseTranslation.where("created_at < ?", phrase_translations.first.created_at - 1.second).
405
404
  where(:locale => locale).
406
405
  where(:phrase_id => phrase_id).
@@ -453,6 +452,8 @@ module Air18n
453
452
  # Break text into words for purposes of word count.
454
453
  # First uses to_s to convert text to a string; so for a nil input, returns
455
454
  # empty array.
455
+ # Should only be used for English text, because it only looks at words
456
+ # composed of regexp "\w".
456
457
  def self.segment(text)
457
458
  text.to_s.scan(/\w+/)
458
459
  end
@@ -1,3 +1,3 @@
1
1
  module Air18n
2
- VERSION = "0.1.29"
2
+ VERSION = "0.1.30"
3
3
  end
@@ -513,6 +513,23 @@ describe Air18n::PhraseTranslation do
513
513
  words_translated, words_verified = Air18n::PhraseTranslation.word_counts_from_translation_pair(pair)
514
514
  words_translated.should == 1 # 3 / 17 * 5 = 0.88, rounds to 1
515
515
  words_verified.should == 4
516
+
517
+ # Test that Greek works. There was once a bug where word segmentation
518
+ # didn't work for non-Latin alphabets.
519
+ pair = {
520
+ :translation=>"ακύρωση",
521
+ :previous_translation=>"ακύρωση",
522
+ :was_stale=>false,
523
+ :locale=>"el",
524
+ :user_id=>2895375,
525
+ :previous_user_id=>2462280,
526
+ :datetime=>Date.new(2012, 11, 2),
527
+ :source_word_count=>1,
528
+ :phrase_key=>"cancel"
529
+ }
530
+ words_translated, words_verified = Air18n::PhraseTranslation.word_counts_from_translation_pair(pair)
531
+ words_translated.should == 0
532
+ words_verified.should == 1
516
533
  end
517
534
 
518
535
  it 'should compute correct monthly activities' do
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.29
4
+ version: 0.1.30
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-13 00:00:00.000000000 Z
16
+ date: 2012-11-14 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: i18n