ai-content-maker/.venv/Lib/site-packages/pypinyin/style/wadegiles.py

560 lines
12 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from pypinyin.constants import Style
from pypinyin.style import register
from pypinyin.style._utils import replace_symbol_to_no_symbol
from pypinyin.style._utils import get_initials
# https://en.wikipedia.org/wiki/Wade%E2%80%93Giles
# https://web.archive.org/web/20070128065433/http://polaris.gseis.ucla.edu/skozerow/wadegiles.htm
# https://www.lib.uchicago.edu/about/directory/departments/eastasia/find/wade-giles-pinyin-conversion-table/
# https://www.zdic.net/ts/fulu/2019/05/18.html
_convert_table = [
['a', 'a'],
['ai', 'ai'],
['an', 'an'],
['ang', 'ang'],
['ao', 'ao'],
['zha', 'cha'],
['cha', 'ch\'a'],
['zhai', 'chai'],
['chai', 'ch\'ai'],
['zhan', 'chan'],
['chan', 'ch\'an'],
['zhang', 'chang'],
['chang', 'ch\'ang'],
['zhao', 'chao'],
['chao', 'ch\'ao'],
['zhe', 'che'],
['che', 'ch\'e'],
['zhen', 'chen'],
['chen', 'ch\'en'],
['zheng', 'cheng'],
['cheng', 'ch\'eng'],
['ji', 'chi'],
['qi', 'ch\'i'],
['jia', 'chia'],
['qia', 'ch\'ia'],
['jiang', 'chiang'],
['qiang', 'ch\'iang'],
['jiao', 'chiao'],
['qiao', 'ch\'iao'],
['jie', 'chieh'],
['qie', 'ch\'ieh'],
['jian', 'chien'],
['qian', 'ch\'ien'],
['zhi', 'chih'],
['chi', 'ch\'ih'],
['jin', 'chin'],
['qin', 'ch\'in'],
['jing', 'ching'],
['qing', 'ch\'ing'],
['jiu', 'chiu'],
['qiu', 'ch\'iu'],
['jiong', 'chiung'],
['qiong', 'ch\'iung'],
['zhuo', 'cho'],
['chuo', 'ch\'o'],
['zhou', 'chou'],
['chou', 'ch\'ou'],
['zhu', 'chu'],
['chu', 'ch\'u'],
['ju', 'chü'],
['qu', 'ch\'ü'],
['zhua', 'chua'],
['zhuai', 'chuai'],
['chuai', 'ch\'uai'],
['zhuan', 'chuan'],
['chuan', 'ch\'uan'],
['juan', 'chüan'],
['quan', 'ch\'üan'],
['zhuang', 'chuang'],
['chuang', 'ch\'uang'],
['jue', 'chüeh'],
['que', 'ch\'üeh'],
['zhui', 'chui'],
['chui', 'ch\'ui'],
['zhun', 'chun'],
['chun', 'ch\'un'],
['jun', 'chün'],
['qun', 'ch\'ün'],
['zhong', 'chung'],
['chong', 'ch\'ung'],
['en', 'en'],
['er', 'erh'],
['fa', 'fa'],
['fan', 'fan'],
['fang', 'fang'],
['fei', 'fei'],
['fen', 'fen'],
['feng', 'feng'],
['fo', 'fo'],
['fou', 'fou'],
['fu', 'fu'],
['ha', 'ha'],
['hai', 'hai'],
['han', 'han'],
['hang', 'hang'],
['hao', 'hao'],
['hei', 'hei'],
['hen', 'hen'],
['heng', 'heng'],
['he', 'ho'],
['hou', 'hou'],
['xi', 'hsi'],
['xia', 'hsia'],
['xiang', 'hsiang'],
['xiao', 'hsiao'],
['xie', 'hsieh'],
['xian', 'hsien'],
['xin', 'hsin'],
['xing', 'hsing'],
['xiu', 'hsiu'],
['xiong', 'hsiung'],
['xu', 'hsü'],
['xuan', 'hsüan'],
['xue', 'hsüeh'],
['xun', 'hsün'],
['hu', 'hu'],
['hua', 'hua'],
['huai', 'huai'],
['huan', 'huan'],
['huang', 'huang'],
['hui', 'hui'],
['hun', 'hun'],
['hong', 'hung'],
['huo', 'huo'],
['yi', 'i'],
['ran', 'jan'],
['rang', 'jang'],
['rao', 'jao'],
['re', 'je'],
['ren', 'jen'],
['reng', 'jeng'],
['ri', 'jih'],
['ruo', 'jo'],
['rou', 'jou'],
['ru', 'ju'],
['ruan', 'juan'],
['rui', 'jui'],
['run', 'jun'],
['rong', 'jung'],
['ga', 'ka'],
['ka', 'k\'a'],
['gai', 'kai'],
['kai', 'k\'ai'],
['gan', 'kan'],
['kan', 'k\'an'],
['gang', 'kang'],
['kang', 'k\'ang'],
['gao', 'kao'],
['kao', 'k\'ao'],
['gen', 'ken'],
['ken', 'k\'en'],
['geng', 'keng'],
['keng', 'k\'eng'],
['ge', 'ko'],
['ke', 'k\'o'],
['gou', 'kou'],
['kou', 'k\'ou'],
['gu', 'ku'],
['ku', 'k\'u'],
['gua', 'kua'],
['kua', 'k\'ua'],
['guai', 'kuai'],
['kuai', 'k\'uai'],
['guan', 'kuan'],
['kuan', 'k\'uan'],
['guang', 'kuang'],
['kuang', 'k\'uang'],
['gui', 'kuei'],
['kui', 'k\'uei'],
['gun', 'kun'],
['kun', 'k\'un'],
['gong', 'kung'],
['kong', 'k\'ung'],
['guo', 'kuo'],
['kuo', 'k\'uo'],
['la', 'la'],
['lai', 'lai'],
['lan', 'lan'],
['lang', 'lang'],
['lao', 'lao'],
['le', 'le'],
['lei', 'lei'],
['leng', 'leng'],
['li', 'li'],
['liang', 'liang'],
['liao', 'liao'],
['lie', 'lieh'],
['lian', 'lien'],
['lin', 'lin'],
['ling', 'ling'],
['liu', 'liu'],
['luo', 'lo'],
['lou', 'lou'],
['lu', 'lu'],
['', ''],
['luan', 'luan'],
['luan', 'lüan'],
['lue', 'lüeh'],
['lun', 'lun'],
['long', 'lung'],
['ma', 'ma'],
['mai', 'mai'],
['man', 'man'],
['mang', 'mang'],
['mao', 'mao'],
['mei', 'mei'],
['men', 'men'],
['meng', 'meng'],
['mi', 'mi'],
['miao', 'miao'],
['mie', 'mieh'],
['mian', 'mien'],
['min', 'min'],
['ming', 'ming'],
['miu', 'miu'],
['mo', 'mo'],
['mou', 'mou'],
['mu', 'mu'],
['na', 'na'],
['nai', 'nai'],
['nan', 'nan'],
['nang', 'nang'],
['nao', 'nao'],
['nei', 'nei'],
['nen', 'nen'],
['neng', 'neng'],
['ni', 'ni'],
['niang', 'niang'],
['niao', 'niao'],
['nie', 'nieh'],
['nian', 'nien'],
['nin', 'nin'],
['ning', 'ning'],
['niu', 'niu'],
['nuo', 'no'],
['nou', 'nou'],
['nu', 'nu'],
['', ''],
['nuan', 'nuan'],
['nue', 'nüeh'],
['nong', 'nung'],
['e', 'o'],
['ou', 'ou'],
['ba', 'pa'],
['pa', 'p\'a'],
['bai', 'pai'],
['pai', 'p\'ai'],
['ban', 'pan'],
['pan', 'p\'an'],
['bang', 'pang'],
['pang', 'p\'ang'],
['bao', 'pao'],
['pao', 'p\'ao'],
['bei', 'pei'],
['pei', 'p\'ei'],
['ben', 'pen'],
['pen', 'p\'en'],
['beng', 'peng'],
['peng', 'p\'eng'],
['bi', 'pi'],
['pi', 'p\'i'],
['biao', 'piao'],
['piao', 'p\'iao'],
['bie', 'pieh'],
['pie', 'p\'ieh'],
['bian', 'pien'],
['pian', 'p\'ien'],
['bin', 'pin'],
['pin', 'p\'in'],
['bing', 'ping'],
['ping', 'p\'ing'],
['bo', 'po'],
['po', 'p\'o'],
['pou', 'p\'ou'],
['bu', 'pu'],
['pu', 'p\'u'],
['sa', 'sa'],
['sai', 'sai'],
['san', 'san'],
['sang', 'sang'],
['sao', 'sao'],
['se', 'se'],
['sen', 'sen'],
['seng', 'seng'],
['sha', 'sha'],
['shai', 'shai'],
['shan', 'shan'],
['shang', 'shang'],
['shao', 'shao'],
['she', 'she'],
['shen', 'shen'],
['sheng', 'sheng'],
['shi', 'shih'],
['shou', 'shou'],
['shu', 'shu'],
['shua', 'shua'],
['shuai', 'shuai'],
['shuan', 'shuan'],
['shuang', 'shuang'],
['shui', 'shui'],
['shun', 'shun'],
['shuo', 'shuo'],
['suo', 'so'],
['sou', 'sou'],
['si', 'ssu'],
['su', 'su'],
['suan', 'suan'],
['sui', 'sui'],
['sun', 'sun'],
['song', 'sung'],
['da', 'ta'],
['ta', 't\'a'],
['dai', 'tai'],
['tai', 't\'ai'],
['dan', 'tan'],
['tan', 't\'an'],
['dang', 'tang'],
['tang', 't\'ang'],
['dao', 'tao'],
['tao', 't\'ao'],
['de', 'te'],
['te', 't\'e'],
['deng', 'teng'],
['teng', 't\'eng'],
['di', 'ti'],
['ti', 't\'i'],
['diao', 'tiao'],
['tiao', 't\'iao'],
['die', 'tieh'],
['tie', 't\'oeh'],
['dian', 'tien'],
['tian', 't\'ien'],
['ding', 'ting'],
['ting', 't\'ing'],
['diu', 'tiu'],
['duo', 'to'],
['tuo', 't\'o'],
['dou', 'tou'],
['tou', 't\'ou'],
['du', 'tu'],
['tu', 't\'u'],
['duan', 'tuan'],
['tuan', 't\'uan'],
['dui', 'tui'],
['tui', 't\'ui'],
['dun', 'tun'],
['tun', 't\'un'],
['dong', 'tung'],
['tong', 't\'ung'],
['za', 'tsa'],
['ca', 'ts\'a'],
['zai', 'tsai'],
['cai', 'ts\'ai'],
['zan', 'tsan'],
['can', 'ts\'an'],
['zang', 'tsang'],
['cang', 'ts\'ang'],
['zao', 'tsao'],
['cao', 'ts\'ao'],
['ze', 'tse'],
['ce', 'ts\'e'],
['zei', 'tsei'],
['zen', 'tsen'],
['cen', 'ts\'en'],
['zeng', 'tseng'],
['ceng', 'ts\'eng'],
['zuo', 'tso'],
['cuo', 'ts\'o'],
['zou', 'tsou'],
['cou', 'ts\'ou'],
['zu', 'tsu'],
['cu', 'ts\'u'],
['zuan', 'tsuan'],
['cuan', 'ts\'uan'],
['zui', 'tsui'],
['cui', 'ts\'ui'],
['zun', 'tsun'],
['cun', 'ts\'un'],
['zong', 'tsung'],
['cong', 'ts\'ung'],
['zi', 'tzu'],
['ci', 'tz\'u'],
['wa', 'wa'],
['wai', 'wai'],
['wan', 'wan'],
['wang', 'wang'],
['wei', 'wei'],
['wen', 'wen'],
['weng', 'weng'],
['wo', 'wo'],
['wu', 'wu'],
['ya', 'ya'],
['yai', 'yai'],
['yang', 'yang'],
['yao', 'yao'],
['ye', 'yeh'],
['yan', 'yen'],
['yin', 'yin'],
['ying', 'ying'],
['yo', 'yo'],
['you', 'yu'],
['yu', ''],
['yuan', 'yüan'],
['yue', 'yüeh'],
['yun', 'yün'],
['yong', 'yung'],
['chua', 'ch`ua'],
['dei', 'tei'],
['den', 'ten'],
['diang', 'tiang'],
['ei', 'ei'],
['eng', 'eng'],
['gei', 'kei'],
['lia', 'lia'],
['lo', 'lo'],
['lüan', 'lüan'],
['lvan', 'lüan'],
['lüe', 'lüeh'],
['lve', 'lüeh'],
['lün', 'lün'],
['lvn', 'lün'],
['me', 'me'],
['ne', 'ne'],
['nia', 'nia'],
['nun', 'nun'],
['nüe', 'nüeh'],
['nve', 'nüeh'],
['o', 'o'],
['sei', 'sei'],
['shei', 'shei'],
['shong', 'shung'],
['zhei', 'chei'],
]
_convert_table.sort(key=lambda x: len(x[0]), reverse=True)
# https://www.mysmth.net/nForum/#!article/Linguistics/4991
_initial_table = [
['b', 'p'],
['p', 'p\''],
['m', 'm'],
['f', 'f'],
['d', 't'],
['t', 't\''],
['n', 'n'],
['l', 'l'],
['g', 'g'],
['k', 'k\''],
['h', 'h'],
['j', 'ch'],
['q', 'ch\''],
['x', 'hs'],
['zh', 'ch'],
['ch', 'ch\''],
['sh', 'sh'],
['r', 'j'],
['z', 'ts'],
['c', 'ts\''],
['s', 's'],
]
_initial_table.sort(key=lambda x: len(x[0]), reverse=True)
_tone_table = [
['i', 'i'],
['u', 'u'],
['ü', 'ü'],
['v', 'ü'],
['a', 'a'],
['ia', 'ia'],
['ua', 'ua'],
['o', 'o'],
['uo', 'o'],
['e', 'e'],
['ie', 'ieh'],
['üe', 'üeh'],
['ve', 'üeh'],
['ai', 'ei'],
['uei', 'ui'],
['ao', 'ao'],
['iao', 'iao'],
['ou', 'ou'],
['iou', 'iu'],
['an', 'an'],
['ian', 'ien'],
['uan', 'uan'],
['üan', 'üan'],
['van', 'üan'],
['en', 'en'],
['in', 'in'],
['uen', 'un'],
['ün', 'ün'],
['vn', 'ün'],
['ang', 'ang'],
['iang', 'iang'],
['uang', 'uang'],
['eng', 'eng'],
['ing', 'ing'],
['ueng', 'ueng'],
['ong', 'ung'],
['iong', 'iung'],
['ê', 'eh'],
['er', 'erh'],
]
_tone_table.sort(key=lambda x: len(x[0]), reverse=True)
_except_table = [
['zhi', 'chih'],
['chi', 'ch\'ih'],
['shi', 'shih'],
['ri', 'jih'],
['zi', 'tzu'],
['ci', 'tz\'u'],
['si', 'ssu'],
['guo', 'guo'],
['kuo', 'k\'uo'],
['huo', 'huo'],
['luo', 'luo'],
['jue', 'chüeh'],
['que', 'ch\'üeh'],
['xue', 'hsüeh'],
]
_except_table.sort(key=lambda x: len(x[0]), reverse=True)
def to_wade_glides(pinyin, **kwargs):
pinyin = replace_symbol_to_no_symbol(pinyin).replace('v', 'ü')
whole_converted = _convert_whole(pinyin, _except_table)
if whole_converted != pinyin:
return _fixed_result(whole_converted)
whole_converted = _convert_whole(pinyin, _convert_table)
if whole_converted != pinyin:
return _fixed_result(whole_converted)
initials = get_initials(pinyin, strict=False)
tones = pinyin[len(initials):]
initials = _convert_whole(initials, _initial_table)
tones = _convert_whole(tones, _tone_table)
return _fixed_result('{}{}'.format(initials, tones))
def _fixed_result(pinyin):
return pinyin.replace('ü', 'v')
def _convert_whole(chars, table):
for pair in table:
f, r = pair
if f == chars:
return r
return chars
register(Style.WADEGILES, func=to_wade_glides)