The St8 of Rails I18n


Jan Krutisch, mindmatters, Hamburg
jan.krutisch@mindmatters.de
http://www.mindmatters.de/
Jan Krutisch
Dipl.-Ing. (FH)
Umwelttechnik
Webentwicklung seit
1996
2002 - 2006
AOL Deutschland
Web-Engineer
bzw. Interactive Media
Developer
bzw. Online-Producer
2006 - 2007
qype.com
Rails-Entwickler
2007 - Time.now
mindmatters
Entwicklungsleiter
Buchautor
Webanwendungen
mit Ruby on Rails
Ramon Wartala
Jan Krutisch

Addison-Wesley

  http://www.amazon.de/Webanwendungen-Praxise...
Gründer/ Sysadmin
rubyonrails-ug.de
http://halfbyte.jaiku.com
http://blog.krutisch.de
http://localhost3000.de
(http://flickr.com/photos/jankrutisch)
http://wor...
Internationalisierung
I19g
Sprachen
Kulturen
Länder?
Locale
Language tag
se-SE fr-CH en-GB
            de-DE
pt-BR se-FI
 en-USde-CH
Sprache
Deutsch
Jänner?
de-AT
localization?
localiSation?
en-US vs. en-GB
Formate
Datumsangaben
1974-11-21
Ein Hoch auf die ISO!
16. Januar 1976
18th of July, 2005
06/22/2007
9pm
21:00
21.00 Uhr
Zahlen
200.000,000
200,000.000
Und einige andere Dinge
It‘s like 90 degrees in here
Sprachfeatures
Pluralisierung
0 Dateien
1 Datei
2 Dateien
5 Dateien
5.000.000 Dateien
1 Plik
2 Pliki
5 Plików
5.000.000 Pliki
Kultur
Dear Doosie?
Ansprache
Ernsthaftigkeit
Ironie
Farben
Formen
Rechtliches
fragt flickr
IANAL
Urheberrecht
Jugendschutz
Projektmanagement
Deployment
Roundtrip-Zeiten
Übersetzungsworkflow
versus
Deploy early,
deploy often
Drei sind zwei zuviel
‣ Neue Features
‣ Übersetzung
‣ Deployment
‣ Neue Features
‣ Übersetzung
‣ Deployment
Tägliche Updates
O RLY?
Wöchentliche Updates
Automatisierte Tests?
QA notwendig
Staging!
Monatliche Updates?
Übersetzungsworkflow
Alle Strings
Alle.
Datenaustausch
„Könnt Ihr die Texte als
Word-Dokument
exportieren?“
„Oder WENIGSTENS
Excel?“
Skurrile
Übersetzungstools
Datenverkehr
„Subversion?!?2!1“
E-Mail
Beauftragter für Im- und
Export
Ich kann das selber!
Deutsch?
sicher
Englisch?
klar
Französisch?
nunja...
Komplexe Probleme...
...keine einfachen Lösungen
Don‘t do it!
unless @possible.nil?
Schmerzlinderung
Tools
Automatisierung
I18n MINI-HOWTO
0. waffenwahl
1. plugin/lib installieren
2. Alle Strings Wrappen
Hallo Welt

             -->

<%= _(„Hallo Welt“) %>
3. Strings sammeln
automatisiert!
4. Strings übersetzen
5. Workflow etablieren!
6. (Optional)
Aufschrei der User
bezüglich beschissener
Übersetzungen abwarten
fragt flickr
Tools
Marktüberblick
Kriterien
Vollständigkeit der
Implementation
Workflow-Unterstützung
(Performanz)
„Aus dem Weg bleiben“
Kandidaten
(diese Liste erhebt keinen
Anspruch auf absolute
Vollständigkeit)
plugin:
localization_simplified
plugin:
simple localization
plugin:
localization
plugin:
gloc
plugin:
globalite
plugin:
globalize
gem:
ruby/gettext
plugin:
gettext_localize
localization_simplified
localization_simplified
‣ Scope: Anpassung von Rails an eine
 Sprache != Englisch
 ‣ AR-Fehlermeldungen
 ‣ Helper-Anpassung...
Vor- und Nachteile
+ Einfache Handhabung/Installation
+ Non-Invasiv

- Nicht alle Rails-Helper angepasst
- Keine Übersetzu...
simple localization
simple localization

‣ Scope: Anpassung von Rails an eine
 Sprache != Englisch
‣ AR-Fehlermeldungen
‣ Helper-Anpassungen
Vor- und Nachteile
+ Einfache Handhabung/Installation
+ Non-Invasiv
+ Übersetzung von Modellen/Attributen

- Nicht alle Ra...
localization
localization

‣ Scope: Einfache Übersetzungen
‣ UI-Übersetzung in ruby-code definiert
Vor- und Nachteile
+ Einfache Handhabung/Installation

- Keine Rails-Helper angepasst
- Übersetzungen als Ruby-Code
- Kein...
gloc
gloc

‣ UI-Übersetzung in YAML definiert
‣ Helper angepasst
Vor- und Nachteile
+ Einfache Handhabung/Installation

- Nicht alle Rails-Helper angepasst
- Helper-Übersetzungen nicht fü...
globalite
globalite

‣ UI-Übersetzung in YAML definiert
‣ Helper angepasst
Vor- und Nachteile
+ Einfache Handhabung/Installation

- Helper-Übersetzungen nicht für „de“
- Einige Helper (noch) nicht ...
globalize
globalize
‣ UI-Übersetzung in DB!
‣ Helper angepasst
‣ Keine (Automatische) Übersetzung von
 AR-Fehlermeldungen
‣ Modell-Ü...
Vor- und Nachteile
+ Ermöglicht „online-Übersetzungen“
+ Modell-Übersetzungen (auf 2 Arten)

- Schwieriger Einstieg
- Work...
ruby/gettext
ruby/gettext

‣ basiert auf gettext
‣ Eigenes Format für Text-Dateien
‣ Fokus auf Workflow-Unterstützung
‣ Helper
Vor- und Nachteile
+ Exzellente Workflow-Unterstützung
+ Viele Tools

- Teilweise komplex
- Teilweise schlechte Integration...
gettext_localize
gettext_localize

‣ basiert auf ruby/gettext
‣ Tiefergehende Rails-Integration
‣ Vereinfachung
‣ Rake-Tasks
Vor- und Nachteile
+ Alle Vorteile von Gettext
+ Viele Helper angepasst

- Helper-Übersetzung nicht auf Deutsch
praxiserfahrungen
(casestudy)
Globalize
Eventuell mal Model-
Translations?
Übersetzungen in DB
Doofe Idee.
Sync
DEV > STAGE > PROD
???
Versioniert, bitte!
Subversion!
Eigene rake-tasks für
im- und export
csv als austauschformat
CSV::Reader
CSV::Writer
anstrengend
merge-conflict-Hölle
Keine automatische
String-Sammlung
Übersetzungs-GUI
nicht bewährt
Sync
PROD > STAGE > DEV
???
Übersetzungswürgflow
CSV-Datei an Übersetzer
CSV vom Übersetzer
Kontextfrei
Sinnfrei
Yes, Nummer, Abbruch
(Audacity / MacOS X)
Viele Iterationen
Lehren
Globalize für
„traditionellen Workflow“
nicht geeignet
Workflow ist wichtig
Globalize bietet viel nicht
Model Translations
braucht man selten
Wenn man sie braucht,
klappt es mit globalize
nicht
Hätten wir doch nur...
Zusammenfassung
6 million ways to die
choose one!
simple localization
für einsprachige
Anwendungen
(the simplest thing that
could possibly work)
ruby/gettext
ausgereift
workflow!
Globalize für „besondere“
Zwecke
User generated
localisation
Modell-Übersetzungen
Und der Rest?!?
Nicht Fisch
Nicht Fleisch
Was fehlt?
german_rails
Deutsche Übersetzungen
generic globalize
translation gui
Workflow-Unterstützung
F.I.T.-Projekt
http://fit.dit.upm.es/cgi-bin/trac.cgi
Danke.
Quellen

‣ http://wiki.rubyonrails.org/rails/pages/InternationalizationComparison
‣ http://agilewebdevelopment.com/plugins...
Nächste SlideShare
Wird geladen in …5
×

Rails i18n - Railskonferenz 2007

4.087 Aufrufe

Veröffentlicht am

Rails Internationalisierung

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
4.087
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
77
Aktionen
Geteilt
0
Downloads
106
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Rails i18n - Railskonferenz 2007

  1. 1. The St8 of Rails I18n Jan Krutisch, mindmatters, Hamburg jan.krutisch@mindmatters.de http://www.mindmatters.de/
  2. 2. Jan Krutisch
  3. 3. Dipl.-Ing. (FH) Umwelttechnik
  4. 4. Webentwicklung seit 1996
  5. 5. 2002 - 2006 AOL Deutschland Web-Engineer
  6. 6. bzw. Interactive Media Developer
  7. 7. bzw. Online-Producer
  8. 8. 2006 - 2007 qype.com Rails-Entwickler
  9. 9. 2007 - Time.now mindmatters Entwicklungsleiter
  10. 10. Buchautor
  11. 11. Webanwendungen mit Ruby on Rails Ramon Wartala Jan Krutisch Addison-Wesley http://www.amazon.de/Webanwendungen-Praxiseinstieg-Installation-Testing-Erweiterung/dp/3827324912/
  12. 12. Gründer/ Sysadmin rubyonrails-ug.de
  13. 13. http://halfbyte.jaiku.com http://blog.krutisch.de http://localhost3000.de (http://flickr.com/photos/jankrutisch) http://workingwithrails.com/person/6024-jan-krutisch
  14. 14. Internationalisierung
  15. 15. I19g
  16. 16. Sprachen
  17. 17. Kulturen
  18. 18. Länder?
  19. 19. Locale
  20. 20. Language tag
  21. 21. se-SE fr-CH en-GB de-DE pt-BR se-FI en-USde-CH
  22. 22. Sprache
  23. 23. Deutsch
  24. 24. Jänner?
  25. 25. de-AT
  26. 26. localization?
  27. 27. localiSation?
  28. 28. en-US vs. en-GB
  29. 29. Formate
  30. 30. Datumsangaben
  31. 31. 1974-11-21
  32. 32. Ein Hoch auf die ISO!
  33. 33. 16. Januar 1976
  34. 34. 18th of July, 2005
  35. 35. 06/22/2007
  36. 36. 9pm
  37. 37. 21:00
  38. 38. 21.00 Uhr
  39. 39. Zahlen
  40. 40. 200.000,000
  41. 41. 200,000.000
  42. 42. Und einige andere Dinge
  43. 43. It‘s like 90 degrees in here
  44. 44. Sprachfeatures
  45. 45. Pluralisierung
  46. 46. 0 Dateien
  47. 47. 1 Datei
  48. 48. 2 Dateien
  49. 49. 5 Dateien
  50. 50. 5.000.000 Dateien
  51. 51. 1 Plik
  52. 52. 2 Pliki
  53. 53. 5 Plików
  54. 54. 5.000.000 Pliki
  55. 55. Kultur
  56. 56. Dear Doosie?
  57. 57. Ansprache
  58. 58. Ernsthaftigkeit
  59. 59. Ironie
  60. 60. Farben
  61. 61. Formen
  62. 62. Rechtliches
  63. 63. fragt flickr
  64. 64. IANAL
  65. 65. Urheberrecht
  66. 66. Jugendschutz
  67. 67. Projektmanagement
  68. 68. Deployment
  69. 69. Roundtrip-Zeiten
  70. 70. Übersetzungsworkflow
  71. 71. versus
  72. 72. Deploy early, deploy often
  73. 73. Drei sind zwei zuviel ‣ Neue Features ‣ Übersetzung ‣ Deployment ‣ Neue Features ‣ Übersetzung ‣ Deployment
  74. 74. Tägliche Updates
  75. 75. O RLY?
  76. 76. Wöchentliche Updates
  77. 77. Automatisierte Tests?
  78. 78. QA notwendig
  79. 79. Staging!
  80. 80. Monatliche Updates?
  81. 81. Übersetzungsworkflow
  82. 82. Alle Strings
  83. 83. Alle.
  84. 84. Datenaustausch
  85. 85. „Könnt Ihr die Texte als Word-Dokument exportieren?“
  86. 86. „Oder WENIGSTENS Excel?“
  87. 87. Skurrile Übersetzungstools
  88. 88. Datenverkehr
  89. 89. „Subversion?!?2!1“
  90. 90. E-Mail
  91. 91. Beauftragter für Im- und Export
  92. 92. Ich kann das selber!
  93. 93. Deutsch?
  94. 94. sicher
  95. 95. Englisch?
  96. 96. klar
  97. 97. Französisch?
  98. 98. nunja...
  99. 99. Komplexe Probleme...
  100. 100. ...keine einfachen Lösungen
  101. 101. Don‘t do it!
  102. 102. unless @possible.nil?
  103. 103. Schmerzlinderung
  104. 104. Tools
  105. 105. Automatisierung
  106. 106. I18n MINI-HOWTO
  107. 107. 0. waffenwahl
  108. 108. 1. plugin/lib installieren
  109. 109. 2. Alle Strings Wrappen
  110. 110. Hallo Welt --> <%= _(„Hallo Welt“) %>
  111. 111. 3. Strings sammeln
  112. 112. automatisiert!
  113. 113. 4. Strings übersetzen
  114. 114. 5. Workflow etablieren!
  115. 115. 6. (Optional) Aufschrei der User bezüglich beschissener Übersetzungen abwarten
  116. 116. fragt flickr
  117. 117. Tools
  118. 118. Marktüberblick
  119. 119. Kriterien
  120. 120. Vollständigkeit der Implementation
  121. 121. Workflow-Unterstützung
  122. 122. (Performanz)
  123. 123. „Aus dem Weg bleiben“
  124. 124. Kandidaten
  125. 125. (diese Liste erhebt keinen Anspruch auf absolute Vollständigkeit)
  126. 126. plugin: localization_simplified
  127. 127. plugin: simple localization
  128. 128. plugin: localization
  129. 129. plugin: gloc
  130. 130. plugin: globalite
  131. 131. plugin: globalize
  132. 132. gem: ruby/gettext
  133. 133. plugin: gettext_localize
  134. 134. localization_simplified
  135. 135. localization_simplified ‣ Scope: Anpassung von Rails an eine Sprache != Englisch ‣ AR-Fehlermeldungen ‣ Helper-Anpassungen ‣ Keine UI-Übersetzung! ‣ Keine Sprachdateien
  136. 136. Vor- und Nachteile + Einfache Handhabung/Installation + Non-Invasiv - Nicht alle Rails-Helper angepasst - Keine Übersetzung von Modellen/Attributen - (Beschränktes Einsatzgebiet) - Teilweise seltsame Übersetzungen
  137. 137. simple localization
  138. 138. simple localization ‣ Scope: Anpassung von Rails an eine Sprache != Englisch ‣ AR-Fehlermeldungen ‣ Helper-Anpassungen
  139. 139. Vor- und Nachteile + Einfache Handhabung/Installation + Non-Invasiv + Übersetzung von Modellen/Attributen - Nicht alle Rails-Methoden angepasst - (Beschränktes Einsatzgebiet) - Teilweise seltsame Datums-Formate
  140. 140. localization
  141. 141. localization ‣ Scope: Einfache Übersetzungen ‣ UI-Übersetzung in ruby-code definiert
  142. 142. Vor- und Nachteile + Einfache Handhabung/Installation - Keine Rails-Helper angepasst - Übersetzungen als Ruby-Code - Keine Workflow-Automatismen
  143. 143. gloc
  144. 144. gloc ‣ UI-Übersetzung in YAML definiert ‣ Helper angepasst
  145. 145. Vor- und Nachteile + Einfache Handhabung/Installation - Nicht alle Rails-Helper angepasst - Helper-Übersetzungen nicht für „de“ - Keine AR-Fehlermeldungen übersetzt - Keine Workflow-Automatismen
  146. 146. globalite
  147. 147. globalite ‣ UI-Übersetzung in YAML definiert ‣ Helper angepasst
  148. 148. Vor- und Nachteile + Einfache Handhabung/Installation - Helper-Übersetzungen nicht für „de“ - Einige Helper (noch) nicht angepasst - Keine Workflow-Automatismen
  149. 149. globalize
  150. 150. globalize ‣ UI-Übersetzung in DB! ‣ Helper angepasst ‣ Keine (Automatische) Übersetzung von AR-Fehlermeldungen ‣ Modell-Übersetzungen
  151. 151. Vor- und Nachteile + Ermöglicht „online-Übersetzungen“ + Modell-Übersetzungen (auf 2 Arten) - Schwieriger Einstieg - Workflow nur mit eigenem Code zu bauen - Keine Trennung von UI-Texten und Content - Keine Workflow-Automatismen
  152. 152. ruby/gettext
  153. 153. ruby/gettext ‣ basiert auf gettext ‣ Eigenes Format für Text-Dateien ‣ Fokus auf Workflow-Unterstützung ‣ Helper
  154. 154. Vor- und Nachteile + Exzellente Workflow-Unterstützung + Viele Tools - Teilweise komplex - Teilweise schlechte Integration in Rails - Kaum Rails-Helper angepasst - (Fehlende Rake-Tasks für Automatisierung)
  155. 155. gettext_localize
  156. 156. gettext_localize ‣ basiert auf ruby/gettext ‣ Tiefergehende Rails-Integration ‣ Vereinfachung ‣ Rake-Tasks
  157. 157. Vor- und Nachteile + Alle Vorteile von Gettext + Viele Helper angepasst - Helper-Übersetzung nicht auf Deutsch
  158. 158. praxiserfahrungen
  159. 159. (casestudy)
  160. 160. Globalize
  161. 161. Eventuell mal Model- Translations?
  162. 162. Übersetzungen in DB
  163. 163. Doofe Idee.
  164. 164. Sync DEV > STAGE > PROD ???
  165. 165. Versioniert, bitte!
  166. 166. Subversion!
  167. 167. Eigene rake-tasks für im- und export
  168. 168. csv als austauschformat
  169. 169. CSV::Reader CSV::Writer
  170. 170. anstrengend
  171. 171. merge-conflict-Hölle
  172. 172. Keine automatische String-Sammlung
  173. 173. Übersetzungs-GUI
  174. 174. nicht bewährt
  175. 175. Sync PROD > STAGE > DEV ???
  176. 176. Übersetzungswürgflow
  177. 177. CSV-Datei an Übersetzer
  178. 178. CSV vom Übersetzer
  179. 179. Kontextfrei
  180. 180. Sinnfrei
  181. 181. Yes, Nummer, Abbruch
  182. 182. (Audacity / MacOS X)
  183. 183. Viele Iterationen
  184. 184. Lehren
  185. 185. Globalize für „traditionellen Workflow“ nicht geeignet
  186. 186. Workflow ist wichtig
  187. 187. Globalize bietet viel nicht
  188. 188. Model Translations braucht man selten
  189. 189. Wenn man sie braucht, klappt es mit globalize nicht
  190. 190. Hätten wir doch nur...
  191. 191. Zusammenfassung
  192. 192. 6 million ways to die
  193. 193. choose one!
  194. 194. simple localization
  195. 195. für einsprachige Anwendungen
  196. 196. (the simplest thing that could possibly work)
  197. 197. ruby/gettext
  198. 198. ausgereift
  199. 199. workflow!
  200. 200. Globalize für „besondere“ Zwecke
  201. 201. User generated localisation
  202. 202. Modell-Übersetzungen
  203. 203. Und der Rest?!?
  204. 204. Nicht Fisch
  205. 205. Nicht Fleisch
  206. 206. Was fehlt?
  207. 207. german_rails
  208. 208. Deutsche Übersetzungen
  209. 209. generic globalize translation gui
  210. 210. Workflow-Unterstützung
  211. 211. F.I.T.-Projekt http://fit.dit.upm.es/cgi-bin/trac.cgi
  212. 212. Danke.
  213. 213. Quellen ‣ http://wiki.rubyonrails.org/rails/pages/InternationalizationComparison ‣ http://agilewebdevelopment.com/plugins/category/8 ‣ http://localhost3000.de/

×