1 Stopped DB Backend in the middle, here's where we left off:
 
   5 * Started doing the migration generator in generators/db_backend.rb
 
   6 * Translation keys will be in dotted string format
 
   7 * Question: Do we need a plural_key column, or can we build it in to the dotted key?
 
   8 * We will probably have to code the following methods from scratch, to optimize db calls:
 
  12 * We should refactor @interpolation@ code so that it can be included into backend code without inheriting SimpleBackend
 
  13 ** Rationale: interpolation is something done entirely after a string is fetched from the data store
 
  14 ** Alternately, it could be done from within the I18n module
 
  18 There will be two db tables. 
 
  20 # globalize_translations will have: locale, key, translation, created_at, updated_at.
 
  21 # globalize_translations_map will have: key, translation_id.
 
  23 globalize_translations_map will let us easily fetch entire sub-trees of namespaces. 
 
  24 However, this table may not be necessary, as it may be feasible to just use key LIKE "some.namespace.%".
 
  28 We'll almost certainly want to implement caching in the backend. Should probably be a customized
 
  29 implementation based on the Rails caching mechanism, to support memcached, etc.
 
  33 We'll want to pull in lots of stuff at once and return a single translation based on some
 
  34 quick Ruby selection. The query will look something like this:
 
  38 SELECT * FROM globalize_translations
 
  39 WHERE locale in (<fallbacks>) AND
 
  40 key IN (key, default_key)
 
  44 The Ruby code would then pick the first translation that satisfies a fallback, in fallback order. 
 
  45 Of course, the records with the supplied key would take precedence of those with the default key.
 
  49 We should revisit the :zero plural code. On the one hand it's certainly useful for 
 
  50 many apps in many languages. On the other hand it's not mentioned in CLDR, and not a real
 
  51 concept in language pluralization. Right now, I'm feeling it's still a good idea to keep it in.