Perfect tutorial, thanks alot! Covered everything I needed for my game and will save me a ton of time! Didn't know about the option to add fallback fonts, what a useful feature!
Great video, thanks! I really like the suggestion to use the google sheet translations. I'd love to see a short followup video like you mentioned that has your full polished localization workflow with all the steps to get things setup properly and the most efficiently
This is just what I needed to get started adding localization to my own game, however I've had difficulty with some parts such as how to get it working with Google Sheets. I see it's been 6 months now since this video has released, any idea when the tutorial is coming?
Why don't you set the Atlas Population Mode to Dynamic in the Font Asset? Doing so has several advantages, such as: Flexibility: Allows for any character to be rendered at runtime, including those not initially defined in the font asset. Memory Efficiency: Only the characters that are actually used get added to the texture atlas, which can save memory. Dynamic Content: Ideal for user-generated text or multi-language support where the set of characters can vary.
Great video! I'm doing the EXACT same, with Google sheet and translations and all - works really well! One thing though, I would not do the translations in all UPPERCASE - much better to have the text is normal casing, then you can set your TextMeshPro Text to force uppercase where you need it. I have had to droppe the "Right to Left" languages too...as it's too big a job to get to work.
Really Nice :D btw i have wish listed the game :D i still listen to all your songs while i work on my game/games :D if i didnt have dyslexia i could help with Norwegian hehe :D
am really tempting to try chat-gpt my self and see if it can help me with coding tasks i struggle withand mabe getting better resutl than my code hehe :D btw how did you get voice? Text to speech? :D Looking forward to all your videos :)
4:45 I am yet to see an acrylic language group :D It's see-ree-lick, it was named after Cyril, a Greek Orthodox Christian philosopher who devised the Glagolitic alphabet along with his religious co-patron Methodius. Allegedly the Cyrillic script was a direct descendant of the Glagolitic alphabet, made in the Bulgarian Empire by the exiled disciples of Cyril and Methodius some time in the late IX century. Not really important or even warranted but there you go.
Not tried that actually, thanks. I like the cell approach in this case to automate - I know it won't be perfect, but a step in the right direction from no localization at all.
@@ryxrr7207 I regularly ask it to compare tools / services / whatever in a table and to summarize it. Not always accurate but gives a rather good intention as a result.
I’m just here to tell you the Dutch word for Play is “Spelen” and quit is “Stoppen” (more like Stop playing) or “Afsluiten” (close game). Toneelstuk refers to a theatrical play, while Ontslag Nemen means quitting your job.
Good question. I was very surprised to hear that Unity Shader Graph does not support making UI shaders. It used to work but Unity claims it is by design and that it worked by a coincidence in the past. I will need to see what the options are.
Great video! Have you done any CI before? It might help with the custom characters in the Asian languages. I've set it up for a few other things, it's a pain but once it's done you'd never forget to update them again. It's interesting learning about localisation, thanks!
I'v enot tried that (the only CI meaning I know is Continous Integration - this is something else?? =) - this is new to me and I also incorrectly called asian languages symbolic - so there is a lot for me to learn here :)
could u also make a blender than to unity tutorial about how to handle cloth items like a head or shoe where u can choose between 30 different shoes at run time. how do they change the items in a skinned mesh with out adding all items inside the object and disable them?
This is a good idea, will try to cover that. I've done it in the past for low poly characters (my cowboys) with clothing and accessories but I need to make a proper tutorial instead. Oh, now I am reading the last part - without adding all items and disabling them :) I think that is doable too by instantiating and destroying the game obejects - they still have to be weightpainted to the skinned mesh to work properly.
This was a great vid - I tried getting the localization package it was looking good but got a bunch of errors - I think I'm stuck on my current project (old bespoke versions of various packages) so I ended up writing my own - but the spreadsheet technology is fantastic and the fallback fonts I didn't know. Thanks!
Hello, so kind of you to share this, came very handly. I wanted to give you some constructive criticism about your game. From your intro video, it looks technically and visually very well done. I'm afraid the gameplay feel and some movements are not on the same level. I suggest you take some advice from game designers, let them play the game and implement their feedback. After that, do a closed beta to do the same with your target audience. I hope the game releases successfuly and wish you the best.
Haha, yeah, I can imagine some translations just get totally wrong :) Thanks for the offer - will come back and look in this comment section when time comes because any "proper" translation is very welcome!
I'm thankful that I've stuck with the default text component, it just works! TMP could have this process a lot more optimized, like automatically detecting character sets of fonts or packing all of them into a single asset, this is just a mess :(
Last time I checked in Unity, they didn't properly rendered texts of Hindi and other Indian, and some South East Asian languages. For example, try putting this text in Unity - नमस्ते (in Notepad, Chrome, Godot, etc.) नमसते (in Unity, there will also be a line below third letter) With proper font, it shows the letters but the spelling is all incorrect. Otherwise for quick testing you can try putting it anywhere else in the editor (like search fields, etc.) and it will show it wrong again. And this is because, Unity doesn't fully supports GPOS and GSUB to render fonts. And this is a huge issue for me, because if you use the same text on even Notepad it will render it correctly. But Unity isn't able to do it. PS: In Godot, it works all good. Same with Notepad, Chrome, and other Windows applications.
I can imagine there is a whole world of problems with multi-language support, especially in Unity. Without knowing the languages too - it's difficult - or even impossible - to spot what's wrong so help would be needed at some point.
Fun fact for Godot: You don't even have to load any package for being able to make use of the translation sytem. It's built in. :D Oh, and I just see the imperfection of the translations: For "Controls" in a menu you wouldn't use "Kontrollen" in German, you'd rather use "Steuerung" (yes, it has some relation to the word "steering", the other one has some other meaning and is used in another context, but not for a game character's control). That's a pretty good example for using automatic translators are basically a cool thing, because they in general do a lot very good already, but mess up with single words and phrases in a few special cases.
Nice to have it built in. I am actually surprised that the font system in Unity does not allow all language - I think the old legacy way does support it but then you get blurry fonts instead because the system is not so good (which is why TextMeshPro became a thing to begin with). Feels like a lot of work - nearly like workarounds - to get everything set up. Hopefully it'll get built in at some point with a standard global font. Noto is free, so they should really support that out of the box if that was possible :)
@@Imphenzia I understand but it becomes distracting after some time and makes me unable to focus what your are saying. In any case thanks again for the tutorials.
Probably Salt & Sanctuary did something like that and tried to transalte the game in italian. It was hilarious. Don't do that. If you need help with italian translations, please ask me or other italians. We are way better than Google Translate.
Oh, so it is easy to translate with Google Sheets. That explains a lot why many games are very poorly translated. I usually discard games with poor translations and no warning about automatic translations, chances are high they are not fun and made just to earn easy money.
I'm glad you spat it out and it's very welcome if you share your step-by-step approach. Thank you. Great video!
That's awesome! You can convert from English to Australian now!
Haha, yeah, finally! I've not had a clue what has been said here so far :D
I'll definitely use this in the current project. Useful stuff here, thx man.
Perfect tutorial, thanks alot! Covered everything I needed for my game and will save me a ton of time! Didn't know about the option to add fallback fonts, what a useful feature!
Great video, thanks! I really like the suggestion to use the google sheet translations. I'd love to see a short followup video like you mentioned that has your full polished localization workflow with all the steps to get things setup properly and the most efficiently
This is just what I needed to get started adding localization to my own game, however I've had difficulty with some parts such as how to get it working with Google Sheets. I see it's been 6 months now since this video has released, any idea when the tutorial is coming?
Why don't you set the Atlas Population Mode to Dynamic in the Font Asset? Doing so has several advantages, such as:
Flexibility: Allows for any character to be rendered at runtime, including those not initially defined in the font asset.
Memory Efficiency: Only the characters that are actually used get added to the texture atlas, which can save memory.
Dynamic Content: Ideal for user-generated text or multi-language support where the set of characters can vary.
This is random and I'm sure you've discovered this by now, but the Chinese simplified language uses a 4 letter code: zh-CN
This is an incredibly helpful and easy to follow tutorial. This video is really everything I needed to know to do this! Thanks so much.
Great video! I'm doing the EXACT same, with Google sheet and translations and all - works really well!
One thing though, I would not do the translations in all UPPERCASE - much better to have the text is normal casing, then you can set your TextMeshPro Text to force uppercase where you need it.
I have had to droppe the "Right to Left" languages too...as it's too big a job to get to work.
Cool, we have to find helpful methods as indiedevelopers :) Good point with the casing, I will do it that way too!
Really Nice :D btw i have wish listed the game :D
i still listen to all your songs while i work on my game/games :D
if i didnt have dyslexia i could help with Norwegian hehe :D
am really tempting to try chat-gpt my self and see if it can help me with coding tasks i struggle withand mabe getting better resutl than my code hehe :D btw how did you get voice? Text to speech? :D Looking forward to all your videos :)
4:45 I am yet to see an acrylic language group :D
It's see-ree-lick, it was named after Cyril, a Greek Orthodox Christian philosopher who devised the Glagolitic alphabet along with his religious co-patron Methodius. Allegedly the Cyrillic script was a direct descendant of the Glagolitic alphabet, made in the Bulgarian Empire by the exiled disciples of Cyril and Methodius some time in the late IX century. Not really important or even warranted but there you go.
Have you tried ChatGTP4 its quite good at translating :)
Not tried that actually, thanks. I like the cell approach in this case to automate - I know it won't be perfect, but a step in the right direction from no localization at all.
@@Imphenzia You can ask ChatGPT to put its thoughts into a table. ;)
@@gemidytwins Ah, the good "give me an example of x" approach.
@@ryxrr7207 I regularly ask it to compare tools / services / whatever in a table and to summarize it. Not always accurate but gives a rather good intention as a result.
I’m just here to tell you the Dutch word for Play is “Spelen” and quit is “Stoppen” (more like Stop playing) or “Afsluiten” (close game).
Toneelstuk refers to a theatrical play, while Ontslag Nemen means quitting your job.
Thanks - I think many of the translated will be wrong to varying degrees so they would need to be revised manually at some point
Is there a way to make text have glowing effects, using Unity rich text only?
Good question. I was very surprised to hear that Unity Shader Graph does not support making UI shaders. It used to work but Unity claims it is by design and that it worked by a coincidence in the past. I will need to see what the options are.
@@Imphenzia thanks
El tutorial que no sabia que necesitaba jeje muchas gracias por compartir tus conocimientos.
Great video! Have you done any CI before? It might help with the custom characters in the Asian languages. I've set it up for a few other things, it's a pain but once it's done you'd never forget to update them again. It's interesting learning about localisation, thanks!
I'v enot tried that (the only CI meaning I know is Continous Integration - this is something else?? =) - this is new to me and I also incorrectly called asian languages symbolic - so there is a lot for me to learn here :)
could u also make a blender than to unity tutorial about how to handle cloth items like a head or shoe where u can choose between 30 different shoes at run time. how do they change the items in a skinned mesh with out adding all items inside the object and disable them?
This is a good idea, will try to cover that. I've done it in the past for low poly characters (my cowboys) with clothing and accessories but I need to make a proper tutorial instead. Oh, now I am reading the last part - without adding all items and disabling them :) I think that is doable too by instantiating and destroying the game obejects - they still have to be weightpainted to the skinned mesh to work properly.
Hi, how are you using that excel sheet as your table inside unity can you explain that?
Why use Google Translate if Gemini or 4o can do everything translate could do but better (including formatting the resulting csv or json)?
Straight to the point. Super helpful!
Korean and Thai are alphabetic scripts, not symbolic. Just FYI :) A very useful video
I had a bad feeling when I was saying symbolic =) Doh, thanks for pointing that out!
This was a great vid - I tried getting the localization package it was looking good but got a bunch of errors - I think I'm stuck on my current project (old bespoke versions of various packages) so I ended up writing my own - but the spreadsheet technology is fantastic and the fallback fonts I didn't know. Thanks!
Awesome. I'm trying to get this localization stuff working with my current project and TMPro... would definitely appreciate a tutorial :)
Thanks for the great vid.
Can you make one that covers dynamic text? (i.e: text that changes via code)
Hello, so kind of you to share this, came very handly.
I wanted to give you some constructive criticism about your game. From your intro video, it looks technically and visually very well done. I'm afraid the gameplay feel and some movements are not on the same level. I suggest you take some advice from game designers, let them play the game and implement their feedback. After that, do a closed beta to do the same with your target audience.
I hope the game releases successfuly and wish you the best.
3:14 CZ translate "Hrát si" for "Play" sounds more like "jacking off" than "play". If you want some correction love to help.
Haha, yeah, I can imagine some translations just get totally wrong :) Thanks for the offer - will come back and look in this comment section when time comes because any "proper" translation is very welcome!
I'm thankful that I've stuck with the default text component, it just works!
TMP could have this process a lot more optimized, like automatically detecting character sets of fonts or packing all of them into a single asset, this is just a mess :(
Yeah I totally agree! We use legacy text in Line War and it just works.
Last time I checked in Unity, they didn't properly rendered texts of Hindi and other Indian, and some South East Asian languages. For example, try putting this text in Unity -
नमस्ते (in Notepad, Chrome, Godot, etc.)
नमसते (in Unity, there will also be a line below third letter)
With proper font, it shows the letters but the spelling is all incorrect. Otherwise for quick testing you can try putting it anywhere else in the editor (like search fields, etc.) and it will show it wrong again. And this is because, Unity doesn't fully supports GPOS and GSUB to render fonts. And this is a huge issue for me, because if you use the same text on even Notepad it will render it correctly. But Unity isn't able to do it.
PS: In Godot, it works all good. Same with Notepad, Chrome, and other Windows applications.
I can imagine there is a whole world of problems with multi-language support, especially in Unity. Without knowing the languages too - it's difficult - or even impossible - to spot what's wrong so help would be needed at some point.
@@Imphenzia Yes right. I hope Unity fixes these issues with their font rendering soon.
Is there a way to translate automatically to other languages?
Google translation onto tables seems like the best option
Fun fact for Godot: You don't even have to load any package for being able to make use of the translation sytem. It's built in. :D
Oh, and I just see the imperfection of the translations: For "Controls" in a menu you wouldn't use "Kontrollen" in German, you'd rather use "Steuerung" (yes, it has some relation to the word "steering", the other one has some other meaning and is used in another context, but not for a game character's control).
That's a pretty good example for using automatic translators are basically a cool thing, because they in general do a lot very good already, but mess up with single words and phrases in a few special cases.
Nice to have it built in. I am actually surprised that the font system in Unity does not allow all language - I think the old legacy way does support it but then you get blurry fonts instead because the system is not so good (which is why TextMeshPro became a thing to begin with). Feels like a lot of work - nearly like workarounds - to get everything set up. Hopefully it'll get built in at some point with a standard global font. Noto is free, so they should really support that out of the box if that was possible :)
let me know if you need help with Hebrew... :)
Thank you so much, I will come back to the comments when it's time to translate to see who is interested to help out.
Hi, please don't add music to background of your video, thanks.
It's to cover my annoying filler sounds and lipsmacks to some extent :D
@@Imphenzia I understand but it becomes distracting after some time and makes me unable to focus what your are saying. In any case thanks again for the tutorials.
First!
Probably Salt & Sanctuary did something like that and tried to transalte the game in italian. It was hilarious. Don't do that. If you need help with italian translations, please ask me or other italians. We are way better than Google Translate.
13:00
Oh, so it is easy to translate with Google Sheets. That explains a lot why many games are very poorly translated. I usually discard games with poor translations and no warning about automatic translations, chances are high they are not fun and made just to earn easy money.
I disappear your channel ok friend you
You overpowered it, you showed it, but you didn't tell how. Meh
get back on blender dude
I am just helping out all the backlog of "get back on unity dude" comments first - Blender will come too :)