magic_locales 0.0.1

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.
Files changed (466) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +42 -0
  4. data/Rakefile +23 -0
  5. data/lib/app/controllers/magic_locales/base_controller.rb +16 -0
  6. data/lib/app/controllers/magic_locales/locales_controller.rb +64 -0
  7. data/lib/app/models/magic_locales/association.rb +59 -0
  8. data/lib/app/models/magic_locales/language.rb +46 -0
  9. data/lib/app/models/magic_locales/locale.rb +78 -0
  10. data/lib/app/models/magic_locales.rb +6 -0
  11. data/lib/app/views/magic_locales/_locale_switch.html.erb +39 -0
  12. data/lib/app/views/magic_locales/locales/_globalized_name_fields.html.erb +20 -0
  13. data/lib/app/views/magic_locales/locales/form.html.erb +47 -0
  14. data/lib/app/views/magic_locales/locales/index.html.erb +83 -0
  15. data/lib/assets/images/flags/countries/large/flag-at.png +0 -0
  16. data/lib/assets/images/flags/countries/large/flag-ba.png +0 -0
  17. data/lib/assets/images/flags/countries/large/flag-be.png +0 -0
  18. data/lib/assets/images/flags/countries/large/flag-bg.png +0 -0
  19. data/lib/assets/images/flags/countries/large/flag-by.png +0 -0
  20. data/lib/assets/images/flags/countries/large/flag-ca.png +0 -0
  21. data/lib/assets/images/flags/countries/large/flag-ch.png +0 -0
  22. data/lib/assets/images/flags/countries/large/flag-cy.png +0 -0
  23. data/lib/assets/images/flags/countries/large/flag-cz.png +0 -0
  24. data/lib/assets/images/flags/countries/large/flag-de.png +0 -0
  25. data/lib/assets/images/flags/countries/large/flag-dk.png +0 -0
  26. data/lib/assets/images/flags/countries/large/flag-es.png +0 -0
  27. data/lib/assets/images/flags/countries/large/flag-fi.png +0 -0
  28. data/lib/assets/images/flags/countries/large/flag-fr.png +0 -0
  29. data/lib/assets/images/flags/countries/large/flag-gb.png +0 -0
  30. data/lib/assets/images/flags/countries/large/flag-gr.png +0 -0
  31. data/lib/assets/images/flags/countries/large/flag-hr.png +0 -0
  32. data/lib/assets/images/flags/countries/large/flag-hu.png +0 -0
  33. data/lib/assets/images/flags/countries/large/flag-ie.png +0 -0
  34. data/lib/assets/images/flags/countries/large/flag-it.png +0 -0
  35. data/lib/assets/images/flags/countries/large/flag-li.png +0 -0
  36. data/lib/assets/images/flags/countries/large/flag-lt.png +0 -0
  37. data/lib/assets/images/flags/countries/large/flag-lu.png +0 -0
  38. data/lib/assets/images/flags/countries/large/flag-lv.png +0 -0
  39. data/lib/assets/images/flags/countries/large/flag-nl.png +0 -0
  40. data/lib/assets/images/flags/countries/large/flag-no.png +0 -0
  41. data/lib/assets/images/flags/countries/large/flag-pl.png +0 -0
  42. data/lib/assets/images/flags/countries/large/flag-pt.png +0 -0
  43. data/lib/assets/images/flags/countries/large/flag-ro.png +0 -0
  44. data/lib/assets/images/flags/countries/large/flag-rs.png +0 -0
  45. data/lib/assets/images/flags/countries/large/flag-ru.png +0 -0
  46. data/lib/assets/images/flags/countries/large/flag-se.png +0 -0
  47. data/lib/assets/images/flags/countries/large/flag-si.png +0 -0
  48. data/lib/assets/images/flags/countries/large/flag-sk.png +0 -0
  49. data/lib/assets/images/flags/countries/large/flag-ua.png +0 -0
  50. data/lib/assets/images/flags/countries/large/flag-us.png +0 -0
  51. data/lib/assets/images/flags/countries/large/flag-xx.png +0 -0
  52. data/lib/assets/images/flags/countries/large/square-at.png +0 -0
  53. data/lib/assets/images/flags/countries/large/square-ba.png +0 -0
  54. data/lib/assets/images/flags/countries/large/square-be.png +0 -0
  55. data/lib/assets/images/flags/countries/large/square-bg.png +0 -0
  56. data/lib/assets/images/flags/countries/large/square-by.png +0 -0
  57. data/lib/assets/images/flags/countries/large/square-ca.png +0 -0
  58. data/lib/assets/images/flags/countries/large/square-ch.png +0 -0
  59. data/lib/assets/images/flags/countries/large/square-cy.png +0 -0
  60. data/lib/assets/images/flags/countries/large/square-cz.png +0 -0
  61. data/lib/assets/images/flags/countries/large/square-de.png +0 -0
  62. data/lib/assets/images/flags/countries/large/square-dk.png +0 -0
  63. data/lib/assets/images/flags/countries/large/square-es.png +0 -0
  64. data/lib/assets/images/flags/countries/large/square-fi.png +0 -0
  65. data/lib/assets/images/flags/countries/large/square-fr.png +0 -0
  66. data/lib/assets/images/flags/countries/large/square-gb.png +0 -0
  67. data/lib/assets/images/flags/countries/large/square-gr.png +0 -0
  68. data/lib/assets/images/flags/countries/large/square-hr.png +0 -0
  69. data/lib/assets/images/flags/countries/large/square-hu.png +0 -0
  70. data/lib/assets/images/flags/countries/large/square-ie.png +0 -0
  71. data/lib/assets/images/flags/countries/large/square-it.png +0 -0
  72. data/lib/assets/images/flags/countries/large/square-li.png +0 -0
  73. data/lib/assets/images/flags/countries/large/square-lt.png +0 -0
  74. data/lib/assets/images/flags/countries/large/square-lu.png +0 -0
  75. data/lib/assets/images/flags/countries/large/square-lv.png +0 -0
  76. data/lib/assets/images/flags/countries/large/square-nl.png +0 -0
  77. data/lib/assets/images/flags/countries/large/square-no.png +0 -0
  78. data/lib/assets/images/flags/countries/large/square-pl.png +0 -0
  79. data/lib/assets/images/flags/countries/large/square-pt.png +0 -0
  80. data/lib/assets/images/flags/countries/large/square-ro.png +0 -0
  81. data/lib/assets/images/flags/countries/large/square-rs.png +0 -0
  82. data/lib/assets/images/flags/countries/large/square-ru.png +0 -0
  83. data/lib/assets/images/flags/countries/large/square-se.png +0 -0
  84. data/lib/assets/images/flags/countries/large/square-si.png +0 -0
  85. data/lib/assets/images/flags/countries/large/square-sk.png +0 -0
  86. data/lib/assets/images/flags/countries/large/square-ua.png +0 -0
  87. data/lib/assets/images/flags/countries/large/square-us.png +0 -0
  88. data/lib/assets/images/flags/countries/large/square-xx.png +0 -0
  89. data/lib/assets/images/flags/countries/medium/flag-at.png +0 -0
  90. data/lib/assets/images/flags/countries/medium/flag-ba.png +0 -0
  91. data/lib/assets/images/flags/countries/medium/flag-be.png +0 -0
  92. data/lib/assets/images/flags/countries/medium/flag-bg.png +0 -0
  93. data/lib/assets/images/flags/countries/medium/flag-by.png +0 -0
  94. data/lib/assets/images/flags/countries/medium/flag-ca.png +0 -0
  95. data/lib/assets/images/flags/countries/medium/flag-ch.png +0 -0
  96. data/lib/assets/images/flags/countries/medium/flag-cy.png +0 -0
  97. data/lib/assets/images/flags/countries/medium/flag-cz.png +0 -0
  98. data/lib/assets/images/flags/countries/medium/flag-de.png +0 -0
  99. data/lib/assets/images/flags/countries/medium/flag-dk.png +0 -0
  100. data/lib/assets/images/flags/countries/medium/flag-es.png +0 -0
  101. data/lib/assets/images/flags/countries/medium/flag-fi.png +0 -0
  102. data/lib/assets/images/flags/countries/medium/flag-fr.png +0 -0
  103. data/lib/assets/images/flags/countries/medium/flag-gb.png +0 -0
  104. data/lib/assets/images/flags/countries/medium/flag-gr.png +0 -0
  105. data/lib/assets/images/flags/countries/medium/flag-hr.png +0 -0
  106. data/lib/assets/images/flags/countries/medium/flag-hu.png +0 -0
  107. data/lib/assets/images/flags/countries/medium/flag-ie.png +0 -0
  108. data/lib/assets/images/flags/countries/medium/flag-it.png +0 -0
  109. data/lib/assets/images/flags/countries/medium/flag-li.png +0 -0
  110. data/lib/assets/images/flags/countries/medium/flag-lt.png +0 -0
  111. data/lib/assets/images/flags/countries/medium/flag-lu.png +0 -0
  112. data/lib/assets/images/flags/countries/medium/flag-lv.png +0 -0
  113. data/lib/assets/images/flags/countries/medium/flag-nl.png +0 -0
  114. data/lib/assets/images/flags/countries/medium/flag-no.png +0 -0
  115. data/lib/assets/images/flags/countries/medium/flag-pl.png +0 -0
  116. data/lib/assets/images/flags/countries/medium/flag-pt.png +0 -0
  117. data/lib/assets/images/flags/countries/medium/flag-ro.png +0 -0
  118. data/lib/assets/images/flags/countries/medium/flag-rs.png +0 -0
  119. data/lib/assets/images/flags/countries/medium/flag-ru.png +0 -0
  120. data/lib/assets/images/flags/countries/medium/flag-se.png +0 -0
  121. data/lib/assets/images/flags/countries/medium/flag-si.png +0 -0
  122. data/lib/assets/images/flags/countries/medium/flag-sk.png +0 -0
  123. data/lib/assets/images/flags/countries/medium/flag-ua.png +0 -0
  124. data/lib/assets/images/flags/countries/medium/flag-us.png +0 -0
  125. data/lib/assets/images/flags/countries/medium/flag-xx.png +0 -0
  126. data/lib/assets/images/flags/countries/medium/square-at.png +0 -0
  127. data/lib/assets/images/flags/countries/medium/square-ba.png +0 -0
  128. data/lib/assets/images/flags/countries/medium/square-be.png +0 -0
  129. data/lib/assets/images/flags/countries/medium/square-bg.png +0 -0
  130. data/lib/assets/images/flags/countries/medium/square-by.png +0 -0
  131. data/lib/assets/images/flags/countries/medium/square-ca.png +0 -0
  132. data/lib/assets/images/flags/countries/medium/square-ch.png +0 -0
  133. data/lib/assets/images/flags/countries/medium/square-cy.png +0 -0
  134. data/lib/assets/images/flags/countries/medium/square-cz.png +0 -0
  135. data/lib/assets/images/flags/countries/medium/square-de.png +0 -0
  136. data/lib/assets/images/flags/countries/medium/square-dk.png +0 -0
  137. data/lib/assets/images/flags/countries/medium/square-es.png +0 -0
  138. data/lib/assets/images/flags/countries/medium/square-fi.png +0 -0
  139. data/lib/assets/images/flags/countries/medium/square-fr.png +0 -0
  140. data/lib/assets/images/flags/countries/medium/square-gb.png +0 -0
  141. data/lib/assets/images/flags/countries/medium/square-gr.png +0 -0
  142. data/lib/assets/images/flags/countries/medium/square-hr.png +0 -0
  143. data/lib/assets/images/flags/countries/medium/square-hu.png +0 -0
  144. data/lib/assets/images/flags/countries/medium/square-ie.png +0 -0
  145. data/lib/assets/images/flags/countries/medium/square-it.png +0 -0
  146. data/lib/assets/images/flags/countries/medium/square-li.png +0 -0
  147. data/lib/assets/images/flags/countries/medium/square-lt.png +0 -0
  148. data/lib/assets/images/flags/countries/medium/square-lu.png +0 -0
  149. data/lib/assets/images/flags/countries/medium/square-lv.png +0 -0
  150. data/lib/assets/images/flags/countries/medium/square-nl.png +0 -0
  151. data/lib/assets/images/flags/countries/medium/square-no.png +0 -0
  152. data/lib/assets/images/flags/countries/medium/square-pl.png +0 -0
  153. data/lib/assets/images/flags/countries/medium/square-pt.png +0 -0
  154. data/lib/assets/images/flags/countries/medium/square-ro.png +0 -0
  155. data/lib/assets/images/flags/countries/medium/square-rs.png +0 -0
  156. data/lib/assets/images/flags/countries/medium/square-ru.png +0 -0
  157. data/lib/assets/images/flags/countries/medium/square-se.png +0 -0
  158. data/lib/assets/images/flags/countries/medium/square-si.png +0 -0
  159. data/lib/assets/images/flags/countries/medium/square-sk.png +0 -0
  160. data/lib/assets/images/flags/countries/medium/square-ua.png +0 -0
  161. data/lib/assets/images/flags/countries/medium/square-us.png +0 -0
  162. data/lib/assets/images/flags/countries/medium/square-xx.png +0 -0
  163. data/lib/assets/images/flags/countries/small/flag-at.png +0 -0
  164. data/lib/assets/images/flags/countries/small/flag-ba.png +0 -0
  165. data/lib/assets/images/flags/countries/small/flag-be.png +0 -0
  166. data/lib/assets/images/flags/countries/small/flag-bg.png +0 -0
  167. data/lib/assets/images/flags/countries/small/flag-by.png +0 -0
  168. data/lib/assets/images/flags/countries/small/flag-ca.png +0 -0
  169. data/lib/assets/images/flags/countries/small/flag-ch.png +0 -0
  170. data/lib/assets/images/flags/countries/small/flag-cy.png +0 -0
  171. data/lib/assets/images/flags/countries/small/flag-cz.png +0 -0
  172. data/lib/assets/images/flags/countries/small/flag-de.png +0 -0
  173. data/lib/assets/images/flags/countries/small/flag-dk.png +0 -0
  174. data/lib/assets/images/flags/countries/small/flag-es.png +0 -0
  175. data/lib/assets/images/flags/countries/small/flag-fi.png +0 -0
  176. data/lib/assets/images/flags/countries/small/flag-fr.png +0 -0
  177. data/lib/assets/images/flags/countries/small/flag-gb.png +0 -0
  178. data/lib/assets/images/flags/countries/small/flag-gr.png +0 -0
  179. data/lib/assets/images/flags/countries/small/flag-hr.png +0 -0
  180. data/lib/assets/images/flags/countries/small/flag-hu.png +0 -0
  181. data/lib/assets/images/flags/countries/small/flag-ie.png +0 -0
  182. data/lib/assets/images/flags/countries/small/flag-it.png +0 -0
  183. data/lib/assets/images/flags/countries/small/flag-li.png +0 -0
  184. data/lib/assets/images/flags/countries/small/flag-lt.png +0 -0
  185. data/lib/assets/images/flags/countries/small/flag-lu.png +0 -0
  186. data/lib/assets/images/flags/countries/small/flag-lv.png +0 -0
  187. data/lib/assets/images/flags/countries/small/flag-nl.png +0 -0
  188. data/lib/assets/images/flags/countries/small/flag-no.png +0 -0
  189. data/lib/assets/images/flags/countries/small/flag-pl.png +0 -0
  190. data/lib/assets/images/flags/countries/small/flag-pt.png +0 -0
  191. data/lib/assets/images/flags/countries/small/flag-ro.png +0 -0
  192. data/lib/assets/images/flags/countries/small/flag-rs.png +0 -0
  193. data/lib/assets/images/flags/countries/small/flag-ru.png +0 -0
  194. data/lib/assets/images/flags/countries/small/flag-se.png +0 -0
  195. data/lib/assets/images/flags/countries/small/flag-si.png +0 -0
  196. data/lib/assets/images/flags/countries/small/flag-sk.png +0 -0
  197. data/lib/assets/images/flags/countries/small/flag-ua.png +0 -0
  198. data/lib/assets/images/flags/countries/small/flag-us.png +0 -0
  199. data/lib/assets/images/flags/countries/small/flag-xx.png +0 -0
  200. data/lib/assets/images/flags/countries/small/square-at.png +0 -0
  201. data/lib/assets/images/flags/countries/small/square-ba.png +0 -0
  202. data/lib/assets/images/flags/countries/small/square-be.png +0 -0
  203. data/lib/assets/images/flags/countries/small/square-bg.png +0 -0
  204. data/lib/assets/images/flags/countries/small/square-by.png +0 -0
  205. data/lib/assets/images/flags/countries/small/square-ca.png +0 -0
  206. data/lib/assets/images/flags/countries/small/square-ch.png +0 -0
  207. data/lib/assets/images/flags/countries/small/square-cy.png +0 -0
  208. data/lib/assets/images/flags/countries/small/square-cz.png +0 -0
  209. data/lib/assets/images/flags/countries/small/square-de.png +0 -0
  210. data/lib/assets/images/flags/countries/small/square-dk.png +0 -0
  211. data/lib/assets/images/flags/countries/small/square-es.png +0 -0
  212. data/lib/assets/images/flags/countries/small/square-fi.png +0 -0
  213. data/lib/assets/images/flags/countries/small/square-fr.png +0 -0
  214. data/lib/assets/images/flags/countries/small/square-gb.png +0 -0
  215. data/lib/assets/images/flags/countries/small/square-gr.png +0 -0
  216. data/lib/assets/images/flags/countries/small/square-hr.png +0 -0
  217. data/lib/assets/images/flags/countries/small/square-hu.png +0 -0
  218. data/lib/assets/images/flags/countries/small/square-ie.png +0 -0
  219. data/lib/assets/images/flags/countries/small/square-it.png +0 -0
  220. data/lib/assets/images/flags/countries/small/square-li.png +0 -0
  221. data/lib/assets/images/flags/countries/small/square-lt.png +0 -0
  222. data/lib/assets/images/flags/countries/small/square-lu.png +0 -0
  223. data/lib/assets/images/flags/countries/small/square-lv.png +0 -0
  224. data/lib/assets/images/flags/countries/small/square-nl.png +0 -0
  225. data/lib/assets/images/flags/countries/small/square-no.png +0 -0
  226. data/lib/assets/images/flags/countries/small/square-pl.png +0 -0
  227. data/lib/assets/images/flags/countries/small/square-pt.png +0 -0
  228. data/lib/assets/images/flags/countries/small/square-ro.png +0 -0
  229. data/lib/assets/images/flags/countries/small/square-rs.png +0 -0
  230. data/lib/assets/images/flags/countries/small/square-ru.png +0 -0
  231. data/lib/assets/images/flags/countries/small/square-se.png +0 -0
  232. data/lib/assets/images/flags/countries/small/square-si.png +0 -0
  233. data/lib/assets/images/flags/countries/small/square-sk.png +0 -0
  234. data/lib/assets/images/flags/countries/small/square-ua.png +0 -0
  235. data/lib/assets/images/flags/countries/small/square-us.png +0 -0
  236. data/lib/assets/images/flags/countries/small/square-xx.png +0 -0
  237. data/lib/assets/images/flags/flags_cz.png +0 -0
  238. data/lib/assets/images/flags/flags_de.png +0 -0
  239. data/lib/assets/images/flags/flags_en.png +0 -0
  240. data/lib/assets/images/flags/flags_es.png +0 -0
  241. data/lib/assets/images/flags/flags_fr.png +0 -0
  242. data/lib/assets/images/flags/flags_it.png +0 -0
  243. data/lib/assets/images/flags/flags_pl.png +0 -0
  244. data/lib/assets/images/flags/flags_ru.png +0 -0
  245. data/lib/assets/images/flags/flags_uk.png +0 -0
  246. data/lib/assets/images/flags/locales/large/flag-bg.png +0 -0
  247. data/lib/assets/images/flags/locales/large/flag-cs.png +0 -0
  248. data/lib/assets/images/flags/locales/large/flag-da.png +0 -0
  249. data/lib/assets/images/flags/locales/large/flag-de.png +0 -0
  250. data/lib/assets/images/flags/locales/large/flag-el.png +0 -0
  251. data/lib/assets/images/flags/locales/large/flag-en.png +0 -0
  252. data/lib/assets/images/flags/locales/large/flag-es.png +0 -0
  253. data/lib/assets/images/flags/locales/large/flag-fi.png +0 -0
  254. data/lib/assets/images/flags/locales/large/flag-fr.png +0 -0
  255. data/lib/assets/images/flags/locales/large/flag-hr.png +0 -0
  256. data/lib/assets/images/flags/locales/large/flag-hu.png +0 -0
  257. data/lib/assets/images/flags/locales/large/flag-it.png +0 -0
  258. data/lib/assets/images/flags/locales/large/flag-nl.png +0 -0
  259. data/lib/assets/images/flags/locales/large/flag-pl.png +0 -0
  260. data/lib/assets/images/flags/locales/large/flag-pt.png +0 -0
  261. data/lib/assets/images/flags/locales/large/flag-ru.png +0 -0
  262. data/lib/assets/images/flags/locales/large/flag-sv.png +0 -0
  263. data/lib/assets/images/flags/locales/large/flag-uk.png +0 -0
  264. data/lib/assets/images/flags/locales/large/flag-xx.png +0 -0
  265. data/lib/assets/images/flags/locales/large/square-bg.png +0 -0
  266. data/lib/assets/images/flags/locales/large/square-cs.png +0 -0
  267. data/lib/assets/images/flags/locales/large/square-da.png +0 -0
  268. data/lib/assets/images/flags/locales/large/square-de.png +0 -0
  269. data/lib/assets/images/flags/locales/large/square-el.png +0 -0
  270. data/lib/assets/images/flags/locales/large/square-en.png +0 -0
  271. data/lib/assets/images/flags/locales/large/square-es.png +0 -0
  272. data/lib/assets/images/flags/locales/large/square-fi.png +0 -0
  273. data/lib/assets/images/flags/locales/large/square-fr.png +0 -0
  274. data/lib/assets/images/flags/locales/large/square-hr.png +0 -0
  275. data/lib/assets/images/flags/locales/large/square-hu.png +0 -0
  276. data/lib/assets/images/flags/locales/large/square-it.png +0 -0
  277. data/lib/assets/images/flags/locales/large/square-nl.png +0 -0
  278. data/lib/assets/images/flags/locales/large/square-pl.png +0 -0
  279. data/lib/assets/images/flags/locales/large/square-pt.png +0 -0
  280. data/lib/assets/images/flags/locales/large/square-ru.png +0 -0
  281. data/lib/assets/images/flags/locales/large/square-sv.png +0 -0
  282. data/lib/assets/images/flags/locales/large/square-uk.png +0 -0
  283. data/lib/assets/images/flags/locales/large/square-xx.png +0 -0
  284. data/lib/assets/images/flags/locales/medium/flag-bg.png +0 -0
  285. data/lib/assets/images/flags/locales/medium/flag-cs.png +0 -0
  286. data/lib/assets/images/flags/locales/medium/flag-da.png +0 -0
  287. data/lib/assets/images/flags/locales/medium/flag-de.png +0 -0
  288. data/lib/assets/images/flags/locales/medium/flag-el.png +0 -0
  289. data/lib/assets/images/flags/locales/medium/flag-en.png +0 -0
  290. data/lib/assets/images/flags/locales/medium/flag-es.png +0 -0
  291. data/lib/assets/images/flags/locales/medium/flag-fi.png +0 -0
  292. data/lib/assets/images/flags/locales/medium/flag-fr.png +0 -0
  293. data/lib/assets/images/flags/locales/medium/flag-hr.png +0 -0
  294. data/lib/assets/images/flags/locales/medium/flag-hu.png +0 -0
  295. data/lib/assets/images/flags/locales/medium/flag-it.png +0 -0
  296. data/lib/assets/images/flags/locales/medium/flag-nl.png +0 -0
  297. data/lib/assets/images/flags/locales/medium/flag-pl.png +0 -0
  298. data/lib/assets/images/flags/locales/medium/flag-pt.png +0 -0
  299. data/lib/assets/images/flags/locales/medium/flag-ru.png +0 -0
  300. data/lib/assets/images/flags/locales/medium/flag-sv.png +0 -0
  301. data/lib/assets/images/flags/locales/medium/flag-uk.png +0 -0
  302. data/lib/assets/images/flags/locales/medium/flag-xx.png +0 -0
  303. data/lib/assets/images/flags/locales/medium/square-bg.png +0 -0
  304. data/lib/assets/images/flags/locales/medium/square-cs.png +0 -0
  305. data/lib/assets/images/flags/locales/medium/square-da.png +0 -0
  306. data/lib/assets/images/flags/locales/medium/square-de.png +0 -0
  307. data/lib/assets/images/flags/locales/medium/square-el.png +0 -0
  308. data/lib/assets/images/flags/locales/medium/square-en.png +0 -0
  309. data/lib/assets/images/flags/locales/medium/square-es.png +0 -0
  310. data/lib/assets/images/flags/locales/medium/square-fi.png +0 -0
  311. data/lib/assets/images/flags/locales/medium/square-fr.png +0 -0
  312. data/lib/assets/images/flags/locales/medium/square-hr.png +0 -0
  313. data/lib/assets/images/flags/locales/medium/square-hu.png +0 -0
  314. data/lib/assets/images/flags/locales/medium/square-it.png +0 -0
  315. data/lib/assets/images/flags/locales/medium/square-nl.png +0 -0
  316. data/lib/assets/images/flags/locales/medium/square-pl.png +0 -0
  317. data/lib/assets/images/flags/locales/medium/square-pt.png +0 -0
  318. data/lib/assets/images/flags/locales/medium/square-ru.png +0 -0
  319. data/lib/assets/images/flags/locales/medium/square-sv.png +0 -0
  320. data/lib/assets/images/flags/locales/medium/square-uk.png +0 -0
  321. data/lib/assets/images/flags/locales/medium/square-xx.png +0 -0
  322. data/lib/assets/images/flags/locales/small/flag-bg.png +0 -0
  323. data/lib/assets/images/flags/locales/small/flag-cs.png +0 -0
  324. data/lib/assets/images/flags/locales/small/flag-da.png +0 -0
  325. data/lib/assets/images/flags/locales/small/flag-de.png +0 -0
  326. data/lib/assets/images/flags/locales/small/flag-el.png +0 -0
  327. data/lib/assets/images/flags/locales/small/flag-en.png +0 -0
  328. data/lib/assets/images/flags/locales/small/flag-es.png +0 -0
  329. data/lib/assets/images/flags/locales/small/flag-fi.png +0 -0
  330. data/lib/assets/images/flags/locales/small/flag-fr.png +0 -0
  331. data/lib/assets/images/flags/locales/small/flag-hr.png +0 -0
  332. data/lib/assets/images/flags/locales/small/flag-hu.png +0 -0
  333. data/lib/assets/images/flags/locales/small/flag-it.png +0 -0
  334. data/lib/assets/images/flags/locales/small/flag-nl.png +0 -0
  335. data/lib/assets/images/flags/locales/small/flag-pl.png +0 -0
  336. data/lib/assets/images/flags/locales/small/flag-pt.png +0 -0
  337. data/lib/assets/images/flags/locales/small/flag-ru.png +0 -0
  338. data/lib/assets/images/flags/locales/small/flag-sv.png +0 -0
  339. data/lib/assets/images/flags/locales/small/flag-uk.png +0 -0
  340. data/lib/assets/images/flags/locales/small/flag-xx.png +0 -0
  341. data/lib/assets/images/flags/locales/small/square-bg.png +0 -0
  342. data/lib/assets/images/flags/locales/small/square-cs.png +0 -0
  343. data/lib/assets/images/flags/locales/small/square-da.png +0 -0
  344. data/lib/assets/images/flags/locales/small/square-de.png +0 -0
  345. data/lib/assets/images/flags/locales/small/square-el.png +0 -0
  346. data/lib/assets/images/flags/locales/small/square-en.png +0 -0
  347. data/lib/assets/images/flags/locales/small/square-es.png +0 -0
  348. data/lib/assets/images/flags/locales/small/square-fi.png +0 -0
  349. data/lib/assets/images/flags/locales/small/square-fr.png +0 -0
  350. data/lib/assets/images/flags/locales/small/square-hr.png +0 -0
  351. data/lib/assets/images/flags/locales/small/square-hu.png +0 -0
  352. data/lib/assets/images/flags/locales/small/square-it.png +0 -0
  353. data/lib/assets/images/flags/locales/small/square-nl.png +0 -0
  354. data/lib/assets/images/flags/locales/small/square-pl.png +0 -0
  355. data/lib/assets/images/flags/locales/small/square-pt.png +0 -0
  356. data/lib/assets/images/flags/locales/small/square-ru.png +0 -0
  357. data/lib/assets/images/flags/locales/small/square-sv.png +0 -0
  358. data/lib/assets/images/flags/locales/small/square-uk.png +0 -0
  359. data/lib/assets/images/flags/locales/small/square-xx.png +0 -0
  360. data/lib/generators/magic_locales/install_generator.rb +57 -0
  361. data/lib/generators/magic_locales/templates/locale_seeds.rb +253 -0
  362. data/lib/generators/magic_locales/templates/magic_logales_migration.rb +52 -0
  363. data/lib/magic_locales/flag_helper.rb +25 -0
  364. data/lib/magic_locales/globalized_fields.rb +50 -0
  365. data/lib/magic_locales/magic_locale_helper.rb +56 -0
  366. data/lib/magic_locales/rails.rb +14 -0
  367. data/lib/magic_locales/railtie.rb +14 -0
  368. data/lib/magic_locales/version.rb +3 -0
  369. data/lib/magic_locales.rb +48 -0
  370. data/lib/tasks/magic_locales_tasks.rake +4 -0
  371. data/spec/dummy/README.rdoc +28 -0
  372. data/spec/dummy/Rakefile +6 -0
  373. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  374. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  375. data/spec/dummy/app/controllers/application_controller.rb +13 -0
  376. data/spec/dummy/app/controllers/pages_controller.rb +7 -0
  377. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  378. data/spec/dummy/app/models/user.rb +2 -0
  379. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  380. data/spec/dummy/app/views/pages/start.html.erb +4 -0
  381. data/spec/dummy/bin/bundle +3 -0
  382. data/spec/dummy/bin/rails +4 -0
  383. data/spec/dummy/bin/rake +4 -0
  384. data/spec/dummy/bin/setup +29 -0
  385. data/spec/dummy/config/application.rb +32 -0
  386. data/spec/dummy/config/boot.rb +5 -0
  387. data/spec/dummy/config/database.yml +25 -0
  388. data/spec/dummy/config/environment.rb +5 -0
  389. data/spec/dummy/config/environments/development.rb +41 -0
  390. data/spec/dummy/config/environments/production.rb +79 -0
  391. data/spec/dummy/config/environments/test.rb +42 -0
  392. data/spec/dummy/config/initializers/assets.rb +11 -0
  393. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  394. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  395. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  396. data/spec/dummy/config/initializers/inflections.rb +16 -0
  397. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  398. data/spec/dummy/config/initializers/session_store.rb +3 -0
  399. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  400. data/spec/dummy/config/locales/de.yml +23 -0
  401. data/spec/dummy/config/locales/en.yml +23 -0
  402. data/spec/dummy/config/routes.rb +69 -0
  403. data/spec/dummy/config/secrets.yml +22 -0
  404. data/spec/dummy/config.ru +4 -0
  405. data/spec/dummy/db/development.sqlite3 +0 -0
  406. data/spec/dummy/db/migrate/20150326132056_create_users.rb +10 -0
  407. data/spec/dummy/db/migrate/20150327111103_add_magic_locales.rb +52 -0
  408. data/spec/dummy/db/schema.rb +55 -0
  409. data/spec/dummy/db/seeds/locales.rb +253 -0
  410. data/spec/dummy/db/test.sqlite3 +0 -0
  411. data/spec/dummy/log/development.log +5867 -0
  412. data/spec/dummy/log/test.log +678 -0
  413. data/spec/dummy/public/404.html +67 -0
  414. data/spec/dummy/public/422.html +67 -0
  415. data/spec/dummy/public/500.html +66 -0
  416. data/spec/dummy/public/favicon.ico +0 -0
  417. data/spec/dummy/tmp/cache/assets/development/sprockets/024ec9501b30fe45282911b840b95ffd +0 -0
  418. data/spec/dummy/tmp/cache/assets/development/sprockets/02e9e067530411f9e8123dca02f6ff7f +0 -0
  419. data/spec/dummy/tmp/cache/assets/development/sprockets/074e9fbce40e24f8b28b1fc419afd07a +0 -0
  420. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  421. data/spec/dummy/tmp/cache/assets/development/sprockets/21f772d42fa066bbb2690192ed5ed28e +0 -0
  422. data/spec/dummy/tmp/cache/assets/development/sprockets/2411c11cae47b66bae08066a80d33e61 +0 -0
  423. data/spec/dummy/tmp/cache/assets/development/sprockets/269c6b04e68cc5602d3ee011d00fcc05 +0 -0
  424. data/spec/dummy/tmp/cache/assets/development/sprockets/293b3165375686f4941a8a967c3b2fec +0 -0
  425. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  426. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  427. data/spec/dummy/tmp/cache/assets/development/sprockets/370393cb1156c25fa00a39d653697c8d +0 -0
  428. data/spec/dummy/tmp/cache/assets/development/sprockets/41d8cb90d821f2faa18b0be59347d510 +0 -0
  429. data/spec/dummy/tmp/cache/assets/development/sprockets/42db62a71d5a47a160d8038d54834f08 +0 -0
  430. data/spec/dummy/tmp/cache/assets/development/sprockets/48f57106a764c5f5e4876c1ab8be9ca9 +0 -0
  431. data/spec/dummy/tmp/cache/assets/development/sprockets/5465f2e305aaf65b93498c3a5d9aebc2 +0 -0
  432. data/spec/dummy/tmp/cache/assets/development/sprockets/56e985588935cfd4d641219a1584f915 +0 -0
  433. data/spec/dummy/tmp/cache/assets/development/sprockets/5735ad5d8f92eda6585edd72f471470c +0 -0
  434. data/spec/dummy/tmp/cache/assets/development/sprockets/59ab73a37d5a12d11b3365666bd0d8d6 +0 -0
  435. data/spec/dummy/tmp/cache/assets/development/sprockets/646c34fdfbbd07273fd5021aa010ff84 +0 -0
  436. data/spec/dummy/tmp/cache/assets/development/sprockets/6a2b720a99cba7ffe285776300e1ae8a +0 -0
  437. data/spec/dummy/tmp/cache/assets/development/sprockets/6d2720be6b7611d63ad724de6855d329 +0 -0
  438. data/spec/dummy/tmp/cache/assets/development/sprockets/6e13c429fec3bb2c4462ce5fccccc207 +0 -0
  439. data/spec/dummy/tmp/cache/assets/development/sprockets/6e95a606c68bf03114949988a1d00a93 +0 -0
  440. data/spec/dummy/tmp/cache/assets/development/sprockets/7132c3d0b265177e337d319046310c94 +0 -0
  441. data/spec/dummy/tmp/cache/assets/development/sprockets/85aa152164ab917381b159865995d714 +0 -0
  442. data/spec/dummy/tmp/cache/assets/development/sprockets/8f095dc51026dd316e721df9b6264f1f +0 -0
  443. data/spec/dummy/tmp/cache/assets/development/sprockets/92519516b5581b79a3f015efca646527 +0 -0
  444. data/spec/dummy/tmp/cache/assets/development/sprockets/a24b7203c0701cdd550ac682572308d9 +0 -0
  445. data/spec/dummy/tmp/cache/assets/development/sprockets/a5d5de529f675db47e45239d04813511 +0 -0
  446. data/spec/dummy/tmp/cache/assets/development/sprockets/ace9e4bc7b337ae5b1a74c6c320c741c +0 -0
  447. data/spec/dummy/tmp/cache/assets/development/sprockets/b79f7e12174354c395efcaf0d45e8a11 +0 -0
  448. data/spec/dummy/tmp/cache/assets/development/sprockets/c0fb3be9dbb3bc8844922eaff0d55201 +0 -0
  449. data/spec/dummy/tmp/cache/assets/development/sprockets/c1c793bef76a3aae9123e4df19d92c21 +0 -0
  450. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  451. data/spec/dummy/tmp/cache/assets/development/sprockets/d3d39ac7e36a2e7a3554834eaa26669c +0 -0
  452. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  453. data/spec/dummy/tmp/cache/assets/development/sprockets/ef972caaba894735135ce2f663a012ce +0 -0
  454. data/spec/dummy/tmp/cache/assets/development/sprockets/f03bb1af911f80ff9df0283b3a788a63 +0 -0
  455. data/spec/dummy/tmp/cache/assets/development/sprockets/f30844584fa4b683673368e5a23eed7f +0 -0
  456. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  457. data/spec/dummy/tmp/cache/assets/development/sprockets/fb084b448735966191ed041270ff5212 +0 -0
  458. data/spec/dummy/tmp/cache/assets/development/sprockets/ffe3973c98878fae13cf4974dee3ae68 +0 -0
  459. data/spec/dummy/tmp/pids/server.pid +1 -0
  460. data/spec/models/magic_locales/association_spec.rb +60 -0
  461. data/spec/models/magic_locales/language_spec.rb +15 -0
  462. data/spec/models/magic_locales/locale_spec.rb +33 -0
  463. data/spec/models/user_spec.rb +14 -0
  464. data/spec/rails_helper.rb +51 -0
  465. data/spec/spec_helper.rb +87 -0
  466. metadata +688 -0
@@ -0,0 +1,57 @@
1
+ require 'rails/generators/migration'
2
+
3
+ module MagicLocales
4
+ module Generators
5
+ class InstallGenerator < ::Rails::Generators::Base
6
+ include Rails::Generators::Migration
7
+ source_root File.expand_path('../templates', __FILE__)
8
+ desc "add magic_locales migrations"
9
+
10
+ def self.next_migration_number(path)
11
+ unless @prev_migration_nr
12
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
13
+ else
14
+ @prev_migration_nr += 1
15
+ end
16
+ @prev_migration_nr.to_s
17
+ end
18
+
19
+ def copy_migrations
20
+ migration_template( "magic_logales_migration.rb", "db/migrate/add_magic_locales.rb" )
21
+ end
22
+
23
+ def create_seeds_folder
24
+ empty_directory( "db/seeds" )
25
+ end
26
+
27
+ desc "add country-seed file"
28
+ def copy_country_seeds
29
+ copy_file( "locale_seeds.rb", "db/seeds/locales.rb" )
30
+ end
31
+
32
+ # => desc "add magic_addresses initialitzer"
33
+ # => def copy_mgca_initialitzer
34
+ # => copy_file( "magic_initializer.rb", "config/initializers/magic_addresses.rb" )
35
+ # => end
36
+
37
+ desc "add magic_addresses routes"
38
+ def copy_mgca_routes
39
+ route <<-ROUTE
40
+
41
+ scope :mgclang, module: :magic_locales do
42
+ resources :locales do
43
+ get "trigger/:state", action: :trigger, on: :member, as: :trigger
44
+ end
45
+ get "/" => "locales#index"
46
+ end
47
+ get "/change-locale/:locale", controller: "magic_locales/locales", action: :change_locale, as: :change_locale
48
+
49
+ ROUTE
50
+ end
51
+
52
+
53
+
54
+
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,253 @@
1
+ # encoding: utf-8
2
+
3
+ puts "MagicLocales seed default locales"
4
+
5
+ ML_SYSTEM_LOCALES = %w(cs de en it pl ru)
6
+
7
+ ML_MAGIC_LOCALES = {
8
+ "bg" => {
9
+ "translations_attributes"=>[
10
+ {:locale=>"en", :name=>"Bulgarian"},
11
+ {:locale=>"cs", :name=>"bulharština"},
12
+ {:locale=>"de", :name=>"Bulgarisch"},
13
+ {:locale=>"es", :name=>"Búlgaro"},
14
+ {:locale=>"fr", :name=>"bulgare"},
15
+ {:locale=>"it", :name=>"Bulgaro"},
16
+ {:locale=>"pl", :name=>"bułgarski"},
17
+ {:locale=>"ru", :name=>"болгарский"}
18
+ ],
19
+ "natural_name"=>"Български"
20
+ },
21
+ "cs" => {
22
+ "translations_attributes"=>[
23
+ {:locale=>"en", :name=>"Czech"},
24
+ {:locale=>"cs", :name=>"čeština"},
25
+ {:locale=>"de", :name=>"Tschechisch"},
26
+ {:locale=>"es", :name=>"Checo"},
27
+ {:locale=>"fr", :name=>"tchèque"},
28
+ {:locale=>"it", :name=>"Ceco"},
29
+ {:locale=>"pl", :name=>"czeski"},
30
+ {:locale=>"ru", :name=>"чешский"}
31
+ ],
32
+ "natural_name"=>"čeština"
33
+ },
34
+ "da" => {
35
+ "translations_attributes"=>[
36
+ {:locale=>"en", :name=>"Danish"},
37
+ {:locale=>"cs", :name=>"dánština"},
38
+ {:locale=>"de", :name=>"Dänisch"},
39
+ {:locale=>"es", :name=>"Danés"},
40
+ {:locale=>"fr", :name=>"danois"},
41
+ {:locale=>"it", :name=>"Danese"},
42
+ {:locale=>"pl", :name=>"duński"},
43
+ {:locale=>"ru", :name=>"датский"}
44
+ ],
45
+ "natural_name"=>"dansk"
46
+ },
47
+ "nl" => {
48
+ "translations_attributes"=>[
49
+ {:locale=>"en", :name=>"Dutch"},
50
+ {:locale=>"cs", :name=>"nizozemština"},
51
+ {:locale=>"de", :name=>"Niederländisch"},
52
+ {:locale=>"es", :name=>"Holandés, Flamenco"},
53
+ {:locale=>"fr", :name=>"néerlandais"},
54
+ {:locale=>"it", :name=>"Olandese"},
55
+ {:locale=>"pl", :name=>"holenderski"},
56
+ {:locale=>"ru", :name=>"голландский"}
57
+ ],
58
+ "natural_name"=>"Nederlands"
59
+ },
60
+ "en" => {
61
+ "natural_name"=>"English",
62
+ "translations_attributes"=>[
63
+ {:locale=>"en", :name=>"English"},
64
+ {:locale=>"cs", :name=>"angličtina"},
65
+ {:locale=>"de", :name=>"Englisch"},
66
+ {:locale=>"es", :name=>"Inglés"},
67
+ {:locale=>"fr", :name=>"anglais"},
68
+ {:locale=>"it", :name=>"Inglese"},
69
+ {:locale=>"pl", :name=>"angielski"},
70
+ {:locale=>"ru", :name=>"английский"}
71
+ ]
72
+ },
73
+ "fi" => {
74
+ "translations_attributes"=>[
75
+ {:locale=>"en", :name=>"Finnish"},
76
+ {:locale=>"cs", :name=>"finština"},
77
+ {:locale=>"de", :name=>"Finnisch"},
78
+ {:locale=>"es", :name=>"Finés"},
79
+ {:locale=>"fr", :name=>"finnois"},
80
+ {:locale=>"it", :name=>"Finlandese"},
81
+ {:locale=>"pl", :name=>"fiński"},
82
+ {:locale=>"ru", :name=>"финский"}
83
+ ],
84
+ "natural_name"=>"suomi"
85
+ },
86
+ "fr" => {
87
+ "translations_attributes"=>[
88
+ {:locale=>"en", :name=>"French"},
89
+ {:locale=>"cs", :name=>"francouzština"},
90
+ {:locale=>"de", :name=>"Französisch"},
91
+ {:locale=>"es", :name=>"Francés"},
92
+ {:locale=>"fr", :name=>"français"},
93
+ {:locale=>"it", :name=>"Francese"},
94
+ {:locale=>"pl", :name=>"francuski"},
95
+ {:locale=>"ru", :name=>"французский"}
96
+ ],
97
+ "natural_name"=>"français"
98
+ },
99
+ "de" => {
100
+ "translations_attributes"=>[
101
+ {:locale=>"en", :name=>"German"},
102
+ {:locale=>"cs", :name=>"němčina"},
103
+ {:locale=>"de", :name=>"Deutsch"},
104
+ {:locale=>"es", :name=>"Alemán"},
105
+ {:locale=>"fr", :name=>"allemand"},
106
+ {:locale=>"it", :name=>"Tedesco"},
107
+ {:locale=>"pl", :name=>"niemiecki"},
108
+ {:locale=>"ru", :name=>"немецкий"}
109
+ ],
110
+ "natural_name"=>"Deutsch"
111
+ },
112
+ "el" => {
113
+ "translations_attributes"=>[
114
+ {:locale=>"en", :name=>"Greek, Modern (1453-)"},
115
+ {:locale=>"cs", :name=>"řečtina, moderní (1453-)"},
116
+ {:locale=>"de", :name=>"Neugriechisch (ab 1453)"},
117
+ {:locale=>"es", :name=>"Griego Moderno (>1453)"},
118
+ {:locale=>"fr", :name=>"grec moderne (après 1453)"},
119
+ {:locale=>"it", :name=>"Greco moderno (1453-)"},
120
+ {:locale=>"pl", :name=>"grecki współczesny (1453-)"},
121
+ {:locale=>"ru", :name=>"греческий (с 1453)"}
122
+ ],
123
+ "natural_name"=>"Ελληνικά"
124
+ },
125
+ "hr" => {
126
+ "translations_attributes"=>[
127
+ {:locale=>"en", :name=>"Croatian"},
128
+ {:locale=>"cs", :name=>"chorvatština"},
129
+ {:locale=>"de", :name=>"Kroatisch"},
130
+ {:locale=>"es", :name=>"Croata"},
131
+ {:locale=>"fr", :name=>"croate"},
132
+ {:locale=>"it", :name=>"Croato"},
133
+ {:locale=>"pl", :name=>"chorwacki"},
134
+ {:locale=>"ru", :name=>"хорватский"}
135
+ ],
136
+ "natural_name"=>"hrvatski"
137
+ },
138
+ "hu" => {
139
+ "translations_attributes"=>[
140
+ {:locale=>"en", :name=>"Hungarian"},
141
+ {:locale=>"cs", :name=>"maďarština"},
142
+ {:locale=>"de", :name=>"Ungarisch"},
143
+ {:locale=>"es", :name=>"Húngaro"},
144
+ {:locale=>"fr", :name=>"hongrois"},
145
+ {:locale=>"it", :name=>"Ungherese"},
146
+ {:locale=>"pl", :name=>"węgierski"},
147
+ {:locale=>"ru", :name=>"венгерский"}
148
+ ],
149
+ "natural_name"=>"magyar"
150
+ },
151
+ "it" => {
152
+ "translations_attributes"=>[
153
+ {:locale=>"en", :name=>"Italian"},
154
+ {:locale=>"cs", :name=>"italština"},
155
+ {:locale=>"de", :name=>"Italienisch"},
156
+ {:locale=>"es", :name=>"Italiano"},
157
+ {:locale=>"fr", :name=>"italien"},
158
+ {:locale=>"it", :name=>"Italiano"},
159
+ {:locale=>"pl", :name=>"włoski"},
160
+ {:locale=>"ru", :name=>"итальянский"}
161
+ ],
162
+ "natural_name"=>"Italiano"
163
+ },
164
+ "pl" => {
165
+ "translations_attributes"=>[
166
+ {:locale=>"en", :name=>"Polish"},
167
+ {:locale=>"cs", :name=>"polština"},
168
+ {:locale=>"de", :name=>"Polnisch"},
169
+ {:locale=>"es", :name=>"Polaco"},
170
+ {:locale=>"fr", :name=>"polonais"},
171
+ {:locale=>"it", :name=>"Polacco"},
172
+ {:locale=>"pl", :name=>"polski"},
173
+ {:locale=>"ru", :name=>"польский"}
174
+ ],
175
+ "natural_name"=>"polski"
176
+ },
177
+ "pt" => {
178
+ "translations_attributes"=>[
179
+ {:locale=>"en", :name=>"Portuguese"},
180
+ {:locale=>"cs", :name=>"portugalština"},
181
+ {:locale=>"de", :name=>"Portugiesisch"},
182
+ {:locale=>"es", :name=>"Portugués"},
183
+ {:locale=>"fr", :name=>"portugais"},
184
+ {:locale=>"it", :name=>"Portoghese"},
185
+ {:locale=>"pl", :name=>"portugalski"},
186
+ {:locale=>"ru", :name=>"португальский"}
187
+ ],
188
+ "natural_name"=>"Português"
189
+ },
190
+ "ru" => {
191
+ "translations_attributes"=>[
192
+ {:locale=>"en", :name=>"Russian"},
193
+ {:locale=>"cs", :name=>"ruština"},
194
+ {:locale=>"de", :name=>"Russisch"},
195
+ {:locale=>"es", :name=>"Ruso"},
196
+ {:locale=>"fr", :name=>"russe"},
197
+ {:locale=>"it", :name=>"Russo"},
198
+ {:locale=>"pl", :name=>"rosyjski"},
199
+ {:locale=>"ru", :name=>"русский"}
200
+ ],
201
+ "natural_name"=>"русский"
202
+ },
203
+ "es" => {
204
+ "translations_attributes"=>[
205
+ {:locale=>"en", :name=>"Spanish"},
206
+ {:locale=>"cs", :name=>"španělština"},
207
+ {:locale=>"de", :name=>"Spanisch (Kastilisch)"},
208
+ {:locale=>"es", :name=>"Español"},
209
+ {:locale=>"fr", :name=>"castillan"},
210
+ {:locale=>"it", :name=>"Spagnolo"},
211
+ {:locale=>"pl", :name=>"hiszpański"},
212
+ {:locale=>"ru", :name=>"испанский"}
213
+ ],
214
+ "natural_name"=>"Español"
215
+ },
216
+ "sv" => {
217
+ "translations_attributes"=>[
218
+ {:locale=>"en", :name=>"Swedish"},
219
+ {:locale=>"cs", :name=>"švédština"},
220
+ {:locale=>"de", :name=>"Schwedisch"},
221
+ {:locale=>"es", :name=>"Sueco"},
222
+ {:locale=>"fr", :name=>"suédois"},
223
+ {:locale=>"it", :name=>"Svedese"},
224
+ {:locale=>"pl", :name=>"szwedzki"},
225
+ {:locale=>"ru", :name=>"шведский"}
226
+ ],
227
+ "natural_name"=>"Svenska"
228
+ },
229
+ "uk" => {
230
+ "translations_attributes"=>[
231
+ {:locale=>"en", :name=>"Ukrainian"},
232
+ {:locale=>"cs", :name=>"ukrajinština"},
233
+ {:locale=>"de", :name=>"Ukrainisch"},
234
+ {:locale=>"es", :name=>"Ukranio"},
235
+ {:locale=>"fr", :name=>"ukrainien"},
236
+ {:locale=>"it", :name=>"Ucraino"},
237
+ {:locale=>"pl", :name=>"ukraiński"},
238
+ {:locale=>"ru", :name=>"украинский"}
239
+ ],
240
+ "natural_name"=>"українська"
241
+ }
242
+ }
243
+
244
+
245
+ ML_MAGIC_LOCALES.each do |key, params|
246
+ l_state = ML_SYSTEM_LOCALES.include?( key.to_s ) ? 'active' : 'inactive'
247
+ l_state = "live" if key.to_s == I18n.default_locale.to_s
248
+ MagicLocales::Locale.create!( params.merge({ iso_code: key.to_s, locale_state: l_state }) )
249
+ end
250
+
251
+
252
+ puts "MagicLocales finished #{MagicLocales::Locale.all.count} locales"
253
+
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ class AddMagicLocales < ActiveRecord::Migration
3
+ def up
4
+
5
+ #
6
+ ## Locales
7
+ create_table :mgclang_locales do |t|
8
+ # t.string :name
9
+ t.string :natural_name
10
+ t.string :iso_code
11
+ t.string :locale_state, default: "inactive"
12
+ t.timestamps
13
+ end
14
+
15
+ add_index :mgclang_locales, :iso_code, unique: true
16
+
17
+ MagicLocales::Locale.create_translation_table! :name => :string
18
+
19
+
20
+ #
21
+ ## (spoken) Languages
22
+ create_table :mgclang_languages do |t|
23
+ t.string :level
24
+ t.references :owner, polymorphic: true
25
+ t.references :locale
26
+ t.timestamps
27
+ end
28
+
29
+ add_index :mgclang_languages, [:owner_type, :owner_id]
30
+ add_index :mgclang_languages, :locale_id
31
+
32
+
33
+ #
34
+ ## seed default Locales
35
+ load "#{ Rails.root }/db/seeds/locales.rb"
36
+
37
+
38
+ end
39
+ def down
40
+
41
+ ## Addresses
42
+ remove_index :mgclang_locales, :iso_code
43
+ drop_table :mgclang_locales
44
+ MagicAddresses::Address.drop_translation_table!
45
+
46
+
47
+ remove_index :mgclang_languages, :locale_id
48
+ remove_index :mgclang_languages, [:owner_type, :owner_id]
49
+ drop_table :mgclang_languages
50
+
51
+ end
52
+ end
@@ -0,0 +1,25 @@
1
+ require "action_view/helpers/asset_tag_helper"
2
+
3
+ # encoding: utf-8
4
+ module FlagHelper
5
+
6
+
7
+ def flag( lcl = I18n.locale.to_s )
8
+ # raw( image_tag( "flags/flags_#{lcl}.png", class: "flag" ) )
9
+ locale_flag( lcl, "small" )
10
+ end
11
+
12
+ def locale_flag( lcl = I18n.locale.to_s, format = "small" )
13
+ format = "medium" unless %w(small medium large).include?(format)
14
+ lcl = "xx" unless %w(en bg cs da de el es fi fr hr hu it nl pl pt ru sv uk).include?( lcl.to_s.downcase )
15
+ raw( image_tag( "flags/locales/#{format}/flag-#{lcl.to_s.downcase}.png", class: "flag" ) )
16
+ end
17
+
18
+ def country_flag( lcl = I18n.locale.to_s, format = "small" )
19
+ format = "medium" unless %w(small medium large).include?(format)
20
+ lcl = "xx" unless %w(at by be ba bg ca hr cy cz dk fi fr de gr hu ie it lv li lt lu nl no pl pt ro ru rs sk si es se ch ua gb us).include?( lcl.to_s.downcase )
21
+ raw( image_tag( "flags/countries/#{format}/flag-#{lcl.to_s.downcase}.png", class: "flag" ) )
22
+ end
23
+
24
+
25
+ end
@@ -0,0 +1,50 @@
1
+ ## https://github.com/fidel/batch_translations/
2
+ module ActionView
3
+ module Helpers
4
+ class FormBuilder
5
+ def globalize_fields_for(locale, *args, &proc)
6
+ raise ArgumentError, "Missing block" unless block_given?
7
+ @index = @index ? @index + 1 : 1
8
+ object_name = "#{@object_name}[translations_attributes][#{@index}]"
9
+ object = @object.translations.find_by_locale locale.to_s
10
+ @template.concat @template.hidden_field_tag("#{object_name}[id]", object ? object.id : "")
11
+ @template.concat @template.hidden_field_tag("#{object_name}[locale]", locale)
12
+ if @template.respond_to? :simple_fields_for
13
+ @template.simple_fields_for(object_name, object, *args, &proc)
14
+ else
15
+ @template.fields_for(object_name, object, *args, &proc)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ module Globalize
23
+ module Model
24
+ module ActiveRecord
25
+ module Translated
26
+ module Callbacks
27
+ def enable_nested_attributes
28
+ accepts_nested_attributes_for :translations
29
+ end
30
+ end
31
+ module InstanceMethods
32
+ def after_save
33
+ init_translations
34
+ end
35
+ # Builds an empty translation for each available
36
+ # locale not in use after creation
37
+ def init_translations
38
+ I18n.translated_locales.reject{|key| key == :root }.each do |locale|
39
+ translation = self.translations.find_by_locale locale.to_s
40
+ if translation.nil?
41
+ translations.build :locale => locale
42
+ save
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end