7 ms·
Origin Of The Abbreviation I18n For "Internationalization"
- rikacomet 14y agofrom a hacker's perspective, Internationalization is a old word now. You either code for all platforms, or you code for specific people/platforms/needs. Busted!
- mpyne 14y agoWhat the hell is i18n other than "coding for all platforms"? i18n is making the software capable of being localized at all. l10n ("localization") is the process of actually localizing to a specific given locale (which is more than mere translation, btw).
- rikacomet 14y agoit is different from the translation meaning? something like the problem of japanese games not working on english based plateforms, without the locales being changed to the former?
- lobster_johnson 14y agoLocalization is all the stuff not covered by translation: Time and date formats, for example. And also any aspect that must be tailored to a location. For example, if a game contains graphics that satirizes something American (like a restaurant chain or a sports brand), region-specific graphics may be modified to suit the region.
- mpyne 14y agoi18n would cover a lot of things like the following: - Using Unicode for UI-visible string functions (to make it possible at all for your app to show non-Latin characters). Other some other means of selecting arbitrary charsets but Unicode is hard enough as it is. - On that note, using language-specific instead of byte-specific functions. This itself has its own large pitfalls (e.g. even something as simple as using foo.toUppercase() instead of foo.tr('a-z', 'A-Z') simply doesn't make sense in all languages, but at least it's better than what you had before). - Having hooks for displaying dates in the user's preferred format. - Advanced mode: Having hooks for operating on dates in a non-Gregorian calendar! - Having hooks for proper currency handling and display. - Having hooks for properly translating pluralized words. This is way worse than it sounds. In English you generally have "1 of", "none of", and "2+ of" that you might have to worry about, but other languages may have significantly more options, or entirely different ways of binning which categories an ordinal phrase falls into. - Having hooks to supply "context" to a translator. E.g. talking about an "elevator" in the context of choosing an I/O scheduler may give an entire sentence a far different structure than using the same word "elevator" in the context of vertical transportation. - Speaking of context, there's the problem of properly handling placeholder text in printf-style format strings. The translators may have to re-order the placeholders entirely to get it to translate right. Even this is just kind of scratching the surface, I haven't talked about things like graphics, audio, etc. Now, l10n is the process of actually going through and making the changes needed for a given locale. This doesn't just mean language, it can also include regional aspects. E.g. Brazilian Portuguese (pt_BR) may end up with a different appearance than Portugal's Portuguese (pt_PT) [1]. Even American English (en_US) and British English (en_GB) have famous differences which go into far more than just s/truck/lorry/, but into things such as units (even gallons are not the same). All of which must be handled to have a proper localization. In code terms you might say that i18n is refactoring to have a proper interface for usage by subclasses, while l10n is the art of making a specific subclass for that i18n interface for a given regional locale. [1] http://lists.debian.org/debian-i18n/2005/10/msg00077.html http://lists.debian.org/debian-i18n/2005/10/msg00077.html
- mwcampbell 14y agoWhat's striking to me is that we have the abbreviation "i18n" for internationalization, and "a11y" for accessibility. From the perspective of a typical young American software development team, these are two instances of "making software work for those other people that aren't quite like us". Is it a coincidence that (1) both of these concepts got cumbersome words, and (2) both of these words were abbreviated in the same way?
- lobster_johnson 14y agoI think you're reading too much into it. "i18n" exists because, frankly, it's too long; it's a 20-letter word, one of the longest in common usage, and it's boring and time-consuming to type, and easy to mistype. There is a long tradition in hacker culture to shorten and optimize things whenever possible, going back to the early days of Unix and C ("sh" for shell, "rm" for remove and so on). The reason i18n has a number is that it's awkward to abbreviate without; the C/Unix-style tradition of removing vowels to abbreviate would render it unreadable ("intrntnlztn"? "intrlzn"?). Case in point: One of the companies I co-founded, Transparensee, has a very long name. Internally we started referring to it as t11e everywhere, including the domain names we use for dev stuff (t11e.com works as an alias for transparensee.com). Edit: We also have l10n (localization) and m17n (multilingualization), incidentally.
- hackmiester 14y agoI feel like "intl" would be a good abbreviation.
- lobster_johnson 14y agoThat just means "international", which does not capture the essence of what it is. It would have to be something "intlzn". But since we already have established i18n, there is no need to coin a new abbreviation.
- deleted 14y ago[deleted]
- 14y ago
- franze 14y agodidn't know that. one of my customers mentioned one day we should shorten our email to f19n.com, we thought it was a great idea, since then we use f19n.com as our email domain.