From 97a32ea6fd9921142941ea2446c6939b138e0a6e Mon Sep 17 00:00:00 2001 From: javorosas Date: Tue, 8 Sep 2026 17:41:20 +0200 Subject: [PATCH] docs: show how to select API error language --- README.es.md | 35 +++++++++++++++++-- README.md | 35 +++++++++++++++++-- .../io/facturapi/FacturapiHttpClientTest.java | 7 +++- 3 files changed, 70 insertions(+), 7 deletions(-) diff --git a/README.es.md b/README.es.md index d5ba3bd..60b3c35 100644 --- a/README.es.md +++ b/README.es.md @@ -116,13 +116,42 @@ Facturapi facturapi = Facturapi.builder("sk_test_...") Para pruebas o configuraciones avanzadas, puedes inyectar tu propio `OkHttpClient`: ```java +import io.facturapi.http.FacturapiConfig; import okhttp3.OkHttpClient; -Facturapi facturapi = Facturapi.builder("sk_test_...") - .httpClient(new OkHttpClient()) - .build(); +Facturapi facturapi = new Facturapi( + FacturapiConfig.builder("sk_test_...") + .httpClient(new OkHttpClient()) + .build()); ``` +## Idioma de los errores de la API + +En API V2 puedes solicitar mensajes de error en inglés con `Accept-Language`. Usa la configuración existente del cliente: + +```java +import io.facturapi.Facturapi; +import io.facturapi.http.FacturapiConfig; +import java.time.Duration; +import okhttp3.OkHttpClient; + +OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(Duration.ofSeconds(30)) + .callTimeout(Duration.ofSeconds(30)) + .addInterceptor(chain -> chain.proceed( + chain.request().newBuilder() + .header("Accept-Language", "en") + .build())) + .build(); + +Facturapi facturapi = new Facturapi( + FacturapiConfig.builder("YOUR_API_KEY") + .httpClient(httpClient) + .build()); +``` + +Usa `es` para español. También se aceptan variantes como `en-US` y preferencias como `en;q=0.9, es;q=0.5`. Sin el header o sin un idioma compatible, la API usa español. La preferencia se aplica a todas las solicitudes de esta instancia; usa instancias separadas si necesitas varios idiomas. Los códigos no cambian y los mensajes externos SAT/PAC y los mensajes legacy no catalogados conservan su idioma original. La localización depende del soporte de API V2 en el servidor; no traduce errores locales del SDK. + ## Documentación Docs completas: [https://docs.facturapi.io](https://docs.facturapi.io) diff --git a/README.md b/README.md index b2ca541..c606f8b 100644 --- a/README.md +++ b/README.md @@ -116,13 +116,42 @@ Facturapi facturapi = Facturapi.builder("sk_test_...") For tests or advanced setups, you can inject your own `OkHttpClient`: ```java +import io.facturapi.http.FacturapiConfig; import okhttp3.OkHttpClient; -Facturapi facturapi = Facturapi.builder("sk_test_...") - .httpClient(new OkHttpClient()) - .build(); +Facturapi facturapi = new Facturapi( + FacturapiConfig.builder("sk_test_...") + .httpClient(new OkHttpClient()) + .build()); ``` +## API error language + +For API V2, request English error messages with `Accept-Language` using the existing client configuration: + +```java +import io.facturapi.Facturapi; +import io.facturapi.http.FacturapiConfig; +import java.time.Duration; +import okhttp3.OkHttpClient; + +OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(Duration.ofSeconds(30)) + .callTimeout(Duration.ofSeconds(30)) + .addInterceptor(chain -> chain.proceed( + chain.request().newBuilder() + .header("Accept-Language", "en") + .build())) + .build(); + +Facturapi facturapi = new Facturapi( + FacturapiConfig.builder("YOUR_API_KEY") + .httpClient(httpClient) + .build()); +``` + +Use `es` for Spanish. Regional variants such as `en-US` and preferences such as `en;q=0.9, es;q=0.5` are also supported. Missing or unsupported language preferences fall back to Spanish. The setting applies to all requests from this instance; use separate instances for different languages. Codes remain unchanged, and external SAT/PAC messages and uncataloged legacy messages retain their original language. Localization requires server-side API V2 support; it does not translate local SDK errors. + ## Documentation Full docs: [https://docs.facturapi.io](https://docs.facturapi.io) diff --git a/src/test/java/io/facturapi/FacturapiHttpClientTest.java b/src/test/java/io/facturapi/FacturapiHttpClientTest.java index e8d6eac..3bfbd0e 100644 --- a/src/test/java/io/facturapi/FacturapiHttpClientTest.java +++ b/src/test/java/io/facturapi/FacturapiHttpClientTest.java @@ -17,9 +17,13 @@ void sendsBearerAuthAndParsesTypedJson() throws Exception { StubHttpClient httpClient = new StubHttpClient(); httpClient.enqueueJson(200, "{\"ok\":true}"); + var builder = httpClient.client().newBuilder(); + builder.interceptors().add(0, chain -> chain.proceed( + chain.request().newBuilder().header("Accept-Language", "en-US").build() + )); FacturapiHttpClient client = new FacturapiHttpClient( FacturapiConfig.builder("sk_test_123") - .httpClient(httpClient.client()) + .httpClient(builder.build()) .build() ); @@ -28,6 +32,7 @@ void sendsBearerAuthAndParsesTypedJson() throws Exception { var request = httpClient.requests().get(0); assertEquals("Bearer sk_test_123", request.headers().firstValue("Authorization").orElse("")); + assertEquals("en-US", request.headers().firstValue("Accept-Language").orElse("")); assertEquals("POST", request.method()); assertEquals("/v2/invoices?page=1", request.uri().getPath() + "?" + request.uri().getQuery()); }