alvin0319/josa-extension

韩语 Josa 扩展。

1.0.0 2023-11-11 07:20 UTC

This package is auto-updated.

Last update: 2024-09-13 05:14:59 UTC


README

根据辅音(是、能、的、地、了、们等)进行修正,类似于 sprintf 的函数。

原作者

Java 版本仓库

安装

要求

  • PHP: 8.2 以上
  • ext-mbstring: *

使用以下命令通过 Composer 安装库:

composer require alvin0319/josa-extension

用法

use alvin0319\JosaExtension\JosaFormatter;

echo JosaFormatter::formatString("%s을 %s로 바꿔볼게요!", "PHP", "Java") // Output: PHPJava로 바꿔볼게요!

音节检测器的优先级

  • 韩文(HangulJongSungDetector):'홍길동'은

  • 英文大写缩写(EnglishCapitalJongSungDetector):'IBM'이(아이비엠이)

  • 普通英文(EnglishJongSungDetector):'Google'을(구글을)

  • 英文+数字(EnglishNumberJongSungDetector):'WD40'는(더블유디포티는) - 这样读的情况很少,默认未注册。(参考异常处理)

  • 英文+10以下数字(EnglishNumberKorStyleJongSungDetector):'MP3'는(엠피쓰리는),'WD40'는(더블유디사십은)

  • 数字(NumberJongSungDetector):'1'和'2'是(일과 이는)

  • 日语 JapaneseJongSungDetector:'あゆみ'는(아유미는)

异常处理

  • 英文+数字的情况下,只有10以下的数字被读作英文。通常'MP3'读作'엠피쓰리',但'Office 2000'读作'오피스 이천'。如果想始终将英文+数字读作英文,则必须直接注册 EnglishNumberJongSungDetector。
use alvin0319\JosaExtension\JosaFormatter;

$formatter = new JosaFormatter([
    new HangulJongSungDetector(),
	new EnglishCapitalJongSungDetector(),
	new EnglishJongSungDetector(),
	new EnglishNumberJongSungDetector(),
	new EnglishNumberKoreanStyleJongSungDetector(),
	new NumberJongSungDetector(),
	new JapaneseJongSungDetector()
]);
JosaFormatter::setDefaultFormatter($formatter); // Optional

添加读取规则

  • 可以通过 JosaFormatter::addReadingRule() 添加读取规则。
  • 在'韩文+数字'的情况下,数字是以韩文读的。但是,如果英文被写成韩文,那么数字也应以英文读取,所以有时会出现错误。目前,可以通过直接添加读取规则来将英文视为英文。
use alvin0319\JosaExtension\JosaFormatter;

$formatter = JosaFormatter::getDefaultFormatter();
$formatter->addReadingRule('베타', 'beta');
$result = $formatter->format("%s을 구매하시겠습니까?", "베가 베타 3");
// 베가 베타 3를 구매하시겠습니까?

参考资料

http://gun0912.tistory.com/65

  • 韩文,英文辅音处理(iOS)

https://github.com/trilliwon/JNaturalKorean

  • 将汉字转换为韩文

http://kangwoo.tistory.com/33

  • 通过后缀查找英文单词

http://www.litscape.com/word_tools/ends_with.php