1 free read left. Create a free account for unlimited reading + AI research.
Create free account[Music] i'd like to welcome our uh first solo speaker our keynote speaker of the afternoon to the stage uh talking about overcoming challenges for multilingual games it's uh sami alternate from transperfect all right hi everybody so semi alternate been with trans perfect for about uh decade in been in the industry a little bit over the net and i specialize in software globalization so today we're going to talk about games that are in different languages today there were some some cool presentations about how games help companies be global and the world is a smaller place now it's a much closer knit community overall so we're going to talk about how language affects that and
how we should be mindful of certain pitfalls but also talk about how to make that process a little bit better so first a little bit about trans perfect we've been around for 30 years we just actually celebrated our 30th year anniversary last week with 1200 of our employees in amsterdam it's a lot of fun but we started in 1992 back in those days you know you just had a few big corporations like microsoft and oracle and some microsystems which is now the same company doing localization and translating their software products into different languages just because they were so global but now today even startups are translating content so we support them in all aspects of it anything that language touches we do which means translation of text but also subtitling audio it could be creating content specific to certain locales certain certain cultures so that's what trans perfect does we also have the supporting technology as well we're all over the globe uh every little white dot that you see it's over 100 different cities around the globe and
the stuff that you see in blue is specifically for gaming solutions but we ourselves are a very global company so we're very very diverse and that really gives us a unique i think perspective in all types of different multilingual content so today we're going to talk about how to make this a better process and uh we kind of came up with a magic weapon for you if you will there are three major steps in creating a multilingual game this really starts in the development so it's not an after fact but really when you're creating a new game when you're designing something from scratch that's when really you should be starting to think about what you do and how you prepare the game to be multilingual um by the way there are a lot of abbreviations here i don't know why but our industry abbreviates everything these are alphanumeric abbreviations it's the first letter then the last letter and the number of characters in between so g11n it's really g eleven
characters and then n uh localization is ltn and internationalization is i18n so there are 18 characters within i9 so you'll see that throughout the presentation but you'll see it everywhere so if you do a google search you're going to see i-89 best practices that's what really that's referring to now this is a continuous process you start with internationalization which is really a development task then you go into localization then you test everything and then you just kind of repeat that process over and over but this is the magic formula this is this is the best weapon that you have because if you start initially with that you know with the global audience in mind then you're gonna have much easier um process going forward so the first step is internationalization let's start with that um we're gonna kind of provide you with some best practices uh if you have any questions please don't don't uh hesitate to ask when we're developers and we're creating content we always want to think about the global audience what that means is first of all you should be able to display all characters
in all languages so right now you may just be in western europe but what if you go into asia right you need to be able to display different characters in asian languages it could also be right-to-left languages unicode is the best system for you to do that because it already allows you to do this now i have an example in there in english you have capital i which doesn't have the dot and then you have the i that has the dot right in turkish these are two completely separate characters if you've implemented unicode properly then you'll be able to display the capital i and the little one without the dot and then the capital one with the dot and then the little one so again these are some of the things that we've seen over the years you know customers have some issues with if you do the proper implementation it should be fine the next thing is separating all translatable assets from the code what you don't want to do is hard code is you know hard code translatable assets or translated translating let's say translatable text the reason for that is imagine going into one language you can just go in
there and change the text right but what if you're going into 10 20 30 different languages it's going to be a massive work and you're going to have some issues with the code base as well so what you want to do is have the functionality separated out completely create proper resource files like for ios you would have something like localizable.strings or for android you would have something like um look what is that called strings.xml so make sure that you're using the proper resource files this this system already exists all you have to do is use that instead of trying to hard code text in there this also includes things like images if you have a lot of images with text embedded inside it's very difficult for you for your translation vendor to translate without having to recreate the image itself so if you have to do it at least have it layered so the text can be separated out from the image itself it's just going to save you a lot of money over time the next ex definitely be mindful of the expansion uh spanish for example expands up to 30 sometimes 40 from english so
um we have an example here because of a design problem the text when it's expanded it covers up the graphics right for the characters that you see in the back this happens all the time sometimes it gets cut off sometimes it overlaps with another image so you definitely want to have enough space um one of the things here to expand the text you can't really see it but we actually use something called pseudo localization as a developer one of the easiest one of the best tools you can use is fake translations run through the software so that you know what it's going to look like when it's actually localized so before you spend the time energy and the money to translate content you can run either machine translation or you can run something called pseudo localization where you can expand the text add some identifiers to the beginning in the end but make sure that you understand how the real estate is going to react to the expanded translations
oops let's see i'm not sure if this is working now oh here we go okay there we go all right now we'll talk about some pitfalls as well definitely watch out for concatenations these are segments that are brought together to form a sentence the problem here is different syntax rules different grammar rules for each language so in english a lot of times it will make sense like if you say five images have been downloaded or 10 weapons have been acquired that weapon is a variable right it could be weapon or weapons it could be a bunch of different things item items the number five could be just zero or any other number in english it doesn't really matter english is very flexible but when it comes to romance languages you have masculine feminine agreements it's not going to work the same way if you have certain languages like czech or a lot of the eastern european languages depending on the number the ending
changes completely so it could be zero one two three or four in english you have either one or any other number so um be careful don't don't segment it out to a point where it's going to be very difficult for translators to come up with a way to translate the content i know these screenshots are somewhat small but here you have an example it says delete studies and then there's a number then there's a drop down for week weeks day days and then there's after receiver import the problem is these are all separate segments so if i'm the translator and i look at this i have no idea what the context is without seeing the ui which we're going to talk about in a little bit the next thing is hardline breaks because we have such small real estate on a mobile device we sometimes have to like force the line break to go into the second line right again in english it works but it doesn't work in languages like arabic or hebrew or japanese where there are specific rules to break the line called kinsoku rules here we have thai thai language is
very unique for example you have the entire sentence as one big word so in english or other languages we're used to seeing spaces right between words and you have some kind of punctuation mark in thai you don't have that the entire thing is one long word and whenever you see space it's the beginning of a new sentence so if you force the hard-line break in there you're gonna you know corrupt the grammar it's not gonna look right the next thing is um again language syntax being different in different languages you wanna be able to be you you wanna have a flexible ui you wanna make sure that the locale switching mechanism when it's utilized it can it can reformat the messages let's say in english you may have noun verb and then the object but in different languages you may have noun and then object and then verb or complete different ways so we just want to make sure that we're mindful of that okay the next thing is um right to left languages again arabic hebrew you can't
quite tell probably in that image but on top you're seeing a game explanation screen instructions in english and then on the bottom we kind of mimicked what it should look like in arabic so it's still in english characters but we kind of completely like flip the ui you want to imagine holding a mirror to the ui but you don't want to go overboard with it either in this example the text is flipped so i'm going to get closer to to be able to explain here the text is now flowing right to left compared to the top part but as you can see the images are the same whenever there's logic involved you do want to flip it for example here you do have back button which goes this way in play game which goes that way in arabic we want to flip that entirely because the logic needs to flow this way so back is now this way and play the game is this way so it's hard to think about it sometimes but if you just hold a mirror to the ui you'll be able to get it now when you don't want to go overboard is
this image you don't need to flip the entire image it's okay the other thing too is you know if you have like a table with bunch of column headers and things like that technically that's okay you can still leave it the same way it all depends on how much work is involved in doing this um finally you want to use existing i89 libraries or internationalization libraries there's a lot of stuff that exists out there we have clients in the past that try to implement some kind of virtual keyboard by themselves you know create it from scratch there are a lot of other things that they try to do you don't want to do that there are a lot of things resources that exist out there so you don't have to reinvent the wheel using the existing libraries will only help you and all programming languages have it um the operating systems are much better today especially for mobile so doing that only helps you guys so that was step number one which is internationalization again that was more geared towards development for localization there are other considerations that you should consider as well
first we want to kind of talk about how localization works in the first place so you have a developer that uses a variety of programming languages and with those programming languages again we talked about separating code from translatable text right we want to create a proper resource file again it could be localizable.xml xml or strings.xml file for for android and then localizable.strings for ios once you have a resource file it then gets sent over to your vendor they translate it they give it back to the same way they received it so you should have all the tags intact and you should have instead of english you know it's a key value pairing here's the key and here's what it should say in italian for example after that it gets deployed all types of different platforms and that process is repeated over and over again now you don't have to of course recreate resource files you can just add on to them but this is part of the reason why you don't want to use things like excel or csv sometimes it just makes it more
difficult to manage especially if you have a multilingual excel file it is used wildly but it's not the best practice it can cause character corruptions for different languages and it's just not the best practice but if you use the native resource files you're going to do much better now what the translator sees is quite different they don't get any of the context so all they see is a bilingual table essentially so you have the english on one side they make their translation on the other side we do have what we call cat tools or computer aided translation tools they have some things that help them like terminology lists what was translated beforehand but they don't see the context so it's really important to provide that context information for them because context is everything what we had to do over the years is really develop a tool that kind of ties the development into localization so in our tools we were able to display the context which is the screenshot from the ui identify all the strings that appear in that ui and then find out each text and what it actually says if there's a
corresponding translation then we can see that as well but let's just say you don't have a tool like this you should still be able to provide context to your translators by giving them you know here's the text like in the resource file you could comment out the context information like the back that you see here is not the back button it's your back right let's say it's a medical medical game um in fact this is so important i'm going to have an example in a little bit about how that you know the reuse of text or recycling of the text for different context causes issues but it's one of the easiest ways you can ensure quality is giving your translators the context information some other things create content for a global audience the texts don't have you know it's difficult for games sometimes because you do have some cool lingo right but think about a global audience the more difficult you make something or the more unique you make something sound the more difficult it's going to be to translate so again context is informal important but also think about the sounds make sure that
you're localizing the vol you know the voice if you have any kind of subtitles captions make sure you're translating those as well and of course the images and making sure those images are appropriate for different cultures as well uh by the way going back to the other one um one of the things is you know in in here you know green may be good red might be bad sometimes these colors do make a difference like in china it's the opposite red is actually good so i just understand your audience before you try to you know develop and go too far down that path the other thing is having unique string ids especially when you have the same text for different contexts that back question was a good one or a back example this was a mobile app for alzheimer's patients it was kind of a game that you would play on a mobile device and there were a lot of different body parts and stuff like that and one of the things was back but the developers or the localization engineers since they saw the same word they just started using it all over the place because the same word again back
button versus your back and it just caused a lot of issues in all other languages because it's not the case anywhere else save and save you know could be in different context so we want to make sure that we keep that in mind uh always maintain a translation memory it does two wonderful things for you one keeps terms consistent so you don't have to keep translating things if a translator goes on vacation for a month and now you use somebody else you know for a fact that prior you know previously translated content is going to be caught and then it's going to be the same way but the other aspect of it is it saves you money because you have to keep translating or paying somebody to review translations that have already been accepted and kind of cold golden the next thing is over the air updates um again we have to develop tools for our clients to do this because they want to be agile sometimes you want to launch a brand new language the problem with a manual approach is okay so i can make an update to a particular language a new string maybe there's a new feature
but that has to now get submitted to the app store right and it may be about maybe two three week delay depending on the test that they run and then it's now available on the app store for download but until the user downloads it it still may not be available on their mobile device so if you have tools that allow them to kind of update the strings over the air now you're going straight from the development all the way into uh the end user so you're skipping a lot of the you know unnecessary steps in between this of course only happens when you don't have like heavy functional updates on the app as well this is just for the string updates the next thing is the app store content itself this is how the game is explained right there's screenshots in there don't forget to localize that and make sure that it's consistent with the translations that you're using on the app itself as well finally don't forget community management and player support earlier again there was a great session about globalization and part of it is really you have now
a global audience so you have social media you have other aspects of it and uh understanding your clients that speak different languages but also being able to communicate with them in different languages is key to success of a game all right the final piece is testing test everything a lot of the times we're talking about functional testing we're talking to uh developers but at the same time you want to test the functionality in all languages especially when there's a manual process where you go to a vendor they translate content for you in excel files you then copy and paste and you don't really read these languages especially for character languages like arabic you have no idea what it's saying you copy paste in there all of a sudden you just realize you switched yes and no or download and cancel could be a huge thing right and if you don't have native testers you're not going to know that but this is a functional issue not really a linguistic one sometimes the wrong message is displayed in the wrong
language um you know the the game is in polish but then all of a sudden you're seeing error message in check so obviously that's not going to be a good look for the game itself use only native speakers to test localization so the linguistic quality must be tested by native speakers sometimes we'll have developers that look at something say oh yeah everything is in chinese we're good they don't speak chinese they just think that all these characters are fine but actually they're not they're issues with it maybe the font is too small you can't see all the strokes for example so you want to use native testers with that first one too i just want to add because earlier this came up when we develop games we always want extended gameplay right we want people to play the game as long as it can in fact we don't want somebody to beat the game within half an hour of just starting to it so that's that's a key aspect of it but then for testers they don't have a whole lot of time so if something takes days or weeks you want to have some cheat codes for them or some other ways maybe add some currency add some money in there
you want to have the testers be able to just kind of quickly go over all the features the of the game without them having to spend days and weeks to try to beat the game so that's a key aspect that came up earlier by um during a conversation be mindful mindful of units measurements dates time formats currency all that stuff must be localized it's going to make the game it's going to feel that this game was developed for those local audiences not necessarily not necessarily like designed for the us and then just you know after the fact translated ux is everything understand your audience if there's no good customer adoption rate in a certain language for example understand why maybe talk to them do some qualitative quantitative analysis it should all be part of it i think we do this on some greater market research initiatives but we don't really do it on a localized manner meaning okay i'm all over latin america it's great but then for some reason in argentina i'm not selling my game or people are downloading it and they're just deleting it the next day why is that make sure that you're
understanding your audience well finally do not forget about accessibility again this came up today earlier it was great um but you want to be more inclusive the reason we want to be global yes we want to make money right we want to get more international revenues but at the same time we want to expand we want to have a big global community using our games you want to have that same inclusion for folks with disabilities as well now you may think well if somebody's blind how are they going to play my game and all the stuff there are definitely ways to do this i think wikag or wcag web content accessibility guidelines gives you some great ways to do this but just think about certain things that you may not be aware of for example a lot of flashing content like those ads and things like that that could give somebody with epilepsy seizures so we want to be careful with this um somebody that has bad eyesight right two small characters it's hard to read especially character languages um you know color contrast issues and honestly an accessible product is a good product for everybody anyway so just
think of it in that way like if i have my phone and there's a dark mode light mode it helps me it doesn't have to be that i have some disability um you know you're outside the sunshine shines through your your screen um it would be great to be able to see the differences you know like the high contrast mode things like this so again an accessible product is a better product that's it i think we're kind of over time but if there are any questions at all
The keynote presentation outlines a comprehensive strategy for overcoming the technical and linguistic challenges inherent in developing multilingual games. The primary thesis posits that globalization should not be an afterthought but an integral component of the initial design and development process. By adopting a structured approach—internationalization, localization, and rigorous testing—developers can create more inclusive, accessible, and commercially successful products for a global audience.
The presentation emphasizes internationalization as the foundational step, urging developers to separate translatable assets from code, utilize Unicode for character support, and design flexible user interfaces that accommodate text expansion and varying syntax rules. Key pitfalls identified include hard-coding text, using concatenated strings that ignore grammatical nuances, and failing to account for right-to-left languages or specific line-breaking rules. The speaker advocates for the use of existing internationalization libraries and pseudo-localization tools to identify potential layout issues before full-scale translation begins.
Localization best practices center on providing translators with necessary context, such as UI screenshots and unique string identifiers, to prevent errors caused by ambiguous terminology. The speaker highlights the importance of maintaining a translation memory to ensure consistency and reduce costs, while also recommending over-the-air update mechanisms to bypass lengthy app store review cycles. Furthermore, the presentation stresses that linguistic quality must be verified by native speakers rather than automated tools or non-fluent developers.
Finally, the scope of the discussion extends to cultural adaptation and accessibility. Beyond mere translation, developers are encouraged to localize units, dates, and currencies, and to conduct market research to understand regional performance disparities. The session concludes by advocating for inclusive design, noting that accessibility features—such as high-contrast modes and careful management of visual stimuli—ultimately improve the user experience for all players, regardless of ability.
Comments