A crate to use KF5I18n from Rust.
Find a file
Ayush Singh 0470f05c07 Can now specify Include and Lib path.
Using KF5_I18n_INCLUDE_PATH and KF5_I18n_LIBREARY_PATH.
Maybe can improve default detection later.
2021-12-01 07:32:07 +05:30
.github/workflows Trying to fix docs in docs.rs. 2021-11-13 08:56:39 +05:30
src Removing macros from qmethobject. 2021-12-01 06:54:07 +05:30
tests Added Documentation. 2021-11-01 18:02:04 +05:30
.gitignore Initial Commit. 2021-11-01 15:01:02 +05:30
build.rs Can now specify Include and Lib path. 2021-12-01 07:32:07 +05:30
Cargo.toml Trying out qmetaobject-rs method for docs. 2021-11-13 09:42:03 +05:30
LICENSE.txt Added README and LICENSE. 2021-11-01 15:53:52 +05:30
README.md Publishing New version. 2021-11-12 23:16:47 +05:30

KI18n Crate for Rust

Crates.io

KI18n is a cross-platform internationalization framework used by KDE applications. This crate is meant to allow using KI18n with Rust and qmetaobject-rs crate.

Example

use cstr::cstr;
use qmetaobject::prelude::*;
use ki18n_rs::KLocalizedContext;

fn main() {
  let mut engine = QmlEngine::new();
  KLocalizedContext::init_from_engine(&engine);
  engine.load_data(r#"
    import QtQuick 2.6
    import QtQuick.Controls 2.0 as Controls
    import QtQuick.Layouts 1.2
    import org.kde.kirigami 2.13 as Kirigami
    
    // Base element, provides basic features needed for all kirigami applications
    Kirigami.ApplicationWindow {
        // ID provides unique identifier to reference this element
        id: root
    
        // Window title
        // i18nc is useful for adding context for translators, also lets strings be changed for different languages
        title: i18nc("@title:window", "Hello World")
    
        // Initial page to be loaded on app load
        pageStack.initialPage: Kirigami.Page {
    
            Controls.Label {
                // Center label horizontally and vertically within parent element
                anchors.centerIn: parent
                text: i18n("Hello World!")
            }
        }
    }
  "#.into());
  engine.exec();
}