Skip to content

Supported languages

randino generates in nine languages, each with its own pools, its own name order and its own romanization. Every generator takes a language, and mixes all of the ones it supports when you leave it out.

CodeLanguageNativePerson namesWords and nicknamesSentences
enEnglishEnglish
koKorean한국어
jaJapanese日本語
zhChinese中文
itItalianItaliano
deGermanDeutsch
ruRussianРусский
esSpanishEspañol
viVietnameseTiếng Việt

The codes are string literals, and they are also available at runtime as NAME_LANGUAGES and WORD_LANGUAGES.

javascript
import { NAME_LANGUAGES, WORD_LANGUAGES } from 'randino';

NAME_LANGUAGES; // ['en', 'ko', 'ja', 'zh', 'it', 'de', 'ru', 'es', 'vi']
WORD_LANGUAGES; // ['en', 'ko', 'ja', 'zh', 'vi', 'es', 'it', 'de', 'ru']

The codes are the members of two enums, and the lists are also available as nameLanguages and wordLanguages.

dart
import 'package:randino/randino.dart';

NameLanguage.ko.name; // 'ko'
nameLanguages; // every NameLanguage, in presentation order
wordLanguages; // every WordLanguage, in presentation order

The codes are Literal types, so a checker rejects a code that does not exist, and the tuples are also available at runtime as NAME_LANGUAGES and WORD_LANGUAGES.

python
from randino import NAME_LANGUAGES, WORD_LANGUAGES

NAME_LANGUAGES  # ('en', 'ko', 'ja', 'zh', 'it', 'de', 'ru', 'es', 'vi')
WORD_LANGUAGES  # ('en', 'ko', 'ja', 'zh', 'vi', 'es', 'it', 'de', 'ru')

Person names

Each language decides three things: which part of a name comes first, whether there is a middle part at all, and how the native form becomes an English pronunciation.

CodeName orderMiddle nameExample
engiven firstyesPaisley Lewis
kofamily firstno김태윤 → Kim Taeyun
jafamily firstno山口直人 → Yamaguchi Naoto
zhfamily firstno赵勇轩 → Zhao Yongxuan
itgiven firstyesGiorgia Mancini
degiven firstyesJohanna Wolf
rugiven firstyes (patronymic)Иван Семёнов → Ivan Semyonov
esgiven firstyesGonzalo Martín → Gonzalo Martin
vifamily firstyesĐặng Quân → Dang Quan

Korean, Japanese and Chinese have no middle part, so the middle-name option is ignored for them rather than inventing one. There is a helper that answers that question directly: nameSupportsMiddleName.

Romanization

Romanization is the English pronunciation of the native form, not a translation, and each script gets there its own way:

  • Latin scripts drop their diacritics: PérezPerez, MüllerMuller, ĐỗDo.
  • Cyrillic is transliterated character by character: СемёновSemyonov.
  • Korean follows the Revised Romanization of Korean, including the sound changes between syllables — 석민 is Seongmin and not Seokmin — with the conventional spelling for surnames, so is Kim rather than Gim.
  • Japanese and Chinese carry the reading on each character, so 佐藤 is Sato and is Wang.

English is the one language where romanizing changes nothing, because the names are already in the Latin alphabet.

Words and nicknames

The word pools cover every one of the nine, and so do randWord, the twenty-nine themed generators and randNickname. What differs between the languages is where the modifier goes and whether it changes shape beside the noun, and each language says both in its own frames and agreement rules.

CodeLanguageShapesExample
koKoreanmodifier, trailing word멋진사자, 고양이꼬리
enEnglishmodifier, trailing wordMistyOwl, CatTail
jaJapanesemodifier (attributive form)青いライオン, 星の影
zhChinesemodifier, 的 before a verb快乐熊猫, 奔跑的狮子
viVietnamesemodifier after the nounmèo xanh, đuôi mèo
esSpanishmodifier after, agreeinggato azul, luna dorada
itItalianmodifier after, agreeinggatto azzurro, luna dorata
deGermanmodifier before, decliningblauer Wal, blaue Katze
ruRussianmodifier before, decliningсиний кит, синяя рыба

The shapes belong to the language, so Vietnamese writes its own: the modifier behind the noun, the possessed thing in front of its owner. A language that inflects tags each noun with its gender and lists the endings a modifier changes, so Spanish writes gato dorado beside luna dorada without either form being stored twice. A noun with no singular at all, such as ножницы, gafas or Jeans, is tagged plural instead, because no singular modifier can stand beside it.

Every language the name generator knows has word pools too, so language means the same nine codes on every generator in the package.

Japanese and Chinese reach a second noun only through の and 的. A bare noun-noun compound needs a particle more often than not in either language, and reads as garbled once the base word is abstract.

Sentences

Every language writes sentences too, and each declares the shapes its own grammar can carry. What differs is where the verb stands, how a phrase is marked, and which shapes the language can write at all.

CodeLanguageShapes it declaresA sentence
koKoreanevery one, verb last검은 고양이가 숲에서 잠잔다.
jaJapaneseevery one, verb lastハンバーガーが暗礁で冷める。
zhChineseevery one, place before the verb巨乌贼又品尝朱红椰汁。
enEnglishevery one, verb secondThe angler cleans the towel in the balcony.
viVietnameseevery one, verb secondLông mi run trong khe núi.
esSpanishevery one, verb secondLa vía láctea brilla en la roca pobre.
itItalianevery one, place without articleIl birraio audace dimentica l'eclissi.
deGermanno object, no placeIm Frühling blüht eine Chrysantheme noch.
ruRussianno object, no placeСпутанный юпитер едва светлеет.

German and Russian are narrower for the same reason. Both would put an object in the accusative and a place in another case again, and each case changes the noun's own ending or the article in front of it, so they do not declare the shapes that need one. Asking for one falls back to the closest they have. Sentences covers this in full.

Released under the MIT License