Merken

Finding Translations: Localization and Internationalization

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
and in that and and the and the and the that history at 1050 so go and yet started and so I mean to be giving this talk on the localization and translation and internationalization in your Rails apps and cleverly entitled
finding translations although someone yesterday we as suggested the alternate title of many many of files and which will get into why that might be a fitting title for this talk as well and but will start out just by defining our terms so localization is the process of adapting internationalized software stressed for a specific region or language by adding the locale specific components and actually translate letting the text internationalization refers to the process of actually and setting up your app in such a way that it can be translated an and will be talking mostly about how to set yourself up for success in terms of um when you are designing your app and even if maybe you're not even planning on having it translated off of the bat as some of these problems of processes and things will be good things to have in mind and In any case so things Wikipedia for those definitions let's get rolling and and the English were talking about translating and more importantly getting ready to translate your and so what are we talking about when we talk about translation there's the most straightforward type on which most people are going to be thinking about when I say the word translation which is English to French French Arabic English to German Swahili Esperanto Spanish to Cantonese etc. and other things that are important in this translation process now is what country you're actually talking to and so are you talking to British consumers are you talking to American consumers and are you talking the Portuguese consumers are redirecting the Brazilian consumers those populations are gonna speak the same language but are not necessarily gonna have the same and that continent be built to be delivered to them and another thing you wanna be aware of is the register and whether that's formal or informal and professional or like your Twitter feed and AP style or MLA style I guess and things like formatting and so on and so forth were mostly in me talking about the 1st type and but you should always have in mind the 2nd type when you're doing a translation you should be thinking about what country the people using that language and are going to be coming from things that'll be relevant that are things like units of measurement government legal terms and date formatting and so on and so forth and the 3rd type is not something more in and talk about really an but your translator should be aware of where you're coming from in terms of the register that you want to convey in your app and so that they can write to the same as a kind of audience I could also see using the same tools to you add transfers between registers so would say you had a kids and parents version of your site and you could use some of these i 18 and and and conventions to to do that as well I've never done it but it could be some and so who I as place if you get this joke at 2 4 6 0 1 and but I am at valor Willard and on Twitter I'm at Bowery codes and you should tweak the stock because at mentions are my life blood and I'm a Rails developer at panoply which is a podcasting platform were part yes podcasts and were part of that slate and and if you want a got about podcasts please find me after the talk and I will give you all my recommendations and take all of recommendations and my subscription list will continue to balloon as uncontrollably and I have interests in linguistics translational language studies so prior to becoming a developer and I was a French major and I studied cognitive science with an emphasis in linguistics and so I've done a bit of translating in an academic as setting and and was hoping I could maybe add some insights to folks who are maybe not as familiar with the translation process and who were getting ready to to translate things so without any further due so
you wanna localize your app and you might feel like this dog especially if you're not familiar with a lot of the pitfalls that to can come along in in this process so when should you think
about localization and you should think about it now and even if you don't actually foresee a future in which you want to have a localized versions of your app and if you think about your part possible audience it is probably not just US-based English speakers and if you think about just the number of languages that are spoken just in the United States and if you're limiting yourself only English speakers you're really and really limiting yourself and so it's something that should be on your radar as a possible thing that might come down the line and even if you never localize that you won't be hurt by using some of these conventions and and they can give you other wins in your development process so when should you think it when should you internationalise and so you wanna be thinking about this again before you need to and for work for example and don't hard-code strings into your views and this is a very easy when and you can use cues in your views and have those reference a yellow file and that way you can have all of the copy for your app but separated out from the actual code so say if you have someone who's not a developer who wants to make changes to copy you don't have to have them dig through code and and make those changes you can have an entity in a file which is probably going to be much easier for everyone involved so there are lots of built in tools for rails localization and there's this I 18 and guide which goes over at the basics of how to lose use those tools and how to create keys that you then reference in your app and the fault set up for rails localization is to have a yellow file as I've alluded to you a couple times and where you will have a key and a string and when you reference that key in your in your application that string will be pulled from the amplifier and and then you'll have a yellow files for each locale so you'll have a French 1 in English 1 and so forth and and based on the locale setting on your app the correct string will get hold him and and there's a lot of things Bill's in for you there's also an a localized so there's I 89 . which is translate that refers more to the polling the correct strings and and there's also localized which refers more to as I was mentioning the units of measurement and things like that that'll be related to where the the person is from OK so you've got some you
files with some strings in them and this can get annoying really fast especially if you have say maybe hundreds of strings or thousands of strings or tens of cousins of strings as in your app and depending on how complex a app as these files can get really unmanageable and so you should be thinking about and whether this is something that is practical for you and for your app in your organization and 1 way you can maybe make it a little easier on yourself is to customize these your files to be per feature and or something like that so that you don't have 1 single year file that's storing every single string that you use on but at the same time this this is still like an not something that you probably wanna use for uh super super at tha
and here are some helpful genomes in your localization journey out 1 of them is rails i 18 n this provides tons of translations in different languages different locales for the eras and that are kind of baked into rails an Active Record things uh default date format and things like that so that you don't have to waste your time doing those things and so that is super helpful to kind of get your localization stuff off the ground a look how app is 8 Jan and provides a web interface for storing translations that translators can log into an it's a paid service I'm not sure if there's a 3 tier but something worth looking into and if you're looking to add translations and and that is also tied to paid translation services so you can pay someone from there to actually go in and translate all your strength for you as a global ice it is is a tool you when used if you're adding translations to your Active Record models and so if you want I'll say localize attributes on a model as say you have a blog and your posts are stored as Active Record models and you want to have an alternate versions of your blog posts in different languages this would be the tool that you when use for that and through geocoded you can and the geocoder gem which also does a lot of other things and but 1 tool that will provide you is being able to set a locale based on the user's IP address so that's also super helpful an i 18 and tasks is a gem that will go through and report to use in files that are missing or unused and it'll remove unused keys optionally and it can also pre missed missing cues from Google Translate if you want to play fast and loose and 1 of possible work-around for this yeah mall nightmare that we've described and is proposed in this rails cast episode and that you can look into it provides an sort of framework for a red a space back and for that uh locale keys and another possibility would be to do like an active record or another database space back and and the things that you wanna keep in mind tho are that these keys are going there's probably gonna be tends dozens of them loaded up on every page as so that we need to be accessed all of the time and and so in memory store I'm or some sort of cash is probably going be preferable and set having to do a database lookup and at every every time a accuse reference and if you decide to just stick with the yellow and you can edit the usual way maybe a graphical yaml editor 1 thing that you might wanna keep in mind when you're thinking about how 0 exactly 1 this translation back into work is that the people who are doing your translations your enemy entering these keys are not necessarily going to be developers and so if you've got people from the marketing department if you got a professional translators are you probably donors held onto like good up sublime text and rights and he's and you probably wanna provide some sort of do your graphical interface for them to make their lives a little bit easier so these are the things and then I feel like a most important to consider when you're talking about how you're in a localized something as 1st you need to know what needs to be translated kind of the scope of is this area 10 thousand line project is was a 100 line project and do we need to hire a professional translator and do because we need really Polish translations or well a Google Google Translate as situation be adequate to our needs are do we need to translate the attributes among at what our maybe the length of the strings that we wanna translate and related to you like how readable maybe they'll be in like Emil interface and are there special characters that you'll need to think about whether you were as a database or a data store of choice supports and and what information in addition to just those strings is it helpful to provide your translators so what tools do they need to give you a really good translation maybe some contextual information and maybe an nice purely so that they don't have to edit things and Sublime Text and push them to get have is maybe that the best solution there so this
is something that I've come across it ended in um looking over apps that people have tried to localize and any time you are concatenating say localities together to form a single sentence that's probably a point at which you need to look to your life and with your choices and find out a way not to do that and the reason for that being the 1st In my
parade of foolish assumptions and that is that fragments can be
translated with any accuracy and the reason for that is probably clear to you if you've studied a foreign language but and sin taxes are different in different languages and the subject of verb object ordering may be completely different and the verb may go at the end of the sentence and the context of the full sentence may be needed for conjugation offer gendering of nouns and things like that and instead what you'll wanna do is used the so there's an example here of a variable and in a full sentence and if you need to like passing in the name of a column where you have an error or something like that or proper nouns and so that i 89 in rails will support this passing variables so you can just pass in a key and a variable and the variable will get dropped into that he likes so so here has that variable and and that way you can provide your translator with the full sentence and context in addition to the variable bottles just be replaced another pitfall is
assuming that pluralization works the same in other languages as I included a link to this and very thorough and sort of survey of pluralization rules in terms of different languages but the gist of it is that in english we generally have the same formalization 4 0 and more than 1 thing such kind of the same grammatical structure and then a separate pluralization rule if there's 1 thing and other languages do not necessarily do this in the same way they make it may make different distinctions where 0 things falls 1 role 1 thing follows another rule more than 1 thing falls of 3rd role and so don't come hard-code these strict strings instead I 18 and provide you with a very useful count variable where you can just and define these different keys for 1 other and 0 and passed as integer in his account and and based on the value of that infant integer the 1 other or a 0 here will be dropped into European and another
thing to be aware of when you're translating is the other languages are not necessarily going to use the same level of specificity and you may be able to you may need to provide more information to your translated then an English string will provide an so things to be aware of here are like gender we talked about and register those need to know whether you're hoping to address your users in a more formal or informal uh register and also those words they're just maybe more specific words in the other language that will need to be aware of what exactly you're talking about and so for example in Korean there mosle people words for the english word in 1 2 denotes a snug fit in a container once denote a loose fit and so these are just some things that you should know and things that you're translator at may need mean need to be aware of
another thing to know is that a message cannot necessarily be conveyed in another language in the same physical space as it can English and they're in languages that use of other character sets and the messages may be much shorter and you work may have something that takes 1 line in English and 2 lines in french as a general rule and that I followed when I was translating French was that it always seems to take more words and more characters to say the same thing in French that it does in English and for that reason you'll need to think about what you wanna do if you need if it more characters in a space and or if something will look weird if you have a much shorter string manning English 1 and D 1 a shrink the text down in certain situations and you probably 1 avoid fixed height or width containers unless you're gonna test and whether that string fit In the fixed tighter with container in every language they support and so this is something to be aware of when writing CSS doing more the front and work another
scary thing and the text may not always be left to right and so there are a lot of design implications here and
it's an so this is screenshots from the BBC's website 1 from the Arabic Web site and 1 from there and North African French website and so you'll notice it's not just the text that's it's also the like logo and some of the design elements at the search bar is on the other side and because the idea is that like the I will gravitate toward the right side rather than the left so there are a lot of other design implications beyond just you know flipping flipping the alignment of the text in the container your character set will not
always be the Roman alphabet necessarily and so you should make sure that and other characters or words other character sets are supported if you're planning to support and non-Roman alphabet languages a day so you got all this you have all of these pitfalls in mind you've got these wonderful yellow files that are filled with wonderful translations that people are making updates to all the time and you
merge conflicts constantly and because everything's annual file and everyone is editing and and it's terrible and you're very likely to get merge conflicts and especially if everything is in 1 place and ends because the people doing you're translating adding your copy are not necessarily developers you probably don't want everyone who makes copy to have access to the see at your code repo and a so that something's to do here can break up keys and based on functionality based on features and the you can ads your Gamal files to make it make them a submodule of your main repo so that you can give people access to just the yellow files rather than giving them access to the whole repo you can have a database store that people edit from that is then pulled into a young file in some way or you can just have a database back end for your translation keys and or you can do something like look how up which is a web-based and web-based interface where people can edit the keys and that you can sort of servers your external source of truth so you don't have to trust those yellow files that are in your repo you can just pull from that source and trust that everything's fine are they concerns that you'll have in mind again are ease of use based on who is doing a translations and you also probably want some sort of all audit trail if someone accidently deletes year english valuable file and you wanna have some rollback like catastrophe and scenarios so that's whether that's doing a daily database back up whether that's keeping things and version control in some way shaper form and those are things that you should have on your radar so
another thing that I sort of wanna touch on it is why do you want to translate your app it which is not to say that I think it's a bad idea and I think it's great to support speakers of other languages to make our technology accessible in other places and that non-English speakers but when you are deciding to cannot nationalized for a given region for a given language there are things that you wanna think about before making that choice before deciding who you wanna translate out for and an example is other countries have different norms around privacy and in general I would say in the U. S. M. were probably more fast and loose with some of our private information then in say Europe and there are things that may be considered more taboo to share and such as religion and people on may be more likely to be sensitive about tracking about sit location are like physical location information of there's being shared so if you're at uh uses those things you should think about how that's going to be perceived in then language group in the country in the culture that you're adapting it for there may also be legal issues if you're actually intending for another country market and there are things like do not track in Europe there are issues around c copyright copyrighted information and the trouble that you can get into for sharing copyrighted information and or a copyrighted content in other countries and the issues of deformation and the US actually I believe has 1 of the more lenient i stances toward defamatory content and so if there is a chance that defamatory content can be included or disseminated through your app be aware of the potential legal or precautions that you can face in any country that you're you're expanding to and another issue is that the same needs may not exist In not in that place and so if your AP centers around something related to Tuesday the US health care market that's probably not a thing that's going to translate in other countries and so maybe that leads you to the decision to translate your app for US-based Spanish speakers but not for add Mexico-based Spanish speakers for example so my hope is that from this talk you take take away the following things and 1 of them is to think about localization now rather than later and and so hopefully there are there are things that you can win even if you don't actually decide to do any translating the you when you're translating something to be aware of the quality of translation they need and if you want a quality translation your translators should have a good understanding of your app of how works of who it's intended for of what it's intended to do also translation as hard and it's a hard problem that I don't think there are lots of easy solutions to and and it's something that you if you care about having a quality product for non-English speakers that you should invest your time and in thinking about and also to know your audience and when you're deciding who you want translate for and with that I am all I'm going to be hanging out if anyone has questions and and then there's this slide which is just all of my information and if anyone wants to get in touch tweeted me look at my get have a look at my name website I got Valerie . codes which I think it's also room and and thank you so much for coming that and the if the if if the 1 long
App <Programm>
Korrelation
Internationalisierung <Programmierung>
Translation <Mathematik>
Computeranimation
Internationalisierung <Programmierung>
Sichtbarkeitsverfahren
Bit
Web Site
Prozess <Physik>
Formale Sprache
Formale Grammatik
Versionsverwaltung
Wärmeübergang
Systemplattform
Term
Computeranimation
Einheit <Mathematik>
Software
Datentyp
Vererbungshierarchie
Translation <Mathematik>
Äußere Algebra eines Moduls
Zusammenhängender Graph
Softwareentwickler
Internationalisierung <Programmierung>
Formale Grammatik
Beobachtungsstudie
Umwandlungsenthalpie
Videospiel
App <Programm>
Prozess <Informatik>
Pay-TV
Mailing-Liste
Elektronische Publikation
Twitter <Softwareplattform>
Formale Sprache
Mereologie
Internationalisierung <Programmierung>
Codierung
Kognitionswissenschaft
Translation <Mathematik>
Wort <Informatik>
Information
Term
Prozess <Physik>
Selbst organisierendes System
Mathematisierung
Formale Sprache
Versionsverwaltung
Zahlenbereich
Kartesische Koordinaten
Code
Computeranimation
Einheit <Mathematik>
Code
Elektronischer Programmführer
Softwareentwickler
Gerade
Internationalisierung <Programmierung>
App <Programm>
Sichtenkonzept
Schlüsselverwaltung
Zehn
Elektronischer Programmführer
Einfache Genauigkeit
Computervirus
Elektronische Publikation
Sichtenkonzept
Zeichenkette
Flash-Speicher
Internationalisierung <Programmierung>
Mereologie
Schlüsselverwaltung
Zeichenkette
Bit
Punkt
Web log
Texteditor
Formale Sprache
Versionsverwaltung
Information
Raum-Zeit
Computeranimation
Homepage
Translation <Mathematik>
Default
Gerade
Auswahlaxiom
Schnittstelle
App <Programm>
Addition
Dicke
Datenhaltung
Texteditor
Dienst <Informatik>
Rechter Winkel
Festspeicher
Internationalisierung <Programmierung>
Multi-Tier-Architektur
Projektive Ebene
Benutzerführung
Information
p-Block
Schlüsselverwaltung
Zeichenkette
Subtraktion
Netzadresse
Framework <Informatik>
Datenhaltung
Homepage
Task
Datensatz
Informationsmodellierung
Task
Speicher <Informatik>
Softwareentwickler
Attributierte Grammatik
Benutzeroberfläche
Datenmodell
Elektronische Publikation
Quick-Sort
Zeichenkette
Flächeninhalt
Attributierte Grammatik
Benutzerführung
Sinusfunktion
Objekt <Kategorie>
Addition
Variable
Geschlecht <Mathematik>
Formale Sprache
Translation <Mathematik>
Kontextbezogenes System
Schlüsselverwaltung
Innerer Automorphismus
Computeranimation
Fehlermeldung
Umwandlungsenthalpie
Trennungsaxiom
Subtraktion
Formale Sprache
Formale Grammatik
Schlussregel
Binder <Informatik>
Zählen
Sondierung
Term
Quick-Sort
Computeranimation
Schlussregel
Übergang
Geschlecht <Mathematik>
Ganze Zahl
Translation <Mathematik>
Wort <Informatik>
Information
Datenstruktur
Schlüsselverwaltung
Fitnessfunktion
Zeichenkette
Softwaretest
Raum-Zeit
Formale Sprache
Cliquenweite
Raum-Zeit
Computeranimation
Message-Passing
Menge
Formale Sprache
Wort <Informatik>
Message-Passing
Gerade
Zeichenkette
Fitnessfunktion
Web Site
Zeichenvorrat
Menge
Formale Sprache
Automatische Handlungsplanung
Translation <Mathematik>
Zeichenvorrat
Wort <Informatik>
Element <Mathematik>
Elektronische Publikation
Computeranimation
Normalvektor
Maschinenschreiben
Subtraktion
Web Site
Existenzaussage
Zurücksetzung <Transaktion>
Physikalismus
Formale Sprache
Versionsverwaltung
Gruppenkeim
Datenmissbrauch
Code
Computeranimation
Bildschirmmaske
Weg <Topologie>
Translation <Mathematik>
Inhalt <Mathematik>
Speicher <Informatik>
Softwareentwickler
Auswahlaxiom
Internationalisierung <Programmierung>
Schnittstelle
NP-hartes Problem
App <Programm>
Lineares Funktional
Datenmissbrauch
Benutzerfreundlichkeit
Datenhaltung
Quellcode
Automatische Differentiation
Biprodukt
Kontextbezogenes System
Elektronische Publikation
Katastrophentheorie
Quick-Sort
Entscheidungstheorie
Rechenschieber
Bimodul
Internationalisierung <Programmierung>
Codierung
Server
Translation <Mathematik>
Information
URL
Normalvektor
Repository <Informatik>
Schlüsselverwaltung

Metadaten

Formale Metadaten

Titel Finding Translations: Localization and Internationalization
Serientitel RailsConf 2016
Teil 34
Anzahl der Teile 89
Autor Woolard, Valerie
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/31511
Herausgeber Confreaks, LLC
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Translation, be it a word, sentence, concept, or idea, for different audiences has always been a challenge. This talk tackles problems of translation, especially those that tend to crop up in building software. We'll dive into the eminently practical—how to design apps for easier localization, common pitfalls, solutions for managing translations, approaches to version control with translations—and the more subjective—possible impacts of cultural differences, and what makes a "good" translation.

Ähnliche Filme

Loading...