所以我看过 这个用途自由碱 API 和我对它找到的名称的翻译印象深刻。IE 罗马,Roma,Rom,Rzym,Rooma,로마,罗马市。这是因为我有一个包含 5000 多个地点名称的数据库,我非常希望这些英文名称的所有法语、德语或韩语翻译。

问题是我花了大约两个小时在 freebase 上点击,却找不到方法来查看映射到英语的不同语言的城市/位置名称。因此,如果有人了解 freebase 是什么以及它是如何组织的,可以为我提供该视图的链接,理论上我可以导出该视图,我会很高兴。

另外,我只是想分享这个问题,因为我对 freebase 印象深刻,并且认为如果人们还没有看过它,他们应该看看。

有帮助吗?

解决方案

查询

[{
     limit: 100,
     type: '/location/location',
     name: [{
         value: null,
         lang: {
             name: {
                 value: null,
                 lang: '/lang/en',
             },
         }
     }],
}];

对于每个位置和每种语言,返回该位置在该语言中的名称。结果按语言组织。例如,这里有一个 非常 返回值的一小部分:

                    {
                      'lang': {
                                  'name': {
                                              'lang': '/lang/en',
                                              'value': 'Russian'
                                            }
                                },
                      'value': 'Сан-Франциско'
                    },
                    {
                      'lang': {
                                  'name': {
                                              'lang': '/lang/en',
                                              'value': 'Swedish'
                                            }
                                },
                      'value': 'San Francisco'
                    },
                    {
                      'lang': {
                                  'name': {
                                              'lang': '/lang/en',
                                              'value': 'Portuguese'
                                            }
                                },
                      'value': 'São Francisco (Califórnia)'
                    },

对于无需编程的解决方案,请将以下内容复制粘贴到 HTML 文件中,然后使用浏览器打开它:

<html><head>
<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script>
</head>
<body onload="mjt.run()">
<div mjt.task="q">
  mjt.freebase.MqlRead([{
    limit: 10,
    type: '/location/location',
    name: [{
      value:null,
        lang:{
          name:{
            value:null,
            lang:'/lang/en',
          },
        }
    }],
  }])     
</div>

<table><tr mjt.for="topic in q.result"><td>
<table><tr mjt.for="(var rowi = 0; rowi &lt; topic.name.length; rowi++)"
  mjt.if="rowi &lt; topic.name.length" style="padding-left:2em"><td>
  <pre mjt.script="">
    var name = topic.name[rowi];
  </pre>
  ${(name.lang['q:name']||name.lang.name).value}:
</td><td>$name.value</td></tr></table></td></tr></table></body></html>

当然,这仅包括前 10 个结果。如果您想要更多,请提高上述限制。(顺便说一句,不仅 Freebase 很酷,这种 mjt 模板语言也很酷!)

其他提示

您发布的链接使用 mjt,这是一个为 Freebase 设计的 JavaScript 框架。

他们使用的查询。

 mjt.freebase.MqlRead([{
     limit: 100,
     id:qid,
     /* allow fuzzy matches in the value for more results... */
     /* 'q:name': {'value~=': qname, value:null, lang: '/lang/'+qlang}, */
     'q:name': {value: qname, lang: '/lang/'+qlang},

     type: '/common/topic',
     name: [{
         value:null,
         lang:{
             id:null,
             name:{
                 value:null,
                 lang:'/lang/en',
                 optional:true
             },
             'q:name':{
                 value:null,
                 lang:'/lang/'+qlang,
                 optional:true
             }
         }
     }],
     article: [{id:null, limit:1}],
     image: [{id:null, limit:1, optional:true}],
     creator: null,
     timestamp:null
   }])     

在哪里:qlang - 也是您想要翻译的语言。qname - 是要查询的位置。

要获得您想要的链接,您需要 应用程序编程接口, ,您可以将上述查询转换为链接,该链接将返回包含翻译字符串的 JSON 对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top