Pergunta

Então eu olhei este uso do base livre API e fiquei realmente impressionado com as traduções do nome que ela encontrou.Ou seja, Roma, Roma, Rom, Rzym, Rooma,로마, 罗马市.Isso ocorre porque tenho um banco de dados com mais de 5.000 nomes de locais e gostaria muito que todas as traduções em francês, alemão ou coreano para esses nomes em inglês.

O problema é que passei cerca de duas horas clicando no freebase e não consegui encontrar uma maneira de visualizar os nomes de cidades/locais em um idioma diferente mapeado para o inglês.Então, eu adoraria se alguém que entende o que é freebase e como ele é organizado pudesse me fornecer um link para essa visualização que, teoricamente, eu poderia exportar.

Além disso, eu só queria compartilhar esta pergunta porque estou totalmente impressionado com o freebase e acho que se as pessoas ainda não olharam para ele, deveriam.

Foi útil?

Solução

A pergunta

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

retorna para cada local e cada idioma, o nome desse local nesse idioma.Os resultados são organizados por idioma.Por exemplo, aqui está um muito pequeno segmento do valor de retorno:

                    {
                      '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)'
                    },

Para uma solução sem programação, copie e cole o seguinte em um arquivo HTML e abra-o com seu navegador:

<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>

Claro, isso incluirá apenas os primeiros 10 resultados.Aumente o limite acima se quiser mais.(A propósito, o Freebase não é apenas legal, mas também essa linguagem de modelagem MJT!)

Outras dicas

O link que você postou usa mjt, uma estrutura javascript projetada para Freebase.

A consulta que eles usam.

 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
   }])     

Onde:qlang - é o idioma desejado para traduzir também.qname - é o local a ser consultado.

Para obter o link desejado, você precisará do API, e você pode converter a consulta acima em um link que retornará um objeto JSON contendo a string traduzida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top