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.
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.
The trick with tech writing is retention!
Which is odd, because it's harder to communicate unambiguously in English than it is in code.
Playing an instrument is harder than being a code monkey. On the one hand, you can make good money being a top tier musician, there's almost no money in being a mediocre musician (or even an above average one). On the other hand, it's fairly easy to get by as a mediocre code monkey.
Even as a somewhat subpar software engineer, you can make enough money that you don't have to be waiting tables as your day job.
(Waiting tables itself is a good example at least to contrast with acting or making music or writing novels. None of these aspiring artists and poets is necessarily any good at waiting tables, but it still pays the bills compared to even pretty good acting skills.)
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.
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.
To understand the problem, consider two things.
First, imagine another word that rhymes with "disk". I will just call it "di*k" here.
Second, the problem wasn't that my hard di*k was too small. I could have the biggest hard di*k in the world, but if it didn't have enough free space, there wouldn't be room to install Acrobat.
So the message had an admittedly slim chance of being misconstrued, but more importantly it was just plain incorrect.
[1] https://www.tomshardware.com/pc-components/hdds/ibm-announce...
[2] https://en.wikipedia.org/wiki/History_of_IBM_magnetic_disk_d...
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
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.
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.
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)
1 osoba
2, 3, 4 osoby
5, 6, 15, 21 osób
22 osoby
25 osób
101, 112 osób
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" :)
_('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.`Ś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.
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.
Which is a simple example why you need context.
All UI frameworks should have a "translate" mode, where all labels and static text can be right-clicked and modified...
As a dev that often writes UI text, which simple rules do you recommend that I should follow?
For example, don't have a button that reads "Go to your profile", that screws up translations in languages like Turkish.
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.