How to Localize a Video Game // Unity Localization Tutorial

Поділитися
Вставка
  • Опубліковано 2 лют 2025

КОМЕНТАРІ • 80

  • @mrussogamedev
    @mrussogamedev 8 місяців тому +2

    Thanks man. Best tutorial on this asset I've found. Best of luck in your projects.

  • @Drasora
    @Drasora 3 роки тому +10

    I am a game dev myself and I also offer game localization as a freelancer (EN->DE) and I wish every client would provide enough information and answer questions, as you state in your video! Because I would like to make suitable and good translations :)

    • @AuroDev
      @AuroDev  3 роки тому +2

      I wish every translator asked questions! :)

  • @madeinbrooklyngames
    @madeinbrooklyngames 2 роки тому +3

    Dope Video! Thank you for the easy script examples in the video.

  • @TezFraser
    @TezFraser 3 роки тому +4

    Great video! Super informative and thorough. I'll definitely be referencing this when I'm ready for localizing my game!

    • @AuroDev
      @AuroDev  3 роки тому

      Happy to hear that! Best of luck with your game! :)

  • @BramOuwerkerk
    @BramOuwerkerk 3 роки тому +2

    I just discovered your channel and I really like your videos :)

    • @AuroDev
      @AuroDev  3 роки тому

      Happy to hear that! Welcome aboard :)

  • @RecOgMission
    @RecOgMission 2 роки тому

    Thanks for this. I need to start localizing, and this video gave me most of the info I need. One thing I would add is to have the keys as an enum or something similar so you can only select feasible values, to reduce the occurrence of not linking strings properly.

  • @localberry
    @localberry 2 роки тому +4

    As a translator I would actively discourage any dev from using machine translation for their games (especially in their entirety). The best way you can make sure that your translation and localisation is good and natural is to choose a native speaker of the target language. They will know what sounds natural, and not choose translations which are synonyms, but not right in the context. (For example, 'quit' and 'leave' might both mean the same thing, but any English native knows that in game context, you always use 'quit').

  • @tobiasrieper7328
    @tobiasrieper7328 3 роки тому +6

    Thanks. Learned a lot and will definately need this later on.
    Common terms in the desired language are a thing in itself.
    I have an German example from your video:
    'Power' is translated to "Leistung".
    This is not wrong, but not common and somewhat out of context.
    If you say in English 'I've got the power!', then you don't say in German "Ich habe die Leistung".
    "Leistung" is more regarding to mechanical power, like from your car or how you performed to a test.
    Instead you say "Ich habe die Kraft!" But this is a whole statement, not just a single term.
    Single term as an attribute here is translated to "Stärke".
    You could even not translate it, because 'Power' has a very common understanding worldwide, but this would be inconsistently to the other translations.
    So what I'm trying to second is that a special native gaming language translator/editor is super important, like Auro mentioned in the video.
    Otherwise it can disturb or break your game immersion.

    • @AuroDev
      @AuroDev  3 роки тому +1

      That's an interesting and good example on the importance of context!

  • @redabeg
    @redabeg Рік тому +1

    How do you have the data separated by columns? Because Unity doesn't understand this way of data recording, it requires all data in one column, separated by commas. So, how?

    • @AuroDev
      @AuroDev  Рік тому

      If you open a .csv file in Excel, it will show it in columns but in actuality it's just "one column" separated with commas. If you open it in Notepad, you will see what it actually looks like.
      Also, there are many ways to import data into Unity. I2 localization asset handles the .csv importing for my localization file. But I have also previously created my own .csv and .tsv (this is handy if your data contains commas) import systems.

  • @ceren1695
    @ceren1695 2 роки тому +1

    Hey, I'm a translator interested in localization. I didn't get those dynamic strings (i have zero coding knowledge :D) such as "UI.ENDSCREEN.LOSE"? Which part made it dynamic actually? sorry if it sounds ridiculous 😅😅

    • @AuroDev
      @AuroDev  2 роки тому +1

      Hey! By dynamic string I meant that the text is not hard-coded within the code but instead uses an ID ("UI.ENDSCREEN.LOSE") that is then replaced with the right text and in the right language when it is time to show that text in the game. As a translator the exact details probably aren't very relevant, but when you get the translation file, it will most likely include these ID's within the file and they can give some context where those lines will be shown within the game.

  • @happytofu5
    @happytofu5 4 місяці тому +1

    Hmm weird, the game does not know the LocalizationManager. It gives me the error: The type or namespace name 'LocalizationManager' could not be found (are you missing a using directive or an assembly reference?) - do I need to include a library for it? Or do I have to make a localization manager script myself? Should it come with the localization package? - Edit: nevermind, I think it is because I use another localization package, the one that nowadays comes with unity.

    • @AuroDev
      @AuroDev  4 місяці тому +1

      Ah yeah, the LocalizationManager is for I2 localization asset that I am using. Haven't tried the Unity one, but I'm sure it is great also.

  • @lemapp
    @lemapp 2 роки тому +1

    Thank you so much for making this video.

  • @jutekpixel
    @jutekpixel Рік тому +1

    Good tutorial but I am struggling with this tool a little bit. For example when i am generating csv spread sheet it is showing some errors in unity. It is generated in the end but it is not as prepared by columns like in your video. everything is in one cell. :/ strange.

    • @AuroDev
      @AuroDev  Рік тому

      Hmmh weird... What if you create the csv yourself to make sure it has the right amount of columns and then import it? If the issue persists, opening the csv in notepad to check if it has commas between the columns would be a good thing to check

  • @Goomba_Smash
    @Goomba_Smash Рік тому +1

    How do I localize a game where the text is all hand drawn pixel art and drawn directly on the assets?

    • @AuroDev
      @AuroDev  Рік тому

      In that case you would need to localize the images, which can be a lot of work. At least the I2 localization asset I am using can localize images too.

  • @jhosua9385
    @jhosua9385 3 роки тому +1

    Great video, I'm changing jobs, and I'm thinking of localizing games to Latam Spanish, this is great info for me.

    • @AuroDev
      @AuroDev  3 роки тому

      Happy to hear that! Best of luck with the job switch :)

  • @wonttellon9
    @wonttellon9 3 роки тому +1

    Amazing video as I am about to start my freelancing journey as translator (Eng - Hindi).

    • @AuroDev
      @AuroDev  3 роки тому

      Best of luck with your journey! :)

  • @DualGenStudios
    @DualGenStudios 7 місяців тому +1

    Hi Auro. One question. Can videos (trailers in the Steam Store be localized)?

    • @AuroDev
      @AuroDev  7 місяців тому +1

      Yep, they can!

    • @DualGenStudios
      @DualGenStudios 7 місяців тому

      @@AuroDev Hi Auro. Thanks. I uploaded my game trailer in English and Russian. Is there a way to ckeck it? Because if I change languages, I see the game description in Russian but not the trailer.

    • @AuroDev
      @AuroDev  7 місяців тому

      @@DualGenStudios If the description changes, the trailer should also change. I remember having some delays with the trailers updating before so I'd give it a moment and then maybe also test with another device.

    • @DualGenStudios
      @DualGenStudios 7 місяців тому

      @@AuroDev Oh, that's a good idea. Thank you.

  • @kassassin99
    @kassassin99 3 роки тому +1

    In this video, there's a text using "totalScore", how do i implement it in code, I did what you asked, $"{totalScore}", but after using the key it is showing as it is, it is not replacing the total score with the int value

    • @AuroDev
      @AuroDev  3 роки тому

      Hmmh, not sure what the issue might be. I just tried this and it worked:
      int test = 5;
      Debug.Log($"Test number is {test}");

    • @kassassin99
      @kassassin99 3 роки тому

      @@AuroDev Sorry, i forgot to tell you that i'm writing the key as Debug.Log("TEST");
      Now, the "TEST" key contains string "Test number is {test}" which is coming from the Google sheets, and the int test value is dynamically assigned(at runtime), for now, i'm using call back, but it works some time, sometime it show {test} as it is.

  • @lt.gonflette649
    @lt.gonflette649 2 роки тому +1

    Good video! Just to be clear, is I2 Localization mostly for game developers or can localizers directly use it to work on games?
    Thanks

    • @AuroDev
      @AuroDev  2 роки тому +1

      Thank you! I2 Localization is just for game developers so no need to worry about it as a translator! :)

    • @lt.gonflette649
      @lt.gonflette649 2 роки тому

      @@AuroDev Thank you very much :)

  • @alisaneei
    @alisaneei 3 роки тому +1

    Great video! I just didn't understand something. If I2 Localization asset translates all the words, then why should we get help from translators? Isn't it better to get help from them in the first place?
    Also, I have another question. How do you change UI game objects to dynamic strings? For example, for the "Start" button, do you use "UI.main.play" as the name of the game object?
    Thank you!

    • @AuroDev
      @AuroDev  3 роки тому +1

      Thanks! The l2 itself doesn't know what the words are in different languages. Translators are needed for that. But after that l2 can handle the "code" side of things, ie replacing english text with text of another language when the player switches language.
      The name of the gameobject doesn't matter, but you will need to add the I2 localize component to the game object. Then in the component you can set the "UI.main.play" so the text in the gameobject will be replaced by that dynamic string.

    • @alisaneei
      @alisaneei 3 роки тому +1

      @@AuroDev Oh, I see. So it handles the code side of the process. In my game, I don't have random text like "You won" but I need to translate buttons in menus to other languages. I think even in this case, that asset is helpful. Thanks for the explanation!

  • @1984ordep
    @1984ordep Рік тому

    I'm trying so hard to figure out how to do this with a dialog system. I use a txt file and I just have a trigger enter which pulls a line from my text files and it gets populated on a dialog box on the screen. I can't wrap my head around how I can do it with dynamic strings....I would love a video on setting up a dialog system to work like this.. ANYBODY????

  • @user-em9su3dd9y
    @user-em9su3dd9y Рік тому +1

    Excellent, thanks you!

  • @voldy3565
    @voldy3565 Рік тому +1

    Can I use this method to localize an existing game?

  • @JuioAssis
    @JuioAssis 3 роки тому +1

    Thanks man, you help me a lot!

    • @AuroDev
      @AuroDev  3 роки тому

      Happy to hear that! :)

  • @dam_ly
    @dam_ly 2 роки тому +2

    I've just started my dev journey and this is super helpful. Do you recommend translating the steam page also, maybe just the description box? Most videos i've watched don't mention it :(

    • @AuroDev
      @AuroDev  2 роки тому +2

      Awesome! Yes, I would highly recommend translating your Steam page also! I've done it with all the languages I support in the game. I don't have any data to say how big of an effect it has, but Steam recommends it and logically thinking it should bring in some extra sales.

    • @dam_ly
      @dam_ly 2 роки тому

      @@AuroDev Thanks for the reply!

    • @RecOgMission
      @RecOgMission 2 роки тому

      I’ve translated my page’s short description and ‘about this game’ description, even before localizing.

  • @litgamesdev
    @litgamesdev 3 роки тому +2

    How did you deal with getting more Chinese chars for the custom names?

    • @AuroDev
      @AuroDev  3 роки тому +2

      Good question! I googled which unicode blocks include the most commonly used Chinese characters and then included those in my Chinese font asset. In the localization asset you can specify a range of unicode characters so you don't need to list all of them there character by character.

  • @termway9845
    @termway9845 3 роки тому +2

    Thank you for sharing this. It was a very interesting watch.
    Though I would not recommend people to use hard coded key in their code.
    Instead I would recommend them to create a custom class (or MB) which contains the key as parameters which can have a custom property drawer (or Editor) for preview. You will have more flexibility that way.
    At 03:25, I didn't catch the difference. Won't you get the same string in the end?

    • @AuroDev
      @AuroDev  3 роки тому +1

      That sounds like a smart thing to do! At 03:25 I was trying to make a point regarding the word order. If you combine 2 strings with a variable in the middle, the word order is locked in place. Since the word order can differ based on the language, you will need to "unlock" the word order if you are going to localize your game.

  • @shiny_dark3_3
    @shiny_dark3_3 Рік тому

    Дякую автору відео, за корисну інформацію

  • @erdemakar
    @erdemakar 3 роки тому +1

    Your channel is amazing watched all videos and love it! Do you also have a discord sever, would love to join and talk about our games! :)

    • @AuroDev
      @AuroDev  3 роки тому +2

      Awesome! Really happy to hear that :) I haven't gotten around to setting up a discord server yet, but I have been thinking about it. So maybe at some point in near future I will have one!

  • @CyberAngel67
    @CyberAngel67 3 роки тому

    Why does everyone insist on making one spreadsheet with all languages! How can I subcontract that out to multiple people and not have to merge all these changes!

    • @AuroDev
      @AuroDev  3 роки тому

      The way I did it is to have that one big spreadsheet that the game uses and then split it into smaller language-specific ones that I use to approach translators with. Ofc merging all the docs at the end is then needed.

    • @CyberAngel67
      @CyberAngel67 3 роки тому

      @@AuroDev exactly my point.... WHY!!!!!

    • @AuroDev
      @AuroDev  3 роки тому

      @@CyberAngel67 Well, that felt like a comfortable way for me to do it at least :) I like having all the localization strings in the same document so I can make adjustments to all languages at the same time and I can also easily compare the translations if needed.

  • @MoviesSummary2
    @MoviesSummary2 3 роки тому

    your twitter acc don't work can i contact you in facebook?

    • @AuroDev
      @AuroDev  3 роки тому +1

      I don't use Facebook much so I won't use that for communication. But you should be able to send a message request to me on Twitter twitter.com/RedbeakGames

  • @chrishunter1109
    @chrishunter1109 3 роки тому

    Quitten drives me crazy.. it is Beenden :-)

    • @AuroDev
      @AuroDev  3 роки тому

      Hah, sorry! If it's any consolation, my actual game uses Beenden :)

    • @chrishunter1109
      @chrishunter1109 3 роки тому +1

      @@AuroDev haha gg. keep on the good work :-P (for explanation of my pain: Quitten are some kind of fruit :-D) )

  • @MoviesSummary2
    @MoviesSummary2 3 роки тому

    can i contact you in twitter?

    • @AuroDev
      @AuroDev  3 роки тому

      Yes. twitter.com/RedbeakGames

  • @Havie
    @Havie 2 роки тому

    You didn’t talk about separate gendered strings ! 😭

    • @AuroDev
      @AuroDev  2 роки тому +1

      I haven't had to deal with them as a dev :) At least so far with my game there has been no need to adjust words based on the gender (or likely I just haven't realized it).

  • @aristocracy4461
    @aristocracy4461 3 роки тому

    unity has its own localisation package.. so this is not very helpful for the majority of people

    • @AuroDev
      @AuroDev  3 роки тому +1

      Hey, sorry to hear the video wasn't helpful! I haven't tried Unity's own localization package, but I would assume many of the steps are still the same (using dynamic strings, working with translators, enabling different alphabets etc). But yeah, if you are using Unity's own localization package, it would definitely be a good idea to check a tutorial that's specific to that package.

  • @АркадийШеховцов
    @АркадийШеховцов 3 роки тому

    А это твоя собака?