Skip to content

Latest commit

Β 

History

History
126 lines (90 loc) Β· 4.25 KB

File metadata and controls

126 lines (90 loc) Β· 4.25 KB

KoreanFormatter

travis GitHub license nuget

C#용 SmartFormat.NETμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” ν•œκ΅­μ–΄ 쑰사 ν¬λ§€ν„°μž…λ‹ˆλ‹€. python용 κ΅¬ν˜„μ²΄λŠ” smartformat-korean을 μ‚¬μš©ν•΄μ£Όμ„Έμš”.

μ„€μΉ˜

Nuget κ΄€λ¦¬μž μ½˜μ†”μ„ μ΄μš©ν•΄μ„œ μ„€μΉ˜:

PM> Install-Package SmartFormat.NET-Korean

ν˜Ήμ€ Nuget νŽ˜μ΄μ§€μ—μ„œ λ‹€μš΄λ‘œλ“œ

μ‚¬μš©λ²•

namespace SmartFormatKoreanDemo
{
	class Program
	{
		static void Main(string[] args)
		{
			Smart.Default.AddExtensions(new KoreanFormatter(Smart.Default));

			Console.WriteLine(Smart.Format("{0:은} {1:을} λ¨Ήμ—ˆλ‹€.", "λ‚˜μ˜€", "뢀엉이"));
			Console.WriteLine(Smart.Format("{0:이} κ°–κ³  μ‹Άμ–΄μš”.", "λ‚˜μ˜€ ν”Όκ·œμ–΄"));
			Console.WriteLine(Smart.Format("{0:이} {1:을} μΆ˜λ‹€.", "티라노", "μ½©λŒ„μŠ€"));
			Console.WriteLine(Smart.Format("{0:의} {1:μ΄μ—μš”}", "λ„₯슨 μ™“! μŠ€νŠœλ””μ˜€", "λ“€λž‘κ³ "));
			Console.ReadKey();
		}
	}
}

demo-image

μžμ—°μŠ€λŸ¬μš΄ 쑰사 선택

의, 도, 만, 보닀, λΆ€ν„°, κΉŒμ§€, λ§ˆμ €, μ‘°μ°¨, 에~, 께~, ν•˜~μ—λŠ” μ–΄λ–€ 단어가 μ•žμ„œλ„ ν˜•νƒœκ°€ λ³€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€:

λ‚˜μ˜€μ˜, λͺ¨λ¦¬μ•ˆμ˜, ν‚€ν™€μ˜, λ‚˜μ˜€λ„, λͺ¨λ¦¬μ•ˆλ„, 킀홀도

반면 은(λŠ”), 이(κ°€), 을(λ₯Ό), κ³Ό(와)λŠ” μ•žμ„  λ‹¨μ–΄μ˜ λ§ˆμ§€λ§‰ 음절의 λ°›μΉ¨ μœ λ¬΄μ— 따라 ν˜•νƒœκ°€ λ‹¬λΌμ§‘λ‹ˆλ‹€:

λ‚˜μ˜€λŠ”, λͺ¨λ¦¬μ•ˆμ€, 킀홀은

(으)둜~도 λΉ„μŠ·ν•œ κ·œμΉ™μ„ λ”°λ₯΄μ§€λ§Œ μ•žμ„  받침이 ㄹ일 κ²½μš°μ—” 받침이 μ—†λŠ” 것과 κ°™κ²Œ μ·¨κΈ‰ν•©λ‹ˆλ‹€:

λ‚˜μ˜€λ‘œ, λͺ¨λ¦¬μ•ˆμœΌλ‘œ, ν‚€ν™€λ‘œ

μ„œμˆ κ²© 쑰사 (이)λ‹€λŠ” μ–΄λ―Έκ°€ ν™œμš©λ˜μ–΄ λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ λ³€ν˜•λ  수 μžˆμŠ΅λ‹ˆλ‹€:

λ‚˜μ˜€μ§€λ§Œ, λͺ¨λ¦¬μ•ˆμ΄μ§€λ§Œ, ν‚€ν™€μ΄μ—μš”, λ‚˜μ˜€μ˜ˆμš”

SmartFormat ν•œκ΅­μ–΄ ν™•μž₯은 μžλ™μœΌλ‘œ κ°€μž₯ μžμ—°μŠ€λŸ¬μš΄ 쑰사 ν˜•νƒœλ₯Ό μ„ νƒν•©λ‹ˆλ‹€. λ§Œμ•½ μ–΄λ–€ ν˜•νƒœκ°€ μžμ—°μŠ€λŸ¬μš΄μ§€ μ•Œ 수 없을 λ•Œμ—λŠ” 은(λŠ”), (으)둜처럼 λͺ¨λ“  ν˜•νƒœλ₯Ό λ³‘κΈ°ν•©λ‹ˆλ‹€.

// "λŒ€ν•œλ―Όκ΅­μ€ 민주곡화ꡭ이닀."
Smart.Format("{0:λŠ”} {1:λ‹€}.", "λŒ€ν•œλ―Όκ΅­", "민주곡화ꡭ");

// "λ‚˜μ˜€λŠ” κ²€μ€μ‚¬μ‹ μœΌλ‘œ λΆˆλ¦°λ‹€.
Smart.Format("{0:은} {1:둜} λΆˆλ¦°λ‹€.", "λ‚˜μ˜€", "검은사신");

단어가 숫자둜 λλ‚˜λ”λΌλ„ μžμ—°μŠ€λŸ¬μš΄ 쑰사 ν˜•νƒœκ°€ μ„ νƒλ©λ‹ˆλ‹€:

// "레벨 10이"
Smart.Format("레벨 {0:이}", 10);
// "레벨 999κ°€"
Smart.Format("레벨 {0:이}", 999);

κ΄„ν˜Έ 속 λ‹¨μ–΄λ‚˜ ꡬ두점은 쑰사 ν˜•νƒœλ₯Ό 선택할 λ•Œ μ°Έκ³ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€:

// "λͺ¨λ¦¬μ•ˆ,,,이?"
Smart.Format("{0:κ°€}?", "λͺ¨λ¦¬μ•ˆ,,,");
// "<λ“€λž‘κ³ >λ₯Ό 샀닀."
Smart.Format("{0:을} 샀닀.", "<λ“€λž‘κ³ >");

쑰사 뢄리

λ¬Έμžμ—΄μ— 꾸밈 νƒœκ·Έ 등을 μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” μ‘°μ‚¬λ§Œ λΆ„λ¦¬ν•΄μ„œ ν‘œκΈ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

// "<i>λŒλ‚ </i>둜"
Smart.Format("<i>{0}</i>{0:-으둜}", "λŒλ‚ ");
// "으둜"
Smart.Format("{0:-으둜}", "λ§ˆλ²•");

λ§Œλ“ μ΄μ™€ μ‚¬μš©κΆŒ

λ„₯슨 μ™“ μŠ€νŠœλ””μ˜€μ˜ κΉ€μ°¬μ›…κ³Ό 이ν₯섭이 λ§Œλ“€μ—ˆκ³  제3쑰항을 ν¬ν•¨ν•˜λŠ” BSD ν—ˆκ°€μ„œλ₯Ό μ±„νƒν–ˆμŠ΅λ‹ˆλ‹€.