We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Community based translations of games

00:00

Formal Metadata

Title
Community based translations of games
Subtitle
Why babelfish ain't enough
Title of Series
Number of Parts
199
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
The battle for Wesnoth is in the rare position of being an open source game project featuring many different translations for its huge amount of content. Currently Wesnoth features 54 translations of which 15 translations of the stable series are more than 90% complete. This session is about sharing the history behind this and factors which can help projects gain a stable internationalization community. The talk will focus on best practices which have shown themselves as working nicely for getting the translation community started as well as keeping translators happy. It might also show how the translation process is connected to the release cycle and what common problems for game translations are.
Game theoryMultiplication signCompilerCompilerString (computer science)Formal languageMereologyDifferent (Kate Ryan album)Ring (mathematics)Level (video gaming)Open sourceStrategy gameSingle-precision floating-point formatFlow separationScripting languageComplete metric spaceProjective planeSeries (mathematics)Web pageWordUser-generated contentUser interfaceNumberAsynchronous Transfer ModeFood energyFrequencyModel theoryVideo gameData managementInternationalization and localizationFrame problemDoubling the cubeSpeech synthesisSoftware developerTheoryLecture/Conference
Complete metric spaceCompilerView (database)Line (geometry)Data structureHill differential equationLecture/Conference
CompilerVideo gameMereologyProjective planeData managementGoodness of fitFormal languageTouchscreenSoftware maintenanceDomain nameInternationalization and localizationContent (media)Fitness functionHeegaard splittingComputer fileData structureString (computer science)
CompilerStatisticsSoftware developerGame theoryDisk read-and-write headGoodness of fitRevision controlExecution unitMultiplication signHill differential equationFormal languageContent (media)Term (mathematics)String (computer science)Proof theoryObservational studyMatching (graph theory)Online helpSeries (mathematics)ForestNeuroinformatikRange (statistics)FamilyWordClosed setSpring (hydrology)Data dictionaryElectronic mailing listCompilerFrequencyStability theoryNormal (geometry)Fuzzy logicComputer animationLecture/ConferenceSource codeXML
Formal languageContext awarenessWater vaporDirection (geometry)CompilerMaterialization (paranormal)Game theoryReal numberString (computer science)Physical systemOrder (biology)MereologyLecture/Conference
Formal languageGame theoryCompilerNormal (geometry)Process (computing)Computer fileMereologyCompilerDifferent (Kate Ryan album)Identity managementXML
Open sourceSoftwareCompilerLine (geometry)Term (mathematics)Design by contractAreaResultantCompilerGame theoryTraffic reportingSimilarity (geometry)Different (Kate Ryan album)Internet service providerComputing platformFeedbackComputer animationLecture/Conference
CompilerNoise (electronics)Game theoryString (computer science)Multiplication signData managementMereologyTheoryFormal languageProjective planeTable (information)TouchscreenInternationalization and localizationRevision controlExclusive orGoodness of fitLecture/Conference
Medical imagingFormal languageRight angleRevision controlDrum memoryCompilerLimit (category theory)SpacetimeSound effectIntegrated development environmentGenderTerm (mathematics)Interface (computing)Line (geometry)String (computer science)1 (number)Point (geometry)Theory of relativityAreaComputer fontDifferent (Kate Ryan album)CompilerComplete metric spaceCodeTexture mappingLecture/Conference
Execution unitContext awarenessForm (programming)Content (media)Dimensional analysisCharacteristic polynomialPhysical systemFormal languageTerm (mathematics)Different (Kate Ryan album)Game theoryComputer fontXML
Formal languageCompilerPhysicalismArithmetic meanPhysical systemContext awarenessNumberMedical imagingRevision controlForm (programming)Online helpMultiplicationLecture/Conference
CompilerGoodness of fitComplex (psychology)Formal languageElectronic mailing listTerm (mathematics)Video gameDependent and independent variablesCoordinate systemWordDesign by contractIntegrated development environmentMaschinelle ÜbersetzungProcess (computing)Harmonic analysisSource codeXML
Software testingCalculationComputer fileFormal languageForm (programming)ResultantEmailProcess (computing)CASE <Informatik>NumberSpring (hydrology)CompilerWordIntegrated development environmentLine (geometry)Speech synthesisProjective planeCompilerGame theoryString (computer science)1 (number)Software developerLecture/Conference
Form (programming)NumberDifferent (Kate Ryan album)Field (computer science)Group actionSource code
Patch (Unix)Line (geometry)Coordinate systemFormal languageMereologyElectronic mailing listCompilerForm (programming)Software maintenanceDifferent (Kate Ryan album)ConsistencyComputer animationLecture/Conference
Normal (geometry)DialectWater vaporElectronic mailing listMereologyPhysical systemCompilerForm (programming)Computer fontString (computer science)Order (biology)Source code
Selectivity (electronic)MereologyElectronic visual displayLimit (category theory)Content (media)Form (programming)CompilerString (computer science)Overhead (computing)Set (mathematics)Game theory2 (number)Formal languageInternet service providerElectronic program guideWordCodeComputer fontLecture/Conference
String (computer science)Configuration spaceComputer fileDescriptive statisticsCompilerMatching (graph theory)TouchscreenIdeal (ethics)DatabaseSource code
Formal languageFigurate numberRevision controlTerm (mathematics)Connected spacePoint (geometry)Different (Kate Ryan album)Projective planeString (computer science)Key (cryptography)Data dictionaryMatching (graph theory)WordCompilerSingle-precision floating-point formatIdentity managementQuicksortComputer fileGame theoryContext awarenessAxiom of choiceFitness functionTheoryDatabaseLine (geometry)Multiplication signOpen sourceAuthorizationRule of inferenceNumberSpacetimeElectronic mailing listStreaming mediaComplex (psychology)Right angleWater vaporTouchscreenNatural numberComputer animationLecture/Conference
String (computer science)Matching (graph theory)Game theoryScripting languageFormal languageCartesian coordinate systemMultiplication signSource code
Right angleFormal languageStatisticsCompilerCompilerPoint (geometry)Game theoryElectronic mailing listSoftware developerProjective planeMultiplication signGradient descentCodeIntegrated development environmentProduct (business)Software maintenanceOpen sourceSet (mathematics)Revision controlRule of inferenceLatin squareProteinUniverse (mathematics)Matrix (mathematics)Performance appraisalMereologyModel theoryWeightQuicksortNormal (geometry)1 (number)Volume (thermodynamics)Web pageSlide ruleLecture/Conference
Transcript: English(auto-generated)
We don't know the audience. Yeah, it's relaxing. Okay. Welcome everybody. It's nice to see that it's not overcrowded this time. Finally some breath and air in here. Now, translation of games.
Who of you participates in game development? Okay, I know those folks do. Now, why should someone want to translate a game? I don't know. Does anyone of you speak another language than English?
Maybe a mother tongue? Sounds like. So, how well do you speak English compared to your mother tongue? How well does your nephew or niece
speak English? If they want to play the game they need to understand it. So you need to translate it. Or there may be some people like French people who don't like to speak English, who want to play it in French. Can happen. And the main reason to translate games is
the main reason why we do anything we do. Because it can be done. Okay, I'm German, as you might hear my accent. Some strange stuff, yeah. I'm working in Westloth now for some years. I'm doing a lot of stuff. I don't really know what I do anymore, but I'll just do it somehow.
About Westloth. If you were here in the last talk, you already know it and I could skip it. Was someone not here in the last talk? Sorry other guys. I need to go through this. Westloth is a turn-based strategy game. Fantasy scenario, single player, multi-player, blah blah blah blah.
The main part though, where it's different from many other open source games is that it's translated into many languages. 53 languages in the Last Stable series. How many languages can you count now? I guess you won't be able to list all of the languages we have. Not all of them are completed, sadly. We have 7 translations which are at 100%.
Those are, for example, French, German, Polish, British English, but more than 18 translations are at least 90% completed. So that you get an idea of how much work it is.
How many of you have read the Lord of the Rings? Several. We're on the level of the first two books of Lord of the Rings to get 100% translated. Just to give you a rough number. That's user interfaces, that's campaigns,
that's translating the manual, all the fun parts which everyone wants to translate first. That's only 15,000 strings. Strings can be one word like ORC or ORP, but it can also be a complete page in the manual. If we now look at user-created content,
if you were here in the last talk you saw that there are like 500 campaigns and eras and stuff like this available. We're talking about 4 times the size. No one manages to complete translate yet. Now, you're not just sitting
here because I'm a good speaker. Would be nice if you were, but who knows. So, what I want to tell you is some basics about internationalization, what we do, and what you might want to do. Oh, thanks. You're welcome. Now, for translations
we're using GetText. Why? Because it works. There are good tools, it's easy to use for translators, and with some script hacking it's possible to not just use it for C++ code, but also for our own language which we have in the game to define stuff. Now, in Wesnock
we use it for C++, for Lua, and WML, our own language. The problem is if you're talking about translators, not all of them are coders. So, there might be some people who are not techies, but who want to contribute to the game,
who are good in English, but even better in their mother tongue. Mark is a coder. You are a coder. You have translated some stuff.
He's getting old. So, what you basically need to do to really get translators into the project is make it easy. If there are barriers, reduce them but don't make it too easy. What I'm not saying is contradictory, I know, but it's intentional.
The matter is, if you're translating a game, you have a complete storyline. The characters in the dialogue in one scenario still need to feel similar in the second scenario and in the third scenario. They can develop, yes, but if he's saying dear lord, how may I assist you? And the next one is
hey yo man, how can I get this stuff done? It doesn't fit. So, you need to be consistent there. So, if it's too easy if you have some drive-by translations, it can easily get down the hill easily. Now, we have some strange structures
built to make it easy for single translators. The normal translation consists that you have some translators, you have some translation maintainers who feel responsible for that language then we have those internationalization managers who handle the technical part like receiving the files and making sure that they are still working and then we have this strange guy called release manager.
He's really freaked out, but... Then we have the text domains. If we had those 15,000 strings all in one huge file, it would be difficult for a team of people like five people to work on the translation cooperatively. Because of this, we have split it.
What makes sense in splitting? Okay, if you have some content which fits together like one campaign, make it a single text domain. This way, one translator can take care of this one text domain and it can feel consistent somehow.
Now, we're using, as you can see, many, many tools. Some of them are websites, some of them are scripts. Will all those apply to your projects? Of course! Not. Now, the main parts are, if you were in the last talk, we have this part about competition.
Evil competition. This is no competition. We have no ranking there. We don't show those languages first, which are completely translated, like those. And the British English, who are not complete, below those. We don't do this. Right? Okay.
So, why doesn't this help? There can be good competition. In the early days of the development of the game, we used those statistics to encourage the translators to, for example, be faster than the Swedish team. They were very strong, many people
working on it had a good head start, and the German team was playing catch up with them. It was a competition for us to see, hey, now we can finally get them. We made it, of course. Now, what you see here is the units page. What you see here is the German version.
It's not saying units, it's saying einheiten. Now, instead of close combat and range combat, it's lakam and fernkampf. The matter here is, if you're working on a game, you need to make sure that the content is consistent.
So, if in one explanation, you name it, okay, use range combat, and in the other, you translate completely differently. Players might get confused. Confusion is always not to be done. Now, having such a list allows translators to look up the terms to find the correct terms
for their language. There might even be some better ways to get it done, to have some real dictionary about the stuff, but someone needs to implement that first. The normal translation, as mentioned, for translations, there are good tools. One tool we always
recommend is poedit. Don't spoil all the fun. As you can see here, it's basically very simple. You have the English string. That's how gettext works. It looks for this exact English string, and will insert this translation.
Oh, wait, this one is fuzzy. As you can see here, those three translations are identical. That's what makes gettext quite good. It looks for similar strings when a new string appears, which it doesn't know yet. We'll put it in, and mark it as fuzzy. You as translator then go in, check, OK, palm forested hills.
OK, it's not just forested hills, it's now a palm forest, so I just needed to adjust this part so that you can understand the stuff. This saves you some work sometimes, but it can be often also very far away, especially if you're looking for short terms. In the old days, we had the term orcs in the game. Three-letter word,
easy word. For the help menu, we added the word orb. gettext saw oh, it's a 66% match. It needs to be the same. Fuzzy. So yes, as human, still needs to review this.
Now, as I mentioned, I'm also somehow responsible for getting new versions out. The problem is, translators are the last guys to get the final stuff, and need to be able to get it done before the release is out. It's always bad if
you move against a moving target. Sorry camera guy. So, the problem is, if you are changing all the strings all the time, when should the translators get started? You need to have some period of time in which the strings are frozen, where you don't change
the stuff, so that in the end, the translators have a chance to catch up. Translators will always play catch up. You as developers can create new stuff all the time. That's easy, but getting it translated in the end, it's work. It needs weeks. Especially if you want to proofread.
So, string freezers. Good tool. And if you have stable series, it's even a better tool, because in the very first release, maybe only one or two languages made it. But in a later release, some more languages might be completed.
So that the players who want to play in that language then finally can do so. Now, if you want to implement such a system, strings, if you match them, like say, attack fire warrior, like variable, with next variable, sword.
This could be four lovely parts. As a translator, they will kill you if it's always appearing in this direction and order. In some languages, you will have to change order. So, always make sure that if you have something in the game, make sure there's a context, that you put stuff together. Otherwise,
you will have some interesting problems. Then, once you know about some problems, every game will have different problems there. None are identical. Because every game is different. Because not every game does have you.
Many problems will be identical, but some are special depending on the translations you have, depending on the team members you have, depending on the language you're using. So, think about translators. Update the files.
The matter is, GetText is based on some generated text files, which need to be matched in the real text. So, if you only update shortly before release, translators have no chance to start the catch-up process early on, even if they know that a part of the world will be lost. There are some more
files than just what is in the game. So, make sure that those are translatable, too. If eventually all the normal game stuff is done, maybe translators still want to translate something. Don't reinvent the wheel, blah, blah, blah. Most important part,
the last line. You can read, right? Now, what motivates a translator? The first question you should ask yourself is, what motivates you to work in open source software? To code stuff? To look through stuff?
To improve things? Why are you doing this? I think most of you will not say, because I'm getting paid for it. So, translators are not so different from other contributors. Similar motivations are there. A lot of it is ego. Let's face it.
They want to see, it's done. I have done it. I've contributed. Then, make sure to listen to the faults. If they have something to say, it might be valid feedback. And, they might need some platform to exchange with other translators, provided. Most of you, if you're working on a game, would have some
formal stuff. Reserve some area and therefore translators. It can't hurt too much. Now, how do you start getting translations? As you mentioned, many guys of you are not native English speakers. So, you probably have a different mother tongue. Why do you not start the translation? There's no need to complete it.
But, start it. If you lay a good foundation, others might see it's possible to translate and ask, how can I help? That's basically how the translation in Westnalt started. Like, in the old days, the translation manager, internationalization manager's young daughter
started playing. She just understood Swedish. So, she wanted the game to be translated somehow. So, she spent some time herself on it. Now, use good tools. Like I said, if you have similar strings, it's always good if there's an easy way to move stuff over.
If you have to repeat the work over and over, you would also get annoyed. Eventually, you would also leave the project. The same applies to translators. As mentioned, the competition part. What we have done there, instead of just having this table, we went a step further.
We told the translation teams, the translation team, to get to 100% first, will get for one week the announcement of the new version in their language, exclusively. The English version of the announcement will only be out a week later.
Stuff like this is motivating. Now, I've talked a lot about theory. Let's come to the fun part. If you were in the last talk, you already know the screen. Now you're seeing the German version of it.
What do you see on there which is translatable? Let's first start. There are many buttons, there's text. Obvious, right? Now we have the logo. It might work in some languages, in others it might not work. So, make images translatable.
Now, a step further, we have a chart here in the background with some labels on them. So, yes, textures might need to be translatable. This creates a complete new area of problems in the end because if you have such a label and the label size is depending on the string, you see where it's going?
Here it's beneficial that I'm German. But also if you're looking here at those buttons, as you can see, this term is longer
than the other ones. It's the longest term we have in there. It's even longer than the English terms. All of them. So, the button sizes here automatically adjust based on the longer string. Why isn't it just longer? Well, that would be too easy, Fabi.
There are always two ways to fix problems like this. Way one, make it on the code side so that the size of stuff is adjustable in reasonable limits. The other solution is have the translators find a good way. You will find many areas where it's just not possible for translators to find a good way.
Very well loved by translators are abbreviations, hit points, HP. Everyone knows this who's an English player. Now, if your little kid is playing it, doesn't the kid really know what HP stands for? Are you sure that in
your language there is a two letter abbreviation for what hit points mean? Stuff like this can be problematic. So, when designing the interface, make sure that some people are involved who speak languages which are more verbose.
What's also very nice is having Asian people involved. Their translations do not necessarily require more vertical space, but they might require different font sizes to have it readable.
At some point you have to draw a line. We somehow support right to left. We don't support up to down and down to up.
Now, I basically said all this stuff, which I didn't mention yet is genders are fun. Genders are huge fun, because genders do not only have an effect upon the string itself, so like the unit, so
we are the prince, we are the princess. That's not in English, right? Now, we have the warrior. What's the female term for warrior in English? It's still warrior. Easy. In German, it's Krieger and Kriegerin. Now, if we go a step further, like say, I think it was in Hungarian,
we have some terms which describe characteristics of a unit. Like a unit is quick, so it can move fast. Now, there is no difference of this term in German. But in Hungarian, it matters, because if it's quick for a female, it's different than quick for a male.
So don't underestimate this. Another nice one, context. Preferences often have the term general. Now, we're talking about a military game. There are sometimes units called general. So you need to have a way to distinguish between the context.
If something is really in a different context, make the difference. It might work in German, it might even work in English, it might work in many other languages. You will come across some languages where it doesn't work. So make sure you have a system for it. Now, you already mentioned left to right. Fonts.
I already said that. What I didn't say yet is plural forms. Now, the best example is you have still one gold piece to collect. You need to collect ten gold pieces. Many languages you probably speak have one and many. Many languages you don't speak
have one, some, even more, many, really many. And how about languages that have a special form for numbers that end in one, two, three and maybe
a multiple of twenty had a prefix. There are languages with five or six plural forms. Really strange rules, but eventually they start repeating. So trust me, when you look at translations, you will find the worst stuff imaginable. Now,
as I already said, text, easy. More text, still easy. Whenever you have images, you might want to allow the people to provide translated versions of the images, especially in the context of a help system.
As I already said, there needs to be some complexity to it. Make sure that the teams are, the other translation teams, when new translation is started, already have some lessons learned from the older teams.
One of those lessons is the list of common terms. It really eases your life. Now, if you make sure that some single persons of that team feel responsible for domain, good start. Coordination. If you have a team, it's good to have it.
Now, as you might have already seen, the basics of just translating a word can be easy. There will be many things which you don't consider on the first look.
So if you implement a translation system, it's good if not a US person who only speaks English implements it. Someone speaking two languages is a good start. Making sure to talk to people who speak more languages is a very good start. And it's even better if you have those people implement the translation system,
try to translate a little themselves. Then they will easily see some shortcomings. Abbreviations. Lovely. Now, do you have any questions? Do you have any comments?
Do you dislike translations?
Which is only used in Japanese culture for pornography and seduction. And do you have something to cope with that in your game? If Japanese kids are playing your game
does it show green text? We don't have it yet as you hear. I wasn't aware of the problem. As I mentioned, he will always come across new problems. We haven't. We don't have it yet, but he will work on it. So, when you're implementing features of the game
which are text heavy, what are your best languages to test for corner cases? I know French is good for long. German is also pretty good. There are other stuff like top to bottom, left to right, special characters.
Left to right, you first need to have a language. Someone speaking a language which does it. There are just a limited number. Arabic, Hebrew, those are the common ones. Most projects would probably not have a developer speaking those languages. Try to reach out into your community.
I'm also asking what kind of problems I encounter which would be sort of obvious when I try a specific language. As I said, I have only a string, but I bring you to something else. How to see the problems. That's a good one.
You won't be able to notice in most cases. No joke there. If you don't speak the language, you won't be able to notice many of the problems. The obvious glitches you will notice. But if you don't speak, say, Hebrew or Arabic, you won't be able to tell if it's from left to right or
right to left.
There will be translation problems which are in releases. It's something which GetText supports.
GetText does support it. You just need to make sure that the string itself is marked as containing a plural form and then GetText has a little support for it. In the header it's defined for the language, the available plural forms. Let me just open a file to show you. Here you can
see the header. You see one line in here for the plural forms. As you can see here, we have two plurals and there's a plural if the number is not one.
So that's a pretty simple rule. I think Hungarian has a different one. Polish? So, you can see
it looks a little different. But GetText also already has this feature. The tools know that it's there and they will then offer you the fields for those plural forms. So the support is there. You just need to know where the support is required.
That's a very good question. Reviews.
That's why I said it's good to have translation maintainers. Basically the translation maintainer is responsible for consistency. It depends on them to look through patches that they get to talk to people to define the basic line to take and handle those basics and coordinate between those.
How good you can actually do it? Let's say it this way. We have English US and British English. It is possible to support different languages.
Okay. What you can see in here is already a tiny part of the list. As you can see in here this looks very Arabic to me.
Then we have the normal Karelian characters. We have runes. We got some Hebrew. That's one of the Chinese dialects or is it Japanese? I don't know. That's definitely a Chinese.
We have a definition for this. Where we have ...
So we just have a definition of the available fonts. But the most important part is we have a list of fonts. Actually two lists. The very first string which every translation team should translate is the font order. Because the font order
there defines which font is used for them and if a character is not found in that font the next is tried and so on and so on. It's a pretty simple but still working system. It might not work for the translation selection. There it might be broken and showing wrong characters.
So for example we have the problem with Chinese and Japanese. They basically require different fonts because some of the characters have the same code but should look different. So a Japanese might still recognize the character but it's just wrong for them. Since they are still able to recognize it, it's good enough for the selection. But for the actual display
then they are able to define that the different one is used. First one is have you isolated
so that the strings could be reused in another game for example if someone wanted to make an FPS as opposed to an overhead game or something like that. It might also be a way of bringing in new translators if you have another game which is using the same set of strings. The second question is thinking of this as a language education tool.
Do you provide pronunciation guides for example Japanese and Chinese you can write extra characters underneath your kanji or your pencil to indicate how to say the words which is otherwise impossible to forget. Part two that's easier to answer, no we don't provide this. Part one we basically directly extract on the fly from
our content, the strings. So basically to show you an example, here you see one of our
config files and here you see a story screen. We have this description text and it's marked with the underscore translatable. Those strings will then be taken out of this file and into the PO file. It will then
appear in here as string. So that's basically all we have as database. As you can see here in the string you have the ID and get text will just do an exact matching. So it will look
for is this string appearing there? Is it exactly the string? Okay, if I find it, I replace it with this string. There are some more slight rules required like you always have to have the same number of new lines at the end of the string, stuff like this. That's technicalities. It's basically just doing a string matching and replacement.
How many times does the world need to have the word warrior translation in three different languages? Especially in the open source community where we use a really cool thing and also where you have two projects trying to solve the same problem. There are ways in the tools to create dictionaries.
Basically you can use dictionaries in those tools and they will automatically create some stuff. The problem is if you work it inside longer strings, it's all for nothing in the end. It will be doing exact matching. So as long as you have the exact term there, okay. But if you have the word warrior in let's say
or evil mage. Very common term in fantasy. We got it right here. But the translation tool will have problems to make sure that it's really the correct connection of the terms. Languages are just complex.
There is a project that tries to collect all this translation data from different projects. I forget its name but they are trying to get some sort of unified translator or something. We do have tools which
allow us to migrate strings which are exact matches from one file to the other. So if we see that in one file we have the word mage, we can easily, if it's just this single word and if it's identical in string in the other domain, we can easily migrate it over.
It's some basic text matching stuff like this. That's possible, yes. That's also possible with some of the tools that you build dictionaries and have them automatically use that for the files you're working at. But it's still a pretty hard problem. The thing is, this essentially is building a translator. A translator is not a solved problem. You can translate warrior from English to German, it's fine.
You can translate it in Polish where you have nine or eight definition words where in English you don't have any definition. And the point is where we can translate it but it won't be jumping out of context. Does it mean a contextual dictionary though where warrior in a particular context
can be reused? How many differences are there between fantasy words? I don't believe there is a language where there is a mythology to define a context. And you have different needs for every project. We like to have some shaped
English that sounds a little bit medieval and he also wants the translation to be sounding old school, yeah? When you just take a string out of a library and translate it to something else. Imagine for example
if I'm a new game author and I also have a medieval world, which is quite a common setting, it's fantastic for me if I make a compromise with my choice of language and say well I'm just going to use the strings from your project because I know if I do that and I make my world fit around them then I can reuse all this other stuff that you guys have done to make the game happen faster.
As mentioned, if you know that there are some games with a good translation, you can in theory build this database yourself and apply this to them on your game. So that would be a probably good starting point for some basic terms. So yeah, that should work. We haven't done it but it should
work. I have one more question. What I see here is that you don't use string keys in your content, you just use English version to define the other languages. So what happens if somebody figures oh there's a typo here or if it doesn't make sense I'll fix it?
We have a lovely tool in here which is pretty empty in this version
but in this version it's not as empty. We have a basic tool which does string matching and replacements. This way if we just fix a typo we enter the broken text, fixed text, run the script no fuzzy, done. That's what I also
meant with use tools. Any more questions? So many languages is kind of unnecessary. For example I saw Greek I'm Greek and I know that no one in Greece
wants to play a game in Greek. For example a D&D version came out in Greek for the game. No one played that. It was just inside a joke for the whole community that all of these things in D&D which is pretty fun. I also saw that the guy who made the translation
discussed here it's el nikai and el nikai in English was stupid. It's el nikai Greek because el nikai in English is Greek, it's not el nikai. So it's almost awesome for a translation that no one but no one is going to use. We are an open source project.
For example the guy here said the kids can't play. Most kids in Greek after 12 years old, they can't play a game in English. Almost all of them. He has a lot of story. I mean you did when you were 12 right? He didn't try to follow the story.
I understand your question. How do you decide Honestly our point on this is we don't care. We do have a Latin translation. Who
would play in Latin? Honestly. We do have this translation. Why do we have it? Someone came to us said I would like to do a translation to Latin. So if anyone wants to translate to Klingon, please ping me.
So my point is, instead of following 40 languages and 90 percent of them you can just have 10 languages and be correct through and through. From start to end. No, doesn't work. Because those who can translate to say Greek
might not be able to translate to German. But if someone wants to translate to Greek, why stop them? The question is, if someone wants to do the work, why stop them?
You're not paying them. Okay, if we're talking about some business environment. If we're talking about some product which is meant to be sold. I understand the point. If you need to hire translators
give them money. I understand it. If all you need to do is provide infrastructure. If they want to and are able to. But they already want to do the translation. Otherwise they wouldn't have told us they want to do it.
In our experience there is like zero overlap between translators to say Spanish and contributors to code. So there's really no reason to stop someone from translating to their language. Because it will make them happy and it will make your feature list look awesome. If you can say, we have translated our game into
20 languages, people will be like, wow, you must be an awesome big project. But I have to slightly disagree with you there. Many of our developers who are not native English speakers helped in their respective translations. Even if it was just for two or three pages, they did help a little. So yes, we took some development
time away. But still it's a good way to kick start translations. For example, text from right to left. Just like 20. And 20 people probably just play with you. For the specific language. That's right.
Do you have any statistics on the language usage? No. We have no statistics about this, sadly.
It can be. It can be. The matter is, you need to have a translation team with a maintainer who is something like, as Fabi said, a dictator. You need to have some set of rules and a person who sets some standards there.
If you don't have this, the quality will suffer. That's right.
The best example for this is, could you please wait a little? We're not done yet. The best example we have there is Asian translation. The translators to one of the Chinese versions said, hmm, this mythology
with the king and the heir to the throne, it doesn't really work nicely. But if I make him a descent of dragons, it works. So he rewrote the story to match their methodology somehow. Yes, it's a huge amount of work. So the quality
between translations is different depending on the people working on it. Just as your code quality is. It's basically all the same. No matter if it's artwork, if it's code, if it's translations. You have good ones, you have bad ones. And you're happy about all of them.
Anything else?