Skip to content

๐Ÿ“ ํ•œ์–‘ ์ฑ—๋ด‡ ํ”„๋ก ํŠธ์—”๋“œ ์ดˆ๊ธฐ๊ตฌ์„ฑย #3

@taeuk-gang

Description

@taeuk-gang

[+๊ธฐ๋Šฅ] ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • i18next ๋ชจ๋“ˆ ์ถ”๊ฐ€
  • src/_locales/ko.js ์—์„œ ์–ธ์–ด KEY : VALUE ๋“ฑ๋ก (ํ˜„์žฌ๋Š” ํ•œ๊ตญ์–ด๋งŒ ์ฒ˜๋ฆฌ)
# ํŒŒ์ผ ์˜ˆ์‹œ
export default {
	APP_NAME: `ํ•œ์–‘ ์ฑ—๋ด‡`,
}
  • JS ์‚ฌ์šฉ๋ฒ• : i18next.t(KEY)๋ฅผ ์ด์šฉํ•˜์—ฌ, ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ
# ์˜ˆ์‹œ
alert(i18next.t(`NO_IMPLEMENT`))
  • HTML ์‚ฌ์šฉ๋ฒ• : ์—˜๋ฆฌ๋ฉ˜ํŠธ์—์„œ i18n-content๋ผ๋Š” attribute๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ
  • ๊ตฌํ˜„ ํŒŒ์ผ์œ„์น˜ : src/common/i18n-contents.js
# ์˜ˆ์‹œ
<title i18n-content="APP_NAME"></title>	

[+๊ธฐ๋Šฅ] ์›น์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ

[+๊ธฐ๋Šฅ] ์ฑ„ํŒ…์ฐฝ ์ƒ๋‹จ๋ถ€๋ถ„ ๊ตฌํ˜„

์ฑ„ํŒ…์ฐฝ ์ƒ๋‹จ ์„ค๋ช…
- ๋ด‡์˜ ํ”„๋กœํ•„ ์‚ฌ์ง„
- ๋ด‡ ์ด๋ฆ„
- ๋Œ€ํ™”๋‚ด์šฉ ๊ฒ€์ƒ‰
- ์•Œ๋žŒ ๋ฒ„ํŠผ
- ๋ฉ”๋‰ด ๋ฒ„ํŠผ
์ด 5๊ฐ€์ง€์˜ UI ๊ตฌ์„ฑ

[+๊ธฐ๋Šฅ] ๋Œ€ํ™” ๋งํ’์„  ๊ตฌํ˜„

๋Œ€ํ™” ๋งํ’์„  ์„ค๋ช…
๋Œ€ํ™”๋‚ด์šฉ ๋งํ’์„ (์ƒ๋Œ€๋ฐฉ(๋ด‡)๊ณผ ๋‚˜) ๊ตฌํ˜„

[+๊ธฐ๋Šฅ] ๋‚ด ๋งํ’์„  ํ‘œ์‹œ ๋ฐ ์Šคํฌ๋กค ๋งˆ์ง€๋ง‰ ์œ„์น˜๋ถ€ํ„ฐ ์‹œ์ž‘

  • ์ƒˆ๋กœ์šด ๋Œ€ํ™”๋‚ด์šฉ(๋งํ’์„ )์ด ํ‘œ์‹œ๋˜๋ฉด, ์ž๋™์œผ๋กœ ์Šคํฌ๋กค ๋์œผ๋กœ ์ด๋™
  • ์œ„์น˜: <chat-window>์˜ scrollToLast()

[+๊ธฐ๋Šฅ] ํŽ˜์ด์ง€ ๋กœ๋”ฉ/ ๋ผ์ด๋ธŒ ์Šคํฌ๋ฆฝํŠธ/ ์ƒ๋‹จ ์šฐ์ธก ๋ฉ”๋‰ด๋ฒ„ํŠผ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์„ค๋ช…
- ์ฑ—๋ด‡ ๋กœ๋”ฉ
๋ผ์ด๋ธŒ ์Šคํฌ๋ฆฝํŠธ ์ ์šฉ ์„ค๋ช…
- ๋ผ์ด๋ธŒ ์Šคํฌ๋ฆฝํŠธ ์œ„์น˜
# <script src="https://unpkg.com/rivescript@latest/dist/rivescript.min.js"></script> index.html CDN ์‚ฝ์ž…

# ๋ผ์ด๋ธŒ ์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ์ƒ์„ฑ
this.bot = new RiveScript()
# ๊ฐœ๋ณ„ํŒŒ์ผ(hy-lion.rive) ํ˜ธ์ถœ
this.bot.loadFile(`/hanyang-chatbot/src/libs/hy-lion.rive`).then(this.loading_done.bind(this)).catch(this.loading_error)

function loading_done() {
        # ๋ด‡ ์ด๋ฆ„
	const username = `hy-lion`
        # ๋ณด๋‚ผ ํ…์ŠคํŠธ
	const sendText = `hello`

	this.bot.sortReplies()		

        # ํ…์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๊ณ , ๋ผ์ด๋ธŒ ์Šคํฌ๋ฆฝํŠธ ์„ค์ •๋œ ์ฝ”๋“œ์— ์˜ํ•ด ์‘๋‹ต๋ฐ›์Œ
	this.bot.reply(username, sendText).then(reply => {
                # <chat-window-body>์˜ reply ์ž„ - ๋ด‡ ๋งํ’์„  ๋„์šฐ๊ธฐ
		this.reply(reply)
	})
}

function loading_error(error) {
	throw new Error(`Error when loading files: ${error}`)
}
์ƒ๋‹จ ๋ฉ”๋‰ด ์„ค๋ช…
- ์ƒ๋‹จ ๋ฉ”๋‰ด ํด๋ฆญ/ํ˜ธ๋ฒ„ ์ฒ˜๋ฆฌ
- ๋ฉ”๋‰ด๊ฐ€ ์•„๋‹Œ ๊ณณ ํด๋ฆญ์‹œ ๋ฉ”๋‰ด์ฐฝ ๋‹ซ๊ธฐ

[+๊ธฐ๋Šฅ] ๋ด‡ ์ปค์Šคํ…€ ์„ค์ •์ฐฝ๊ณผ ์ฑ„ํŒ…์ฐฝ ์„œ๋กœ ์ „ํ™˜ ๊ฐ€๋Šฅ(๋ผ์šฐํŒ…)

๋ด‡ ์„ค์ • ๋ฉ”๋‰ด๋กœ ์ด๋™ ์„ค๋ช…
- ์ฑ„ํŒ…์ฐฝ > ๋ด‡ ์„ค์ • ๋ฉ”๋‰ด๋กœ ์ด๋™

[+๊ธฐ๋Šฅ] ๋ด‡์„ค์ • - ๋ผ์ด๋ธŒ ์Šคํฌ๋ฆฝํŠธ ์ฝ๊ธฐ ์ถ”๊ฐ€

BEFORE AFTER

๐Ÿ› ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ

  • [-/+์ˆ˜์ •] ์ฑ„ํŒ…์„ ๊ธธ๊ฒŒ ์ž‘์„ฑ์‹œ, ๊ฐ€๋กœ์Šคํฌ๋กค์ด ์ƒ๊ธฐ๋Š” ํ˜„์ƒ ์ˆ˜์ •
  • [-/+์ˆ˜์ •] ๋Œ€ํ™”์ฐฝ์˜ ํญ์ด 200px๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด ๋งํ’์„  ํญ ๋ณด๊ธฐ์•ˆ์ข‹์€ ๋ฌธ์ œ ํ•ด๊ฒฐ

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions