Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

WordPress und die Sprachen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 46 Anzeige

WordPress und die Sprachen

Herunterladen, um offline zu lesen

Vortrag beim WordPress Meetup Franken am 16.7.2015

Warum überhaupt Übersetzten?
Grundlagen L10N, I18N
WordPress (und Plugins/Themes) übersetzten
Tools zum übersetzen
Plugins/Themes übersetzbar machen

Vortrag beim WordPress Meetup Franken am 16.7.2015

Warum überhaupt Übersetzten?
Grundlagen L10N, I18N
WordPress (und Plugins/Themes) übersetzten
Tools zum übersetzen
Plugins/Themes übersetzbar machen

Anzeige
Anzeige

Weitere Verwandte Inhalte

Anzeige

Weitere von frankstaude (20)

Anzeige

Aktuellste (20)

WordPress und die Sprachen

  1. 1. WordPress und die Sprachen 
 Warum,Wo und Wie. Für Anwender und Theme/Plugin Ersteller. 16.07.2015 Frank Staude <frank@staude.net>
  2. 2. Hallo! Frank Staude Email: frank@staude.net Twitter: @staude Webseite: www.staude.net GitHub: staude AdminPress - WordPress Administration Moderator im deutschen WordPress.org Supportforum Validator für die deutsche BuddyPress Übersetzung
 de.wordpress.org WPMeetups WP Meetup Hannover WP Meetup Franken (Nürnberg) Plugins
  3. 3. Was Erwartet uns • Warum überhaupt? • Grundlagen L10N, I18N • WordPress (und Plugins/Themes) übersetzten • Tools zum übersetzen • Plugins/Themes übersetzbar machen
  4. 4. • >= 195 Länder • 6500 Sprachen, 5600 noch gesprochene Sprachen • 7,28 Milliarden Menschen (zum Jahreswechsel 2014/2015) Die Erde
  5. 5. • >24 Millionen Downloads von WordPress 4.2 • >60% Marktanteil bei CMS • >24% alle Webseiten WordPress
  6. 6. WordPress
  7. 7. Otto-Normal Anwender
  8. 8. Polyglots L10N? I18N? G11N? A11Y? WTF!
  9. 9. LOCALISATION • L10N - Localisation • Primär Übersetzung in eine andere Sprache • Aber auch Anpassung von Datums, Zeit,Währungs,Temperaturangaben • Ggf. andere Rechtsvorschriften. • Medien • Berücksichtigung Kultureller und Geografischer Gegebenheiten. { 10 Zeichen
  10. 10. InternationalisatioN • I18N - Internationalisation • Gestalten einer Software, das sie Lokalisierbar ist • Schreibrichtung LtR, RtL • Datums, Zeit,Währungs,Temperaturangaben • Syntaktische Eigenheiten von Sprachen berücksichtigen. 18 Zeichen {
  11. 11. GlobalisatioN • G11N - Globalisation • Ist die Kombination aus Internationalisation und Localisation und wird in einigen Firmen als Begriff verwendet. 11 Zeichen {
  12. 12. Accessibility • A11Y - Accessibility • Techniken die die Zugänglichkeit zu einer Webseite erleichtern. • Barrierefrei bzw. Barrierearm • Screenreader die Texte vorlesen bzw. Braillezeilen ansteuern. • Leichte Sprache 11 Zeichen {
  13. 13. • speziell geregelte sprachliche Ausdrucksweise des Deutschen, die auf besonders leichteVerständlichkeit abzielt • umfasst neben Sprachregeln auch Rechtschreibregeln sowie Empfehlungen zu Typografie und Mediengebrauch. • soll Menschen, die aus unterschiedlichen Gründen über eine geringe Kompetenz in der deutschen Sprache verfügen, dasVerstehen von Texten erleichtern. • https://de.wikipedia.org/wiki/Leichte_Sprache Leichte Sprache?
  14. 14. Leichte Sprache?
  15. 15. Leichte Sprache?
  16. 16. Dateien • .pot
 Portable Object Template -Vorlagedatei für die Übersetzung • .po
 Portable Object - für Menschen lesbare Übersetzung • .mo
 Message Object - Maschinen lesbare Übersetzungsdatei
  17. 17. WordPress übersetzen • Nur mal einen einzelnen String übersetzen oder die bestehende Übersetzung bearbeiten? • Öfter Mitarbeiten? • Handbuch • Codex • MakeBlog • Slack / P2 Blog • Was habe ich davon?
  18. 18. WordPress übersetzen Nur mal einen einzelnen String übersetzen oder die bestehende Übersetzung bearbeiten? translate.wordpress.org
  19. 19. WordPress übersetzen Das Handbuch für Übersetzer https://make.wordpress.org/ polyglots/handbook/tools/ glotpress-translate- wordpress-org/
  20. 20. WordPress übersetzen Glossar für Begriffe https:// translate.wordpress.org/ projects/wp/dev/de/default/ glossary
  21. 21. WordPress übersetzen Make Blog https://make.wordpress.org/ polyglots/
  22. 22. WordPress übersetzen Deutsches P2 Blog https:// teamwpde.wordpress.com
  23. 23. WordPress übersetzen Polyglots Slack https://dewp.slack.com https:// wordpress.slack.com/
  24. 24. Was habe ich davon? • Ruhm und Ehre :-) • Danke der Community • Zufriedene Kunden • Ggf. neue Kunden

  25. 25. Tools • PoEdit (Desktop, Linux,Windows, Mac ) • im WordPress selbst (Loco Translate) • GlotPress
  26. 26. • Desktop (Linux,Windows, Mac) • Kostenlos und Kostenpflichtige Pro Version • https://poedit.net PoEdit
  27. 27. • WordPress Plugin Loco Translate
  28. 28. • Software wie auf 
 translate.wordpress.org • selbstgehostet, für eigene 
 Übersetzungen • https://github.com/GlotPress/ GlotPress GlotPress
  29. 29. • Warum sollte es übersetzbar sein? • Warum sind viele nicht übersetzbar? • Wie mache ich ein Theme/Plugin übersetzbar? • Beispiel eines Textes, Theme/Plugins vorbereiten
  30. 30. Warum sollte es übersetzbar sein? • Kunde braucht es in einer anderen Sprache • Projext x braucht andere Formulierungen • Theme/Plugin soll weltweit nutzbar sein • Übersetzung gefällt einem nicht • Keinen Anwender ausschliessen nur weil sie kein deutsch/englisch können
  31. 31. Warum sind viele nicht übersetzbar? • Programmierer weiß nicht wie es geht • Nur für eigenen Bedarf gebaut • Keine Lust • Eigene Lösung • Ignoranz/Arroganz - „Rest der Welt“ ausgeblendet.
  32. 32. Wie mach ich mein Plugin übersetzbar? <?php /* Plugin Name: Beispiel-Dummy Plugin URI: http://wpmeetup-franken.de Description: Beispiel Plugin für Übersetzung Version: 0.1 Author: Frank Staude Author URI: http://www.staude.net License: GPLv2 or later */ add_filter( 'option_blogdescription', 'headertext'); function headertext( $text ) { return ( 'Hello, World!' ); }
  33. 33. <?php /* Plugin Name: Beispiel-Dummy Plugin URI: http://wpmeetup-franken.de Description: Beispiel Plugin für Übersetzung Version: 0.1 Author: Frank Staude Author URI: http://www.staude.net Text Domain: dummy-plugin Domain Path: /languages License: GPLv2 or later */ add_filter( 'option_blogdescription', 'headertext'); add_action( 'plugins_loaded', 'load_text' ); function load_text() { load_plugin_textdomain( 'dummy-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); } function headertext( $text ) { return ( __( 'Hello, World!', 'dummy-plugin' ) ); } Wie mach ich mein Plugin übersetzbar?
  34. 34. • load_theme_textdomain statt load_plugin_textdomain • Aufruf via add_action in die functions.php Wie mach ich mein Theme übersetzbar?
  35. 35. Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?> <p><?php _e( 'Geschrieben am' );?> <?php the_time( 'j. F Y' ); ?> <?php _e( 'um' );?> <?php the_time() ?><?php _e( ', von' );?> <?php the_author() ?></p> Wie mach ich mein Theme übersetzbar?
  36. 36. Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?> <p><?php _e( 'Geschrieben am' );?> <?php the_time( 'j. F Y' ); ?> <?php _e( 'um' );?> <?php the_time() ?><?php _e( ', von' );?> <?php the_author() ?></p> GEHT ÜBERHAUPT NICHT <p><?php printf( __( 'Geschrieben am %s um %s, von %s','cleanpress' ), get_the_time( 'j. F Y'), get_the_time(), get_the_author() ); ?></p> Wie mach ich mein Theme übersetzbar?
  37. 37. Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?> <p><?php _e( 'Geschrieben am' );?> <?php the_time( 'j. F Y' ); ?> <?php _e( 'um' );?> <?php the_time() ?><?php _e( ', von' );?> <?php the_author() ?></p> GEHT ÜBERHAUPT NICHT <p><?php printf( __( 'Geschrieben am %s um %s, von %s','cleanpress' ), get_the_time( 'j. F Y'), get_the_time(), get_the_author() ); ?></p> BESSER, ABER! <p><?php printf( __( 'Geschrieben am %1$s um %2$s, von %3$s','cleanpress' ), get_the_time( 'j. F Y'), get_the_time(), get_the_author() ); ?></p> Wie mach ich mein Theme übersetzbar?
  38. 38. Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?> <p><?php _e( 'Geschrieben am' );?> <?php the_time( 'j. F Y' ); ?> <?php _e( 'um' );?> <?php the_time() ?><?php _e( ', von' );?> <?php the_author() ?></p> GEHT ÜBERHAUPT NICHT <p><?php printf( __( 'Geschrieben am %s um %s, von %s','cleanpress' ), get_the_time( 'j. F Y'), get_the_time(), get_the_author() ); ?></p> BESSER, ABER! <p><?php printf( __( 'Geschrieben am %1$s um %2$s, von %3$s','cleanpress' ), get_the_time( 'j. F Y'), get_the_time(), get_the_author() ); ?></p> GEHT NOCH BESSER <p><?php printf( __( 'Geschrieben am %1$s um %2$s, von %3$s' ,'cleanpress'), get_the_time( __('j. F Y', 'cleanpress' ) ), get_the_time(), get_the_author() ); ?></p> Wie mach ich mein Theme übersetzbar?
  39. 39. Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?> <p><?php _e( 'Geschrieben am' );?> <?php the_time( 'j. F Y' ); ?> <?php _e( 'um' );?> <?php the_time() ?><?php _e( ', von' );?> <?php the_author() ?></p> GEHT ÜBERHAUPT NICHT <p><?php printf( __( 'Geschrieben am %s um %s, von %s','cleanpress' ), get_the_time( 'j. F Y'), get_the_time(), get_the_author() ); ?></p> BESSER, ABER! <p><?php printf( __( 'Geschrieben am %1$s um %2$s, von %3$s','cleanpress' ), get_the_time( 'j. F Y'), get_the_time(), get_the_author() ); ?></p> GEHT NOCH BESSER <p><?php printf( __( 'Geschrieben am %1$s um %2$s, von %3$s' ,'cleanpress'), get_the_time( __('j. F Y', 'cleanpress' ) ), get_the_time(), get_the_author() ); ?></p> FAST <p><?php printf( __( 'Geschrieben am %1$s um %2$s, von %3$s' ,'cleanpress'), date_i18n( get_option( ‘date_format‘), get_the_time( 'U')), get_the_time(), get_the_author() ); ?></ p> Wie mach ich mein Theme übersetzbar?
  40. 40. Übersetzung laden • load_textdomain • load_plugin_textdomain • load_theme_textdomain • load_child_theme_textdomain
  41. 41. Mit Texten arbeiten • __() - gibt Text zurück • _e() - gibt Text aus (e wie echo) • _x() - gibt Text zurück (Kontext übergabe) • _ex() - gibt Text aus (Kontext übergabe) • _n() - gibt Text zurück (Plural) • _nx() - gibt Text zurück (Plural und Kontext)
  42. 42. Mit Texten arbeiten • esc_html__() • esc_html_e() • esc_html_x() • esc_attr__() • esc_attr_e() • esc_attr_x()
  43. 43. Tipps • Datum via date_i18n() • Zahlen via number_format_i18n() • Parameter in printf immer nummerieren %1$s damit der Übersetzer die Reihenfolge ändern kann
  44. 44. Tipps • Pfad zu Textdateien via filter änderbar machen. • Escapen bei Benutzereingaben und Attributausgaben. Sicherheit! • Testen,Testen,Testen
  45. 45. Links • http://codex.wordpress.org/Translating_WordPress • http://de.wikipedia.org/wiki/GNU_gettext • http://www.gnu.org/software/gettext/ • http://wordpress.org/plugins/codestyling-localization/ • http://www.poedit.net/ • https://poeditor.com/ • http://wordpress.org/plugins/wp-native-dashboard/ • http://blog.glotpress.org/
  46. 46. Danke! Fragen?

×