10 ms·
Localizing “Papers, Please” (2014)
- haikuginger 9y agoThis article makes me unreasonably glad to be working in a framework (Django) with good i18n tooling and few special needs re: textual images.
- raverbashing 9y agoDjango solves the pluralizing issues (with some limitations) but it won't (can't) solve gender issues in translation. See https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#pluralize https://docs.djangoproject.com/en/dev/ref/templates/builtins... It doesn't help when the plural is 1/2/many or something different (example: Arabic/Icelandic, etc) http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html http://docs.translatehouse.org/projects/localization-guide/e...
- haikuginger 9y agoDjango provides ungettext for the pluralizing problem, and pgettext, if implemented conscientiously, for the gender problem.
- mproud 9y agoThis should be amended as (2014).
- rasmafazi 9y agoSometimes you just have to bite the bullet. For interesting subjects, which always have global reach, the virtual conversations are conducted in English. There is also a place for vernacular -- it is part of people's cultural identity -- but not in a formal knowledge setting. English is a bit like Latin used to be: the language of knowledge, technology, and business. If the subject has global reach, you will miss out on the interesting bits of knowledge, simply because you are trying to do it in vernacular. Doing anything in vernacular, will just lock you up in a small and uninteresting national silo. Nothing of any interest is national. But yes, I use vernacular. I also speak it with my kids, but I don't read it -- unless it is poetry or literature -- and I don't use it in software or in business.
- eropple 9y ago> unless it is poetry or literature ...So, art? Like games?
- rasmafazi 9y agoWell, the more you start saying things that are closer to the truth, the more that you get downvoted by the populace, that does not want to hear it. They insist on bringing tithes and other offerings to their false gods, the Bahaal, in which they believe, and in which I don't. So, yes, there is a place for vernacular as part of your identity, and yes, it is ok to translate games for kids, but you won't be able to infinitely delay the inevitable, which is to switch to English for serious stuff.
- Ralfp 9y agoYou are being downvoted because you are ignorant of massive population of people who consume work of art or other, but who aren't multilangual. > it is ok to translate games for kids Big thing that lets my father (factory worker who's 50 years old, no languages other than his father's one) enjoy Playstation 4 is the fact that Sony does insane amount of work to make as much as possible translated to Polish language. The Last of Us as well as Uncharteds which in no way are games aimed for kids received full polonization. WipEout Omega Collection has been polonized as well. Same goes for 3rd parties - Bethesda's games are fully polonized (this includes Fallout's, DOOM and Skyrim), CoD's are polonized, EA's games are polonized (Mass Effect's, NFS), etc. ect. There are many adult consumers who are more comfortable with media in their native language for one reason or another. Blizzard even went as far as to declare that every game they'll release will be localized on level that would make it par on native production. They are going so far with it that they are replacing US-specific jokes with local ones.
- rasmafazi 9y agoWell, in their own interest, it may be better to bite the bullet, and learn English. I ran into my own first book on programming at the end of the eighties, when I was fourteen. It was an old photocopy of Borland Turbo Pascal, in English. There was no translation available in vernacular. So, either I gave up on programming, or else I just had to get used to reading these things in English. Later on, programming became my full-time profession. If I hadn't done the effort of doing what it takes, and figure out English, today I would probably be queuing for unemployment benefits or another social handout. My kids would now be begging in the streets, instead of happily enjoying their costly private tutor and cosy private school. The kids obviously understand vernacular, but the classes are firmly in English, if only, because the other parents also know what time it is. The false beliefs and pagan gods of vernacularity make it so that the rich are getting richer, while from the poor, even the little they have, will be taken away from them.
- teej 9y agoFor those who aren't aware: Papers, Please is a video game about paperwork. You play a border agent in a fictional eastern bloc country, checking passports, visas, and work permits. It's surprising and tense and incredibly good. It's currently on sale for $3.99 on Steam, I highly recommend it.
- soup10 9y agoit's a bore, but maybe politically interesting for some
- DrJokepu 9y agoThat's like, your opinion. I didn't find it boring at all.
- sillysaurus3 9y agoIt gets kind of tedious to be honest. But it's worth playing.
- booleandilemma 9y agoI just played it for the first time after seeing it on HN tonight. It's entertaining in its own way and I'd recommend it, but as I stepped away from my pc it made me feel grateful that I don't work as a customs officer in real life. I suppose that was the intended effect :)
- kbenson 9y ago> but as I stepped away from my pc it made me feel grateful that I don't work as a customs officer in real life. I suppose that was the intended effect :) That and a few others. IIRC, it gets fairly insidious quickly as you try to juggle values at varying levels (protecting your family vs general principle, for example).
- teej 9y ago
- eropple 9y agoI would recommend against one's own XML format and doubly against CSV/some homegrown delimited format. Instead, consider something like Excel 2003 XML (one of the easier ones), OpenDocument (also pretty easy in many languages), or Office OpenXML (easy in .NET, a bit harder elsewhere) to store your translation data. Potfiles are another option, but the tooling is pretty clunky and, in games in particular, people don't seem particularly attuned to their use. And they're not great for editing, though they might be for storage--when dealing with tabular stuff, it just makes a lot of sense to use tools that present a tabular interface. It makes life a lot easier.
- microcolonel 9y agoIf it's literally a table of strings, why on earth would anyone use ODF/OOXML? CSV is perfectly fine for editing in any functioning spreadsheet software, works reasonably well in version control (especially since a given commit won't touch multiple columns). In his case, he's using the XML format which Haxe will parse into compile-time-checked references right in his source code; sounds like a great reason to use this standardized(but Haxe-specific) XML format.
- et1337 9y agoCSV has no formatting. Who wants to resize columns and set up text wrapping every time you open the file. Could save it as .xlsx and then export to CSV, but that's another step and it's not hard to parse simple spreadsheets in XML. Worth it in my book, because it enables fan translators to contribute easily since everyone has Excel.
- douche 9y agoDon t use Excel to edit csvs. It makes a hash of things at best, and frigs things up at worst.
- eropple 9y agoIt's not about you, though. Or me. It's about what the people working with you are most comfortable with. I can go blurf out JSON or XML or potfiles by hand, whatever. But normal people are going to go "er, no?" and even if you win that argument you've lost social capital on something that didn't really matter.
- tschwimmer 9y agoAwesome article. I'm always impressed by the distance people will go for their passion. Lucas talks about ultimately having to hand draw Cyrillic versions of _each_ of the game's ten fonts. Very cool!
- Markoff 9y agohow do you know it's passion when he provided more languages option only after his PAID game became successful? i think there is different word for it in English
- raverbashing 9y agoWhen he's still doing games when a regular job would make him more money
- Markoff 9y agoits called extra income when you do it for money
- raverbashing 9y agoTranslators are not free, neither is personal time
- watwut 9y agoI agree it is not passion in either case. I think it is called taking the job seriously and responsibly.
- rsynnott 9y agoThe level of effort depicted is more than you'd expect for a cynical cash-in.
- cbanek 9y agoOne other interesting problem with localization involves the use of printf. Even if you're looking up strings based on IDs in another file (which is a good pattern), sometimes you'll need to move things around based on language. For example, if you're doing right to left languages, you might put the number before, or after the string, and the other way for left to right languages. So like ("%d %s" vs "%s %d"). The way that we got around this was adding another level of indirection, and putting printf format strings also as localized data.
- ucarion 9y agoThe Unicode CLDR has a whole database of formatted strings for each locale, for more or less the reason you describe. Formatting dates or big numbers (12345 -> 12.3k) is impossible to achieve without a generic formatting language. Pluralization is another nightmare of its own. Look into how Russian and similar languages pluralize. It has to do with the value of the number modulo 10, similar to English ordinals. CLDR: http://cldr.unicode.org/ http://cldr.unicode.org/
- wingerlang 9y agoI went to a presentation by a company that dealt with translation, he mentioned this issue and his recommendation was to simply not try to be smart with it and have separate strings where pluralisation is done properly in each one.
- moses-palmer 9y agoWhat about gettext _N? I have used a library with a similar interface, and we didn't even get complaints for Slavic languages with very complex pluralisation rules.
- jwilk 9y agoGNU gettext has pretty good support for translating messages with numerals: https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html https://www.gnu.org/software/gettext/manual/html_node/Plural... https://www.gnu.org/software/gettext/manual/html_node/Translating-plural-forms.html https://www.gnu.org/software/gettext/manual/html_node/Transl...
- surgi 9y agoLoosely related to the title: Why not create a complete modular version not only localised, but also tied to individual country's flows and processes? So it could serve as an education material. (mind:blown)
- breakingcups 9y agoThe game is about a fictional country though. Why should the localized versions be about a real country?
- Animats 9y agoIf you haven't seen the trailer, it's worth watching.[1] Glory to Artstozka! [1] https://www.youtube.com/watch?v=_QP5X6fcukM https://www.youtube.com/watch?v=_QP5X6fcukM
- unsigner 9y agoDon't ever use the original string as key in the localization table. That will force you to translate "high" difficulty the same as "high" resolution, for example.
- hueving 9y agoWhen translating a fixed set of messages, you translate the entire phrase, not individual words. So the keys would be "high difficulty" and "high resolution".
- ptaipale 9y agoAnd even the same phrase may get a different translation at a different place, depending on context.
- hueving 9y agoGood point. My only experience with translation is with logging messages in systems where everything is contained within a single statement.
- deleted 9y ago[deleted]
- mbudde 9y agoThis is why gettext supports using a "message context" to differentiate identical phrases when looking up translations: http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html (section 2.2.2)
- unsigner 9y agoThis might not be possible, e.g. if the UI says Difficulty: high/low And the separate UI elements are fed separate stings.
- roel_v 9y ago
- paines 9y agoIs the Steam version localized and available in german language?
- masklinn 9y agoThe second part ("less technical stuff") specifically notes that they used Steam's private branches to beta-test the localisation and that the supported languages are Italian, Japanese, Spanish, French, German, Russian and Brazilian Portuguese. So yes and yes.
- paines 9y agoThank you. Didn't saw that there is a 2nd part!
- mattmanser 9y agoHaving just done some l10n for a client, the thing that annoys me is how even the most powerful editors, such as VS, have such awful tools for l10n. .Net's actual i18n support is pretty good overall, but the editor support is bad. I literally had to build my own. With 2,500 different strings for a total of 10,000 words I wouldn't even consider our application even that big, it must be a nightmare in bigger projects. We haven't even done the sales site yet because the product's being upsold through a partner. We came up with our own id naming system, then created an xlsx/resx importer/exporter that uploaded to GSheets to allow us to share files with translators. The ids and comments fields allowed us to add extra meta data, to split the strings into logical sections and sheets and order them properly. Be able to add links to the page that section of translations are on so the translator could see the context. This then additionally allowed us to highlight if a translator had missed any lines when we re-imported it, add their own questions/comments, etc. Also, as we were using sendwithus, we used the importer/exporter to allow us to import pot files from them to keep everything in one place. Then to support those tools, I created a tool to search for phrases used before, find out the ordering from the meta data, quickly copy ids of strings we want to re-use, see missing spreadsheet tabs. Programmatically, we had to add support for automatically translating enums into strings (think project status for example), add l10n to our audit logs so customers could see their audits in the correct language and we'd see them in English, modify how .Net did l10n of dates because their built in one is really odd with en-GB which is where we are based (shortdate is Jan 01 2025 in en-US but inexplicably 01 January 2025 in en-GB and all sorts of other oddities). Then we used a modified version of pseudoizer (thanks John Robbins + Scott Hanselman![1]) to allow us to easily see untranslated strings while we went through the whole site without having a finished translation (we used ja-JP instead of Polish to really see the differences in date strings, currency, etc.). We ended up modifying it because it goes a bit mental with adding !!!! for things like tabs. Probably spent a week on those tools, but boy was it worth it. I've not tried intellij's l10n support, maybe it's better, but VS's is very lacklustre. [1]https://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx https://www.hanselman.com/blog/GlobalizationInternationaliza...
- revetkn 9y agoLocalizing well has a lot of complexity - gender, cardinal, ordinal, etc. rules, and then how to combine them with locale-specific special cases (e.g. in Spanish, a 15-year-old birthday girl is a quinceañera) I am attempting to solve this with a small library that offers full CLDR coverage and a special expression language. See https://www.lokalized.com https://www.lokalized.com Currently for Java 8 but am porting to JS and Python (probably Swift after those)
- jdonaldson 9y agoHaxe really shines at converting compile-time assets into static types. The other related trick is to use json as a config object, and access the fully typed equivalent as a static instance within your code. It's also possible to do this with database queries. I realize other languages provide support for this, but in my experience with Haxe it's way easier to implement something custom. The macro translation layer for manipulating the AST is flexible and speedy, and the compiler is wired directly into autocompletion requests. There's very little impedance between my fingertips and the desired outcome.