air18n 0.1.42 → 0.1.43

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,7 +10,7 @@ require 'air18n/default_text_change_observer'
10
10
  require 'air18n/reflection'
11
11
 
12
12
  module Air18n
13
- AIR18N_RESERVED_KEYS = [:routes_context, :suppress_ct, :default_is_low_priority, :disable_xss_check, :disable_bookkeeping]
13
+ AIR18N_RESERVED_KEYS = [:routes_context, :suppress_ct, :default_is_low_priority, :disable_xss_check, :disable_bookkeeping, :context]
14
14
 
15
15
  RTL_LOCALES = [ :he, :ar ]
16
16
 
@@ -146,11 +146,12 @@ module Air18n
146
146
  @prim_and_proper.guess(text, orig_locale, other_locale)
147
147
  end
148
148
 
149
- # We will only take 10 screenshots per Rails instance per key.
149
+ # We will only take 2 screenshots per Rails instance per key.
150
150
  # This is to avoid having to moderate 200 screenshots for every new site-wide
151
151
  # phrase.
152
- # Because this is a per-Rails-thread cap, we call it approximate.
153
- APPROX_MAX_SCREENSHOTS_PER_KEY = 10
152
+ # Because this is a per-Rails-thread cap, it is a lower bound for how many
153
+ # screenshot we will end up with per widely-used phrase.
154
+ APPROX_MAX_SCREENSHOTS_PER_KEY = 3
154
155
 
155
156
  # This method does the meat of Air18n functionality.
156
157
  # 1) Finds the translations for specified key and locale, falling back to
@@ -13,7 +13,7 @@ module Air18n
13
13
  def self.all_phrase_urls
14
14
  Hash.new { |h, k| h[k] = [] }.tap do |all_phrase_urls|
15
15
  # Uses raw SQL for speed.
16
- connection.select_all("SELECT `phrase_key`, `action`, `controller` FROM phrase_screenshots").each do |record|
16
+ connection.select_all("SELECT `phrase_key`, `action`, `controller` FROM phrase_screenshots where screenshot_url != ''").each do |record|
17
17
  all_phrase_urls[record['phrase_key']] << make_routes_context(record['controller'], record['action'])
18
18
  end
19
19
  end
@@ -72,5 +72,22 @@ module Air18n
72
72
  controller, action = page_id.split("#")
73
73
  Struct.new(:controller, :action).new(controller, action)
74
74
  end
75
+
76
+ # Associates a phrase with a controller, action pair and a screenshot.
77
+ # Set screenshot_url to the empty string if you don't have a screenshot.
78
+ # Returns the PhraseScreenshot.
79
+ def self.associate_phrase_with_screenshot(
80
+ phrase_key, controller_name, action_name, screenshot_url)
81
+ ps = PhraseScreenshot.find_or_create_by_controller_and_action_and_phrase_key(
82
+ controller_name, action_name, phrase_key, :screenshot_url => screenshot_url)
83
+
84
+ # If the PhraseScreenshot already existed, update the screenshot URL.
85
+ if ps.screenshot_url.blank? && ps.screenshot_url != screenshot_url
86
+ ps.screenshot_url = screenshot_url
87
+ ps.save
88
+ end
89
+
90
+ ps
91
+ end
75
92
  end
76
93
  end
@@ -1,3 +1,3 @@
1
1
  module Air18n
2
- VERSION = "0.1.42"
2
+ VERSION = "0.1.43"
3
3
  end
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.42
4
+ version: 0.1.43
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-12-05 00:00:00.000000000 Z
16
+ date: 2012-12-07 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: i18n