3 releases

0.1.2 Oct 26, 2019
0.1.1 Oct 25, 2019
0.1.0 Oct 25, 2019

#177 in Internationalization (i18n)

MIT license

148 lines


Idiomatic josa selector.

crates.io version crates.io license crates.io download

Josa is a Rust library to select appropriate josas for korean language.


push_josa method

Josa is an extension trait implemented for String type. Its API works just like push_str method on String.

use josa::JosaExt;
use josa::Josa::{EunNeun, IGa};

let mut user = "유진".to_owned();
let mut mackerel = "고등어".to_owned();


let sentence = format!("{} {} 먹고싶다", user, mackerel);

assert_eq!(sentence, "유진은 고등어가 먹고싶다");

⚠️ Like push_str does, push_josa expects String, not str, as its argument.

+, += operator

You can use +, += operator to append josa.

use josa::Josa::{EunNeun, IGa};

let user = "유진".to_owned();
let mackerel = "고등어".to_owned();

let sentence = format!("{} {} 먹고싶다", user + EunNeun, mackerel + IGa);

assert_eq!(sentence, "유진은 고등어가 먹고싶다");

select method

In case you want to append a josa to formatted text such as <span>고양이</span>, you can use select method.

use josa::select;
use josa::Josa::IGa;

let cat = "고양이";
let josa = select(cat, IGa).unwrap();

let cat = format!(r#"<span class="bold">{}</span>{}"#, cat, josa);

assert_eq!(cat, r#"<span class="bold">고양이</span>가"#);


Add josa as a dependency in your Cargo.toml.

josa = "0.1.2"

Now you can use josa crate.

use josa::*;
// Use here..


See docs.rs


select macro

As soon as hygiene 2.0 (#54727) arrives stable, we will add support for following macro:

select!("{}{은} {}{가} 먹고싶다", user, mackerel);

which is terser than current syntax:

Hangul enum variants

As soon as non-ASCII identifiers (#55467) arrives stable, we will change the names of josas to Hangul:

format!("{} {} 먹고싶다", user + 은는, mackerel + 이가);


Distributed under the MIT license.