Hacker News new | past | comments | ask | show | jobs | submit login

Responding to a variety of questions made over the years about this:

This is a constant intended to be displayed after localizing the constant. Its localized value will primarily be displayed to users whose preferred languages have a short word describing the relationship.

But it ALSO needs at least some comprehensible localization in EVERY language, because I can send you a vcard for myself labeling this specific type of cousin (because that’s how I think of her), and I don’t know in advance what languages you use.

The primary customer of this family of constants is a localizer, who by virtue of localizing Apple software needs to know English, but may not read or understand Chinese.

The constant embeds everything that an English-speaking localizer needs to explain the relationship in a different language. That’s why something like the proposal here[0] (just use the Chinese name for this relationship) would not be an improvement.

A fully generic DSL to describe relationships wouldn’t help localizers know which relationships are actually used in the real world.

[0] https://news.ycombinator.com/item?id=28716546




> The constant embeds everything that an English-speaking localizer needs to explain the relationship in a different language. That’s why something like the [proposal] (just use the Chinese name for this relationship) would not be an improvement.

I don't exactly agree. Note that this constant embeds two terms, exactly because this particular kinship term does not distinguish them. In the other word this constant can only reasonably used in the Chinese kinship system, and others will be confused regardless of whether it's translated or not. The reasonable UI should group such labels into some dedicated section like "Extended families (Chinese system)" so that they don't need to be translated literally. Same for other kinship systems, of course.


You, and many people here keep assuming that this is a feature that is unique to Chinese language and/or kinship system.

It's the main one that English speakers are probably exposed to; but even in this thread there are mentions of other languages and cultures where this or similar relationships have specific terms and more generic ones like "cousin" simply don't exist.

Grouping them all under "Chinese system" is... let's say culturally insensitive.

_That_ is a reason enough to not use the term from any specific language as a constant name; let enough to not expose that in the UI to users.


I am Asian but not Chinese, I know what you wanted to say. The problem is though, East Asian kinship systems are pretty similar in the aspect that it recognizes most differences in gender, age, generation and lineage, but there are considerable variations as well. For example I think this particular term has no Korean counterpart. So this term is indeed unique, though some terms would be also shared among those systems. I would say that the label should be replicated for each system in that case.


> Grouping them all under "Chinese system" is... let's say culturally insensitive.

It’s probably the vast majority of people using it though? Simply by virtue of being such a massive country.


What about India? They alone would reduce China from the 'vast' majority[0].

[0]: https://en.m.wikipedia.org/wiki/List_of_countries_by_number_...


Is this concept also used in any of the major Indian languages?


Yes in Hindi you have different nouns and adjectives for uncles, aunts and cousins depending on the relation path:

E.g. Mother's sister = Mausi

Mother's sister's child = Mauseri/mausera

Father's younger brother's child = chacheri/chachera

And so on.

Although some of these are more obscure and I'm not sure how commonly they are used these days.


I see.

Notably, mapping the entire path isn't congruent with the concept in the topic, which encompasses both "Father's sister's daughter, younger than me" and "Mother's sibling's daughter, younger than me" in one phrase.


The people actually using the constant are translators.


Custom fields that are important in some cultures and not others would sound reasonable, compared to trying to account for all of it in code.

That’s what databases are for after all. You can’t encode every possible version of a familial relationship as a constant.


> this constant embeds two terms, exactly because this particular kinship term does not distinguish them

This isn't the case, any more than the English word 'aunt' embeds four terms (your father's sister, your mother's sister, your father's brother's wife, your mother's brother's wife). Plenty of languages distinguish between all four of these relationships. But the English term refers to what we see as a single concept - an aunt.

Most family words have translation difficulties like this. The concepts are usually more generic, more specific, or in some cases incomparable when moving between cultures. This also applies to many other words - even ones for very prosaic objects. The French have a single word which means "metallic object which has a particular shape in order to be able to turn something matching that shape", and they use additional qualifications to distinguish between a door-opening-shaped-metallic-turner and a bolt-undoing-shaped-metallic-turner.

The localization system seeks to avoid 2 things: that when an English speaker adds 'Mary (relationship: Aunt)' as a contact, they have to be asked "Is Mary actually your fathers-sister-aunt or your mothers-sister-aunt?" (Because that person would find it strange and unncessary.) Secondly that where possible, someone who has access to this information in another locale, doesn't see a low-quality translation, in particular one which makes no sense ("US English Kinship Relation �� Mary"), or which is misleading ("Mary is John's father's brother's wife? But I'm married to John's father's only brother!"). The right way to do this is to record a reasonable representation of the intended meaning in the source locale, and to translate into the destination locale. Since English also happens to be the language used for the code, the value "LabelContactRelationAunt" looks less complicated than this one, but it really isn't.

This can be seen by how it will be translated. In a locale where the English concepts encompasses two words, it might be rendered as "(Father-Aunt) or (Mother-Aunt)". In a locale where there are 4, 8 or more relationships which could be described in English as an aunt, they might use something intentionally less specific like "OlderFemaleRelativeNotAGrandmother" rather than a laundry list of possibilities. In others yet it might make sense to use the literal English word, or a contextualization like "Western 'Aunt'", if that's the easiest way to explain the relationship.

Nothing about this is unique to either English or Chinese.


I think this UI issue shows a problem in thinking about what the actual problem is that they're trying to solve.

This bug is about contact cards, and so the relationship is necessarily between you and the contact. So, it's not like you need to translate 表妹 into English, or differentiate it from 表姐 in English, as it's something you have chosen to describe the relationship. If you just think of them as "cousin" or whatever you use in your language, that's fine, just use that label. But, once you've assigned e.g. 表妹 to a contact, you don't need to translate that to English if you change your locale... because you already know what it means, because you chose it in the first place!

Admittedly, there's an issue when you receive a contact from someone else, but then you will probably be changing that field anyway. Unless we are family, you sending me a contact for your aunt is unlikely to also be my aunt, and if it is, well I probably also share that native language with you. I'm sure there are edge cases, like siblings who were separated when very young and the parents moved to different countries, or adopted, or found via DNA testing or whatever. But even in those few contexts, learning about the word or having the person themselves explaining the relationship to you, probably helps overall understanding of the relationship.

In any case, a lot of the Chinese words for the various familial relationships are quite amorphous. I remember being very surprised when a Chinese friend posted some photos on Wechat of her 孙子, literally "son's son". My initial reaction was "She can't be old enough to have a grandson!" then "Wait? She has a son? I thought she was single..." Turns out, she was referring to her brother's son. Lots of people use 哥, 弟弟, 妹妹, 姐姐 (literally older brother, younger brother, younger sister, older sister) to mean their friendship group, although this is probably a result of the impact of the one child policy. 阿姨 and 叔叔 (aunt and uncle) are just respectful terms for people of similar age to your parents, etc. There's literally no point trying to translate these names into their literal English meaning, because it will just further confuse people.

So, then the big problem becomes where these labels come from. Is it a dropdown box where only the options available in your current language are presented? How do you then choose one that's available in a different language if that's what you want to use? Presumably these aren't translated too literally into other languages, as e.g. an English speaker isn't going to want to choose one of 4 options for "cousin", and hopefully would be immediately suspicious of why their phone wants that much information about the nature of their cousin-ness, when it's customary to just use a single word. How then would that get translated back into Chinese? It would be embarrassing at family events if someone saw that the male cousin on my mum's side was labelled as female cousin on my dad's side.

I think it'd be much easier if you could just type what you wanted into this relationship field, maybe with a drop-down or auto-complete for likely options in your language.


It's actually a relation between two contacts, not between you and the contact. The UI allows the user to link several contacts, e.g. link the "spouse" or "brother" contact to your friend's contact card. There's a set of predefined labels to choose from, and there's also an option to add a custom label.


>I think it'd be much easier if you could just type what you wanted into this relationship field, maybe with a drop-down or auto-complete for likely options in your language.

Congratulations, you reinvented the exact UI for this that already exists in iOS from first principles.


> Lots of people use 哥, 弟弟, 妹妹, 姐姐 (literally older brother, younger brother, younger sister, older sister) to mean their friendship group, although this is probably a result of the impact of the one child policy.

Use of kinship terms to describe non-kin is clearly not related to the one-child policy given that it’s a language feature of Chinese that occurs across multiple political lines. It also appears in other languages, such as Korean.

Chinese also differentiates kin vs non-kin address. 哥哥 is typically used to describe a blood relation. 哥 and 哥哥 have very different connotations if used to refer to a non-relative.


> this particular kinship term does not distinguish them

Then why not call it CNLabelContactRelationYoungerCousinParentsSiblingsDaughter ?


Because that would include father's brother's daughter, which the Chinese term apparently excludes, hence it then wouldn’t be correct to localize it to the Chinese term.


I'm not sure the actual translator would be able to connect that label constant to the Chinese term 表妹.


That kinda sounds like more complexity rather then less for "labeling translation system".


> The constant embeds everything that an English-speaking localizer needs to explain the relationship in a different language.

I disagree insofar as you really need the explanatory text in the documentation to be able to parse the constant’s name correctly, especially if you’re not already familiar with that specific relationship category. It would also be helpful for the documentation to point to the Chinese/Vietnamese/etc. terms to provide context. In that light, a shorter constant name would have been appropriate IMO, for developer ergonomics.

Even if you want to include “full” information, CNLabelContactRelationYoungerMaleCousinNotViaFathersBrother would have been shorter, if I understand the relationship correctly. (The fact that I’m not entirely sure here also indicates that more documentation is needed.)


are there multiple languages that have this exact relationship concept? because if it’s in a single language or family of languages, the idea that it can be translates into something generic seems questionable


Urdu has even more discretization. Transliterated into latin characters

* Mother's brother = mamoo

* Mother's sister = khala

* Father's older brother = Taaya

* Father's younger brother = Chacho

* Father's sister = Phupo

Each of these's spouse also has a corresponding word. For example, Father's sister's husband will be Phupa.

Then, their children are identified with a suffix.

Mother's brother's son = Mamoo zaad bhai

Mother's brother's daughter = Mamoo zaad behan

Etc.


Huh! That's so interesting.


Adding further to the confusion in Urdu speaking areas when the cousin/mothers' relatives becomes your wife?



I don't speak Armenian, but I dated an Armenian woman once, and she told me they have words for familial relationships that we didn't really have concepts for in English.


In Swedish our words for many relationships follow a very simple system of composing relationships. A few examples:

Mor = mother

Far = father

Bror = brother

Morfar = mother's father

Farfar = father's father

Farmor = father's mother

Farfar = father's father

Farbror = father's brother

Morbror = mother's brother

...


The same is true in Norwegian, but then they go and ruin it all with "oldemor" = "great grandmother", instead of persisting with e.g. "mormormor".


In the midnight hour, she cried ....


Nice.


At least in danish, we have “bedstemor” which behaves likes “oldemor” in being the mother or fathers mom so it’s really that form that is consistent with the system and not the parent-specific forms.


The mother of the oldemor is called tipoldemor, and after that you just add as many tips as you need (in Danish but probably also in Norwegian).


Brorbror.. your brother's brother?


My other brother Darryl


Brorbror and brorbrorbror could be any of the brothers, including yourself.


We use the same in Danish, but also uses:

Faster = fathers sister

Moster = mothers sister

You can also use tante (aunt) about these

A farbror or morbror is often called an onkel (uncle).


That's still in Swedish, covered by the ...


Like what? English already has all the "twice removed" and other definitions that no one actually uses.


I am fairly sure English doesn't have (or at least does not use) separate everyday words for farmor/farfar (fathers mother / fathers mother) or mormor/morfar (same for mothers parents).

Sure in academic language there is probably a way to describe it (edit: and the concept is easy to explain) but there is nothing quick that you can use to tell a kid so they immediately know which of the grandparents we are going to visit without naming them or the location they live in somehow?

Even among the words that do exist, like "siblings", I have a feeling that in some dialects or sociolects it isn't used and people say "brothers and sisters" instead. (I'm not sure about this last one but I have worked with a lot of English and American people over the years and it does feel this way).


English has "Paternal grandmother" and "Maternal grandmother" for example, it's just not often used and isn't turned into a compound word.


But you wouldn't tell your kid: we are going to visit your paternal grandmother, right?

That is the distinction I tried to make above between academic and everyday language.


I can't tell if this is serious. I don't even know which language you're using but it is literally no different than mom's mom and dad's mom other than a space.


It is Norwegian. And it is serious.

And I am not saying the concept doesn't exist, only that as far as I am aware there is no usable everyday word for it.

I mean: nobody will tell their kids they are going to visit dads mum and dads dad next week, rather than telling them they are going to visit grandma and granddad "across the country" or something?


"What are you doing this weekend, little Timmy?"

"One is repairing to the country where one will be enjoying the company of one's paternal grandmama and grandpapa."


Repairing?


It's a slightly archaic usage, but it's correct:

repair [1]

verb

repaired; repairing; repairs

intransitive verb

1a: to betake oneself : go

    repaired to the judge's chambers
1b: to come together : rally

[1] https://www.merriam-webster.com/dictionary/repair


Retreating?


Things like this can be highly family-specific. A friend of mine (German) says that in his family, his grandmothers are distinguished as "Oma" and "Omi". Which are both generic German words for any grandmother, but in his family, they are more specific. Like names. Another friend, they used "Oma" and "Großmutter" (a third generic word) to distinguish the two.

So there must certainly be families in the English-speaking world where kids commonly say "dad's dad" and "mom's dad". Even when unlike in Scandinavian languages, it's not the canonical form.


I think it's more common to call them Grandma and Grandpa Lastname or Grandma Firstname and Grandpa Firstname. I've also seen it where one set of grandparents are Grandma and Grandpa and the other set is Nana and Papa or Mimi and Pop Pop or whatever set of less formal terms they use for the relations.

I'm not sure I've met anyone who doesn't have more familiar terms than dad's mom and mom's mom. They're probably out there, but not super common.


The point of the conversation is how people express these relationships in their day-to-day so they can be encoded in software.

Would your grandparents' contact be saved on your phone as "Mom's mom" or as "grandma"? Probably the second, which is indistinguishable from "grandma" as "Dad's mom".

In Norwegian, people would naturally call these "mormor" and "farmor" and they would expect that relationship to be correctly labeled in their localized app.


At least in Swedish, I don't even think there is a generic word for "grandmother", you literally always in every case specify which one it is.


I am fully aware of what the topic is about. I'm just pointing out that the English language and native English speakers definitely use the concept of mom's mom and dad's mom without the needing "official" words like "momdad" and "dadmom" because the person I responded to said

> I am fairly sure English doesn't have (or at least does not use) separate everyday words for farmor/farfar.

They then said you would need "academic" language to describe mom's mom and dad's mom. That's why I said I could not tell if they were serious. Anyway, I think you would be surprised if you asked English speakers what they call their grandparents. I personally used memere and grandma to distinguish between my mom's mom and my dad's mom. The point I'm making is that not having specific words for these relationships does not make English speakers unaware of the difference.


For day-to-day familiar conversation we generally use nicknames for grandparents in the US and that's what is in our contact list.

There are probably hundreds or thousands of nickname words for grandma based on a variety of cultural backgrounds, family tradition, and mispronunciations by grandchildren.

The language we use really depends on setting. In a more formal setting we might say paternal grandmother/grandparent. Speaking to a friend we might use the nickname, or we might say the ambiguous 'grandma' or we might say 'grandmother on my dad's side' or 'dad's mom'.

It really depends on the situation and familiarity and formality.


There is no "grandmother" in Swedish, you just have mormor and farmor. That makes a huge difference with how you have to use the language, you can't say "do you have a grandparent" since there is no word for grandparent, you will have to say "do you have any mom or father parents".


The space makes the difference between "word exists" and "word doesn't exist".


I would have accepted it if it was something people would actually say, even if it was written like two words or more. Example: sister/brother in law is something that is close enough even if it isn't written in one word like Norwegian svigerinne/svoger.

But as far as I am aware English only uses grandsomething (or variations of it) + further description as needed.


Paternal grandmother, paternal grandfather, maternal grandmother, and maternal grandfather


There is a big difference, though. In English you would usually say grandma/grandpa and rarely qualify by on which side.

In Swedish and Norwegian you always specify because the words for grandparents are inherent specific to whether they are paternal or maternal.


In everyday speech you generally do not try to be this specific, but if you wanted to (e.g. recounting family history to a doctor or talking about the relationship between your parents and granparents) you could use them to be more specific in a clear way.

I agree that almost every use of farfar should be simply translated as grandmother.


Will you be satisfied if your brother or sister were only describable as "sibling"? Would it roll off your tongue?

Similarly in many languages using the wildcard equivalent to mean something more specific is unnatural.


I do not undestand how this relates to my comment... I only said that if you wanted to precisely localize mormor to english you could.


Ok, I thought you were against having capabilities for supporting mormor as a dedicated word in software (like in the topic post)


English speaking people do not use these all that often. They say "grandmother" or "grandfather". They specify which side of family these come from only when they really need it for some reason.

Unlike those other languages we talk about.


Not Armenian, but, e.g., Bulgarian has a distinct name for the relation of two husbands of (not in-law) sisters. In English, that's just one of the "brother in-law" cases.

On the whole, Bulgarian has far more such relationship words than English.


English doesn't have any way of distinguishing between my wife's sister, my brother's wife, and my wife's brother's wife. They are all sisters-in-law. But these 3 relationships are very different for many people in practice. My wife's sister grew up with someone I'm very close to and unlike most other relatives I can't usually badmouth her to my wife. My brother's wife is someone who, like my wife, entered as an adult into a family which I and my brother have always been part of and so might feel threatened by our closeness. And my wife's brother's wife is someone who I can bond with over "we both married into this crazy family and are not really like the rest of them".

And then from my kid's point of view, not only are these all 'auntie' but so is my very own sister.


Vietnamese also has it.


It won’t be localized into something generic. It will be localized to a specific (long) string in most cases.


that seems silly


Different Chinese languages/topolects have similarly elaborate names for family relations, but may use different words and differ in details.


In the Tagalog (Filipino) language, we have the following words which are of Hokkien import:

* parent-in-law - biyenan * son- or daughter-in-law - manugang

* brother-in-law - bayaw * sister-in-law - hipag

* the spouse of your brother- or sister-in-law - bilas

We also have the following words for siblings which are influenced by Hokkien:

(male first, then female) * elder sibling - kuya / ate (or aya / achi) * second eldest - diko / ditse * third eldest - sanso or sangko / sanse * youngest sibling (male or female) - bunso (or siobe)

I've also heard my grandaunts call my grandfather "siaho" (the eldest sister's husband) but I don't know what's the equivalent word for the eldest brother's wife.


I was not aware of the complexity of this until now. Thank you for your insight and write up.


It’s quite amazing how comprehensively Apple has approached internationalization from the beginning.

IIRC correctly, already the Mac UX guidelines in the 80s included non-Latin scripts, right-to-left etc.

Lesson: make no assumptions and be very thoughtful about what seems to be edge cases from your own cultural point of view.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: