translation 1.0.2

Library for localisation (text translation) of Rust applications.
Documentation
use winapi::ctypes::c_int;
use winapi::um::winnt::LCID;
use winapi::um::winnls::LCTYPE;
use winapi::um::winnt::WCHAR;
use std::ffi::OsString;
use std::os::windows::ffi::OsStringExt;
use crate::locale::Locale;

impl Locale {
    pub fn current() -> Option<Self> {
		let langid = unsafe { winapi::um::winnls::GetUserDefaultUILanguage() };

		let mut lang_buf: [WCHAR; 9] = [0; 9];
		const LOCALE_SISO639LANGNAME: LCTYPE = 0x59;
		let buf_size = unsafe {
			winapi::um::winnls::GetLocaleInfoW(langid as LCID,
				LOCALE_SISO639LANGNAME,
				lang_buf.as_mut_ptr(), lang_buf.len() as c_int)
		} as usize;

		if buf_size > 0 {
			if let Some(lang) = OsString::from_wide(&lang_buf[..buf_size - 1]).into_string().ok() {
				return Locale::from(&lang);
			}
		}

        None
    }
}