docs: def getdict(locale):
      """
      Generate or get convertion dict cache for certain locale.
      Dictionaries are loaded on demand.
      """
      global zhcdicts, dict_zhcn, dict_zhsg, dict_zhtw, dict_zhhk, pfsdict
      if zhcdicts is None:
          loaddict(DICTIONARY)
      if locale == 'zh-cn':
          if dict_zhcn:
              got = dict_zhcn
          else:
              dict_zhcn = zhcdicts['zh2Hans'].copy()
              dict_zhcn.update(zhcdicts['zh2CN'])
              got = dict_zhcn
      elif locale == 'zh-tw':
          if dict_zhtw:
              got = dict_zhtw
          else:
              dict_zhtw = zhcdicts['zh2Hant'].copy()
              dict_zhtw.update(zhcdicts['zh2TW'])
              got = dict_zhtw
      elif locale == 'zh-hk' or locale == 'zh-mo':
          if dict_zhhk:
              got = dict_zhhk
          else:
              dict_zhhk = zhcdicts['zh2Hant'].copy()
              dict_zhhk.update(zhcdicts['zh2HK'])
              got = dict_zhhk
      elif locale == 'zh-sg' or locale == 'zh-my':
          if dict_zhsg:
              got = dict_zhsg
          else:
              dict_zhsg = zhcdicts['zh2Hans'].copy()
              dict_zhsg.update(zhcdicts['zh2SG'])
              got = dict_zhsg
      elif locale == 'zh-hans':
          got = zhcdicts['zh2Hans']
      elif locale == 'zh-hant':
          got = zhcdicts['zh2Hant']
      else:
          got = {}
      if locale not in pfsdict:
          pfsdict[locale] = getpfset(got)
      return got