HACKER Q&A
📣 evolve2k

How to handle Asian-style “Family name first” when designing interfaces


Our app is designed to be used across the Asia Pacific.

We have members who follow western naming conventions as well as members following common asian naming conventions.

Turns out there can be alot of variation on what is the convention.

https://www.asiamediacentre.org.nz/features/a-guide-to-using-asian-names

How would you handle different naming conventions, so users see their name in the order they would like?

Family, Given Given, Family


  👤 joegibbs Accepted Answer ✓
Could you just have a single field for name and allow anything in that field? The only downside is you can't do something like "Hi ${FIRST_NAME}" in your emails, but the upside is that it basically handles any name or name order, e.g. Indonesian single names, Spanish names with the mother's surname included, etc.

👤 gandalfgreybeer
Personal opinion.

As an Asian person, don’t overthink this.

Just have fields for family name and given name to distinguish between the two.

Sure, when there’s a text field saying hello “first name last name” it might be flipped but this shouldn’t be a deal breaker or offensive in any capacity.

Worst case is you can have a toggle they can click but from a developer standpoint, that might be over engineering for something that might cause headaches later.


👤 jasfi
You have two fields: full name and the name you want to be addressed by (e.g. in an email). This should cover the requirements of 99% of apps. You can add another field if really needed.

👤 playday
It depends on the purpose. Here you say it’s just so you can call them by their name properly, so just use a single text field “What name would you like us to address you as?”. If there’s legal or other issues that might not be good enough.

👤 _darkmatterdev_
I'm reminded of this blog post: Falsehoods Programmers Believe About Names ( https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-... )

Good luck designing your system! Sorry I don't have any advice.


👤 chomp
Use a single text field for the full name.

👤 MAGZine
Have you looked at how the tech giants before you have solved this issue?

👤 goscots
One interesting approach would be to use a regex to detect if the name is written in Hanzi, Kanji or the Korean or Vietnamese alphabets and write the name in whatever format is appropriate for the locality. The Asian people I know would be be unsurprised to see their name rendered western style when written using whatever romanization format their native language uses.

👤 wmeddie
Definitely read https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-... if you haven't yet.

Then think about what are the requirements your system needs when it comes to names.

Does the app need to know what a user's name is at all or is a username enough? Does it need to distinguish the family part of their name for anything?

A thing I think is the most general is to just have a Full Name field (min length 1 and either John Doe or something cute as default) And a Nickname or Display Name field if your app needs to show something on screen.


👤 qingcharles
Don't some Asians use an alternate name too, a more Westernized version of their name, alongside their native name?

👤 lnxg33k1
Seems more of a stackoverflow question?

But:

https://github.com/kamranahmedse/design-patterns-for-humans#...

https://www.postgresql.org/docs/current/datatype-enum.html

I'd have multiple classes handling each one a use-case, and a enum on user's record in order to specify which class to use for each, so that you can compute it from the nationality, but you could also potentially give each user the chance to set it for themselves


👤 jimbobimbo

👤 hardstyle
Fun fact: some cultures only have one name, i.e. no first or last name.

👤 splix
Not necessary Asian btw. As a Russian I can tell that Russians also may use "family name - given name - father name", usually in official documents.

Though it it also may be just "given - family", as well as any other variation informally. So you wouldn't make a mistake with UI


👤 ggm
Indonesia: Single name is common. Therefore only one field filled in should be legal.

👤 wtmt
Does your “Asia Pacific” presence include countries like India? As others have pointed out, it’s better to read that article “Falsehoods programmers believe about names” [1] and then figure out how you’d like to deal with it. Looking at “Family, Given” or “Given, Family” is shortsighted and may cover only a few east Asian countries. In India there are patronymic names with initials, mononyms (no “family name” or initials), names with just a given name (one or multiple words) and no “family name”, names where the “last name” is a place, etc.

If you truly want to cater to all kinds, just have one field for name and another for what they’d like to be addressed as.

[1]: https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-...


👤 latchkey
I built an ecommerce system where we shipped hundreds of thousands of tshirts to people. They used a bazillion variations of browsers. It took a while for us to get the form 100% correct across everything.

One field.

Also, don't use type=number fields... the browser UX is terrible across many devices. Just make everything type=text and be done with it.


👤 irjustin
Don't over think it. Either:

- Label the fields FAMILY, GIVEN, MIDDLE (then put them in the order you desire) - Or simply put NAME

For a LOT of use cases, FULL NAME side-steps the issue and works out great. Sure your emails that go out are "Hi {{ full_name }}," but that's okay.


👤 beojan
In English, if the names are separated by a comma it generally indicates that they're in surname, given names order.

I think this is to make sorting easier, since names are sorted in alphabetical order by surname then given names.


👤 deprecative
Alot of Variation is a new one. What's it look like?

👤 saltymimir
Ohh boy, as someone who works on a travel booking, service serving customers in Asia, this problem hits hard. I guess the answer depends on how you plan to handle the names once they got submitted.

I happen to be handing that data over to airlines, which has some of the less forgiving, yet fragmented name requirements. If you handle this incorrectly, your customer can't fly, even after they paid for the flight. And for those who say that this doesn't matter as much: It absolutely does. I've seen people losing an entire trip that they saved for, all because of unclear naming requirements.

The way I deal with this is to provide a country and locale specific name fields. You don't have to detect the geolocation or track the user for this, just let them choose whatever locale setting they want, and give them the "sensible" layout. Here are some examples: - In Vietnam, we use last name then first name. - In Indonesia, we use first name, then last name, but also give an option to declare that the person doesn't have a last name. - In Singapore, we use a single field to input the first name and last name.

Even when you've handled the layout convention carefully, the 3rd party you're handing the data to, if one exists, might not give the same care and attention that you do. In my case: some airlines just haven't gotten around the idea that some people simply don't have last names. When a person with a single name wants to fly, airlines want the customer to use the name for both first and last name (e.g. If the person's name is David, then the airline expects "David David"). If you require First Name and Last Name as the input, and don't elaborate on how to fill them, the customer might simply fill the last name with a dot (".") character. The airlines / any other 3rd party won't accept that. For this, I suggest to detail out the ways in which you handle the data and go talk to your providers, if any.

All in all, it's a pretty tough challenge, and the wisdom around this isn't going to fit inside a single HN post. I do commend you for actually thinking about this problem. Good Luck.


👤 jzwinck
I lived in Asia for many years and worked with people from many places there.

It's common to hear "How should I address you?" This is equivalent to the people here suggesting a "nickname" field (good idea).

There are people with only one name. Don't make them double it (Ananda Ananda).

There are people with several given names. But they may only want to be called by the first, or the first two, or the last.

There are people who wish to be called by their full name. They may find it jarring to be addressed by just one piece of their name.

Finally there are people who go by a name which is not part of their legal name at all. Short forms like Bob instead of Robert, but also freeform names for various reasons, perhaps the most sensitive being that some government official may have determined their legal name contrary to their own wishes. Imagine your mother named you Sue but someone decided that must be short for Susan and put that on your government documents.

Related: when people want to show which part of their name is the family name, they either make it all uppercase or underline it. You can see this on some CVs but it happens elsewhere too when a full name is going to be read by people who don't know the addressee.


👤 numpad0
If it is just for e-commerce, just steal signup form from local e-commerce websites. Or if there are local competitor platforms that does as good as yours, look into theirs.

But the question sounds like there are already substantial asian users in divergent conventions without frictions. If that is what your app is trying to fix, I'm not completely sure how it will work out.


👤 minebreaker
IMHO as a Japanese, the western convention is preferable if the app is English. It's less confusing.

At least it should be consistent across the app.


👤 muzani
Just have a single "name field" and maybe preferred name, which is not the same. The family/given name format doesn't make much sense here.

Indian name: Sathiavelllu Arunachalam, known as SA or Seth

SE Asian ethnic Chinese names: Harry Lee Kuan Yew, (English name) (Surname) (Given name). Hated the name Harry and got it removed, though many Chinese are referred to by an English name.

Indonesian name: Fatimah Azzahra (given name only)

Malaysian name: Sharifah Azizah binti Syed Ahmad Tarmizi, (honorific surname: Sharifah) (given name: Azizah) (patronym) (father's honorific surname: Syed) (father's given name: Ahmad Tarmizi)


👤 realusername
It's not only and ansian thing. In France thr convention is LASTNAME Firstname (with that casing)

👤 alkonaut
So first of all everyone has read "falsehoods programmers believe about names". And of course everyone knows we should just use "name" and that's it. Perhaps a greeting/displayname if we need to do "Hello $customer" in an email.

But still. There are often hard requirements that are impossible to reconcile with the "just store one name" idea. As an example: you need to produce alphabetically sorted lists. It would rarely be acceptable to produce lists of people sorted by their given names in Western Europe for example. So as an example if you really do need to have BOTH "Doe, John" and "John Doe" what do you do in case you know at least 99% of users will have names following this format? Do you force people to enter their name twice? In that situation I would:

- Store it as a single name column, with more columns as required (greeting, sortable, ).

- Present a UX that is appropriate for the region of 99% users. So for western Europe show a "first name", "last name", but don't store that: just set the name column to "$firstname $lastname" and the index name column to "$lastname, $firstname" and greeting to "$firstname" for example. That way I at least let 99% of your users only input the name once.

- But (and this is important) offer an alternative way of specifying it for those who don't have a name that conforms to the format. You let just that small fraction of users enter a name/indexname/greeting instead.

And yes: the above ONLY applies if it's really a hard requirement to separate them, because the last name sorting was really ya requirement. Of course there are other requirements that force other solutions. The "just one input" is the correct solution for all the cases where it is possible.


👤 grardb
Shameless plug: I gave a talk on names and the problems that arise when you give them special treatment - https://youtu.be/NfKhY3sAQ9E

But the tl;dw is to do this:

I don't know what kind of app you're building, but unless it's 100% impossible (from a business perspective) not to separate people's names into multiple fields, you really should just make it one field.

If it's a true requirement for the business—due to a third-party vendor's requirements, for example—then I suppose you could simply ask the user which order they prefer and display their name accordingly.


👤 efitz
Is there any reason why you need to specifically know the first and last name, or the family and given name? I think there is a lot of inertia in the idea that you must have two name fields, but why?

Why not just have one name field, and let people type what they want in it?

Or better yet, have one field for “what should I print as the name when I send you a package or letter”, and “what would you like me to call you?” (e.g. preferred name)


👤 tommiegannert
Related: as a Swede, the first times I had to fill out a honorific, it felt very weird. And many times they are required. We don't use honorifics in Sweden. The only difference between formal and informal address, is pretty much whether you use a nickname or not. The idea that there is a single category of "western name" is wonky.

Another is that my spoken/given name is after my "middle" name. Especially American forms don't deal well with that. In Sweden, you usually underline the given name, since it's used to address the person. Now I see a comment here saying that's a thing in the Philippines. That's interesting.


👤 meitham
Another case you might want to accommodate is Arabic speaking countries where the names goes like name son-of father-name son-of grandfather-name son-of great-grandfather-name tribe name. In most cases, such as when dealing with government applications four generations is required but sometimes tribe name is omitted where it can identify your religion, sect to prevent bias to you or against you. The son-of (Bin or Ibin) is mostly omitted except for cases where the first name is composite of two names, like “Mohammed Ali”, where both parts are valid names on their own.

👤 jll29
This is not just an Asian thing, Hungarians put their family name first (another reason not to call it a "last name").

Not to forget the special case that people may only have one name (for which some immigration offices had to invent the rule to repeat the single name twice, as first and last name, to comply with online and offline forms that have these often mandatory fields). So we may add two patterns to your pattern list:

  Only, Only
  Only
Localization is tricky, not just for names, e.g. postcodes (GB) and zip codes (US) come after the city ("London SW4 0AF", "Beverly Hill, CA 90210"), in many other places before (e.g. FR, DE, e.g. "91054 Erlangen").

👤 gumballindie
Common in europe as well. Just use a name input field and a display name or preferred name field.

👤 buro9
What do you need their name for?

Do you need their legal name? As in, actually legally need it?

Realise that you'll probably need several name fields in different places depending on what you're doing, i.e. an e-commerce app may have a name to address someone by, a name on a billing address, a name on a shipping address, a name on a payment method... all of which can vary for the same person.

If all you need is a way to address them, just a single name field.


👤 wodenokoto
Try logging into Facebook with different locale settings on your Facebook account. You can have several names depending on your language. That way they can handle name order but also show English speaking contacts a readable name, while say, Japanese friends gets to see the Japanese name.

👤 tannhaeuser
Representing names (and postal addressing via UPU S1) are one of the use cases where SGML/XML and other document techniques feels appropriate in internal business data representation, as opposed to storing details in 1NF (a la first/last name) in databases, especially when working with international customer data.

👤 cybervegan
I was wondering when someone would cite this: https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-...

But since nobody else seems to have done so, I will. Globally, names don't follow any common format or concept at all that you can reduce to a formula. My takeaway is that it's best to have a free-format "full name" field, and another "preferred name" field so you can allow people to choose how to be referred to.


👤 mariogintili
I18n string interpolation

👤 alickz
if this is an iOS app use Apples PersonNameFormatter and let the user's device localisation decide

https://developer.apple.com/documentation/foundation/personn...


👤 ncoelhosantos
There's an established pattern for this, which is to provide users with a choice of:

  Sort order:
    - By First Name
    - By Last Name

  Display order:
    - First, Last
    - Last, First
Obviously, users can input names in a multitude of ways. But the convention is to offer at least two distinct fields, "First name" and "Last name". The sort order determines if the items are ordered by first name or last name. And the display order determines if the full name for each item is displayed as First name and then or last name, or the other way around.

And finally, set a default based by the user's locale and region.


👤 albert_e
I come from a family that traditionally writes names as Familyname Givenname.

But even in our country Firstname Lastname is prevalent among many regions and central government.

I grew up in the 90s and simply resigned that I will always be Givenname Familyname in most systems and documents.

After school I never bothered writing / typing / filling my Familyname first anywhere.

By simply staying consistent with this (wrong) way, I ensured that all my documents perfectly agree with each other. That peace of mind and lack of hassle is worth any "sacrifice" for me. Others may place different value on keeping their conventional names and must also have real reasons to do so too. I was lucky maybe, not to have those hurdles.


👤 danmur
I have nothing useful to add except that I know quite a few people who would be happy if they could have an apostrophe in their name without everything going to shit

👤 yakubin
Another edge case: aside from different orderings in different countries, in Spanish speaking countries people have 2 surnames.

👤 ungerik
var names []string

👤 smcleod
I always thought “First” and “Last” relate to the order of the names and was compatible with cultures that have self family, family self etc….?

👤 paulmooreparks
Even in England, you would have to consider King Charles III's name. His given names are Charles Philip Arthur George. No family name. Of course, now his name is even a bit longer: "Charles the Third, by the Grace of God of the United Kingdom of Great Britain and Northern Ireland and of His other Realms and Territories, King, Head of the Commonwealth, Defender of the Faith". So, if you think he might sign up for your app, make sure your name field is long enough, and that the "Preferred Name" field can accommodate a space: "Charles III" or "Charles Rex"


👤 juliantejera
If you have an iOS app I suggest looking into https://developer.apple.com/documentation/foundation/personn...

👤 dv_dt
I would ask for a breakdown according cultural fields if there are interactions with external systems (e.g. payroll or banking, etc), but carry a single field preferred full name that is auto populated with a best guess suggestion.

👤 rsynnott
As others have said, there's a lot to be said for having a single name field and not trying to second-guess how people expect this to be presented. There's huge variation here, and some cultures don't even have a concept of a single last/family name.

👤 adulion
i work in ecommerce and we have a conditional for the order of the fields based on the delivery country the user checking out

👤 kroltan
Don't even need to go as far as Asia, even european-descended cultures have different naming conventions.

Here in Brazil, it is very common to have "compound names" which are just... two given names you have to use together, for example "Ana Maria", AND it is also common to have "middle names" which are neither family names, nor given. My name, for example, is Leonardo Giovanni Scur, but "Leonardo" is my given name that I respond and expect people to call me by, and "Scur" is the family name. "Giovanni" only exists in documents, basically.

So, the first question is, what are you using their names for? If you are a paid service that identifies users to other users by name, ask for a "billing name" for your legal/policy needs, and a "display name" for identification, don't attribute any structure to it. If you don't need a legally identifying name, just ask for the "display name", and let people name themselves "Sir Bearington of Nunya Biznis".


👤 robobro
In Indonesia , we have name anarchy. Some people have a family name, some people have two given names, some people only have one name, some people have many names and none of them are family names...

How will your app handle people with a single name? My wife's mother splits her name in two based on syllables, but that's not exactly right.

I think two fields, one mandatory -- "name" -- and other optional -- "preferred name" -- is the way to go.

You should also consider how to handle people changing names, in the events of marriage, sex change, religious conversion, or what have you.


👤 Hamuko
The name order isn't your only issue to worry about. A Japanese system might be expected to have two fields, one for the name as it's written and another for pronounciation. Just in case someone decides that 小鳥遊 as a name is pronounced as たかなし.

I remember Amazon.co.jp having two name fields when you registered a new user, and in English they were called "Your name" and "Your name again", because a name pronounciation field probably makes little sense as a concept to most non-Japanese speakers.


👤 SeanLuke
Wait until you see Icelandic names where there is no last name at all. Björk's "last name" is Guðmundsdóttir, because she is the daughter of Guðmundur, whose "last name" is Gunnarsson, because he is the son of...

The Indian name situation, going by initials instead, is particularly interesting. There is a famous professor I know who goes by initials because his second name is forty letters long.


👤 registeredcorn
There's an excellent GitHub repo that lists a lot of common falsehoods regarding names. I'm not sure how useful it'll be to OP, but the repo in general should probably have way more attention than it already does.

https://github.com/kdeldycke/awesome-falsehood#human-identit...


👤 IlliOnato
After reading that document and the comment section, it seems that the really distinct name variants are:

1. Full legal name (as it appears in a passport, e.g. William Robert Smith)

2. Full formal name (this is how you want to be addressed and/or referred in a formal context, e.g. Dr. Professor William R. Smith, MP".

3. Abbreviated formal name (e.g. W. R. Smith)

4. Informal name (how you want to be referred/addressed in less formal context, e.g. Bill Smith)

5. Highly informal name (how you want to be addressed in close circles, e.g. Bill)

6. Nickname (e.g. Chuck)

It seems that (more or less European) convention of having first name(s) and a last/family seems have this goal: being able to store just one variant and to generate other variants (except the nickname) according to fixed rules, in other words, automatically.

Of course you should ask a user only of what you need. So if the only reason you ask for a name is to be able to address them in messages, you should ask "how you would like me to call you?" or something like this.

You can give users an option to, say a check box, to indicate their names follow the "European" convention, and then give them the fields that allow to auto-generate name variants, allowing them to override if necessary.

Just my 2 cents :-)


👤 mrcgnc
Other things I've had to deal with: in Myanmar people usually don't have a concept of first and last name, just two (females) or three (males) words that form their "name" (as far as I can remember).

Also, often names in Sri Lanka look like this: Rajapaksha Mudiyanselage Siril Ariyaratna. Two family names and one or two given names. Regardless of the number of fields used, displaying long names like that needs some special considerations.


👤 Larrikin
In the Android apps I've worked on, family name and given name are saved separately in the database and then in our string file we have a separately defined string "full name format" that just takes in two strings. Depending on the localization string file, the two strings can be reversed. Haven't had to do major internationalization efforts in many apps I've worked on but this has been perfectly fine for times we needed to have multiple formats.

Just considering other countries and languages (and not doing obviously American/English only) has made the effort considerably easier, even when other countries aren't in the radar at the time


👤 wirthjason
On the flip side, I wish rat Japanese design allowed for middle names. It annoys me that my marriage certificate has my first and middle name concatenated together simply because my legal name on my passport has a first, middle, and last name.

👤 alentred
Not suggesting it for the UX, but in France (and I am pretty sure many other places), a somewhat common convention is to put the family name in uppercase. This is well known by everyone, but not everyone does that. Sometimes you would receive an email from "Benjamin Martin" and stop for a second to figure it out.

👤 foxyv
In my opinion, name should always be a two field setup. One would be the full name for legal documentation. This can be tokenized for searching databases. The other would be the preferred name of address "You may call me Jim" which shows up on "Welcome Jim!" messages. Trying to parse out names is almost pointless. There are so many different name standards it's bonkers. If you want you could even include a phonetic section for pronunciation.

If you need to split first, middle and last name for US government form entry you can just ask for those when you need them individually.


👤 thrwyexecbrain
In Calibre (the ebook management software) there are two fields: "author name" and "author sort name", both free-form text. The latter serves as the sort key when the books are ordered by author. I have found this solution both elegant and practical.

👤 pphysch
Store "names" as a JSON document per person, and provide different view functions that construct a "full name" string based on that data and localized standards/conventions. You have infinite flexibility with nominal (heh) overhead.

👤 lowbloodsugar
Do other countries have a concept of a “legal” name? Like someone said their names are a set that can be in any order or just pick one: does the government insist on a single specific order for interacting with them and with, eg banks?

👤 contingencies
20+ years in Asia here. Have run many sites/apps and filled in many forms. Here is what you do:

Full name field. (Optional) Title field. (Optional) Display name preference. (Super optional) Allow the user to duplicate ALL of these fields for EACH IANA/ISO language, eg. many people may have a Chinese or Thai name and also a separate English name with zero relation.

Read https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-... and note there is an unwritten set of similar fallacies regarding signatures.