| ▲ | sedatk 11 hours ago |
| That’s also important with localization. In Turkish, the UI -> user formality is different than user -> UI formality. When the app speaks to the user, the language is formal, but when the user commands the app (through a button for example), it’s informal. So, if you use a caption like “Delete Your Files” on a button, it would mean the files of the app, not the files of the user. Or, if you have a dialog titled “Delete My Files”, that would imply an app is asking the user to delete the app’s files due to the differences in the formality. That’s a problem I’ve been encountering while translating Bluesky. If devs follow certain simple rules while writing UI text, it would make a tremendous difference for translation quality. |
|
| ▲ | psidium 11 hours ago | parent | next [-] |
| > If devs follow certain simple rules while writing UI text, it would make a tremendous difference for translation quality As a UI Developer that has accidentally focused my whole career in building (complex) forms, I can tell you there is a night and day difference from when I worked alongside User Assistance professionals vs when UX designers had to come up with the texts. These “User Assistance professionals” were usually English/Language-majored that would exclusively take care of how to properly write the texts on the screen for the users. From help texts to button labels, to release notes and RCA, and especially taking care of how to write texts in English so the app would be easily translatable, they would own all. The apps that had that sort of handholding with the devs were extremely easier to use and input data to, even when the UX itself was subpar. I used to think it was standard to have English-focused professionals helping UI teams to deliver easy to understand products, only to find out that that company was kinda odd in that regard, and having UX or even product people coming up with labels is quite common. I do miss being able to fire an email when I need a quick text reviewed to be sure that a button is well labeled for the user and translation. |
| |
| ▲ | eru 9 hours ago | parent | next [-] | | > I used to think it was standard to have English-focused professionals helping UI teams to deliver easy to understand products, only to find out that that company was kinda odd in that regard, [...] Which is a bit of a shame, because English/Language-majored people's time is cheaper than techies' time. Google is another outlier in a related way: they have dedicated tech writers to produce internal documentation. | | |
| ▲ | SoftTalker 2 hours ago | parent | next [-] | | > English/Language-majored people's time is cheaper than techies' time. Which is odd, because it's harder to communicate unambiguously in English than it is in code. | |
| ▲ | robertlagrant 6 hours ago | parent | prev [-] | | > they have dedicated tech writers to produce internal documentation The trick with tech writing is retention! |
| |
| ▲ | ivan_gammel 9 hours ago | parent | prev [-] | | The role you are describing is UX copywriting. In companies working on international markets it’s common to have it assigned to a dedicated team responsible for localization, but it’s also perfectly normal and common for UX designers to do it - it’s part of their job. Product managers can do it too, but ideally shouldn’t. Edit: Also have to note that education in language or literature doesn’t make person a good UX copywriter automatically. It’s a cross-domain job with multiple career paths towards it. You were lucky to work with someone who really excelled in it. | | |
| ▲ | Stratoscope 5 hours ago | parent [-] | | I am a mere programmer, not any kind of UX writer. A company I worked for some 20 years ago had writers who mostly thought about the "happy path". When things went wrong, the error messages were left up to the programmers. I discovered this when I tried to install our product on an old Mac and got this message: Your hard disk is too small Wait? My what is too small? Later, on Windows, I got this popup: You are not here WTF? I searched for this message and found it came from a function called CantHappen(), which was kind of like an assert(false). Something you throw into a code path just to note a place that you really know the code can never reach. Until it inevitably does. I went on a rampage through our code, finding all these crazy messages and updating them - and when possible, fixing the code so the error messages wouldn't be needed. My manager and his manager, to their credit, knew how bad our messages were, and they helped me pull together a little team with a writer and translators to fix these up. And we did. Our messages got a lot better, easier to understand and more helpful. All because our Mac installer told me my hard disk was too small. | | |
| ▲ | ivan_gammel 5 hours ago | parent [-] | | Great story and exemplar attitude from you and your manager! Too often such issues are eternally deprioritized, but you have got it into the pipeline and the team committed resources for fix. Ideally this should not happen, but that would require end-to-end collaboration of the entire team where UX people are involved on later stages of development process, adapting design and copy based on feedback from engineers. Many modern product designers just work based on „shoot and forget“ principle. |
|
|
|
|
| ▲ | Muromec 9 hours ago | parent | prev | next [-] |
| Translation is always a pain in the ass if developers are monolingual in English. On every project I ever worked on somebody had thingCount == 1 ? 'thing' : 'things' somewhere and it drives me up the wall having to explain that and pgettext thingy |
| |
| ▲ | GLdRH 9 hours ago | parent [-] | | At the risk of driving you up the wall, but please explain | | |
| ▲ | edgsousa 8 hours ago | parent | next [-] | | One simple example is slavic languages where you have different forms of plural depending on the number. | |
| ▲ | Illniyar 5 hours ago | parent | prev | next [-] | | Not the parent, but you use a translation format like `translations("INVITE_USER", {gender_of_host, num_guests})` Then you will have an algorithm that knows to translate based on some rules - like the ICU messages format -
https://unicode-org.github.io/icu/userguide/format_parse/mes... In the link there's an example of how such rules look like (they'll be different for each language) | |
| ▲ | eloisant 5 hours ago | parent | prev | next [-] | | Making it plural doesn't always mean "replace one word by another". The right thing to do it: add_one = "Add one thing"
add_multiple = "Add {n} things" Then you'll provide the full sentence for each language. Of course some languages will need more cases, like slavic language where it's 1, 2-4, 5+, so depending on the languages you need to support you need to put more than 2 strings. | | | |
| ▲ | Groxx 8 hours ago | parent | prev | next [-] | | pluralization is much MUCH more complex in many languages than in English: https://www.unicode.org/cldr/charts/47/supplemental/language... it can largely be turned into six categories of behavior, with tons of languages choosing different boundaries for those categories. ios/osx and android have tools for this, and probably others (I'm just personally familiar with these). and even English isn't even that simple in the way many treat it - you don't pluralize sentences, parts of sentences change in contrast to each other (a car drives vs cars drive). so e.g. widely used APIs like https://apidock.com/rails/v7.1.3.4/String/pluralize are blatantly misleading merely by existing, and it leads to mistakes in many (most?) languages, and also English, even though the authors of the API speak English. | | |
| ▲ | ViscountPenguin 7 hours ago | parent [-] | | That has to be one of the most cursed functions that I've heard of in my life. Anything less than a call to ChatGPT is doomed to fail. |
| |
| ▲ | smnrchrds 3 hours ago | parent | prev [-] | | For example, in Arabic, nouns have three forms: singular, dual, and plural. Dual and plural are not interchangeable. |
|
|
|
| ▲ | patates 9 hours ago | parent | prev | next [-] |
| It's impossible to provide enough context for translation strings. You need links to mockups, designs, or any other visual aid so that translators don't make huge mistakes. Even then, they'll eventually find that the programmatic parameters are insufficient for returning the correct translation, and they'll have to duplicate strings because the same sentence has different translations in different contexts. It's a never-ending job. Turkish is especially funny here, but not even close to how creative you might need to get for some other Asian as well as Slavic languages. Lucky that you never had to translate Ekşi Sözlük, how do you even translate "şükela" :) |
| |
| ▲ | esafak 4 hours ago | parent | next [-] | | Do you think any i8n library (in any language) gets it right? | |
| ▲ | BrandoElFollito 8 hours ago | parent | prev [-] | | Would you have an example for Slavic languages? (ideally non-Cyrillic ones) | | |
| ▲ | patates 7 hours ago | parent | next [-] | | Russian having singular, few (2-4), and plural (5+) forms is one from the top of my head. I can't remember any specific examples from non-cryllic ones but remember we having to duplicate a lot of translation keys to make them more context specific. | | |
| ▲ | TomaszZielinski 5 hours ago | parent [-] | | Also things like: _('There are:') _('%d items', count=len(items))
—-which look correct until you want to translate them into a language with a different order of words in a sentence. |
| |
| ▲ | Patryk27 4 hours ago | parent | prev [-] | | Not the parent commenter, but -- days of week in Polish are a nice example, IMO. `Środa` means `Wednesday`, but depending on the grammatical case it's going to be translated either to `środa` or `środę` (or five more, but somewhat less likely to appear in UI [1]). - Next <Wednesday> is 2018-01-03. = Najbliższa <środa> przypada na 2018-01-03. - This event happens on <Wednesday>. = To zdarzenie ma miejsce w <środę>. If you mix the variants, it's going to sound very off (but it will be understandable, so there's that). What's more, days of week have different genders, which affects qualifiers: - <this> Wednesday = <ta> środa (Wednesday is a "she") - <this> Monday = <ten> poniedziałek (Monday is a "he") ... together with the grammatical cases affecting the qualifiers: - <This> Wednesday is crazy. = <Ta> środa jest szalona. - <This> Thursday is crazy. = <Ten> czwartek jest szalony. - I'm busy <this> Wednesday. = Jestem zajęty w <tę> środę. - I'm busy <this> Thursday. = Jestem zajęty w <ten> czwartek. [1] https://en.wiktionary.org/wiki/%C5%9Broda | | |
| ▲ | encom an hour ago | parent [-] | | This is fascinating, thank you. The intricacies of languages is so interesting. I especially love the insane way we danes spell out numbers. 59 == nioghalvtredssindstyve 59 == 9 [ni] + [og] ((3 [treds] - 0,5 [halv]) * [sinds] 20 [tyve]) So 9+2,5*20 == 59 Halvtreds means half third, or halfway to three. There's also halvfjerds and halvfems for 3,5 and 4,5. Exercise: spell out 79. |
|
|
|
|
| ▲ | AdventureMouse 7 hours ago | parent | prev [-] |
| > If devs follow certain simple rules while writing UI text, it would make a tremendous difference for translation quality. As a dev that often writes UI text, which simple rules do you recommend that I should follow? |