WordPress und die Sprachen


Warum,Wo und Wie. Für Anwender und Theme/Plugin Ersteller.
16.07.2015 Frank Staude <frank@sta...
Hallo!
Frank Staude

Email: frank@staude.net

Twitter: @staude

Webseite: www.staude.net

GitHub: staude

AdminPress - Wor...
Was Erwartet uns
• Warum überhaupt?
• Grundlagen L10N, I18N
• WordPress (und Plugins/Themes) übersetzten
• Tools zum übers...
• >= 195 Länder
• 6500 Sprachen, 5600 noch
gesprochene Sprachen
• 7,28 Milliarden Menschen (zum
Jahreswechsel 2014/2015)
D...
• >24 Millionen Downloads von
WordPress 4.2
• >60% Marktanteil bei CMS
• >24% alle Webseiten
WordPress
WordPress
Otto-Normal Anwender
Polyglots
L10N? I18N? G11N? A11Y? WTF!
LOCALISATION
• L10N - Localisation
• Primär Übersetzung in eine andere Sprache
• Aber auch Anpassung von Datums, Zeit,Währ...
InternationalisatioN
• I18N - Internationalisation
• Gestalten einer Software, das sie Lokalisierbar ist
• Schreibrichtung...
GlobalisatioN
• G11N - Globalisation
• Ist die Kombination aus Internationalisation und Localisation und wird
in einigen F...
Accessibility
• A11Y - Accessibility
• Techniken die die Zugänglichkeit zu einer Webseite erleichtern.
• Barrierefrei bzw....
• speziell geregelte sprachliche Ausdrucksweise des Deutschen, die auf
besonders leichteVerständlichkeit abzielt
• umfasst...
Leichte Sprache?
Leichte Sprache?
Dateien
• .pot

Portable Object Template -Vorlagedatei für die Übersetzung
• .po

Portable Object - für Menschen lesbare Ü...
WordPress übersetzen
• Nur mal einen einzelnen String übersetzen oder die bestehende
Übersetzung bearbeiten?
• Öfter Mitar...
WordPress übersetzen
Nur mal einen einzelnen
String übersetzen oder die
bestehende Übersetzung
bearbeiten?
translate.wordp...
WordPress übersetzen
Das Handbuch für
Übersetzer
https://make.wordpress.org/
polyglots/handbook/tools/
glotpress-translate...
WordPress übersetzen
Glossar für Begriffe
https://
translate.wordpress.org/
projects/wp/dev/de/default/
glossary
WordPress übersetzen
Make Blog
https://make.wordpress.org/
polyglots/
WordPress übersetzen
Deutsches P2 Blog
https://
teamwpde.wordpress.com
WordPress übersetzen
Polyglots Slack
https://dewp.slack.com
https://
wordpress.slack.com/
Was habe ich davon?
• Ruhm und Ehre :-)
• Danke der Community
• Zufriedene Kunden
• Ggf. neue Kunden

Tools
• PoEdit (Desktop, Linux,Windows, Mac )
• im WordPress selbst (Loco Translate)
• GlotPress
• Desktop (Linux,Windows, Mac)
• Kostenlos und Kostenpflichtige Pro
Version
• https://poedit.net
PoEdit
• WordPress Plugin
Loco Translate
• Software wie auf 

translate.wordpress.org
• selbstgehostet, für eigene 

Übersetzungen
• https://github.com/GlotPress/
...
• Warum sollte es übersetzbar sein?
• Warum sind viele nicht übersetzbar?
• Wie mache ich ein Theme/Plugin übersetzbar?
• ...
Warum sollte es übersetzbar sein?
• Kunde braucht es in einer anderen Sprache
• Projext x braucht andere Formulierungen
• ...
Warum sind viele nicht übersetzbar?
• Programmierer weiß nicht wie es geht
• Nur für eigenen Bedarf gebaut
• Keine Lust
• ...
Wie mach ich mein Plugin übersetzbar?
<?php
/*
Plugin Name: Beispiel-Dummy
Plugin URI: http://wpmeetup-franken.de
Descript...
<?php
/*
Plugin Name: Beispiel-Dummy
Plugin URI: http://wpmeetup-franken.de
Description: Beispiel Plugin für Übersetzung
V...
• load_theme_textdomain statt
load_plugin_textdomain
• Aufruf via add_action in die functions.php
Wie mach ich mein Theme ...
Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?>
<p><?php _e( 'Geschrieben am...
Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?>
<p><?php _e( 'Geschrieben am...
Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?>
<p><?php _e( 'Geschrieben am...
Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?>
<p><?php _e( 'Geschrieben am...
Geschrieben am <?php the_time('j. F Y'); ?> um <?php the_time() ?>, von <?php the_author() ?>
<p><?php _e( 'Geschrieben am...
Übersetzung laden
• load_textdomain
• load_plugin_textdomain
• load_theme_textdomain
• load_child_theme_textdomain
Mit Texten arbeiten
• __() - gibt Text zurück
• _e() - gibt Text aus (e wie echo)
• _x() - gibt Text zurück (Kontext überg...
Mit Texten arbeiten
• esc_html__()
• esc_html_e()
• esc_html_x()
• esc_attr__()
• esc_attr_e()
• esc_attr_x()
Tipps
• Datum via date_i18n()
• Zahlen via number_format_i18n()
• Parameter in printf immer nummerieren
%1$s damit der Übe...
Tipps
• Pfad zu Textdateien via filter änderbar
machen.
• Escapen bei Benutzereingaben und
Attributausgaben. Sicherheit!
• ...
Links
• http://codex.wordpress.org/Translating_WordPress 

• http://de.wikipedia.org/wiki/GNU_gettext 

• http://www.gnu.o...
Danke! Fragen?
Nächste SlideShare
Wird geladen in …5
×

WordPress und die Sprachen

1.209 Aufrufe

Veröffentlicht am

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

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

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.209
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
50
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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?

×