{"id":2318,"date":"2016-02-07T19:44:52","date_gmt":"2016-02-07T18:44:52","guid":{"rendered":"http:\/\/lloc.de\/?p=2318"},"modified":"2016-02-07T19:44:52","modified_gmt":"2016-02-07T18:44:52","slug":"i18n-and-l10n-von-themes-plugins","status":"publish","type":"post","link":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/","title":{"rendered":"I18n and L10n von Themes + Plugins"},"content":{"rendered":"<p>Der gr\u00f6sste Teil der Sessions, die beim WordCamp Berlin 2015 angeboten wurden, ist nun bei <a href=\"http:\/\/wordpress.tv\/\">WordPress.tv<\/a> verf\u00fcgbar. Vielen Dank daf\u00fcr noch einmal an die Organisatoren f\u00fcr die ganze Arbeit, die sie in das Event gesteckt haben. F\u00fcr mich ist das auch der perfekte Zeitpunkt, \u00fcber meinen ersten Vortrag zu schreiben\u00a0und das entsprechende\u00a0Video zu verlinken.<!--more--><\/p>\n<p>Die Slides hatte ich zwar schon kurz nach dem Vortrag gepostet, aber ich <a href=\"https:\/\/docs.google.com\/presentation\/d\/1QcW7tAmU10f7xXK994t_SsluaHHrGkxXXxERO-twY6Y\/pub?start=false&amp;loop=false&amp;delayms=3000&amp;slide=id.p\">verlinke sie auch hier<\/a> gern noch einmal, schlie\u00dflich sollt ihr ja auch folgen k\u00f6nnen.\u00a0Unter dem Video geht&#8217;s dann weiter mit der Beschreibung des Inhalts:<\/p>\n<p>Ich wei\u00df nicht, wie ihr das wahrnehmt, aber ich sehe Abk\u00fcrzungen wie i18n, L10n (gro\u00dfes L, um Verwechselungen zu vermeiden), g11n, a11y oder p13n relativ h\u00e4ufig. Das sich dahinter die Begriffe <em>Internationalization<\/em> (Internationalisierung), <em>Localization<\/em> (Lokalisierung), <em>Globalization<\/em> (Globalisierung), <em>Accessibility<\/em> (Barrierefreiheit) und <em>Personalization<\/em> (Personalisierung) bekommt man dann auch schnell heraus\u00a0und zur\u00a0Entstehung gibt es auch einige <a href=\"http:\/\/www.i18nguy.com\/origini18n.html\">interessante Anekdoten<\/a>, aber man f\u00fchlt sich doch anfangs ziemlich\u00a0verloren.<\/p>\n<p>F\u00fcr meinen\u00a0Vortrag sind vor allem <em>i18n<\/em> und <em>L10n<\/em> wichtig. Die beiden Begriffe werden heute \u00fcbrigens h\u00e4ufig zu <em>g11n<\/em> zusammengefasst. Um zu erkl\u00e4ren, was <a href=\"https:\/\/en.wikipedia.org\/wiki\/Internationalization_and_localization\">sie \u00fcberhaupt bedeuten<\/a>, gibt es einiges an Material. Aber wenn es kurz und knackig sein soll: Wenn <em>i18n<\/em> abgeschlossen ist, kann man mit der \u00dcbersetzung der Software beginnen. Wenn <em>L10n<\/em> abgeschlossen ist, dann ist die \u00dcbersetzung durchgef\u00fchrt. Im Normalfall besch\u00e4ftigt sich also der Entwickler mit <em>i18n<\/em> und der \u00dcbersetzer mit <em>L10n<\/em>.<\/p>\n<p>Wie kann man denn nun Plugins und Themen darauf vorbereiten, dass sie sich anderen Sprachen anpassen und schlie\u00dflich die \u00dcbersetzungen anstelle der originalen Zeichenketten ausgeben (Folie 6). Um\u00a0Plugins Sprachdateien laden zu lassen gibt es, gibt es den Befehl <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/load_plugin_textdomain\/\">load_plugin_textdomain()<\/a>, der \u00fcblicherweise w\u00e4hrend des <a href=\"https:\/\/marketpress.de\/2014\/hooks-funktionen-wordpress\/\">Hooks<\/a>\u00a0<em>plugins_loaded<\/em> aufgerufen wird. Bei Themes ist der Befehl ganz \u00e4hnlich. Er hei\u00dft <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/load_theme_textdomain\/\">load_theme_textdomain()<\/a>\u00a0und wird aufgerufen, wenn der Hook <em>after_setup_theme<\/em> l\u00e4uft.<\/p>\n<p>Ist die H\u00fcrde erst einmal genommen, muss man mit Funktionen wie <em>__()<\/em>, <em>_e()<\/em> und <em>_n()<\/em> Freundschaft schlie\u00dfen (Folie 7) und zuk\u00fcnftig das\u00a0direkte\u00a0Hineinschreiben von Zeichenketten in die Themen- oder Plugindateien unterlassen. Wird das das Projekt etwas gr\u00f6sser, wird der Kontext eventuell wichtig, wann eine Zeichenkette ausgegeben wird. WordPress stellt\u00a0daf\u00fcr die Funktionen <em>_x()<\/em>, <em>_ex()<\/em> und <em>_nx()<\/em> zur Verf\u00fcgung (Folie 8). F\u00fcr das sichere Ausgeben von HTML gibt es dann noch die <em>esc_attr_*()<\/em> und\u00a0<em>esc_html_*()<\/em> Varianten (Folie 9).<\/p>\n<p>Es gibt zudem noch einige interessante Funktionalit\u00e4ten von WordPress, die ihr in \/wp-includes\/l10n.php findet (Folie 10). Wenn ihr ein Datum oder\u00a0eine Zahl der Region entsprechend ausgeben wollt, gibt es daf\u00fcr noch so einige Funktionen (Folie 11). Und zum Thema Javascript g\u00e4be es auch noch einiges zu sagen, was aber den Zeitrahmen eines Lightning-Talks gesprengt h\u00e4tte.<\/p>\n<p>Der restliche Teil der Folien besch\u00e4ftigt sich mit PoEdit. Wie werden die Zeichenketten in PoEdit dargestellt? Haben die vorher vorgestellten Befehle einen Einfluss auf die Ausgabe im Editor? Weiterhin zeige ich die Einstellungen, die notwendig sind, damit der Klick auf den Button &#8222;Update&#8220; auch wirklich die aktuellen Zeichenketten aus den Dateien holt. Ich selbst benutze gern PoEdit in Projekten, die f\u00fcr Kunden gedacht sind. Bei Open Source Plugins oder Themes, die bei WordPress.org gehostet sind gibt es ja inzwischen entsprechende Projektseiten, wie beispielsweise die <a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/multisite-language-switcher\">\u00dcbersetzungen vom Multisite Language Switcher<\/a>.<\/p>\n<p>That&#8217;s it! Fragen? \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der gr\u00f6sste Teil der Sessions, die beim WordCamp Berlin 2015 angeboten wurden, ist nun bei WordPress.tv verf\u00fcgbar. Vielen Dank daf\u00fcr noch einmal an die Organisatoren f\u00fcr die ganze Arbeit, die sie in das Event gesteckt haben. F\u00fcr mich ist das auch der perfekte Zeitpunkt, \u00fcber meinen ersten Vortrag zu schreiben\u00a0und das entsprechende\u00a0Video zu verlinken.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"wpf_show_in_dewp_planet_feed":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[7],"tags":[14,15],"class_list":["post-2318","post","type-post","status-publish","format-standard","hentry","category-wordpress","tag-i18n","tag-l10n"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>I18n and L10n von Themes + Plugins - realloc&#039;s asylum<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I18n and L10n von Themes + Plugins - realloc&#039;s asylum\" \/>\n<meta property=\"og:description\" content=\"Der gr\u00f6sste Teil der Sessions, die beim WordCamp Berlin 2015 angeboten wurden, ist nun bei WordPress.tv verf\u00fcgbar. Vielen Dank daf\u00fcr noch einmal an die Organisatoren f\u00fcr die ganze Arbeit, die sie in das Event gesteckt haben. F\u00fcr mich ist das auch der perfekte Zeitpunkt, \u00fcber meinen ersten Vortrag zu schreiben\u00a0und das entsprechende\u00a0Video zu verlinken.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/\" \/>\n<meta property=\"og:site_name\" content=\"realloc&#039;s asylum\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-07T18:44:52+00:00\" \/>\n<meta name=\"author\" content=\"realloc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"realloc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/\"},\"author\":{\"name\":\"realloc\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"headline\":\"I18n and L10n von Themes + Plugins\",\"datePublished\":\"2016-02-07T18:44:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/\"},\"wordCount\":587,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"keywords\":[\"i18n\",\"L10n\"],\"articleSection\":[\"WordPress\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/\",\"name\":\"I18n and L10n von Themes + Plugins - realloc&#039;s asylum\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#website\"},\"datePublished\":\"2016-02-07T18:44:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/i18n-and-l10n-von-themes-plugins\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ploetner.io\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"I18n and L10n von Themes + Plugins\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/\",\"name\":\"realloc's asylum\",\"description\":\"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.\",\"publisher\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ploetner.io\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\",\"name\":\"realloc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"contentUrl\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"width\":847,\"height\":848,\"caption\":\"realloc\"},\"logo\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\"},\"description\":\"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.\",\"sameAs\":[\"https:\\\/\\\/ploetner.io\\\/\"],\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/author\\\/realloc\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I18n and L10n von Themes + Plugins - realloc&#039;s asylum","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/","og_locale":"de_DE","og_type":"article","og_title":"I18n and L10n von Themes + Plugins - realloc&#039;s asylum","og_description":"Der gr\u00f6sste Teil der Sessions, die beim WordCamp Berlin 2015 angeboten wurden, ist nun bei WordPress.tv verf\u00fcgbar. Vielen Dank daf\u00fcr noch einmal an die Organisatoren f\u00fcr die ganze Arbeit, die sie in das Event gesteckt haben. F\u00fcr mich ist das auch der perfekte Zeitpunkt, \u00fcber meinen ersten Vortrag zu schreiben\u00a0und das entsprechende\u00a0Video zu verlinken.","og_url":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/","og_site_name":"realloc&#039;s asylum","article_published_time":"2016-02-07T18:44:52+00:00","author":"realloc","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"realloc","Gesch\u00e4tzte Lesezeit":"3\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/#article","isPartOf":{"@id":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/"},"author":{"name":"realloc","@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"headline":"I18n and L10n von Themes + Plugins","datePublished":"2016-02-07T18:44:52+00:00","mainEntityOfPage":{"@id":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/"},"wordCount":587,"commentCount":3,"publisher":{"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"keywords":["i18n","L10n"],"articleSection":["WordPress"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/","url":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/","name":"I18n and L10n von Themes + Plugins - realloc&#039;s asylum","isPartOf":{"@id":"https:\/\/ploetner.io\/de\/#website"},"datePublished":"2016-02-07T18:44:52+00:00","breadcrumb":{"@id":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ploetner.io\/de\/i18n-and-l10n-von-themes-plugins\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ploetner.io\/de\/"},{"@type":"ListItem","position":2,"name":"I18n and L10n von Themes + Plugins"}]},{"@type":"WebSite","@id":"https:\/\/ploetner.io\/de\/#website","url":"https:\/\/ploetner.io\/de\/","name":"realloc's asylum","description":"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.","publisher":{"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ploetner.io\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8","name":"realloc","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","url":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","contentUrl":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","width":847,"height":848,"caption":"realloc"},"logo":{"@id":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg"},"description":"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.","sameAs":["https:\/\/ploetner.io\/"],"url":"https:\/\/ploetner.io\/de\/author\/realloc\/"}]}},"_links":{"self":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/2318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/comments?post=2318"}],"version-history":[{"count":0,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/2318\/revisions"}],"wp:attachment":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/media?parent=2318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/categories?post=2318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/tags?post=2318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}