diff --git a/astro.config.mjs b/astro.config.mjs index 24bdd53..26373ea 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -8,6 +8,17 @@ import mdx from "@astrojs/mdx"; export default defineConfig({ site: "https://interledger.org", base: "/developers", + i18n: { + locales: ["es", "en"], + defaultLocale: "en", + routing: { + prefixDefaultLocale: false, + fallbackType: "rewrite" + }, + fallback: { + es: "en" + } + }, integrations: [ starlight({ title: "Interledger", diff --git a/src/content.config.ts b/src/content.config.ts index 7c28984..cd6ae92 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -9,6 +9,7 @@ const blogCollection = defineCollection({ title: z.string(), description: z.string(), slug: z.string(), + lang: z.string(), date: z.date(), image: z.string().optional(), tags: z.array(z.string()), diff --git a/src/content/blog/2018-01-29-simplifying-interledger-the-graveyard-of-possible-protocol-features.md b/src/content/blog/2018-01-29-simplifying-interledger-the-graveyard-of-possible-protocol-features.md index 8c630cf..0bf7d7d 100644 --- a/src/content/blog/2018-01-29-simplifying-interledger-the-graveyard-of-possible-protocol-features.md +++ b/src/content/blog/2018-01-29-simplifying-interledger-the-graveyard-of-possible-protocol-features.md @@ -3,6 +3,7 @@ title: "Simplifying Interledger: The Graveyard of Possible Protocol Features" description: As the development of the Interledger Protocol (ILP) nears completion, I thought we should take a moment to remember some of the many core protocol features we’ve killed off along the way. date: 2018-01-29 slug: simplifying-interledger-the-graveyard-of-possible-protocol-features +lang: en authors: - Evan Schwartz author_urls: diff --git a/src/content/blog/2018-10-03-interledger-how-to-interconnect-all-blockchains-and-value-networks.md b/src/content/blog/2018-10-03-interledger-how-to-interconnect-all-blockchains-and-value-networks.md index 3ebb272..2a5a97f 100644 --- a/src/content/blog/2018-10-03-interledger-how-to-interconnect-all-blockchains-and-value-networks.md +++ b/src/content/blog/2018-10-03-interledger-how-to-interconnect-all-blockchains-and-value-networks.md @@ -3,6 +3,7 @@ title: "Interledger: How to Interconnect All Blockchains and Value Networks" description: "Interledger was born out of a project to build a blockchain-agnostic smart contracts platform. A key challenge was neutrality: how could a decentralized app buy resources like storage and computing, without being tied to a specific blockchain?" date: 2018-10-03 slug: interledger-how-to-interconnect-all-blockchains-and-value-networks +lang: en authors: - Evan Schwartz author_urls: diff --git a/src/content/blog/2019-01-23-thoughts-on-scaling-interledger-connectors.md b/src/content/blog/2019-01-23-thoughts-on-scaling-interledger-connectors.md index 869db5d..5c5bdeb 100644 --- a/src/content/blog/2019-01-23-thoughts-on-scaling-interledger-connectors.md +++ b/src/content/blog/2019-01-23-thoughts-on-scaling-interledger-connectors.md @@ -3,6 +3,7 @@ title: Thoughts on Scaling Interledger Connectors description: Streaming payments mean that Interledger connectors need to process huge volumes of Interledger packets, but the current reference implementation is hard to run at scale. date: 2019-01-23 slug: thoughts-on-scaling-interledger-connectors +lang: en authors: - Evan Schwartz author_urls: diff --git a/src/content/blog/2024-04-10-the-telemetry-tale.md b/src/content/blog/2024-04-10-the-telemetry-tale.md index b554f38..c98d086 100644 --- a/src/content/blog/2024-04-10-the-telemetry-tale.md +++ b/src/content/blog/2024-04-10-the-telemetry-tale.md @@ -3,6 +3,7 @@ title: "The Telemetry Tale: A Journey into the Metrics of Interledger" description: When simple metrics are paired with complex cloud solutions and important privacy considerations, the implementation process becomes significantly more complicated. date: 2024-04-10 slug: the-telemetry-tale +lang: en authors: - Sarah Jones author_urls: diff --git a/src/content/blog/2024-07-09-simple-open-payments-guide.md b/src/content/blog/2024-07-09-simple-open-payments-guide.md index 4a4595c..5a6e6a1 100644 --- a/src/content/blog/2024-07-09-simple-open-payments-guide.md +++ b/src/content/blog/2024-07-09-simple-open-payments-guide.md @@ -3,6 +3,7 @@ title: "A Simple Guide to the Open Payments Standard" description: Learn how the Open Payments standard makes online payments easier and more accessible for everyone. date: 2024-07-09 slug: simple-open-payments-guide +lang: en authors: - Sarah Jones author_urls: diff --git a/src/content/blog/2024-07-30-open-payments-cinderella-story.mdx b/src/content/blog/2024-07-30-open-payments-cinderella-story.mdx index 39654ae..84c8d22 100644 --- a/src/content/blog/2024-07-30-open-payments-cinderella-story.mdx +++ b/src/content/blog/2024-07-30-open-payments-cinderella-story.mdx @@ -3,6 +3,7 @@ title: "Open Payments: The Cinderella Story of Finding a Fitting Authorization M description: A breakdown of the unique needs that an authorization method for Open Payments needs to be able to fulfill. date: 2024-07-30 slug: open-payments-cinderella-story +lang: en authors: - Nathan Lie author_urls: diff --git a/src/content/blog/2024-08-13-interledger-universe.mdx b/src/content/blog/2024-08-13-interledger-universe.mdx index 49b7b13..5ce183a 100644 --- a/src/content/blog/2024-08-13-interledger-universe.mdx +++ b/src/content/blog/2024-08-13-interledger-universe.mdx @@ -4,6 +4,7 @@ description: "Or: “What the heck are all those products and protocols?”" ogImageUrl: /developers/img/blog/2024-08-13/og-image.png date: 2024-08-13 slug: interledger-universe +lang: en authors: - Sabine Schaller author_urls: diff --git a/src/content/blog/2024-09-06-integration-tests.mdx b/src/content/blog/2024-09-06-integration-tests.mdx index 4bf60d4..0c0f472 100644 --- a/src/content/blog/2024-09-06-integration-tests.mdx +++ b/src/content/blog/2024-09-06-integration-tests.mdx @@ -3,6 +3,7 @@ title: "Leveling Up Rafiki Testing: Shifting from Manual to Automated" description: "How we automated our manual payment flow tests." date: 2024-09-06 slug: integration-tests +lang: en authors: - Blair Currey author_urls: diff --git a/src/content/blog/2024-09-23-rafiki-code-architecture.mdx b/src/content/blog/2024-09-23-rafiki-code-architecture.mdx index 43c9724..62c1b00 100644 --- a/src/content/blog/2024-09-23-rafiki-code-architecture.mdx +++ b/src/content/blog/2024-09-23-rafiki-code-architecture.mdx @@ -3,6 +3,7 @@ title: "Breaking Down Rafiki: What Makes Our Friend Tick" description: "A low-level introduction to the software packages that comprise Rafiki." date: 2024-09-23 slug: rafiki-low-level-intro +lang: en authors: - Nathan Lie author_urls: diff --git a/src/content/blog/2024-10-11-where-did-rafiki-money-go.mdx b/src/content/blog/2024-10-11-where-did-rafiki-money-go.mdx index 5b6a182..f2eb982 100644 --- a/src/content/blog/2024-10-11-where-did-rafiki-money-go.mdx +++ b/src/content/blog/2024-10-11-where-did-rafiki-money-go.mdx @@ -3,6 +3,7 @@ title: "Where did rafiki.money go?" description: "Or “The need for rebranding when something confuses people.”" date: 2024-10-11 slug: where-did-rafiki-money-go +lang: en authors: - Timea Nagy author_urls: diff --git a/src/content/blog/2024-10-25-rafikis-first-security-audit.mdx b/src/content/blog/2024-10-25-rafikis-first-security-audit.mdx index b51902c..2faba39 100644 --- a/src/content/blog/2024-10-25-rafikis-first-security-audit.mdx +++ b/src/content/blog/2024-10-25-rafikis-first-security-audit.mdx @@ -3,6 +3,7 @@ title: "Rafiki's First Security Audit" description: "Takeaways from Rafiki's 2024 security audit." date: 2024-10-25 slug: rafikis-first-security-audit +lang: en authors: - Max Kurapov author_urls: diff --git a/src/content/blog/2024-12-03-e2e-testing-wm-browser-extension.mdx b/src/content/blog/2024-12-03-e2e-testing-wm-browser-extension.mdx index 45083ee..36fb27a 100644 --- a/src/content/blog/2024-12-03-e2e-testing-wm-browser-extension.mdx +++ b/src/content/blog/2024-12-03-e2e-testing-wm-browser-extension.mdx @@ -3,6 +3,7 @@ title: "End-to-end testing the Web Monetization browser extension" description: "E2E testing browser extensions? It's tricky, but we've got it covered." date: 2024-12-03 slug: e2e-testing-wm-browser-extension +lang: en authors: - Sid Vishnoi author_urls: diff --git a/src/content/blog/2024-12-11-rafiki-beta-release.mdx b/src/content/blog/2024-12-11-rafiki-beta-release.mdx index 3dff438..04f6bba 100644 --- a/src/content/blog/2024-12-11-rafiki-beta-release.mdx +++ b/src/content/blog/2024-12-11-rafiki-beta-release.mdx @@ -3,6 +3,7 @@ title: "Rafiki Beta Release" description: "The Wild is Calling." date: 2024-12-11 slug: rafiki-beta-release +lang: en authors: - Tadej Golobic author_urls: diff --git a/src/content/blog/2024-12-17-rafiki-tigerbeetle-integration.mdx b/src/content/blog/2024-12-17-rafiki-tigerbeetle-integration.mdx index 6984508..363dc84 100644 --- a/src/content/blog/2024-12-17-rafiki-tigerbeetle-integration.mdx +++ b/src/content/blog/2024-12-17-rafiki-tigerbeetle-integration.mdx @@ -3,6 +3,7 @@ title: "Balancing the Ledger: Rafiki's TigerBeetle Integration" description: "How TigerBeetle Supercharges Rafiki’s Financial Core." date: 2024-12-17 slug: rafiki-tigerbeetle-integration +lang: en authors: - Jason Bruwer author_urls: diff --git a/src/content/blog/2025-02-05-ilp-packet-lifecycle.mdx b/src/content/blog/2025-02-05-ilp-packet-lifecycle.mdx index 6e3f852..e52ddad 100644 --- a/src/content/blog/2025-02-05-ilp-packet-lifecycle.mdx +++ b/src/content/blog/2025-02-05-ilp-packet-lifecycle.mdx @@ -3,6 +3,7 @@ title: "The Lifecycle of an Interledger Packet" description: 'A look under the hood of how Rafiki orchestrates an Interledger payment.' date: 2025-02-05 slug: ilp-packet-lifecycle +lang: en authors: - Nathan Lie author_urls: diff --git a/src/content/blog/2025-03-12-breakpoint-it-work-week.mdx b/src/content/blog/2025-03-12-breakpoint-it-work-week.mdx index b1d2134..7507f9c 100644 --- a/src/content/blog/2025-03-12-breakpoint-it-work-week.mdx +++ b/src/content/blog/2025-03-12-breakpoint-it-work-week.mdx @@ -3,6 +3,7 @@ title: "The first work week of the season - BreakPoint IT Work Week" description: "The first work week of the season" date: 2025-03-12 slug: breakpoint-it-work-week +lang: en authors: - Timea Nagy author_urls: diff --git a/src/content/blog/es/2025-03-12-breakpoint-it-work-week.mdx b/src/content/blog/es/2025-03-12-breakpoint-it-work-week.mdx new file mode 100644 index 0000000..22125be --- /dev/null +++ b/src/content/blog/es/2025-03-12-breakpoint-it-work-week.mdx @@ -0,0 +1,48 @@ +--- +title: "La primera semana de trabajo de la temporada - BreakPoint IT Work Week" +description: "La primera semana de trabajo de la temporada" +date: 2025-03-12 +slug: primera-semana-breakpoint +lang: es +authors: + - Timea Nagy +author_urls: + - https://www.linkedin.com/in/nagy-timea-35483024 +tags: + - Interledger +--- + +Después de dejar atrás la melancolía de enero, los Gerentes de Ingeniería y Gerentes de Producto de Interledger se reunieron con el equipo de BreakPoint IT para una semana de trabajo productiva en Cluj-Napoca, Rumanía. +¿Por qué lo hicimos? Es fundamental reflexionar sobre los logros del año pasado, establecer objetivos y expectativas para el año que comienza y, por supuesto, encontrarnos cara a cara para por fin disfrutar ese café del que tanto hablamos. + +El plan para la semana era sencillo: revisar todos los proyectos en los que está trabajando el equipo de BreakPoint IT, presentar los últimos avances, discutir el trabajo en curso y definir la dirección de estos proyectos en los próximos meses. +Los proyectos cubiertos incluyeron las integraciones de [Open Payments](https://openpayments.dev/)/[Rafiki](https://rafiki.dev/), nuestra Red de Pruebas - [Test Wallet](https://wallet.interledger-test.dev/), [Test Boutique](https://boutique.interledger-test.dev/), [Interledger Pay](https://interledgerpay.com/) y [Interledger Cards](https://wallet.interledger.cards/). + +También destacamos nuestro objetivo de expandir los SDKs de Open Payments a múltiples lenguajes de programación. Aunque nuestro SDK en TypeScript ya está listo, también estamos trabajando en SDKs para PHP, Rust, Go y Python con el apoyo de nuestros desarrolladores y la comunidad, y planeamos añadir SDKs para Java y móviles. +También se discutieron las actualizaciones y metas de Rafiki, con conversaciones más detalladas previstas para la semana de trabajo de Rafiki más adelante este año. + +Dos de los temas más comentados fueron la [Extensión de Web Monetization](https://webmonetization.org/) y las Herramientas para Publicadores. +El progreso de estos productos, semana a semana, es un testimonio del increíble equipo que hay detrás de ellos. Hay planes emocionantes para estos proyectos, así que mantente al tanto. + +![BreakPoint IT Work Week](/developers/img/blog/2025-03-12/bp-ww.jpg) + +Como siempre, los planes están trazados, pero a veces uno o dos equipos deben cambiar de enfoque para abordar algo urgente o de mayor prioridad, y son enviados a la "mazmorra" para hacerlo realidad. +Este año, el equipo afortunado fue el de Interledger Wallet. La [Interledger Wallet](https://interledger.app/) está actualmente en desarrollo, con Interledger haciéndose cargo de la antigua billetera Fynbos y dándole un rediseño completo, junto con nuevas funcionalidades. +¿Recuerdas las nuevas tarjetas que nos emocionaron después de la [Cumbre Interledger 2024](https://interledger.org/summit)? +El equipo de Interledger Wallet será quien hará realidad esa visión. + +![Foto grupal en la semana de trabajo](/developers/img/blog/2025-03-12/bp-ww-group.jpg) + +También tuvimos la oportunidad de hablar sobre cómo el equipo puede mejorar la participación comunitaria. +Hablando de eso, Ioana, nuestra Gerente de Ingeniería enfocada en Comunidad, organizó un evento increíble en colaboración con [Women in Tech](https://www.womenintechcluj.com/) — un meetup enfocado en Web Monetization, titulado *Pay the Web Forward*. +Después de escuchar presentaciones y demostraciones inspiradoras de [Ioana Chiorean](https://interledger.org/team/ioana-chiorean), [Rabeb Othmani](https://interledger.org/team/rabeb-othmani) y [Timea Nagy](https://interledger.org/team/timea-nagy), los participantes hicieron numerosas preguntas y el nivel de participación fue impresionante. +La sesión de networking incluso se extendió más de lo previsto, reflejando el gran interés y entusiasmo. + +![Meetup de Interledger](/developers/img/blog/2025-03-12/bp-ww-wt.jpg) + +En resumen, la semana de trabajo de BreakPoint fue productiva y exitosa. Se tomaron decisiones, se dieron discusiones, se disfrutaron cafés y se consumieron dulces rumanos en abundancia. +El consenso fue claro: todos esperamos con entusiasmo el próximo encuentro. + +Foto bonus: postre rumano *Isla Flotante*, también conocido como *Leche de Pájaro*. Si no lo has probado aún, ¡te lo recomendamos mucho! + +![Leche de Pájaro](/developers/img/blog/2025-03-12/bp-ww-bm.png) diff --git a/src/content/docs/es/get-started.md b/src/content/docs/es/get-started.md new file mode 100644 index 0000000..27c51d6 --- /dev/null +++ b/src/content/docs/es/get-started.md @@ -0,0 +1,75 @@ +--- +title: Protocolo Interledger® +--- + +> Habilita el intercambio fluido de valor entre redes de pago + +El Protocolo Interledger (ILP) es un conjunto de protocolos abiertos para enviar paquetes de valor a través de diferentes redes de pago. Al igual que internet, los conectores enrutan paquetes de dinero entre redes independientes. Su arquitectura abierta y protocolo mínimo permiten la interoperabilidad entre sistemas de transferencia de valor. + +**Interledger no está vinculado a una sola empresa, red de pago o moneda.** + +
+
+ +
+

Enrutamiento de múltiples saltos

+

Envía pagos a otras ASEs en la red, incluso si están a varios saltos de distancia.

+
+
+
+ +
+

Protocolo simple

+

Inspirado en TCP/IP, Interledger es fácil de implementar y usar.

+
+
+
+ +
+

Abierto y extensible

+

Extiende o adapta tu implementación para satisfacer tus necesidades específicas.

+
+
+
+ +Las redes de pago tradicionales operan de forma independiente entre sí. Enviar valor es fácil solo si el emisor y el receptor tienen cuentas en la misma red, pero puede ser lento y costoso si están en redes distintas. Interledger facilita las transacciones en cualquier moneda o red de pago que elijas, porque no está atado a ninguna empresa, red ni moneda. Usando Interledger, puedes enviar AUD a alguien que quiere recibir GBP, o USD a alguien que desea recibir EUR. + +## ¿Qué es Interledger? + +Interledger es una red de computadoras que permite enviar valor a través de redes de pago independientes. Similar a cómo internet enruta paquetes de información, Interledger enruta paquetes de valor. Las computadoras en la red Interledger se llaman *nodos*. Los nodos pueden asumir uno o más de los siguientes roles: + +- Remitente – Inicia una transferencia de valor. +- Conector – Aplica el cambio de moneda y reenvía paquetes de valor. Es un nodo intermediario entre el remitente y el receptor. +- Receptor – Recibe el valor. + +![Nodos ILP](/developers/img/ilp-nodes.svg) + +**Nota:** Los términos *Conector* y *Enrutador* se usan indistintamente en la documentación. + +## ¿Cómo funciona Interledger? + +En el núcleo de Interledger se encuentra el [Protocolo Interledger (ILPv4)](https://interledger.org/developers/rfcs/interledger-protocol/), un conjunto de reglas que define cómo deben enviar valor los nodos a través de la red Interledger. ILPv4 es un protocolo de *solicitud/respuesta*, donde las solicitudes y respuestas son paquetes ILPv4. Normalmente, un único pago agregado desde el origen hasta el destino se divide en varios paquetes ILP. Cada paquete contiene información de la transacción, que es privada entre los nodos que participan. ILPv4 tiene tres tipos de paquetes: *Prepare*, *Fulfill* y *Reject*. + +![Paquetes ILP](/developers/img/ilp-packets.svg) + +El remitente construye y envía un paquete Prepare como solicitud al conector. Los conectores reenvían el paquete hasta que llega al receptor. Luego, el receptor acepta o rechaza el paquete enviando un paquete Fulfill o Reject como respuesta. Los conectores retransmiten la respuesta del receptor de vuelta al remitente. Cuando el remitente recibe un paquete Fulfill, sabe que el paquete fue entregado exitosamente. Entonces continúa enviando los paquetes Prepare restantes hasta que se transfiere todo el valor. + +Interledger no depende de ninguna red de pago específica para procesar transacciones de valor. Puedes conectarte a un conector ILPv4 en cualquier momento para unirte a la red. Además, Interledger envía valor en pequeños paquetes de datos, lo que hace que las transacciones sean rápidas, seguras y económicas. + +Para un análisis más profundo de cómo funciona ILPv4, consulta [Flujo ILPv4](https://interledger.org/developers/rfcs/interledger-protocol#prerequisites). + +## Crear sobre Interledger + +Incorpora pagos en tus aplicaciones u otros protocolos sin atarte a una moneda o red de pago específica. Crea cuentas en nuestros ledgers de demostración y comienza a enviar pagos Interledger con las bibliotecas cliente. + +## Arquitectura de Interledger + +Interledger permite pagos a través de muchos tipos diferentes de libros contables. El conjunto de protocolos Interledger se compone de cuatro capas: las capas de Aplicación, Transporte, Interledger y Enlace. Para más información, consulta la [Visión General de la Arquitectura](https://interledger.org/developers/rfcs/interledger-architecture). + +## Especificaciones y APIs del protocolo + +Para explorar las especificaciones técnicas, consulta los [Interledger RFCs](https://github.com/interledger/rfcs). También consulta la documentación de los componentes de la implementación de referencia. + +## Seguridad + +Interledger permite pagos seguros de múltiples saltos utilizando [Acuerdos de Bloqueo Temporal con Hash](https://interledger.org/developers/rfcs/hashed-timelock-agreements). A partir de Interledger v4, estas condiciones no son impuestas por el libro contable, ya que sería demasiado costoso y lento. En su lugar, los participantes de la red usan estos hashlocks para llevar la contabilidad entre pares. Esta contabilidad se utiliza para determinar los saldos en tránsito, que se liquidan periódicamente con transferencias en el libro contable o reclamos en canales de pago. Para una descripción detallada de cómo funciona esto, consulta la documentación sobre [Emparejamiento, Compensación y Liquidación](https://interledger.org/developers/rfcs/peering-clearing-settling/). diff --git a/src/pages/[lang]/blog/[...id].astro b/src/pages/[lang]/blog/[...id].astro new file mode 100644 index 0000000..4b3a99d --- /dev/null +++ b/src/pages/[lang]/blog/[...id].astro @@ -0,0 +1,26 @@ +--- +import { getCollection, render } from 'astro:content'; +import BlogLayout from '../../../layouts/BlogLayout.astro'; +import CommunityLinks from "../../../components/blog/CommunityLinks.astro"; + +export async function getStaticPaths() { + const blogEntries = await getCollection('blog'); + const defaultLang = 'en'; + + return blogEntries + .filter((entry) => entry.data.lang !== defaultLang) // handle the case of missing data? or is that done automatically? + .map((entry) => { + return { + params: { id: entry.id, lang: entry.data.lang }, + props: { entry }, + }; + }); +} + +const { entry } = Astro.props; +const { Content } = await render(entry); +--- + + + + diff --git a/src/pages/[lang]/blog/[...page].astro b/src/pages/[lang]/blog/[...page].astro new file mode 100644 index 0000000..613262a --- /dev/null +++ b/src/pages/[lang]/blog/[...page].astro @@ -0,0 +1,170 @@ +--- +import type { Page } from "astro"; +import { createExcerpt } from '../../../utils/create-excerpt'; +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import Pagination from '../../../components/blog/Pagination.astro'; +import { getCollection } from 'astro:content'; + +type Props = { + page: Page; +}; + +export async function getStaticPaths({ paginate }: any) { + const defaultLang = 'en'; + const blogEntries = (await getCollection("blog")) + const allLangs = Array.from(new Set(blogEntries.map((entry) => entry.data.lang))); + const langs = allLangs.filter((lang) => lang !== defaultLang); + return langs.flatMap((lang) => { + const filteredPosts = blogEntries + .filter((entry) => entry.data.lang !== defaultLang && entry.data.lang === lang) + .sort((a:any, b:any) => b.data.date.getTime() - a.data.date.getTime()); + + return paginate(filteredPosts, { + pageSize: 10, + params: { lang }, + }); + }); +} + +const { page } = Astro.props; +const { lang } = Astro.params; +--- + +
+
+ +
+

Engineering Blog

+ +

Check out Foundation updates

+ +
+
+
    + {((page as any).data || []).map((blogPostEntry: any) => { + const excerpt = `${createExcerpt(blogPostEntry.body).substring(0, 300)}...`; + return ( +
  1. + + {blogPostEntry.data.title} +

    {blogPostEntry.data.description ? blogPostEntry.data.description : excerpt}

    +
  2. + )} + )} +
+ +
+
+
+ + diff --git a/src/pages/blog/[...id].astro b/src/pages/blog/[...id].astro index ccdceff..c468753 100644 --- a/src/pages/blog/[...id].astro +++ b/src/pages/blog/[...id].astro @@ -5,10 +5,16 @@ import CommunityLinks from "../../components/blog/CommunityLinks.astro"; export async function getStaticPaths() { const blogEntries = await getCollection('blog'); - return blogEntries.map(entry => ({ - params: { id: entry.id }, - props: { entry }, - })); + const defaultLang = 'en'; + + return blogEntries + .filter((entry) => entry.data.lang === defaultLang) + .map((entry) => { + return { + params: { id: entry.id }, + props: { entry }, + }; + }); } const { entry } = Astro.props; diff --git a/src/pages/blog/[...page].astro b/src/pages/blog/[...page].astro index ac72b5d..e650c38 100644 --- a/src/pages/blog/[...page].astro +++ b/src/pages/blog/[...page].astro @@ -10,7 +10,9 @@ type Props = { }; export async function getStaticPaths({ paginate }: any) { - const blogEntries = (await getCollection("blog")).sort((a:any, b:any) => b.data.date.getTime() - a.data.date.getTime()); + const blogEntries = (await getCollection("blog")) + .filter((entry) => entry.filePath && entry.filePath.match(/\/blog\/[^\/]+\.mdx?$/)) + .sort((a:any, b:any) => b.data.date.getTime() - a.data.date.getTime()); return paginate(blogEntries, { pageSize: 10 }); } @@ -155,4 +157,3 @@ header { text-decoration-color: currentColor; } - diff --git a/src/pages/es/index.astro b/src/pages/es/index.astro new file mode 100644 index 0000000..76789a3 --- /dev/null +++ b/src/pages/es/index.astro @@ -0,0 +1,271 @@ +--- +import BaseLayout from '../../layouts/BaseLayout.astro'; +import InterledgerIcon from '../../components/logos/InterledgerIcon.astro'; +import OpenPaymentsIcon from '../../components/logos/OpenPaymentsIcon.astro'; +import RafikiIcon from '../../components/logos/RafikiIcon.astro'; +--- + +
+
+
+
+

Portal de Desarrolladores de Interledger

+

Ayuda a dar forma al futuro de los pagos interoperables y permite el intercambio fluido de valor entre redes de pago.

+ +
+
+ Ilustración de desarrolladores trabajando en una mesa +
+
+
+ +
+
+

Agradecemos las contribuciones a nuestros repositorios de código abierto en GitHub. Si los encuentras valiosos, por favor danos una estrella. ¡Tu apoyo marca la diferencia!

+
+
+ +
+
+
+

Repositorio de Open Payments

+

Open Payments es un estándar de API abierta que puede ser implementado por entidades que prestan servicios de cuenta para facilitar la interoperabilidad en la configuración y finalización de pagos para diferentes casos de uso.

+
+ +
+

Repositorio de Rafiki

+

Rafiki es un software de código abierto que ofrece una solución eficiente para que una Entidad de Servicio de Cuenta habilite la funcionalidad Interledger en las cuentas de sus usuarios.

+
+ +
+

Repositorio de Especificaciones

+

El Protocolo Interledger (ILP) es un protocolo abierto y neutral para transferir dinero basado en TCP/IP, diseñado para enviar paquetes de dinero a través de diferentes libros contables.

+
+ +
+

Repositorio de Red de Pruebas

+

La Red de Pruebas (Testnet) es una red Interledger abierta que trabaja con dinero de prueba, diseñada para que las entidades de servicio de cuenta prueben su integración con Interledger.

+
+ +
+

Hacktoberfest

+

Únete a nosotros este octubre para colaborar en nuestros proyectos de código abierto.

+
+ +
+

Blog de Ingeniería

+

Nuestro equipo comparte sus ideas y experiencias sobre Interledger y el trabajo que estamos realizando.

+ Lee nuestro blog +
+
+
+
+
+ +