{"id":153,"date":"2020-09-07T09:12:17","date_gmt":"2020-09-07T09:12:17","guid":{"rendered":"https:\/\/intern.quizu.de\/?p=153"},"modified":"2020-09-07T09:12:18","modified_gmt":"2020-09-07T09:12:18","slug":"translation-manager-2020","status":"publish","type":"post","link":"https:\/\/intern.quizu.de\/?p=153","title":{"rendered":"Translation Manager (2020)"},"content":{"rendered":"\n<p>Unser neuer TranslationManager wurde Mitte 2020 releast und l\u00f6st den alten TranslationManager ab, der mit einem Googlesheet gearbeitet hat. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Backend-Techniken<\/h2>\n\n\n\n<p>Der Translation-Manager hat &#8222;behind the scenes&#8220; zwei Environments. Jede Language hat f\u00fcr jeden TranslationString (z.B. &#8222;misc.description&#8220;) und jedes Environment eine eigene Entity.<br>Das erm\u00f6glicht es uns nur portioniert auf live zu releasen &#8211; das hei\u00dft, dass wir zum Beispiel nur 5 von 10 Strings wirklich releasen wollen &#8211; der Rest bleibt auf dev.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Release auf Dev<\/h2>\n\n\n\n<p>Bei einem Release auf Dev wird auf mehrere Riddle-Instanzen gleichzeitig gepublished. Das l\u00e4sst sich auch in der .env erweitern &#8211; die Ladezeit wird davon nicht gro\u00df beeinflusst, da alle Requests auch asynchron ablaufen. <br>Vorteil: Nicht jeder Entwickler muss immer die Translations auch flushen &#8211; also sind die Translations auf jeder Dev-Instanz zu jedem beliebigen Zeitpunkt frisch.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"389\" height=\"91\" src=\"https:\/\/intern.quizu.de\/wp-content\/uploads\/2020\/09\/Screenshot-2020-09-07-at-11.08.01.png\" alt=\"\" class=\"wp-image-155\" srcset=\"https:\/\/intern.quizu.de\/wp-content\/uploads\/2020\/09\/Screenshot-2020-09-07-at-11.08.01.png 389w, https:\/\/intern.quizu.de\/wp-content\/uploads\/2020\/09\/Screenshot-2020-09-07-at-11.08.01-300x70.png 300w\" sizes=\"auto, (max-width: 389px) 100vw, 389px\" \/><figcaption>Auf mehrere Instanzen gleichzeitig pushen<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Release auf Live<\/h2>\n\n\n\n<p>Auf Live betrifft es immer nur www.riddle.com. Vor dem Release sieht man noch alle Strings, die sich in dev &amp; live unterscheiden. Will man einen String noch nicht releasen, so hakt man ihn nicht ab und die alte Version des Strings wird immer noch auf riddle.com sichtbar sein. Sobald best\u00e4tigt, ist der Release in binnen von maximal einer halben Sekunde fertig und die Strings sind geupdated.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Das Build-System<\/h2>\n\n\n\n<p>Schon oft ist es vorgekommen, dass mal falsche Strings oder gar Strings gepublished wurden, die Riddle gecrasht haben. Um sowas schnell zu beheben, gibt es jetzt ein Fallback bzw. Build-System. Jeder Push auf jede beliebige Instanz wird in der Datenbank geloggt und die dazugeh\u00f6rigen Strings werden in der Entity mitgespeichert. Das hei\u00dft, dass wir zu jedem beliebigen Build uns zur\u00fcckversetzen k\u00f6nnen und so sehr flexibel sind falls etwas kaputt geht bez\u00fcglich Strings.<br><br><strong>Notiz<\/strong>: Das Ganze ist nur per Konsole mit Symfony-Commands m\u00f6glich, da es sonst doch zu verlockend w\u00e4re \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unser neuer TranslationManager wurde Mitte 2020 releast und l\u00f6st den alten TranslationManager ab, der mit einem Googlesheet gearbeitet hat. Backend-Techniken Der Translation-Manager hat &#8222;behind the&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/intern.quizu.de\/?p=153\">Weiterlesen<span class=\"screen-reader-text\">Translation Manager (2020)<\/span><\/a><\/div>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-deployment","entry"],"_links":{"self":[{"href":"https:\/\/intern.quizu.de\/index.php?rest_route=\/wp\/v2\/posts\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/intern.quizu.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/intern.quizu.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/intern.quizu.de\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/intern.quizu.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=153"}],"version-history":[{"count":1,"href":"https:\/\/intern.quizu.de\/index.php?rest_route=\/wp\/v2\/posts\/153\/revisions"}],"predecessor-version":[{"id":156,"href":"https:\/\/intern.quizu.de\/index.php?rest_route=\/wp\/v2\/posts\/153\/revisions\/156"}],"wp:attachment":[{"href":"https:\/\/intern.quizu.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/intern.quizu.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/intern.quizu.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}