anycms-i18n-sqlx 0.2.4

SQLx database backend for anycms-i18n
Documentation

anycms-i18n-sqlx

SQLx database backend for [anycms-i18n].

Loads translations from any SQLx-supported database (PostgreSQL, MySQL, SQLite) into an in-memory cache at startup, then serves translations synchronously via the [Backend] trait.

Quick Start

use anycms_i18n_sqlx::SqlxBackend;

// PostgreSQL
let pool = sqlx::PgPool::connect("postgres://...").await?;
let backend = SqlxBackend::from_postgres(&pool).await?;

// MySQL
let pool = sqlx::MySqlPool::connect("mysql://...").await?;
let backend = SqlxBackend::from_mysql(&pool).await?;

// SQLite
let pool = sqlx::SqlitePool::connect("sqlite:translations.db").await?;
let backend = SqlxBackend::from_sqlite(&pool).await?;

// Use as a Backend
use anycms_i18n::Backend;
assert!(backend.has_locale("en"));

Custom Table / Column Names

Use [SqlxBackendBuilder] to customize the table and column names:

let backend = SqlxBackendBuilder::new()
    .table("my_translations")
    .locale_col("lang")
    .key_col("msg_key")
    .value_col("msg_value")
    .build_postgres(&pool)
    .await?;