Skip to main content

Crate anycms_i18n_sqlx

Crate anycms_i18n_sqlx 

Source
Expand description

§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?;

Structs§

SqlxBackend
Database-backed translation backend powered by SQLx.
SqlxBackendBuilder
Builder for SqlxBackend with custom table and column names.