32 lines
974 B
Plaintext
32 lines
974 B
Plaintext
import { i18n } from '@kit.LocalizationKit';
|
|
import { XuiChineseToPinYinOpts, XuiChineseToPinYinResult } from "../interface.uts"
|
|
import { XuiChineseToPinYinFailImpl } from "../unierror.uts"
|
|
|
|
/** 中文转拼音 */
|
|
export function toPinYin(opts : XuiChineseToPinYinOpts) {
|
|
try {
|
|
let c = opts.char;
|
|
if (c == '') {
|
|
let errorIml = new XuiChineseToPinYinFailImpl(1002)
|
|
opts?.fail?.(errorIml)
|
|
opts?.complete?.(null)
|
|
return;
|
|
}
|
|
let transliterator = i18n.Transliterator.getInstance('Any-Latn');
|
|
let result = transliterator.transform(opts.char);
|
|
|
|
let voiceRemovedTransliterator = i18n.Transliterator.getInstance('Latin-ASCII');
|
|
let resultZhuying = voiceRemovedTransliterator.transform(opts.char);
|
|
const ok : XuiChineseToPinYinResult = {
|
|
detail: result,
|
|
zhuyin: resultZhuying
|
|
}
|
|
opts?.success?.(ok)
|
|
opts?.complete?.(ok)
|
|
} catch (error) {
|
|
console.error(error)
|
|
opts?.fail?.(new XuiChineseToPinYinFailImpl(1001))
|
|
opts?.complete?.(null)
|
|
}
|
|
|
|
} |