查看: 8882|回复: 339
打印 上一主题 下一主题

[日语] 〖2021年09月26日更新〗クラウン日中辞典 -附制作教程和代码

  [复制链接]
  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    141

    回帖

    4080

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4080

    QQ 章

    跳转到指定楼层
    1
    发表于 2021-9-9 16:16:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 zhangchaont 于 2021-9-26 13:02 编辑

    2021年09月26日更新
    免责声明:此帖仅为练习mdx/mdd文件的制作,请下载后于24小时内删除。
    此次更新做为词典的使用者来讲,变化不大,将之前网友反馈的查询出错的问题修复了。但是从制作上来讲,是完全重新制作的。
    1. 总算找到一个键对应多条内容的方法了。多谢Igmcw兄台的分享。【支持超大文件】Python MDX词典打包工具 2019-11-19更新  
    在writemdict.py文件中的_build_offset_table函数改成如下:
    1.     def _build_offset_table(self, d):
    2.         # Sets self._offset_table to a table of entries _OffsetTableEntry objects e.
    3.         #
    4.         # where:
    5.         #  e.key: encoded version of the key, not null-terminated
    6.         #  e.key_null: encoded version of the key, null-terminated
    7.         #  e.key_len: the length of the key, in either bytes or 2-byte units, not counting the null character
    8.         #        (as required by the MDX format in the keyword index)
    9.         #  e.offset: the cumulative sum of len(record_null) for preceding records
    10.         #  e.record_null: encoded version of the record, null-terminated
    11.         #
    12.         # Also sets self._total_record_len to the total length of all record fields.
    13.         items = list(d.items())
    14.         items.sort(key=operator.itemgetter(0))

    15.         self._offset_table = []
    16.         offset = 0
    17.         for key, records in items:
    18.             for record in set(records):
    19.                 key_enc = key.encode(self._python_encoding)
    20.                 key_null = (key + "\0").encode(self._python_encoding)
    21.                 key_len = len(key_enc) // self._encoding_length

    22.                 # set record_null to a the the value of the record. If it's
    23.                 # an MDX file, append an extra null character.
    24.                 if self._is_mdd:
    25.                     record_null = record
    26.                 else:
    27.                     record_null = (record + "\0").encode(self._python_encoding)
    28.                 self._offset_table.append(_OffsetTableEntry(
    29.                     key=key_enc,
    30.                     key_null=key_null,
    31.                     key_len=key_len,
    32.                     record_null=record_null,
    33.                     offset=offset))
    34.                 offset += len(record_null)
    35.         self._total_record_len = offset

    36.         self._num_entries = len(self._offset_table)
    复制代码


    修改是:
    1.         for key, records in items:
    2.             for record in set(records):
    复制代码

    和增加了最后一行。
    这样就可以支持一个键对多个条目了。所以生成的字典的键值都需要修改成list类型,包括mdd里面的。

    2. 把样式单的底色改成白色了,在欧陆里面有底色的话看起来不协调。


    本帖隐藏的内容

    链接: https://pan.baidu.com/s/10hWmhGhgOkhH4YODJxLmGg 提取码: 52o7



    附上重写的代码
    1. from utils import csv_reader
    2. import os
    3. from uuid import uuid4

    4. from bs4 import BeautifulSoup

    5. from mdict_query.mdict_query import IndexBuilder
    6. from writemdict.writemdict import MDictWriter
    7. from jaconv import hira2kata
    8. from onomatope import isonomatope


    9. class CrownDict:
    10.     def __init__(self):
    11.         self.csv = csv_reader('src/dictionaries/jpcn.csv')
    12.         self.voice_library = IndexBuilder('src/NHK Accent Library/NHK日本語発音アクセント辞書.mdx')
    13.         self.mdx_dict = {}
    14.         self.mdd_dict = {}
    15.         with open('src/speak.png', 'rb') as f:
    16.             self.mdd_dict['\\speak.png'] = [f.read()]

    17.     def parse(self):
    18.         for row in self.csv:
    19.             key, data = row[0], row[1]
    20.             soup = BeautifulSoup(data, features='html.parser')
    21.             header = soup.find('span', {'class': 'hwg x_xh0'})
    22.             contents = soup.find('span', {'class': 'gramb x_xd0'})
    23.             idiom = soup.find('span', {'class': 'idmb x_xo0'})
    24.             subkeys = self.get_subkeys(header, idiom)

    25.             # add speak icon to header part, and lookup audio for it
    26.             pron_path = uuid4().hex + '.spx'
    27.             spx = self.voice_library_lookup(key)
    28.             if not spx:
    29.                 spx = self.voice_library_lookup(subkeys[0])
    30.             if spx:
    31.                 self.mdd_dict[f'\\{pron_path}'] = [spx]
    32.                 speaker = soup.new_tag('img', src='file:///speak.png')
    33.                 audio_link = soup.new_tag('a', href="sound:///" + pron_path)
    34.                 header.append(speaker)
    35.                 speaker.wrap(audio_link)

    36.             new_soup = BeautifulSoup('', features='html.parser')
    37.             css = new_soup.new_tag('link', href="crown.css")
    38.             jp_section = new_soup.new_tag('div', attrs={'class': 'jp_section'})
    39.             new_soup.extend([css, jp_section])
    40.             jp_section.extend([header, contents])
    41.             if idiom:
    42.                 jp_section.append(idiom)
    43.             record = new_soup.prettify()

    44.             # add keys
    45.             if key not in self.mdx_dict:
    46.                 self.mdx_dict[key] = [record]
    47.             else:
    48.                 self.mdx_dict[key].append(record)
    49.             for subkey in subkeys:
    50.                 if subkey != key:
    51.                     if subkey not in self.mdx_dict:
    52.                         self.mdx_dict[subkey] = [f'@@@LINK={key}']
    53.                     else:
    54.                         self.mdx_dict[subkey].append(f'@@@LINK={key}')

    55.     @staticmethod
    56.     def get_subkeys(header, idiom):
    57.         subkeys = []
    58.         if '【' in header.text:
    59.             # if has tail then drop it
    60.             # add pronunciation and word keys
    61.             tail = header.find('span', {'class': 'tail'})
    62.             if tail:
    63.                 tail.extract()
    64.             header_text = ''.join(header.text.split())
    65.             pron = header_text[:header_text.index('【')]
    66.             word = header_text[header_text.index('【') + 1: -1]
    67.             subkeys.append(pron)
    68.             subkeys.append(word)
    69.             if isonomatope(word):
    70.                 subkeys.append(hira2kata(word))
    71.         else:
    72.             pron = ''.join(header.text.split())
    73.             subkeys.append(pron)
    74.         # add onomatope keys
    75.         if isonomatope(pron):
    76.             subkeys.append(hira2kata(pron))
    77.         # add idiom keys
    78.         if idiom:
    79.             for idm_sec in idiom.find_all('span', {'class': 'idmsec x_xo1'}):
    80.                 idm_tags = idm_sec.find_all('span', {'class': 'idm'})
    81.                 idm_texts = [''.join(idm.text.split()) for idm in idm_tags]
    82.                 idm_texts = list(set(idm_texts))
    83.                 subkeys.extend(idm_texts)
    84.         return subkeys

    85.     def voice_library_lookup(self, key):
    86.         result = self.voice_library.mdx_lookup(key)
    87.         if result:
    88.             soup = BeautifulSoup(result[0], features='html.parser')
    89.             href = soup.a.get('href')
    90.             if 'entry' in href:
    91.                 soup = BeautifulSoup(self.voice_library.mdx_lookup(href[8:])[0], features='html.parser')
    92.             link = soup.a['href'][9:].replace('/', '\\')
    93.             spx = self.voice_library.mdd_lookup(link)
    94.             if spx:
    95.                 spx = spx[0]
    96.                 return spx

    97.     def write(self):
    98.         description = """クラウン日中辞典 / Sanseido's Crown Japanese-Chinese Dictionary
    99.                 Copyright © 2010, 2019 Sanseido Company Ltd., under licence to Oxford University Press. All rights reserved."""
    100.         dict_name = "超級クラウン日中辞典V0.8"
    101.         mdx_writer = MDictWriter(self.mdx_dict, dict_name, description=description)
    102.         with open(os.path.expanduser('~/Downloads/クラウン日中辞典/crown.mdx'), 'wb') as outfile:
    103.             print("Writing mdx starts...")
    104.             mdx_writer.write(outfile)
    105.             print("Writing finished.")

    106.         mdd_writer = MDictWriter(self.mdd_dict, dict_name, description=description, is_mdd=True)
    107.         with open(os.path.expanduser('~/Downloads/クラウン日中辞典/crown.mdd'), 'wb') as outfile:
    108.             print("Writing mdd starts...")
    109.             mdd_writer.write(outfile)
    110.             print("Writing finished.")


    111. if __name__ == '__main__':
    112.     crown = CrownDict()
    113.     crown.parse()
    114.     crown.write()
    复制代码


    2021年09月23日更新
    将NHK日本語発音アクセント辞書中的发音添加到词典中了,不全,所以有些单词是没有发音的。不过,基本上没有发音的单词也不常用,一般使用的话问题不大。另外,每个单词我就只配了一个发音,以后看情况再说吧。


    本帖隐藏的内容

    链接: https://pan.baidu.com/s/1BP1iTdGH-lVuxroAHiqlrw 提取码: w1js



    2021年09月18日更新
    1. 修改了一个小问题,きっと这个词条有两个,对应不同的意思,用单词加读音拼在一起不能解决键冲突的问题,已经修复;
    2. 为拟声拟态词增加了片假名的查询,在小说中,为了强调,很多拟声拟态词都会写成片假名的形式,这次增加了这个功能。这个是用的这个网页上的列表稍加处理实现的,虽然不是很全,但是常用的应该都有了。

    代码就不贴出来了,之前的代码如果能够看懂的话,这些小修改应该都能明白的。






    2021年09月15日更新
    此次更新实现了用假名查询。
    同音、同形的词条会汇总显示到一个页面里。

    另外也可以单独查询固定搭配。


    实现的思路如下:
    第一步,把单词和读音并在一起做为词条,这样就解决了键的冲突问题;
    第二步,添加单词查询键,如果没有重复的就用@@@LINK=key来跳转,有冲突键就把内容拼接到一起;
    第三步,添加读音查询键,思路同第二步;
    第四步,添加固定搭配查询键,如果有冲突键就把固定搭配单独抽取出来和冲突键的内容拼接到一起;不冲突的话单独显示固定搭配的释义;

    如果有什么bug的话欢迎反馈,以后后续继续优化。

    本帖隐藏的内容

    链接: https://pan.baidu.com/s/1bHKchxHXAsbB-xSGFz3FYw 提取码: 81tr


    代码如下:
    1. import csv
    2. import os
    3. import sys
    4. from bs4 import BeautifulSoup
    5. from writemdict.writemdict import MDictWriter
    6. import re


    7. def dictionary_data():
    8.     csv.field_size_limit(sys.maxsize)
    9.     d = {}
    10.     with open('jpcn.csv', 'r') as csvfile:
    11.         reader = csv.reader(csvfile)
    12.         for row in reader:
    13.             html = '''<html>
    14.             <head>
    15.             <link rel="stylesheet" href="jpdict.css" type="text/css">
    16.             </head>
    17.             <body>
    18.             <div class="jp_section">
    19.             </div>
    20.             </body>
    21.             </html>'''
    22.             # Combine entry and pronunciation as key to avoid key conflict
    23.             soup = BeautifulSoup(html, features='html.parser')
    24.             def_soup = BeautifulSoup(row[1], features='html.parser')
    25.             header = def_soup.find('span', {'class': 'hwg x_xh0'})
    26.             key = ''.join(header.text.split())
    27.             definition = def_soup.find('span', {'class': 'gramb x_xd0'})
    28.             idiom = def_soup.find('span', {'class': 'idmb x_xo0'})
    29.             soup.div.insert(0, header)
    30.             soup.div.insert(1, definition)
    31.             if idiom:
    32.                 soup.div.insert(2, idiom)
    33.             d[key] = soup.prettify()
    34.             jp_section = soup.find('div', {'class': 'jp_section'})

    35.             # Add Japanese word entry to dictionary, if key conflicts put the latter with previous entry together
    36.             word = row[0].strip()
    37.             if word not in d:
    38.                 d[word] = f'@@@LINK={key}'
    39.             else:
    40.                 if word != key:
    41.                     definition_of_heteronym = d[word]
    42.                     if "@@@LINK" in definition_of_heteronym:
    43.                         conflict_key = definition_of_heteronym[8:]
    44.                         definition_of_heteronym = d[conflict_key]
    45.                     soup_of_heteronym = BeautifulSoup(definition_of_heteronym, features='html.parser')
    46.                     soup_of_heteronym.body.append(jp_section)
    47.                     d[word] = soup_of_heteronym.prettify()

    48.             # Add pronunciation entries, if key conflicts put it to the end
    49.             if '【' in key:
    50.                 pron = re.search('(^.+?)【', key).group(1)
    51.                 if pron not in d:
    52.                     d[pron] = f"@@@LINK={key}"
    53.                 else:
    54.                     definition_of_homophone = d[pron]
    55.                     if "@@@LINK" in definition_of_homophone:
    56.                         conflict_key = d[pron][8:]
    57.                         definition_of_homophone = d[conflict_key]
    58.                     soup_of_homophone = BeautifulSoup(definition_of_homophone, features='html.parser')
    59.                     soup_of_homophone.body.append(jp_section)
    60.                     d[pron] = soup_of_homophone.prettify()

    61.                 # Add idiom entries, if key conflicts put it to the end
    62.                 if idiom:
    63.                     for idm_sec in idiom.find_all('span', {'class': 'idmsec x_xo1'}):
    64.                         idm_tags = idm_sec.find_all('span', {'class': 'idm'})
    65.                         idm_texts = [''.join(idm.text.split()) for idm in idm_tags]
    66.                         idm_texts = list(set(idm_texts))
    67.                         for n, idm in enumerate(idm_texts):
    68.                             html_frame_soup = BeautifulSoup(html, features='html.parser')
    69.                             new_jp_section = html_frame_soup.find('div', {'class': 'jp_section'})
    70.                             new_jp_section.append(idm_sec)
    71.                             if n == 0:
    72.                                 if idm not in d:
    73.                                     d[idm] = html_frame_soup.prettify()
    74.                                 else:
    75.                                     conflict_key_definition = d[idm]
    76.                                     if '@@@LINK' in conflict_key_definition:
    77.                                         conflict_key = conflict_key_definition[8:]
    78.                                         conflict_key_definition = d[conflict_key]
    79.                                     soup_of_conflict = BeautifulSoup(conflict_key_definition, features='html.parser')
    80.                                     soup_of_conflict.body.append(new_jp_section)
    81.                                     d[conflict_key] = soup_of_conflict.prettify()
    82.                             else:
    83.                                 d[idm] = f'@@@LINK={idm_texts[0]}'

    84.             if reader.line_num % 1000 == 0:
    85.                 print(reader.line_num)
    86.     return d


    87. def write_dict(d):
    88.     description = """クラウン日中辞典 / Sanseido's Crown Japanese-Chinese Dictionary
    89.     Copyright © 2010, 2019 Sanseido Company Ltd., under licence to Oxford University Press. All rights reserved."""
    90.     writer = MDictWriter(d, "超級クラウン日中辞典 ", description=description)
    91.     with open(os.path.expanduser('~/Downloads/クラウン日中辞典/jpdict.mdx'), 'wb') as outfile:
    92.         print("Writing mdx starts...")
    93.         writer.write(outfile)
    94.         print("Writing finished.")


    95. if __name__ == '__main__':
    96.     dictionary = dictionary_data()
    97.     write_dict(dictionary)
    复制代码


    2021年09月10日更新
    之前的提供下载的词典有点问题,固定搭配部分没有提取出来,现在加进去了,前面下载过的朋友请重新下载一下。
    目前发现的问题:
    1. 比如いらいら这个词,平时一般不会用苛々这个写法,但是在词典里面不按这个来查就检索不出来;这个我觉得可以用@@@LINK来解决
    2. 気有き、け两个读音,是分成两个词条的,目前的做法只会保留一个词条,这个我还没有想到什么解决办法,下周再说。



    日语的词典比较少,以前做Anki卡片的时候是从沪江上扒取的,不过沪江小D上的解释有些是有问题的,还有一个是因为我经常扒取,把我的IP给封了,不过macOS自带的词典APP里面是提供的了三个日语词典的,一个中日日中词典就是标题中的这个,还有一个日英词典,和大辞林。我最近一直想着要把这个自带的词典转成mdx,这样就可以轻易的制成Anki卡片了。经过这两天的折腾,成品出炉了。

    手机上的效果:

    用在Anki上的效果:

    有需要的朋友请拿去吧。


    下载链接上面


    下面分享一下制作过程,以便其他有需要的朋友能够将其他小语种的macOS自带词典转成mdx。
    1. 首先安装pyglossary:
    1. brew install python3 pygobject3 gtk+3
    2. pip3 install pyglossary
    复制代码

    成功安装后就可以在终端运行:
    1. pyglossary --gtk
    复制代码

    界面如下:

    2. 下一步就是需要找到自带辞典的位置了。
    1. /System/Library/AssetsV2/com_apple_MobileAsset_DictionaryServices_dictionaryOSX/
    复制代码

    打开文件夹可以看到一堆看不懂的文件夹名字。

    一个个点开,找到你需要的字典,在contents文件夹里面有一个Body.data,这个就是词典的数据文件,另外还有一个DefaultStyle.css,这个是样式单,后面也会用到。
    3. 然后就是转换了,自己选择一种格式,我选择是csv,这个编辑起来比较方便。转换成CSV的文件后(好大一个),首先可以用Vim或者其他编辑器预处理一下。
    4. 预处理,我删除了一些链接,因为没有什么用,还有中文部分(中文词条用日语解释)也删除了,这个用不到。
    5. 用其中一个词条测试了一下效果,发现居然里面有很多重复的内容,可能是为不同的系统准备的,但是我只要一个词头和解释部分就够了,这部分在Python里面用BeautifulSoup搞定。
    6. 定制CSS,本来我想自己写一个的,后来发现也比较麻烦,毕竟自己对这些只会点皮毛,还是在原来的上面改。但是这个自带的CSS设计的也挺复杂,不过我只需要改配色,就只要搜索color就可以了,然后改个颜色试试看效果就可以了,如下图:

    7. 好了,把这些准备好了以后可以准备用writemdict库来编译成mdx文件了。
    在PyCharm的终端里面,
    1. git clone https://github.com/zhansliu/writemdict
    复制代码
    ,把库下载到项目里面,不过这个库就这样还不能直接使用,需要修改几个地方。
            a. 在writemdict文件夹里面新建一个__init__.py文件;
            b. writemdict.py文件中import部分有三个需要改成
    1. from .ripemd128 import ripemd128
    2. from html import escape
    3. from .pureSalsa20 import Salsa20
    复制代码

            两个前面加个点,还有一个要改成html才行。
    8. 写代码完成制作。我所用的代码如下,供参考:
    1. import csv
    2. import os
    3. import sys
    4. from bs4 import BeautifulSoup
    5. from writemdict.writemdict import MDictWriter


    6. def dictionary_data():
    7.     csv.field_size_limit(sys.maxsize)        #设置csv的长度,要不然会报错。
    8.     d = {}                                                #建一个词典变量,用来存储后面解析出来的词条和释义。
    9.     with open(os.path.expanduser('~/Downloads/jpdict/jpcn.csv'), 'r') as csvfile:
    10.         reader = csv.reader(csvfile)
    11.         for row in reader:
    12.             if reader.line_num > 3:        #最开始的几行不是词条,其实可以在Vim里面预处理掉
    13.                 word = row[0]        #每一行第一个是词条,第二个是释义;
    14.                 html = '''<html>
    15.                 <head>
    16.                 <link rel="stylesheet" href="jpdict.css" type="text/css">
    17.                 </head>
    18.                 <body>
    19.                 <div class="jp_section">
    20.                 </div>
    21.                 </body>
    22.                 </html>'''        #新建一个html框架,div部分用来插入后面要插入的单词和释义
    23.                 new_soup = BeautifulSoup(html, features='html.parser')       
    24.                 soup = BeautifulSoup(row[1], features='html.parser')        # 把释义部分用BeautifulSoup来分析
    25.                 header = soup.find('span', {'class': 'hwg x_xh0'})                # 找到词头部分
    26.                 definition = soup.find('span', {'class': 'gramb x_xd0'})        # 找到释义部分
    27.                 idiom = soup.find('span', {'class': 'idmb x_xo0'})                # 找到固定搭配部分
    28.                 new_soup.div.insert(0, header)                                        # 将词头部分插入到html框架的jp_section部分
    29.                 new_soup.div.insert(1, definition)                                        # 将释义部分插入到html框架的jp_section部分
    30.                 if idiom:
    31.                     new_soup.div.insert(2, idiom)                                        #将固定搭配插入到html框架的jp_section部分
    32.                 d[word] = new_soup.prettify()                                        # 把词条和抽取的释义添加词典里面
    33.                 if reader.line_num % 1000 == 0:
    34.                     print(reader.line_num)
    35.     return d


    36. def write_dict(dictionary):
    37.         #这一步就只需要按照writemdict库里面的说明操作即可
    38.     description = """クラウン日中辞典 / Sanseido's Crown Japanese-Chinese Dictionary
    39.     Copyright © 2010, 2019 Sanseido Company Ltd., under licence to Oxford University Press. All rights reserved."""
    40.     writer = MDictWriter(dictionary, "超級クラウン日中辞典 ", description=description)
    41.     with open(os.path.expanduser('~/Downloads/jpdict/jpdict.mdx'), 'wb') as outfile:
    42.         print("Writing mdx starts...")
    43.         writer.write(outfile)
    44.         print("Writing finished.")


    45. if __name__ == '__main__':
    46.     dictionary = dictionary_data()
    47.     write_dict(dictionary)
    复制代码


    完工!!!!!

    后面空了把另外两个日语词典也做一下:)


    以上这些操作只是提供一些操作方面的思路,需要有一定的电脑知识为基础,实际的过程中可能出现各种各样的问题,请自行搜索解决。

    我把调整过的CSS替换掉原来系统自带的,自带的词典APP也显示成我想要的样子了。

    评分

    7

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    141

    回帖

    4080

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4080

    QQ 章

    推荐
     楼主| 发表于 2021-9-14 07:40:11 | 只看该作者
    第七夜 发表于 2021-9-14 00:05
    请问大佬,是否该词典只能查询中文啊,比如你截图的学校,铅,输入中文就能查出结果,但日文不行(我直接复 ...

    你好,因为本人第一次制作mdx词典文件,经验欠缺,所以目前的版本只支持日文的词条查询,你说的鉛和学习,都是日语汉字词,对应的日文读法なまり、がっこう现在还不支持查询。

    下面,我会添加读法的查询,还有熟语的查询。

    再下一步是加入词频的数据,另外添加单词的发音,不过需要一点时间才能完成。
  • TA的每日心情
    无聊
    2023-1-27 04:36
  • 签到天数: 1279 天

    [LV.10]以坛为家III

    2

    主题

    1761

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    19854

    灌水大神章笑傲江湖章

    推荐
    发表于 2021-9-19 07:27:37 | 只看该作者
    这些词条有错,麻烦看一下
    いち【市】
    いろう【慰労する】
    おう【王】
    おろす【下ろす•降ろす】
    かう【買う】
    かくしん【革新】
    かざぐるま【風車】
    かなう【叶う】
    がんきん【元金】
    ぎょく【玉】
    くじゅう【苦汁】
    くらい【位】
    くる【来る】
    けん【-けん•軒•-軒】
    こ【故】
    こびと【小人】
    ごう【業】
    さる【去る】
    しんめんもく【真面目】
    じだい【地代】
    せ【背】
    せいすう【正数】
    ぜんめん【全面】
    ぜんよう【全容】
    ぞく【俗な】
    たい【他意】
    たいない【体内】
    たけ【丈】
    たま【玉•珠】
    だし【山車】
    だとう【打倒する】
    つかれる【疲れる】
    づめ【-づめ】
    ても【-ても】
    てんいん【店員】
    でんぶん【伝聞】
    とうびょう【投錨する】
    なれのはて【成れの果て】
    にっしょう【入声】
    ねんぽう【年俸】
    の【野】
    はき【破棄する】
    ばんそう【伴走】
    ひ【日】
    ひかれる【引かれる】
    ひょうはく【漂白する】
    ひろう【披露する】
    ふきん【付近】
    ふよう【不用な•不要な】
    ふり【不利】
    べき【-べき】
    ほうぶん【邦文】
    まちじゅう【町中】
    まゆ【眉】
    みしょう【未詳の】
    みち【未知の】
    みつ【密な】
    めいとう【名刀】
    もり【守り】
    やけい【夜景】
    よみこむ【詠み込む】
    りょうほう【両方】
    れいがい【冷害】
    わび【侘び】
  • TA的每日心情

    2021-12-18 19:22
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    3

    主题

    29

    回帖

    1552

    积分

    解元

    Rank: 5Rank: 5

    积分
    1552
    推荐
    发表于 2021-11-26 08:37:57 | 只看该作者
    freecomic101 发表于 2021-11-25 15:31
    我回复太快,用词不对,应该说是缺失内容。

    缺失内容的情况是有的,在每个词条最后一部分的提取时,其实里面是分两个部分的,当时以为就只有一个固定搭配,后面发现有的单词查询结果最后少了一块,不记得0.8版里面有没有改过来,如果没有的话后面会补的。
    你所说的是缺失内容是指里面的拼音部分缺少吗?这个数据其实在字典里面是有的,但是我觉得这个用不到,显示出来碍眼就在css里面设置成不显示了,如果你需要的话,可以自己折腾一下css:)
  • TA的每日心情
    无聊
    2021-9-29 08:58
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    4

    回帖

    1093

    积分

    解元

    Rank: 5Rank: 5

    积分
    1093
    3
    发表于 2021-9-9 17:13:27 来自手机 | 只看该作者
    感谢楼主的分享。

    该用户从未签到

    0

    主题

    147

    回帖

    3975

    积分

    贡士

    Rank: 6Rank: 6

    积分
    3975
    4
    发表于 2021-9-9 17:18:52 | 只看该作者
    thanks for your sharing
  • TA的每日心情
    奋斗
    2023-3-22 13:43
  • 签到天数: 753 天

    [LV.10]以坛为家III

    0

    主题

    969

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    23277
    5
    发表于 2021-9-9 17:30:03 | 只看该作者
    谢谢大师,日语的东西不多。
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 1322 天

    [LV.10]以坛为家III

    28

    主题

    4069

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    32041

    灌水大神章小蜜蜂章笑傲江湖章QQ 章

    6
    发表于 2021-9-9 17:34:29 | 只看该作者
    谢谢,下来看看
  • TA的每日心情
    开心
    2 秒前
  • 签到天数: 398 天

    [LV.9]以坛为家II

    7

    主题

    1357

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    16098

    灌水大神章

    7
    发表于 2021-9-9 17:39:34 来自手机 | 只看该作者
    谢谢制作分享!
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    17

    主题

    3142

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    25291

    灌水大神章

    9
    发表于 2021-9-9 18:19:24 | 只看该作者
    本帖最后由 oversky 于 2021-9-9 19:41 编辑

    謝謝。
    期待日英词典。是 Wisdom 这本?

    该用户从未签到

    0

    主题

    209

    回帖

    4212

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4212
    11
    发表于 2021-9-9 18:28:58 | 只看该作者
    感謝資源製作與分享!
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1991 天

    [LV.Master]伴坛终老

    3

    主题

    3446

    回帖

    4万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    45838

    灌水大神章

    14
    发表于 2021-9-9 18:44:52 | 只看该作者
    感谢大神分享精品词典。
  • TA的每日心情
    慵懒
    2022-11-19 00:41
  • 签到天数: 703 天

    [LV.9]以坛为家II

    4

    主题

    931

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    13544

    QQ 章

    15
    发表于 2021-9-9 18:48:20 | 只看该作者
    感谢楼主制作分享
  • TA的每日心情
    开心
    2022-3-5 22:04
  • 签到天数: 88 天

    [LV.6]常住居民II

    0

    主题

    179

    回帖

    3102

    积分

    贡士

    Rank: 6Rank: 6

    积分
    3102
    17
    发表于 2021-9-9 19:26:26 | 只看该作者
    谢谢楼主分享
  • TA的每日心情
    慵懒
    2018-6-25 21:54
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    58

    主题

    809

    回帖

    3万

    积分

    翰林院编修

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    30780

    翰林院专用章灌水大神章笑傲江湖章小蜜蜂章管理组专用章

    21
    发表于 2021-9-9 20:01:30 | 只看该作者
    日中词典较少,感谢分享
  • TA的每日心情
    慵懒
    7 小时前
  • 签到天数: 1343 天

    [LV.10]以坛为家III

    143

    主题

    2807

    回帖

    9万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    91060

    笑傲江湖章灌水大神章

    QQ
    25
    发表于 2021-9-9 21:47:08 | 只看该作者
         谢谢楼主辛劳制作与分享《クラウン日中辞典 / Sanseido's Crown Japanese-Chinese Dictionary》。