Nombres de libros localizados
Cada libro tiene un id canónico de tres letras que nunca cambia — GEN, JHN, MAT. Además,
cada traducción trae sus propios nombres de libros, así que una Biblia en español se puede
consultar con nombres en español.
Dos formas de nombrar un libro
Ambas devuelven el mismo versículo de la misma traducción:
query {
porId: verse(translation: "spa-rv1909", book: "MAT", chapter: 28, verse: 18) {
bookName
text
}
porNombreLocalizado: verse(translation: "spa-rv1909", book: "Mateo", chapter: 28, verse: 18) {
bookName
text
}
}
Fíjate en que bookName llega como Mateo en ambos casos: la respuesta siempre está
localizada según la traducción, independientemente de cómo hayas nombrado el libro.
Cuál usar
| Usa | Cuándo |
|---|---|
Id canónico (MAT) | Código de aplicación. Funciona en toda traducción, nunca es ambiguo. |
Nombre localizado (Mateo) | Entrada escrita por el usuario, o al mostrar lo que reconocería un lector. |
Si estás diseñando un esquema de URLs o guardando marcadores, guarda el id canónico. Sobrevive a un cambio de traducción; un nombre localizado no.
Descubrir los nombres que usa una traducción
bibleIndex devuelve cada libro con su nombre localizado:
- GraphQL
- cURL
- Ruby
- Node.js
- Response
query {
bibleIndex(translation: "spa-rv1909") {
bookId
name
chapterCount
}
}
curl https://bibleql.org/graphql \
-H "Authorization: Bearer $BIBLEQL_API_KEY" \
-H "Content-Type: application/json" \
--data '{"query":"query { bibleIndex(translation: \"spa-rv1909\") { bookId name chapterCount } }"}'
require "bibleql"
client = BibleQL::Client.new(
api_key: ENV.fetch("BIBLEQL_API_KEY"),
api_url: "https://bibleql.org/graphql"
)
index = client.bible_index(translation: "spa-rv1909")
index.each { |book| puts "#{book.name}: #{book.chapter_count} chapters" }
import { BibleQLClient } from "bibleql-js";
const client = new BibleQLClient({
apiKey: process.env.BIBLEQL_API_KEY!,
apiUrl: "https://bibleql.org/graphql",
});
const index = await client.bibleIndex({
translation: "spa-rv1909",
});
index.forEach((b) => console.log(b.name, b.chapterCount));
{
"data": {
"bibleIndex": [
{
"bookId": "GEN",
"name": "Génesis",
"chapterCount": 50
},
{
"bookId": "EXO",
"name": "Éxodo",
"chapterCount": 40
},
{
"bookId": "LEV",
"name": "Levítico",
"chapterCount": 27
},
// ... 63 more
]
}
}
O a través de una traducción:
query {
translation(identifier: "spa-rv1909") {
books {
bookId
name
}
}
}
Así se construye un autocompletado que acepta lo que un lector hispanohablante escribiría de verdad.
En las referencias
Los nombres localizados también funcionan dentro de las referencias de passage:
query {
passage(translation: "spa-rv1909", reference: "Mateo 28:18-20") {
reference
text
}
}
La comparación no distingue mayúsculas, así que mateo 28:18 se resuelve igual que
Mateo 28:18.
Las referencias localizadas no pueden abarcar varios capítulos. Los versículos individuales, los rangos y los multirrangos separados por comas funcionan, pero solo dentro de un capítulo — consulta Referencias bíblicas para los detalles y la alternativa.
Comportamiento de reserva
Si una traducción no tiene nombre localizado para un libro, bookName recurre al nombre
canónico en inglés. Nunca recibirás un nombre de libro vacío, pero puede que ocasionalmente
recibas uno en inglés dentro de una traducción no inglesa, cuando los datos de origen están
incompletos.