본문으로 건너뛰기

지원 언어

randino는 9개 언어로 텍스트를 생성합니다. 언어마다 단어 풀과 이름 순서, 로마자 표기 규칙이 따로 있습니다. 모든 생성기는 언어를 받으며, 지정하지 않으면 지원하는 모든 언어를 섞습니다.

코드언어표기사람 이름단어와 닉네임문장
en영어English
ko한국어한국어
ja일본어日本語
zh중국어中文
it이탈리아어Italiano
de독일어Deutsch
ru러시아어Русский
es스페인어Español
vi베트남어Tiếng Việt

코드는 문자열 리터럴이며, 런타임에는 NAME_LANGUAGESWORD_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']

코드는 두 enum의 멤버이며, 목록은 nameLanguageswordLanguages로도 확인할 수 있습니다.

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

NameLanguage.ko.name; // 'ko'
nameLanguages; // 표시 순서대로 나열된 모든 NameLanguage
wordLanguages; // 모든 WordLanguage, 표시 순서대로

코드는 Literal 타입이므로 존재하지 않는 코드는 타입 검사기가 거부하며, 목록은 런타임에도 NAME_LANGUAGESWORD_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')

사람 이름

언어마다 세 가지가 다릅니다. 이름의 어느 부분이 앞에 오는지, 중간 이름이 있는지, 고유 문자 표기를 영어 발음으로 어떻게 옮기는지입니다.

코드이름 순서중간 이름예시
en이름 먼저있음Paisley Lewis
ko성 먼저없음김태윤 → Kim Taeyun
ja성 먼저없음山口直人 → Yamaguchi Naoto
zh성 먼저없음赵勇轩 → Zhao Yongxuan
it이름 먼저있음Giorgia Mancini
de이름 먼저있음Johanna Wolf
ru이름 먼저있음 (부칭)Иван Семёнов → Ivan Semyonov
es이름 먼저있음Gonzalo Martín → Gonzalo Martin
vi성 먼저있음Đặng Quân → Dang Quan

한국어, 일본어, 중국어에는 중간 이름이 없으므로, 중간 이름 옵션은 없는 이름을 만들어내는 대신 그냥 무시됩니다. 이를 직접 확인하는 헬퍼가 있습니다: nameSupportsMiddleName.

로마자 표기

로마자 표기는 번역이 아니라 고유 표기의 영어 발음이며, 문자 체계마다 방식이 다릅니다.

  • 라틴 문자는 발음 구별 부호를 떼어냅니다. PérezPerez, MüllerMuller, ĐỗDo.
  • 키릴 문자는 글자 단위로 음역합니다. СемёновSemyonov.
  • 한글은 국어의 로마자 표기법을 따르며 음절 사이의 음운 변동까지 반영합니다. 석민Seokmin이 아니라 Seongmin입니다. 성씨는 관용 표기를 사용해서 Gim이 아니라 Kim이 됩니다.
  • 일본어와 중국어는 글자마다 읽는 법을 데이터에 함께 담고 있어서 佐藤Sato, Wang이 됩니다.

영어는 로마자 표기를 해도 아무것도 바뀌지 않는 유일한 언어입니다. 이미 라틴 알파벳으로 쓰여 있기 때문입니다.

단어와 닉네임

단어 풀은 9개 언어를 모두 지원하고, 그 위에 있는 randWord와 29개 테마 함수와 randNickname도 마찬가지입니다. 언어마다 다른 것은 수식어가 어디에 놓이는지, 그리고 명사 옆에서 모양이 바뀌는지입니다. 둘 다 각 언어가 자기 프레임과 일치 규칙에 적어 둡니다.

코드언어형태예시
ko한국어수식어, 뒤따르는 단어멋진사자, 고양이꼬리
en영어수식어, 뒤따르는 단어MistyOwl, CatTail
ja일본어수식어 (연체형)青いライオン, 星の影
zh중국어수식어, 동사 앞에는 的快乐熊猫, 奔跑的狮子
vi베트남어수식어가 명사 뒤에mèo xanh, đuôi mèo
es스페인어수식어가 뒤에서 일치gato azul, luna dorada
it이탈리아어수식어가 뒤에서 일치gatto azzurro, luna dorata
de독일어수식어가 앞에서 굴절blauer Wal, blaue Katze
ru러시아어수식어가 앞에서 굴절синий кит, синяя рыба

형태는 언어가 직접 선언하므로, 베트남어는 수식어를 명사 뒤에 두고 소유의 대상을 주인 앞에 둡니다. 굴절하는 언어는 명사마다 성을 태그로 달고 수식어가 바뀌는 어미를 목록으로 적어 둡니다. 그래서 스페인어는 gato doradoluna dorada를 어느 쪽도 두 번 저장하지 않고 씁니다. 단수형이 아예 없는 명사(ножницы, gafas, Jeans)는 성 대신 복수를 답니다. 그 옆에는 단수 수식어가 설 수 없기 때문입니다.

이름 생성기가 아는 언어에는 모두 단어 풀이 있습니다. 그래서 language는 이 패키지의 모든 생성 함수에서 같은 9개 코드를 뜻합니다.

일본어와 중국어에서 명사와 명사를 이어 붙이려면 の와 的이 필요합니다. 조사 없이 붙이면 기준 단어가 추상적일 때 뜻을 알 수 없는 말이 되기 때문입니다.

문장

문장도 아홉 언어가 모두 씁니다. 각 언어는 자기 문법이 감당할 수 있는 형태를 선언합니다. 언어마다 다른 것은 동사가 어디에 서는지, 구를 무엇으로 표시하는지, 어떤 형태를 아예 쓸 수 없는지입니다.

코드언어선언하는 형태문장
ko한국어전부, 동사가 끝에검은 고양이가 숲에서 잠잔다.
ja일본어전부, 동사가 끝에ハンバーガーが暗礁で冷める。
zh중국어전부, 장소가 동사 앞에巨乌贼又品尝朱红椰汁。
en영어전부, 동사가 두 번째에The angler cleans the towel in the balcony.
vi베트남어전부, 동사가 두 번째에Lông mi run trong khe núi.
es스페인어전부, 동사가 두 번째에La vía láctea brilla en la roca pobre.
it이탈리아어전부, 장소에는 관사 없이Il birraio audace dimentica l'eclissi.
de독일어목적어와 장소 없음Im Frühling blüht eine Chrysantheme noch.
ru러시아어목적어와 장소 없음Спутанный юпитер едва светлеет.

독일어와 러시아어가 좁은 이유는 같습니다. 둘 다 목적어는 대격에, 장소는 또 다른 격에 두어야 하는데, 격이 바뀌면 명사의 어미나 앞의 관사가 바뀌므로 그런 형태는 선언하지 않습니다. 그런 요청이 오면 그 언어가 가진 형태 중 가장 가까운 것으로 답합니다. 자세한 내용은 문장에 있습니다.

Released under the MIT License