How to Localize a Video Game // Unity Localization Tutorial

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024

Комментарии • 78

  • @Drasora
    @Drasora 3 года назад +8

    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 года назад +1

      I wish every translator asked questions! :)

  • @mrussogamedev
    @mrussogamedev 3 месяца назад +1

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

  • @localberry
    @localberry Год назад +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').

  • @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! :)

  • @madeinbrooklyngames
    @madeinbrooklyngames 2 года назад +2

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

  • @tobiasrieper7328
    @tobiasrieper7328 3 года назад +5

    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!

  • @BramOuwerkerk
    @BramOuwerkerk 3 года назад +2

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

    • @AuroDev
      @AuroDev  3 года назад

      Happy to hear that! Welcome aboard :)

  • @lemapp
    @lemapp 2 года назад +1

    Thank you so much for making this video.

  • @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.

  • @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! :)

  • @user-em9su3dd9y
    @user-em9su3dd9y 11 месяцев назад +1

    Excellent, thanks you!

  • @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 :)

  • @shiny_dark3_3
    @shiny_dark3_3 Год назад

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

  • @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.

  • @lt.gonflette649
    @lt.gonflette649 Год назад +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  Год назад +1

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

    • @lt.gonflette649
      @lt.gonflette649 Год назад

      @@AuroDev Thank you very much :)

  • @redabeg
    @redabeg 10 месяцев назад +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  10 месяцев назад

      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.

  • @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????

  • @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 9 месяцев назад +1

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

    • @AuroDev
      @AuroDev  9 месяцев назад

      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.

  • @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!

  • @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.

  • @DualGenStudios
    @DualGenStudios 2 месяца назад +1

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

    • @AuroDev
      @AuroDev  2 месяца назад +1

      Yep, they can!

    • @DualGenStudios
      @DualGenStudios 2 месяца назад

      @@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  2 месяца назад

      @@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 2 месяца назад

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

  • @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.

  • @voldy3565
    @voldy3565 11 месяцев назад +1

    Can I use this method to localize an existing game?

    • @AuroDev
      @AuroDev  11 месяцев назад

      Sure!

  • @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.

  • @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!

  • @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.

  • @chrishunter1109
    @chrishunter1109 2 года назад

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

    • @AuroDev
      @AuroDev  2 года назад

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

    • @chrishunter1109
      @chrishunter1109 2 года назад

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

  • @CyberAngel67
    @CyberAngel67 2 года назад

    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  2 года назад

      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 2 года назад

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

    • @AuroDev
      @AuroDev  2 года назад

      @@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

  • @Havie
    @Havie Год назад

    You didn’t talk about separate gendered strings ! 😭

    • @AuroDev
      @AuroDev  Год назад +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).

  • @MoviesSummary2
    @MoviesSummary2 3 года назад

    can i contact you in twitter?

    • @AuroDev
      @AuroDev  3 года назад

      Yes. twitter.com/RedbeakGames

  • @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.

  • @user-hn3lf4nx8o
    @user-hn3lf4nx8o 2 года назад

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