Skip to content

Address & Honorifics (Xung Ho)

Vietnamese has no universal "you" or "I" -- pronouns encode age, gender, social status, and emotional distance. This module implements the full decision tree.

typescript
import { addressCalculate, pronounPairGet, EFormality, EGender, ERegion } from 'vietnamese-name-generator';

addressCalculate(fullName, options?)

Calculate the appropriate Vietnamese address term, honorific, and pronoun pair for a person.

Uses a priority-based decision tree:

  1. Professional role (if provided) takes highest priority
  2. Age-based lookup (if both ages provided) uses the pronoun pair table
  3. Gender + formality fallback when no age or role is given

Parameters:

ParameterTypeDescription
fullNamestringFull Vietnamese name (e.g. 'Nguyen Van An')
optionsIAddressOptionsSee options table below

Options (IAddressOptions):

OptionTypeDefaultDescription
rolestring--Professional role key (e.g. 'doctor', 'professor', 'general')
speakerAgenumber--Age of the person speaking
addresseeAgenumber--Age of the person being addressed
genderEGenderauto-detectedOverride gender detection
formalityEFormality'casual'Formality level
regionERegion'north'Regional dialect

Returns: IAddressResult

typescript
interface IAddressResult {
  honorific: string;           // e.g. 'Ong', 'Ba si', 'Giao su'
  addressTerm: string;         // e.g. 'Ong Nam', 'Bac si Lan'
  fullAddress: string;         // e.g. 'Kinh gui Ong Nam', 'Thua Bac si Lan'
  pronounPair: IPronounPair;   // { self: 'con', addressee: 'ong' }
  category: EHonorificCategory;
  formality: EFormality;
  region: ERegion;
}

Age-based addressing

typescript
// 25-year-old speaking to 60-year-old
addressCalculate('Nguyen Van Nam', {
  speakerAge: 25,
  addresseeAge: 60,
  region: ERegion.North,
});
// {
//   honorific: 'Ong',
//   addressTerm: 'Ong Nam',
//   fullAddress: 'Ong Nam',
//   pronounPair: { self: 'con', addressee: 'ong' },
//   category: 'age-based',
//   formality: 'casual',
//   region: 'north',
// }

Professional title addressing

typescript
// Doctor -- professional title takes priority over age
addressCalculate('Tran Thi Lan', {
  role: 'doctor',
  speakerAge: 30,
  addresseeAge: 55,
});
// {
//   honorific: 'Bac si',
//   addressTerm: 'Bac si Lan',
//   pronounPair: { self: 'toi', addressee: 'Bac si' },
//   category: 'professional',
// }

Formality levels

typescript
// Written formal (letters, official documents)
addressCalculate('Le Minh Tuan', {
  speakerAge: 30,
  addresseeAge: 50,
  formality: EFormality.WrittenFormal,
});
// { fullAddress: 'Kinh gui Chu Tuan', ... }

// Spoken formal (speeches, meetings)
addressCalculate('Le Minh Tuan', {
  speakerAge: 30,
  addresseeAge: 50,
  formality: EFormality.SpokenFormal,
});
// { fullAddress: 'Thua Chu Tuan', ... }

// Intimate (close friends, family)
addressCalculate('Pham Thao', {
  formality: EFormality.Intimate,
});
// { fullAddress: 'Thao oi', ... }

Formality reference

EFormality valueVietnameseUsage
'written-formal'Kinh gui + honorific + nameLetters, official documents
'spoken-formal'Thua + honorific + nameSpeeches, ceremonies, meetings
'professional'Honorific + nameWorkplace, business contexts
'casual'Honorific + nameDaily conversation
'intimate'Name + oiClose friends, family

pronounPairGet(speakerAge, addresseeAge, options?)

Get the Vietnamese pronoun pair (self/addressee) based on relative ages.

Parameters:

ParameterTypeDescription
speakerAgenumberAge of the person speaking
addresseeAgenumberAge of the person being addressed
options.genderEGenderGender of the addressee
options.regionERegionRegional dialect

Returns: IPronounPair

typescript
interface IPronounPair {
  self: string;      // First-person pronoun (how speaker refers to self)
  addressee: string; // Second-person pronoun (how speaker addresses the other)
}

Examples

typescript
import { pronounPairGet, EGender, ERegion } from 'vietnamese-name-generator';

// Speaking to someone much older (grandparent generation)
pronounPairGet(25, 65, { gender: EGender.Male });
// { self: 'con', addressee: 'ong' }

// Speaking to someone in parent generation
pronounPairGet(25, 45, { gender: EGender.Female, region: ERegion.North });
// { self: 'chau', addressee: 'co' }

// Central Vietnam uses 'o' instead of 'co'
pronounPairGet(25, 45, { gender: EGender.Female, region: ERegion.Central });
// { self: 'chau', addressee: 'o' }

// Same age -- nang principle (treat addressee as older)
pronounPairGet(30, 30, { gender: EGender.Male });
// { self: 'em', addressee: 'anh' }

// Speaking to someone younger
pronounPairGet(40, 25, { gender: EGender.Female });
// { self: 'chi', addressee: 'em' }

Age Gap Pronoun Mapping

The age gap is calculated as addresseeAge - speakerAge. Positive means the addressee is older.

Age GapAddressee (male)Addressee (female)SelfRelationship
+20 or moreongbaconGrandparent generation
+10 to +19chuco (North/South) / o (Central)chauParent generation
+3 to +9anhchiemOlder sibling
-2 to +2anhchiemSame age (nang principle)
-3 to -9ememanh / chiYounger sibling
-10 to -19chauchauchu / co (or o)Child generation
-20 or lessconconong / baGrandchild generation

The Nang Principle

When ages are similar (-2 to +2 gap), Vietnamese speakers default to treating the addressee as older -- using "em" (self) and "anh/chi" (addressee) -- as a sign of politeness and respect. This is called nang nguoi doi dien (elevating the other person).

Regional Variants

Central Vietnam uses distinct terms in some cases:

  • "o" replaces "co" (aunt/older woman in parent generation)
  • "me" replaces "ba" (grandmother) in some dialects

Professional Titles

30+ professional titles across 6 categories. Pass the role key to addressCalculate().

Academic

Role KeyVietnamese TitleAbbreviation
professorGiao suGS
associate-professorPho Giao suPGS
phdTien siTS
masterThac siThS
bachelorCu nhan--

Medical

Role KeyVietnamese Title
doctorBac si
pharmacistDuoc si
dentistNha si
nurseY ta
Role KeyVietnamese Title
lawyerLuat su
judgeTham phan
prosecutorCong to vien

Military (12 ranks)

Role KeyVietnamese Title
generalDai tuong
colonel-generalThuong tuong
lieutenant-generalTrung tuong
major-generalThieu tuong
colonelDai ta
senior-lieutenant-colonelThuong ta
lieutenant-colonelTrung ta
majorThieu ta
captainDai uy
senior-lieutenantThuong uy
lieutenantTrung uy
second-lieutenantThieu uy

Political

Role KeyVietnamese Title
general-secretaryTong Bi thu
presidentChu tich
prime-ministerThu tuong
ministerBo truong
deputy-ministerThu truong
party-secretaryBi thu
comradeDong chi

Education

Role KeyVietnamese TitleGender
teacher-maleThayMale
teacher-femaleCoFemale

salutation(name, options?) (Deprecated)

Deprecated

Use addressCalculate() instead. salutation() provides a simplified honorific without age-based pronouns, professional titles, or regional variants.

typescript
import { salutation } from 'vietnamese-name-generator';

salutation('Nguyen Van Nam', { formality: 'formal' });
// { salutation: 'Ong Nam', honorific: 'Ong', addressName: 'Nam', fullSalutation: 'Kinh gui Ong Nam' }

salutation('Tran Thi Lan', { formality: 'casual' });
// { salutation: 'Chi Lan', honorific: 'Chi', addressName: 'Lan', fullSalutation: 'Chi Lan' }

Options:

OptionTypeDefaultDescription
gender'male' | 'female'auto-detectedOverride gender
formality'formal' | 'casual' | 'professional''casual'Formality level

Released under the MIT License.