{"id":136887,"date":"2025-05-13T18:02:29","date_gmt":"2025-05-13T16:02:29","guid":{"rendered":"https:\/\/phrase.com\/blog\/posts\/die-lokalisierung-von-unity-spielen-mit-dem-offiziellen-phrase-plug-in\/"},"modified":"2026-03-06T12:17:16","modified_gmt":"2026-03-06T11:17:16","slug":"unity-game-localization-plugin-phrase-strings","status":"publish","type":"post","link":"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/","title":{"rendered":"Die Lokalisierung von Unity-Spielen mit dem offiziellen Phrase Plug-in"},"content":{"rendered":"\n<div class=\"wp-block-group alignwide is-style-header-hero has-light-neutral-color has-red-80-background-color has-text-color has-background has-link-color has-background-images wp-elements-4e2a7a94d66c78191f5e476a98f4ac32 is-layout-flow wp-block-group-is-layout-flow\" style=\"background-image:url(https:\/\/phrase.com\/wp-content\/uploads\/2024\/07\/Unity_Header.jpg.webp);background-position:20% 0%;background-attachment:scroll;background-repeat:no-repeat;background-size:cover\"><div class=\"yoast-breadcrumbs\"><span><span><a href=\"https:\/\/phrase.com\/de\/\">Home<\/a><\/span> | <span class=\"breadcrumb_last\" aria-current=\"page\">Die Lokalisierung von Unity-Spielen mit dem offiziellen Phrase Plug-in<\/span><\/span><\/div>\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Overview<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#a-better-way-to-localize-unity-games\" >A better way to localize  Unity games<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#what-problem-are-we-solving-here\" >What problem are we solving here?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#starting-out-with-phrase-strings-and-unity\" >Starting out with Phrase Strings and Unity<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#add-the-locales-you-want-to-support\" >Add the locales you want to support<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#setting-a-default-for-when-we-dont-support-the-users-preferred-locale\" >Setting a default for when we don\u2019t support the user\u2019s preferred locale<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#specifying-which-locale-to-use\" >Specifying which locale to use<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#set-up-the-string-tables\" >Set up the string tables<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#install-and-connect-the-phrase-plugin\" >Install and connect the Phrase plugin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#make-our-first-translation-in-phrase\" >Make our first translation in Phrase<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#unity-localization-with-phrase-strings\" >Unity localization with Phrase Strings<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/phrase.com\/de\/blog\/posts\/unity-game-localization-plugin-phrase-strings\/#automated-error-free-game-localization\" >Automated, error-free game localization<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading has-white-color has-text-color has-link-color wp-elements-7af6d07cfb8ed961cdb49eec8371606f\" id=\"h-a-better-way-to-localize-unity-games\" style=\"padding-bottom:var(--wp--preset--spacing--10)\"><span class=\"ez-toc-section\" id=\"a-better-way-to-localize-unity-games\"><\/span>A better way to localize <br \/>Unity games<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The only language platform with a family of interconnected <br \/>AI-led translation capabilities.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-red-filled\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/phrase\/unity-plugin\/archive\/refs\/heads\/main.zip\">Download plugin<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-white-outline\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/eu.phrase.com\/idm-ui\/signup?uiLang=en-US\">Start a free trial<\/a><\/div>\n<\/div>\n<\/div>\n\n<p>Gaming is global. Depending on which stats you read, between <a href=\"https:\/\/www.statista.com\/topics\/1680\/gaming\/#topicOverview\" target=\"_blank\" rel=\"noreferrer noopener\">2.6 billion<\/a> and <a href=\"https:\/\/explodingtopics.com\/blog\/number-of-gamers\" target=\"_blank\" rel=\"noreferrer noopener\">3.3 billion<\/a> people play video games worldwide. As of 2023, the <a href=\"https:\/\/www.statista.com\/forecasts\/954104\/video-games-revenue-in-selected-countries-statistic\" target=\"_blank\" rel=\"noreferrer noopener\">gaming market in China alone was $82.06 billion dollars<\/a>, with <a href=\"https:\/\/www.statista.com\/statistics\/195768\/global-gaming-reach-by-country\/\" target=\"_blank\" rel=\"noreferrer noopener\">non-English speaking countries representing some of the highest concentrations of gamers<\/a> worldwide.<\/p>\n\n<p>That means localization is no longer a nice-to-have if you want to build your game\u2019s reach and revenue potential. And if you\u2019re a Unity developer, we like to think that the best way to make your games available in players\u2019 local languages is to use the <a href=\"https:\/\/support.phrase.com\/hc\/en-us\/articles\/15979838858140-Unity-Strings\" target=\"_blank\" rel=\"noreferrer noopener\">Phrase Strings Unity Localization plugin<\/a>.<\/p>\n\n<p>Here, we\u2019ll show you the fundamentals of working with Phrase Strings and Unity.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"h-what-problem-are-we-solving-here\"><span class=\"ez-toc-section\" id=\"what-problem-are-we-solving-here\"><\/span>What problem are we solving here?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>Before we get into the nuts and bolts, let&#8217;s look at the localization challenges this plugin solves.<\/p>\n\n<p>As its name suggests, <a href=\"https:\/\/phrase.com\/platform\/strings\/\">Phrase Strings is the part of the Phrase Localization Platform<\/a> that helps you manage localized versions of the various text strings that make up your game&#8217;s UI. As <a href=\"https:\/\/unity.com\/partners\/verified-solutions\" target=\"_blank\" rel=\"noreferrer noopener\">a Unity Verified Solution<\/a>, our new plugin has been built to Unity\u2019s highest quality and compatibility standards.<\/p>\n\n<p>If you&#8217;ve localized a Unity project previously, there&#8217;s a good chance you ended up with a bunch of spreadsheets, lots of to and fro, and a manual process for importing CSV files back into Unity&#8217;s String Tables, only to discover formatting issues and text overflow problems during gameplay testing.<\/p>\n\n<p><a href=\"https:\/\/phrase.com\/integrations\/unity\/\">Using the Phrase Strings Unity plugin<\/a>, the workflow becomes more automated and predictable:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>You create, approve, and otherwise manage translations in the Phrase platform.<\/li>\n\n\n\n<li>Your String Tables connect directly to Phrase Strings through the plugin<\/li>\n\n\n\n<li>You can push source text to Phrase with a single click from within Unity<\/li>\n\n\n\n<li>And then pull completed translations directly into your Unity project when ready<\/li>\n<\/ul>\n\n<p>So, how do you get started with the Phrase Strings Unity plugin?<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"h-starting-out-with-phrase-strings-and-unity\"><span class=\"ez-toc-section\" id=\"starting-out-with-phrase-strings-and-unity\"><\/span>Starting out with Phrase Strings and Unity<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p><strong>Note: <\/strong>For the purposes of this introduction we\u2019ll use Unity\u2019s <a href=\"https:\/\/assetstore.unity.com\/packages\/templates\/tutorials\/endless-runner-sample-game-87901\" target=\"_blank\" rel=\"noreferrer noopener\">Endless Runner sample game<\/a>. If you don\u2019t have that already, download and open it in Unity Editor.<\/p>\n\n<p><a href=\"https:\/\/phrase.com\/integrations\/unity\/\">Phrase\u2019s Unity plugin<\/a> relies on the Unity Localization package and, in particular, its <a href=\"https:\/\/docs.unity3d.com\/Packages\/com.unity.localization@1.5\/manual\/StringTables.html\" target=\"_blank\" rel=\"noreferrer noopener\">String Table Collections<\/a>. So, the next step is to <a href=\"https:\/\/docs.unity3d.com\/Packages\/com.unity.localization@1.5\/manual\/QuickStartGuideWithVariants.html\" target=\"_blank\" rel=\"noreferrer noopener\">install Unity Localization<\/a>.<\/p>\n\n<p>If you\u2019re already experienced with Unity then this is pretty straightforward but to a newcomer it can be a little overwhelming as there are several different ways to install Unity packages. Thankfully, the Localization package is available in Unity\u2019s official package registry.<\/p>\n\n<ol class=\"wp-block-list\">\n<li>Open the <em>Window<\/em> top menu and then select <em>Package Manager<\/em>.<\/li>\n\n\n\n<li>Click the <img loading=\"lazy\" decoding=\"async\" width=\"70\" height=\"56\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeiWdEJxUsf5zstFGvYqUTpKJIa_25z2Sp43ORoA-uUrk8_ADKs_MKsGBeBboMyZ0iNe4ihdvKXftNbtUgxrGjZVY3pdgkC5lFKrJofrzYds3Q_zKdpokpKq-CSxRBDSthXPxA9zw?key=voaeFBiTCkPUwKza02QMCckn\" \/> icon on the left and you\u2019ll be able to search the Unity Registry.<\/li>\n\n\n\n<li>Search for \u201clocalization\u201d.<\/li>\n\n\n\n<li>Hit \u201cInstall\u201d when you find the right package (hint: it should be the only result, at the time of writing). As you might expect, the package will install on your machine.<\/li>\n<\/ol>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXckXAdBtddfsUikvBrNewcppOKI5T4l99JhgLTnxfQdLVG2op6wQxuqEAjwstJhLmYRa-QnIKfOFn-3eA1FlK2wZ6YloJWto1sZOdIP3RCn6XQbrf9IGAaiSG5LVgE9oT-KHk0vdg?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>Now the package is installed, we need to initialize localization in our project.\u00a0<\/p>\n\n<p>In the <em>Edit <\/em>top-level menu, click <em>Project Settings <\/em>and then navigate to the <em>Localization<\/em> section of the settings panel.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfOvTnHh-ZDoPdD9XBKFv-3pIdusswcDaDfMiJMki8D60WnpX3xQq50DGQ32irhlHFhToWsfmHTkjEVGwN40Y_xhuUtj9Kl8V2TaKUNMal2g1ay00D8WDUStQn4HFa-idNkJNN_?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>Hit the <em>Create<\/em> button and then save your settings file. <\/p>\n\n<p>If you\u2019re organizing your Unity project by asset type, you might want to create a <em>Localization<\/em> folder to keep your settings assets file, as well as future localization assets we\u2019ll be creating. But if you\u2019re just experimenting for now, you can save your settings in the <em>Assets<\/em> folder.<\/p>\n\n<p>Localization is now activated in the project but there\u2019s more we need to do.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"h-add-the-locales-you-want-to-support\"><span class=\"ez-toc-section\" id=\"add-the-locales-you-want-to-support\"><\/span>Add the locales you want to support<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<p>We need to tell Unity which locales, or languages, we want to support in the game.<\/p>\n\n<p class=\"has-text-align-center\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"612\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdGXQ_gmp6coWNfDSUVT3yz6EXftIZUR4YjrH1h1uSWIm7JEeuVHgVPdGjR9Q9cZc5Y9Upe54vghdRV-4KZqmVfRoBTP-rhAA_cfKPm_kXxg7FpIoLUarIiVXjFEBu8HKYM8R3oyw?key=voaeFBiTCkPUwKza02QMCckn\" \/> <\/p>\n\n<p>Click <em>Add Locale<\/em> and you\u2019ll see a list of locales you can select from.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfGqE2bZzge5ASIE8KYnBMMv3S6wJRLOwvdoxTqMPjtNcokoIIvwqiqEnuJ8L8GZLUvVVn64aUFF7fzUMcD3_PuRVvEwpHXvegucjC9HW9xmRcmTORLKZFo4w1yLZrLcQfcvdm88w?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>There\u2019s no pressure to choose all the locales you want to support at this stage. As you\u2019re using Phrase Strings, rather than a bunch of Excel sheets, adding locales is pretty much as easy as selecting them here, completing the translations in the Phrase platform, and then pushing those translated strings back into the Unity project.<\/p>\n\n<p>For now, we&#8217;ll select English, German, and the Latin alphabet variant of Serbian.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"h-setting-a-default-for-when-we-don-t-support-the-user-s-preferred-locale\"><span class=\"ez-toc-section\" id=\"setting-a-default-for-when-we-dont-support-the-users-preferred-locale\"><\/span>Setting a default for when we don\u2019t support the user\u2019s preferred locale<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<p>It\u2019s worth taking a moment to talk about how locale fallback mechanisms work.\u00a0<\/p>\n\n<p>Serbian is a great example of the potential for complexity here. Serbian can use both Cyrillic and Latin alphabets. <\/p>\n\n<p>Cyrillic is the official script in Serbia but Latin is also widely used. Serbian also has several regional dialects (\u0160umadija-Vojvodina, Kosovo-Resava, and others) and pronunciation variants (Ekavian and Ijekavian).<\/p>\n\n<p>By implementing the Latin script version of Serbian (sr-Latn), we&#8217;ll accommodate users of all Latin-based Serbian variants. <\/p>\n\n<p>Even if their locale is set to a variant, Unity will serve them with the sr-Latn as a default fallback. However, that\u2019s not necessarily true for people whose systems are set to the Cyrillic version of Serbian (sr-Cyrl). <\/p>\n\n<p>If their system is set to fall back to the Latin script, they will see that locale but otherwise they\u2019d see the project\u2019s default locale.<\/p>\n\n<p>So far, we\u2019ve selected three locales out of the hundreds officially supported by Unity\u2019s Localization plugin. So, we need to set a default locale for the millions of people whose preferred locales we don\u2019t plan to support.<\/p>\n\n<p>Towards the bottom of the modal, you can specify that default from the list of locales we just selected.<\/p>\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeSDU9X8Ig2AybfhhvgWVB_DBgmdbGWNmEslOodOrFO99KTp1FGyRHQ0Jh88c-Gks37IUNvz7537i7BVW8gfDO2MHodfVIcjIRR7SYIdTMrjryZu2rPq3_EhmfFozHJShl3nOBcLw?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<h3 class=\"wp-block-heading\" id=\"h-specifying-which-locale-to-use\"><span class=\"ez-toc-section\" id=\"specifying-which-locale-to-use\"><\/span>Specifying which locale to use<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<p>Unity Localization also lets us choose how to select which locale to use at game load time. There are several different methods, including:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>A locale specified as a command line argument<\/li>\n\n\n\n<li>The locale provided by the user\u2019s system<\/li>\n\n\n\n<li>A fallback other than the project\u2019s default locale.<\/li>\n<\/ul>\n\n<p>You can probably stick with the default order, unless you have a strong preference for something else.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"h-set-up-the-string-tables\"><span class=\"ez-toc-section\" id=\"set-up-the-string-tables\"><\/span>Set up the string tables<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>Unity manages localization strings in String Tables. Each locale has its own table containing key-value pairs. The key is what you reference in your UI code, and the value is the actual localized text for that language.<\/p>\n\n<p>Before we connect Phrase to Unity, we need to set up those String Tables.<\/p>\n\n<p>In the <em>Window<\/em> top level menu, select <em>Asset Management<\/em> and then <em>Localization Tables.<\/em> In the window that opens, you\u2019ll see a message telling you that there are no tables. <\/p>\n\n<p>We can fix that by clicking on the <em>New Table Collection<\/em> button. By default, all of our locales are selected so all we need to do is name the collection (something like \u201cUI\u201d will do for now) and then click <em>Create<\/em> and then save it in your <em>Assets<\/em> directory.<\/p>\n\n<p class=\"has-text-align-center\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"811\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcM6kaFksHB1Ue3X6C4dqG0jdWQZZTcD7E1N31bkIhYEJKjv9EK1Z8lJa1wznIMm94uuCIjtsQM6jPV_XpU_TqhIInr1anT7GVAGUstLcMzeHc5yFsoO4JvGbtoOu2GhBsFbmeA1A?key=voaeFBiTCkPUwKza02QMCckn\" \/><\/p>\n\n<p>That leaves you with a blank table ready for your translations.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfW3EVx84YHbqYEBHT5uAuUTsqOPLW6zk_xgX8dODtQN9COC3wHaS4U1tEsEy5aQArVaPZGYbx5SquwdjHKi0N00Tq4KMhJluUuuUTpl7LSk38tx6YC-kU9oAyRsBBhTBf1nvNaRg?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>Let\u2019s add a key ready to translate. Click <em>New Entry<\/em> and add the key:<\/p>\n\n<p>Main\/UICamera\/Loadout\/StartButton\/Text<\/p>\n\n<p>This will let us localize the button that starts the game in Endless Runner.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdPoCbasdwkn8y-O6CtxmDj9J1k_9ObuOqgaKMV6VE_Ip2Eel2i0FASLYrYLuraoFrofhQPG3RjHvSjfHuFi6lbnU_tqRFlBHJD9wGN8Sm8qcQGNfcAOl82MigUCT8uHyd_dLYHuQ?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>Now we need to replace the hardcoded string in the code. In this case, to change the text on the main screen\u2019s <em>Run!<\/em> button we need to edit:<\/p>\n\n<p>Scripts &gt; GameManager &gt; LoadoutState.cd<\/p>\n\n<p>First, we need to call the Localization plugin:<\/p>\n\n<p>using UnityEngine.Localization.Settings;<\/p>\n\n<p>And then replace runButton.GetComponentInChildren&lt;Text&gt;().text = &#8222;Run!&#8220;; with:<\/p>\n\n<p>runButton.GetComponentInChildren&lt;Text&gt;().text = LocalizationSettings.StringDatabase.GetLocalizedString(&#8222;UI&#8220;, &#8222;UI_RUN_BUTTON&#8220;);<\/p>\n\n<p>We can preview that by running the game and changing the locale:<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcZP5B4KXgiI5x6Od8MhG7TpVPK6OmYit15E30oc-iepIURxx9ITpvc-RIzCfFiYA2DeeIFMQaZT-PUBA7klJMKmOjD3tooaTqefZn-qtxRlHl-iXLQCsnCbfGeRAom53zeztSkMA?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcJBQ4-mI_R7XfdI6LOgROaasw86ZqbJmNWq1BkJrdr8VYYsW0UzobyOWj7_m3KMQDr0r-tnvcKjgMqU8olmJkzCuJtb89dMaKRq28T4pqWrbDCvJSy6UWhFMf1jnRKYDVKoPm5?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdt5jfjH-89RQj7DWWQ3i2vrrk8qtzhF7LCHJnzbjX-RbV98CUM-V8SDdpSG9oNzl7V2AZJXu6ME8LDCkv7ukVn9VPAGC3UgeFfRlK8DAWbpz8ye1RdActO7FyEvUOj9QqyYzjW1Q?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<h2 class=\"wp-block-heading\" id=\"h-install-and-connect-the-phrase-plugin\"><span class=\"ez-toc-section\" id=\"install-and-connect-the-phrase-plugin\"><\/span>Install and connect the Phrase plugin<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>Now that we have localized a string, let\u2019s hand the actual translation and string management work to Phrase. That starts with installing the Phrase Strings Unity plugin.<\/p>\n\n<p>At the time of writing, the Phrase Strings plugin isn\u2019t yet available in the Unity Asset Store. So, we\u2019ll install it from the GitHub repo by cloning it into your project\u2019s Packages &gt; com.phrase.plugin directory.<\/p>\n\n<p>Next we need to connect the Phrase plugin to Phrase Strings itself. This is a two step process.<\/p>\n\n<p>First, create a Phrase Strings project for your Unity game. In your Phase Strings dashboard, click <em>Add Project<\/em>. Give your project a name and once it is created add the languages we\u2019re working with in Unity: English, German, and Serbian (Latin).<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfmE-7ojhen21gVS2HHBnKI0A_wCk6KVaDDftrANgZxoFzNd7V0Yhetkrs26OrMdgwvChPel9eQnTtY-TTyrNcxH0ZQL0V30HEx1wxb7wRmyNwt-g0DIJq8N_STUpo7grOnubezbA?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>Now that you have a project ready to work with you\u2019ll need to get hold of an API key to connect the Phrase Unity plugin with your Phrase Strings account. Click your face in the top right corner and visit Profile &gt; Settings &gt; Access tokens.<\/p>\n\n<p>The <em>Generate Token<\/em> button will lead you to a modal where you can generate the key.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXd_q2aVnsQMzvnzci1m-AiYjYkKDLBkjaBqwtVgVSgiV5AZsiC8Q8haDzJNuGGIaUjSMrxAD76R9BagFxYhfzdIu8YVaCTSxaivV59glSAH6v0yOCw8JPmahI9U6snjlTeJQRryNw?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>After copying the key, head back over to Unity, where you need to visit Assets &gt; Scripts &gt; UI &gt; Settings then click the <em>Phrase<\/em> icon. In the Inspector, add your API token and click <em>Fetch Projects<\/em>.<\/p>\n\n<p>If all goes well, you\u2019ll see the project you just created in the list and the languages that match between your Phrase Strings project and the Unity project.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcF1igg1y3Cz8KDbnk5mtNSokpRbQf0I6s-eh-9j6ui9xOmaWNevlWYo_iCU6xWkDHBnbFq2-coZXbKH4uYkyFri8sM6f0bKY3khA61AB4nQjkw_nr8qcJ8-TzCO3fsl1Fl25flQg?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>We need to get the strings we created earlier (\u201cRun!\u201d, \u201cLaufen!\u201d, and \u201cTr\u010di!\u201d) into Phrase Strings, so click <em>Push to Phrase.<\/em><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"h-make-our-first-translation-in-phrase\"><span class=\"ez-toc-section\" id=\"make-our-first-translation-in-phrase\"><\/span>Make our first translation in Phrase<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>As it turns out, \u201cLaufen!\u201d might not be the best word to use for our game\u2019s German players. \u201cRennen!\u201d is closer to what we\u2019re looking for, as that can mean to start a race.<\/p>\n\n<p>In the Phrase Strings project, open the <em>Endless Runner<\/em> project and then visit the <em>Languages<\/em> tab.\u00a0<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcCrS_meneqSN_qYFI5dv_1pouz0L1Z-P2GtnH3XFopKGaMnGPc9vuFmM5DnZEOjL4NEnO4G7exmgH3atBQcTwoBN0rMMDUl25Lg9Azi5yfCBeYUezLrHkCweaH7f8Xv5g19KeoDw?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>Click the <em>Editor<\/em> button for German and you\u2019ll start to get a sense of how much Phrase Strings can help with the localization process, including automatic suggestions. For now, replace \u201cLaufen!\u201d with \u201cRennen!\u201d and then hit <em>Save<\/em>.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXf2Qq8vdjHwtQWcEFoNgc3q0S4RR9-CtGXrWTK-UwV5_LUjG0tr8ekdUQX7k8CZXB46ABNXlcQmT6X1wqWtJlVNUvxwHGkWk5CiJ52GqyOmYRMqGAN2GpIpH2SB0sgD0FemOH3cDw?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<p>Back in the Unity project, click <em>Pull languages <\/em>and make sure all three locales are selected, then click <em>Pull to Unity<\/em> to download the updated translation from Phrase Strings.<\/p>\n\n<p>Once the import is complete, run the game and select the German locale to see our newly updated string in action.<\/p>\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdkNpeEcHKCSb2ozd8_c75qNkWcUz9ihVWCFOv29bVuyg7vTAhMB5a4hnH9fXyUybn-NhoLjd3LGCSHuMqMpmAs4Z4CDJjZkcJvXr1jEkHLrSy6t40S2m9QWB-4xt9GQ0FAPxK6cA?key=voaeFBiTCkPUwKza02QMCckn\" alt=\"\" \/><\/figure>\n\n<h2 class=\"wp-block-heading\" id=\"h-unity-localization-with-phrase-strings\"><span class=\"ez-toc-section\" id=\"unity-localization-with-phrase-strings\"><\/span>Unity localization with Phrase Strings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>By connecting the Unity Localization plugin to Phrase Strings you can streamline your localization workflow without the need for Google Sheets, Excel files, CSVs, and similar complications.<\/p>\n\n<p>In this short introduction, we\u2019ve only scratched the surface of how Phrase Strings can help you deliver improved localization with less work. For more, read our official guide to the <a href=\"https:\/\/support.phrase.com\/hc\/en-us\/articles\/15979838858140-Unity-Strings\">Phrase-Unity <\/a>integration.<\/p>\n\n<div class=\"wp-block-group alignwide has-light-grey-background-color has-background has-background-images is-layout-flow wp-block-group-is-layout-flow\" style=\"background-image:url(https:\/\/phrase.com\/wp-content\/uploads\/2024\/07\/Mask-group.svg);background-position:0% 100%;background-attachment:scroll;background-repeat:no-repeat;background-size:contain\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"64\" src=\"https:\/\/phrase.com\/wp-content\/uploads\/2024\/06\/controllers-pattern-1024x64.png\" alt=\"\" class=\"wp-image-86102\" srcset=\"https:\/\/phrase.com\/wp-content\/uploads\/2024\/06\/controllers-pattern-1024x64.png 1024w, https:\/\/phrase.com\/wp-content\/uploads\/2024\/06\/controllers-pattern-300x19.png 300w, https:\/\/phrase.com\/wp-content\/uploads\/2024\/06\/controllers-pattern-768x48.png 768w, https:\/\/phrase.com\/wp-content\/uploads\/2024\/06\/controllers-pattern-1536x97.png 1536w, https:\/\/phrase.com\/wp-content\/uploads\/2024\/06\/controllers-pattern-2048x129.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-black-color has-text-color has-link-color has-huge-font-size wp-elements-79d1b8589cab383b5b93d3da0361b736\" id=\"h-automated-error-free-game-localization\" style=\"font-style:normal;font-weight:300\"><span class=\"ez-toc-section\" id=\"automated-error-free-game-localization\"><\/span>Automated, error-free game localization<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-7db9d80f wp-block-group-is-layout-constrained\" style=\"padding-right:0;padding-left:0\">\n<p class=\"has-text-align-center\"><strong>Modern players demand immersive gameplay in their native language, but manual localization processes, siloed teams, and translation errors can cause delays and make it harder for you to reach a global audience effectively.<br \/><br \/>Phrase solves these problems by seamlessly integrating with Unity, automating workflows, and providing translators with precise context. This speeds up your time-to-market and ensures accurate, impactful translations.<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-a89b3969 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-red-filled\"><a class=\"wp-block-button__link has-text-align-left wp-element-button\" href=\"https:\/\/phrase.com\/de\/integrations\/unity\/\">Learn more about the Phrase-Unity plugin<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Willst du dein Unity-Spiel ohne das CSV-Chaos lokalisieren?<br \/>\nEntdecke, wie das offizielle Phrase Strings Unity-Plugin deinen Lokalisierungs-Workflow vereinfacht \u2013 vom Setup der Strings-Tabelle bis zum direkten Abrufen von \u00dcbersetzungen in dein Projekt. Egal, ob du f\u00fcr Deutsch, Serbisch oder andere Sprachen entwickelst \u2013 dieser Leitfaden zeigt dir, wie du schnell loslegst und wie ein Profi lokalisierst.<\/p>\n","protected":false},"author":82,"featured_media":89980,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"post-refresh-updated","format":"standard","meta":{"_acf_changed":false,"_stopmodifiedupdate":false,"_modified_date":"","_searchwp_excluded":"","episode_type":"","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","footnotes":""},"categories":[47,46],"class_list":["post-136887","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-in-eigener-sache","category-software-lokalisierung"],"acf":[],"_links":{"self":[{"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/posts\/136887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/users\/82"}],"replies":[{"embeddable":true,"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/comments?post=136887"}],"version-history":[{"count":3,"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/posts\/136887\/revisions"}],"predecessor-version":[{"id":136894,"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/posts\/136887\/revisions\/136894"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/media\/89980"}],"wp:attachment":[{"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/media?parent=136887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/phrase.com\/de\/wp-json\/wp\/v2\/categories?post=136887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}