์ฐ๋ฆฌ๋ ์ฌ๋๋ค์ด Mudlet ๋ฒ์ญ์ ๋งค์ฐ ์ฝ๊ฒ ๊ธฐ์ฌํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ด๋ ์ ์ผํ ์ฅ๋ฒฝ์ด ๋ก๊ทธ์ธํ๋ ์ ์ผํ ์น ๊ธฐ๋ฐ์ ์๋ฏธํฉ๋๋ค. ์ค์ ์ ์ป์ ์ ์๋ ์คํ ์์ค ๋ผ์ด์ ์ค๋ฅผ ์ ๊ณตํ ์ ์๋ ๊ธฐ์กด ์น ๊ธฐ๋ฐ ์๋น์ค๊ฐ ์์ ์ ์์ต๋๋ค. .
์ฌ์ฉ ๊ฐ๋ฅํ ๋์:
Launchpad - ๋ฏธ๋๋ ๋ถํ์คํ์ง๋ง
Transifex - ์ฌ๊ธฐ์์ ๋ฐ๋ชจ ํ๋ก์ ํธ: https://www.transifex.com/mudlet/mudlet/dashboard/
XLIFF ๋ฒ์ญ์ ํ์ฉํ๋ github๊ณผ์ ํตํฉ์ผ๋ก POEditor๊ฐ ์์ต๋๋ค.
ํ์ผ(qt linguist์์ ์ง์ํ๋ค๊ณ ๊ฐ์ ํจ). ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ OS๋ฅผ ๊ฐ์ง๊ณ
ํนํ.
๋ ๋ค๋ฅธ ์ต์
์ ๋น์ฉ์ด ๋ค์ง ์๋ Qordoba์
๋๋ค.
ts ํ์ผ์ ์ง์ํฉ๋๋ค.
๋ฒ์ญ ์๋น์ค/์ฑ์ ์ฌ์ฉํ ์ ์ด ์์ผ๋ฏ๋ก ์ ํธํ๋ ํญ๋ชฉ์ด ์์ต๋๋ค.
Vadim Peretokin [email protected] schrieb am So., 2017๋
4์ 9์ผ,
13:14:
์ฌ๋๋ค์ด Mudlet ๋ฒ์ญ์ ๊ธฐ์ฌํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
- ๊ทธ๊ฒ์ ์ ์ผํ ์ฅ๋ฒฝ์ด ๋ก๊ทธ์ธํ๋ ์น ๊ธฐ๋ฐ์ ์๋ฏธํฉ๋๋ค.
์ฐ๋ฆฌ์๊ฒ ์ ๊ณตํ ์ ์๋ ๊ธฐ์กด ์น ๊ธฐ๋ฐ ์๋น์ค๊ฐ ์์ ์ ์์ต๋๋ค.
์ค์ ํ๋ ค๋ฉด ์คํ ์์ค ๋ผ์ด์ ์ค๊ฐ ํ์ํฉ๋๋ค.์ฌ์ฉ ๊ฐ๋ฅํ ๋์:
Launchpad https://translations.launchpad.net/ - ๋ฏธ๋๋
๊ทธ๋ฌ๋ ์์ฌ์ค๋ฝ๋คโ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/Mudlet/Mudlet/issues/856 , ๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ABAEDUJoAsg-zvnOq1YUvuIqn-fbRwcCks5ruL2WgaJpZM4M3_u1
.
Re: XLIFF the _Qt Linguist Manual: Translators_ Qt Doc ๋ฉ๋ชจ:
__๋ฌธ์์ด ๋ฒ์ญ__
๋ฒ์ญ์ ์ํด Qt Linguist์์ ๋ฒ์ญ ์์ค(TS) ํ์ผ์ ์ฝ๋๋ค. TS ํ์ผ์ ์์ค ๊ตฌ๋ฌธ๊ณผ ํด๋น ๋ฒ์ญ์ด ํฌํจ๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ XML ํ์ผ์ ๋๋ค. TS ํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก lupdate์ ์ํด ์์ฑ ๋ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. TS ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ์๋ฅผ ์ฐธ์กฐํ์ฌ ์์ฑ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
Qt Linguist๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์ ์์ฑ๋ ๊ตญ์ XLIFF(XML Localization Interchange File Format) ํ์ผ์ ๋ฒ์ญํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ค Qt ํ๋ก์ ํธ์ ๊ฒฝ์ฐ TS ํ์ผ ํ์๋ง ์ฌ์ฉ๋ฉ๋๋ค. XLIFF ํ์ ํ์ผ์ ๋ํด ์ง์๋๋ ์ต์ ๋ฒ์ ์ 1.1์ ๋๋ค.
ํ์ฌ ๋ฐ์คํฌํฑ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋นํด ์์ฒญ๋ ์ด์ ์ด ์๋ ์น ๊ธฐ๋ฐ ๋ฒ์ญ ํ๋ซํผ์ด ์์ต๋๋ค. ์ํํธ์จ์ด๋ฅผ ์ค์นํ ํ์๊ฐ ์๊ณ ์ด๋ฏธ ๋ฒ์ญ๋ ํ ์คํธ์ ๋ํ ๋ฒ์ญ์ ์ ์ํ๋ ๋ฑ์ ๋๋ค.
@SlySven ๋๋ ์ด๊ฒ์ ์ฝ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๋งํ ๊ฒ์ ๋งํ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์์ ํ ์ง์๋์ง ์๊ฑฐ๋ ๋์ค์ ์๊ฐํ๋ ๊ฒ์ฒ๋ผ ์ฝ์ต๋๋ค. ๊ทธ๋์ ๋ด๊ฐ ์๋ง๋ ์ถ๊ฐํ์ต๋๋ค(ํ ์คํธํ ์ ์ด ์์).
@vadi2 ์ ๊ฐ ์ธ๊ธํ ์ ํ์ ์น ๊ธฐ๋ฐ ํ๋ซํผ์
๋๋ค. ๊ทธ๋ฌ๋ Qt ๋ฒ์ญ ํ๋ ์์ํฌ์์ ํด๋น ํ๋ซํผ์ ์ถ๋ ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ค๋ฉด ์ฌ์ ํ qt linguist๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ํ ์ง์๋๋ ํ์ TS
ํ์ผ ๋ฐ XLIFF
๋ฐ์ธ๋ฉํฉ๋๋ค.
๋๋ Linguist์ ํจ๊ป ํ๋ ์ดํ๊ณ UI๋ ๋ด๊ฐ ๋งํ ์ ์๋ ํ ๊ฝค ์ข์ต๋๋ค(์ ๋ ํฌ์
๋๋ค :heart_eyes:), UI ๋ํ๋ฅผ ๋ณต์ ํฉ๋๋ค QStrings
} ๋ค๋ฅธ ์ธ์ด์์ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์ข์ ์์ด๋์ด๋ฅผ ๋ณผ ์ ์๊ณ ๋์์ ์ฌ๋ฌ ๋ฒ์ญ ์์
์ ํ ์ ์์ต๋๋ค. .ui ํ์ผ์ QGridLayouts
์ ๋ฌ๋ฆฌ ๊ธฐ์ฌ์๊ฐ ํ์ผ์ ์
๋ฐ์ดํธํ ๋ git ๋
ธ์ด์ฆ๋ฅผ ์ค์ด๊ธฐ ์ํด TS ํ์ผ์ ๋ด์ฉ์ ๋ถํ์ํ๊ฒ ์ฌ์ ๋ ฌํ์ง ์๋ ๋ฐ Qt๊ฐ ๋ ์๊ฒฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. * ํ์จ *
Qt Linguist๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ - Qt Libraries๋ฅผ ์ฌ์ฉํ ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ gettext
๊ฐ๋ ๊ฒ ์ธ์ _๋ญ๊ณผ ๋ฌ๊ฑ_์ _๋ญ_ ์์ค์ด ์๋ _๋ผ์ง_ ์์ค์ ์ฝ์์ ์ ๋
ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๋๋ค์ด ์ํ ๊ฒฝ์ฐ ์ค์๊ฐ์ผ๋ก ๋ฒ์ญ์ ์ค์นํ๊ณ ๋ฏธ๋ฆฌ ๋ณผ ์ ์๋ ์ต์ ๊ณผ ํจ๊ป Qt Linguist๋ฅผ ์น ๊ธฐ๋ฐ์ผ๋ก ๋ด๋ณด๋ด๋ ๋ฐ ๊ด์ฌ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. @keneanung์ ๋ํด ์ธ๊ธํ ์๋น์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ณด๊ธฐ ์ข์ต๋๋ค.
๋๋ ๋ํ Transifex๋ฅผ ์ผ๋์ ๋๊ณ ์์์ง๋ง ๋ ์ด์ ์ ํ๊ณ ์์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ ๋ค๋ฅธ ์น ๋ฒ์ญ ํ๋ซํผ: https://hosted.weblate.org/projects/tilix/translations/
๋ค์์ Mozilla ํ๋ก์ ํธ์์ ํ์งํ ๋ฐ ๋ฒ์ญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Quick_start_guide/Translation_phase
"Libre ์ํํธ์จ์ด์ ๋ฒ์ญ"์ ๋ํ ์ด ๋ง์คํฐ ์ฐ๊ตฌ ๋ ผ๋ฌธ์์ ์ฌ๋ฌ ๋์๊ณผ ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค์ ๋ํ ๋ ๋ค๋ฅธ ํ๋ฅญํ ์ฌ์ธต ๋ถ์: https://larjona.wordpress.com/translations-in-libre-software/
@Kebap๋ ๊ฐ์ฌ ํด์ฃผ์ ๋ ผ๋ฌธ ์ ์ฝ์์ต๋๋ค. ๋๋ Weblate์ Transifex์ ๊ด์ฌ์ด ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๊ฐ๋ฅํ ๊ฐ์ฅ ๋ฎ์ ์ง์ ์ฅ๋ฒฝ์ ๊ฐ๊ณ ์ํํธ์จ์ด๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํด์ผ ํ๋ ๋ฐ์คํฌํ ๊ธฐ๋ฐ ๋ฒ์ญ์ ๋ฐฐ์ ํ๊ณ ์์ ์ ์์ํ ๊ธฐํ๊ฐ ์๊ธฐ ์ ์ ์ฌ๋ฐ๋ฅธ ํ์ผ์ ์ฐพ์ ํค๋งค๋ ๊ฒ์ ์ํฉ๋๋ค.
Weblate๋ ํ๋ฅญํ๊ณ ์คํ ์์ค๋ก ๋ณด์ด์ง๋ง ํ์ฌ ํธ์คํ ๋ฒ์ ๋ ๋ค์ด๋์ด ์์ผ๋ฉฐ Tilix ํ๋ก์ ํธ์ ๊ฐ์ ๋ชจ๋ ํธ์คํ ๋ฒ์ญ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์์ข๋ค. ๋๋ ๋ํ ์ด๋ฏธ ํ๋์์ ์คํ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ ์๋ฒ์์ ๋ ์ด์ ๋ฌด์ธ๊ฐ๋ฅผ ํธ์คํ ํ๋ ๊ฒ์ด ์กฐ์ฌ์ค๋ฝ์ต๋๋ค.
Transifex ๋ฐ๋ชจ๋ฅผ ์ํํด ๋ณผ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ์คํ ์์ค๋ฅผ ์ง์ํ๋ฉฐ Weblate์ ๋ฌ๋ฆฌ ํจ์ฌ ๋ ํฐ ์์ ์ผ๋ก ๋ณด์ด๋ฉฐ ์ง๊ธ๊น์ง๋ ๋ค์ด๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ต๋๋ค.
์ฆ, Weblates Git ํตํฉ์ด ์ค์ ๋ก ์๋ํ๋ค๋ฉด Git์์ ์ ์์ค ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ๋ค์ ์ปค๋ฐํด์ผ _ํด์ผ_ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋์ ๊ฒ์ ๋๋ค. ๋ฐ๋ฉด Transifex๋ ๋ฒ์ญํ ํ์ผ์ ์๋์ผ๋ก ์ ๋ก๋ํด์ผ ํฉ๋๋ค.
Transifex๋ ๊ธฐ๋ณธ์ ์ผ๋ก .t ํ์ผ์ ์ง์ํ์ง๋ง ์
๋ก๋ ์ ์ง์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ts2po
ํ๊ณ .po
ํ์ผ์ ์
๋ก๋ํด๋ ์๋ํ์ต๋๋ค.
์ผ๋ถ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ Transifex์ Github ๊ฐ์ ์๋ ์๋ฐฉํฅ ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค. https://docs.transifex.com/integrations/github-txgh
Transifex์์ ๊ทธ๋๋ก ๋ฒ์ญ๋ .po
๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์์ง๋ง po2ts
Python ์ธ์ฝ๋ฉ ์ค๋ฅ๊ฐ ์๋ ํ์ผ์์ ์ง์ํ์ต๋๋ค.
po2ts: WARNING: Error processing: input ./for_use_mudlet_rupo_1_ru.po, output ./for_use_mudlet_rupo_1_ru.ts, template None: 'ascii' codec can't encode characters in position 1994-1999: ordinal not in range(128)
๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ @Kebap @keneanung์ ๋ฒ์ญํ๊ณ ์ถ์ดํ๋ค๋ฉด Transifex ํ๋ก์ ํธ๋ฅผ https://www.transifex.com/mudlet/mudlet/dashboard์ ๋จ๊ฒจ ๋๊ฒ ์ต๋๋ค. ๋ค์์๋ Weblate๋ฅผ ์ฌ์ฉํด ๋ณด์ธ์.
Weblate๋ ํ๋ฅญํฉ๋๋ค. _ton_์ ํ์ฌ ๋ก๊ทธ์ธ ์ต์ ์ด ์์ผ๋ฏ๋ก ๊ฐ์ ํ๋ ๋ฐ ๋ง์ฐฐ์ด ์์ต๋๋ค.
@ vadi2๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
Transifex์์ ๊ทธ๋๋ก ๋ฒ์ญ๋ .po๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์์ง๋ง po2ts๊ฐ Python ์ธ์ฝ๋ฉ ์ค๋ฅ๋ก ํ์ผ์ ์ง์ํฉ๋๋ค.
๋๋ ๊ทธ ์์ ์ ๋ฒ์ ์ ๊ฐ ์๊ฐ po2ts
๋จ์ง ์ด์ ์ฌ์์ ์๋ .ts
(์์ ์ ๋ง์ ๋ด ์๊ฐ) ํ์ผ ๋ฐ ํ์ํ ์
๋ฐ์ดํธ - ๋๋ ๊ทธ๊ฒ์ด์์ ์จ๋ค ์์ต๋๋ค ๋ฒ์ญ ํดํท ์์ Translate House Github ์์ค ์ฝ๋ ์ ์ต์ ๋ฒ์ ์ ์์ฑ ๋น์ 2.2.5(๋ฌด์์ ์ฌ์ฉํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค)์
๋๋ค. ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์น ํ์ด์ง๋ฅผ ์ฐพ์์ต๋๋ค(GitHub ๊ธฐ๋ฐ์ธ์ง๋ ํ์คํ์ง ์์ง๋ง ์ ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋ ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ฒ๋ผ ๋ณด์์ต๋๋ค: mixxx ๊ตญ์ ํ ํ์ด์ง .
์ค์ ๋ก "์ธ์ฝ๋ฉ" ์ค๋ฅ๋ ์ธ์ฝ๋ฉ์ด ASCII์ด๊ณ UTF-8์ด ์๋ .ts
ํ์ผ์ ์์ฑํ๋ ค๊ณ ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋ฏ๋ก ์ผ๋ถ ๋ฌธ์(_translated_ ๋ฌธ์์ด์์)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ง์ ์์ ํ์๋ฆฌ๋ฅผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ASCII๊ฐ ์๋๋๋ค ...
๊ทธ ํ์ด์ง๋ 4๋
์ ์ ๋ง์ง๋ง์ผ๋ก ์
๋ฐ์ดํธ๋์์ต๋๋ค! ๊ฐ๋ฐ์๋ฅผ ์ํ ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋์์ต๋๋ค.
๋ ์ง์, ๋๋ ์๊ฐํ๋ค. ๊ฝค ์ธ์์ ์ธ ๋ฒ์ญ ๋ฌธ์์
๋๋ค.
๊ทธ๋ ์ง๋ง!
2017๋ 9์ 19์ผ ํ์์ผ ์คํ 6์ 18๋ถ Stephen Lyons [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@ vadi2๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
Transifex์์ ๊ทธ๋๋ก ๋ฒ์ญ๋ .po๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์์ต๋๋ค.
ํ์ง๋ง po2ts๋ Python ์ธ์ฝ๋ฉ ์ค๋ฅ๋ก ํ์ผ์ ์ง์์ํต๋๋ค.๋๋ ๊ทธ๋ค์ po2ts ๋ฒ์ ์ด ์ด์ ๋ฒ์ ์์๋ง ์๋ํ๋ค๋ ๊ฒ์ ์ด๋๊ฐ์์ ์ฝ์ ๊ฒ ๊ฐ์ต๋๋ค.
.ts ํ์ผ์ ์ฌ์ ๋ฐ ์ ๋ฐ์ดํธ๊ฐ ํ์ํจ(๊ทธ๋ค์ ๋์์ ๋๋ ์ถ์ธกํ๋ค)
๋ฒ์ญ ํดํท์์ ๊ฐ์ ธ์จ ๊ฒ์ ๋๋ค.
http://toolkit.translatehouse.org/ ๋ฒ์ญ ํ์ฐ์ค Github ์์ค
์ฝ๋ https://github.com/translate/translate ๋ฐ ์ต์ ๋ฒ์ ์
2.2.5 (๋๋ ๊ทธ๋ค์ด ๋ฌด์์ ์ฌ์ฉํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค) ์์ฑ ๋น์. ๋ฐ๊ฒฌ
๋ค๋ฅธ ํ๋ก์ ํธ์ ์น ํ์ด์ง(GitHub ๊ธฐ๋ฐ์ธ์ง ํ์คํ์ง ์์ง๋ง
๊ทธ๋ค์ ๋ํ ์ ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋ ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ฒ๋ผ ๋ณด์์ต๋๋ค: mixxx
๊ตญ์ ํ ํ์ด์ง
https://mixxx.org/wiki/doku.php/internationalization .โ
๋น์ ์ด ํ ๋น๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/Mudlet/Mudlet/issues/856#issuecomment-330592819 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AAGxjEdeBPs-7fDkUwfoLjUt48eJJhl0ks5sj-lagaJpZM4M3_u1
.
Weblate๋ ์ข์ ์์น์ ์์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ํธ์คํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์๋ต์ ์์ง ๋ฐ์ง ๋ชปํ๊ณ ํ๋ก์ ํธ๋ ์ ๋ฐ์ดํธ๋ฅผ ํตํด ๋ง์ ๊ฒ์ ์ป์ง ๋ชปํ์ต๋๋ค. ๋ค์ Transifex๋ก ๋์๊ฐ๋๋ค.
Qt๋ก Transifex๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ: https://forum.qt.io/topic/36750/qt5-ts-files-and-transifex-continuous-translation-localization
https://bugreports.qt.io/browse/QTBUG-1136 :
๋ง์ง๋ง์ผ๋ก, ์ธ์ดํ์๋ ๋ณธ์ง์ ์ผ๋ก ์๋ช ์ ์ง์ ๊ดํ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ถ์ผ๋ฅผ ์ ๋ฌธ์ผ๋ก ํ๋ ISV์ ๊ธฐ๋ฐ์ ์๋ํ์ต๋๋ค.
Qt Linguist๋ ๋ง๋ค๋ฅธ ๊ธฐ์ ์ ๋๋ค. ์์ผ๋ก ์ด๋ค ๊ธฐ๋ฅ๋ ์ ๊ณต๋์ง ์์ ๊ฒ์ด๋ฏ๋ก ์ฌ๊ธฐ์์ ์น ๊ธฐ๋ฐ ํ๋ซํผ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
#1334๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก Transifex ๋ฒ์ญ์ ์์ํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ด๊ฐ Kebap์ ์ํธ ์ฐธ์กฐ์์ ์ธ๊ธํ ๊ฒ์ ๋ํ์ดํ๊ธฐ ์ํด, crowdin ์ ์ฐ๋ฆฌ์ ๊ฐ์ ์คํ ์์ค ํ๋ก์ ํธ์ ๋ํ ์ ํจํ ์ ํ์ฒ๋ผ ๋ณด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ Qt .ts
ํ์ผ์ ์ฒ๋ฆฌํ ์ ์๊ณ Github ํตํฉ ๋ ๊ฐ์ง๊ณ ์์ต๋๋ค. - pseudolocalizaton ๊ธฐ๋ฅ๋ ์์ด์ผ ํฉ๋๋ค. ํ
์คํธ๋ฅผ ์ ๋๋ก ๊ตฌ์ฑํ์ง ์์๊ธฐ ๋๋ฌธ์ GUI์์ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ( ๋ด ์๊ฐ์ ) en-US
...
crowdin์ ๋ฉ์ง๊ฒ ๋ณด์ ๋๋ค. Transifex์ ์ด๋ป๊ฒ ๋น๊ต๋๋์ง ๋ด ์๋ค. ์ฌ๊ธฐ์ ํ ์คํธ ํ๋ก์ ํธ๊ฐ
@SlySven ์ html์ ๋ฒ์ญ๊ฐ์๊ฒ ๋ ์ข๊ฒ ๋ง๋ค๊ธฐ ์ํ ์ฝ๋ ๋งน๊ธ๋ง์ ์๊ธฐ์์กฐ์์ต๋๋ค. ์๋ฅผ ๋ค์ด transifex๋ html ๋งํฌ์ ์ ์ด๋ฏธ ํ๋ฅญํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์์ ๋์ต๋๋ค. crowdin์๋ ๊ทธ ์ต์ ์ด ์์ต๋๋ค. ํธ์ง๊ธฐ ํ๊ทธ ์ค์ ์์ "์จ๊ธฐ๊ธฐ"๋ฅผ ์ ํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ @SlySven ์ด ํด์
๋๋ ๋ฒ์ญ์ ์ํด @crowdin ์ฌ์ฉ @SlySven์ ์ ์์ ํ๋ณต ํด์. @Kebap , @keneanung , @SlySven ๋น์ ์ ์๊ฐ์?
์ผ๋จ ์ฐ๋ฆฌ๊ฐ ํฌ๋ผ์ฐ๋์ธ์ ๋ํ ํ๋ก์ ํธ๋ฅผ ๊ณต์ํํ๊ธฐ๋ก ํฉ์ํ๊ณ ์คํ ์์ค ๋ผ์ด์ ์ค๋ฅผ ์ ์ฒญํ๋ฉด ๋ฒ์ญ๊ฐ๋ฅผ ์ํด ์๋ฌธ์ ํผ๋จ๋ฆฌ๊ธฐ ์์ํฉ๋๋ค.
์ผ,
์ ๋ Crowdin ํ์ ์ผ์์ด๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ์ถ๊ฐ ์ค์ ์ ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค! ์ง๋ฌธ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ์ ๋ฅผ ์ธ๊ธํ์ญ์์ค.
ํฌ๋ผ์ฐ๋ ์ธ๋ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ UI๋ ์ฒ์์๋ ํผ๋์ค๋ฌ์ ์ง๋ง, ๋๋ ์ฐ๋ฆฌ(์ )๊ฐ ๊ทธ๊ฒ์ ์ต์ํด์ง ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ํ์ฌ Qt .ts
ํ์์ ์/์ง์ ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ์ดํดํ๊ธฐ ๋๋ฌธ์ ์ ์ ์ ์ผ๋ก ๊ณ ๋ ค๋ฅผ ๊ป์ ๋ Transifex๋ฅผ ์์ธํ ์ดํด๋ณด์ง ์์๋ค๊ณ ๊ณ ๋ฐฑํ ๊ฒ์
๋๋ค. ๊ทธ ๋ฏฟ์์ผ๋ก?
์ต๊ทผ git ์ปค๋ฐ์์ ๋ณผ ์ ์๋ Crowdin์ ๋ํ ํ ๊ฐ์ง๋ ํน์ ์ธ์ด์ฉ์ผ๋ก ๋ก์ปฌ๋ก ๊ตฌ์ฑ๋ ์ฌ๋ฌ .ts
ํ์ผ์ ์
๋ก๋ํ๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. ์ง๊ธ์ mudlet_en.ts
ํ์ผ ํ๋๋ง ์ ์กํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง ์ฌ์ ํ ์ ์๊ฒ๋ ๋ง์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. mudlet.pro
ํ์ผ์์ TRANSLATIONS =
ํ์ ์ ๊ฑฐํ๊ฑฐ๋ ์ฃผ์ ์ฒ๋ฆฌํ๊ณ ์ ์คํฌ๋ฆฝํธ๊ฐ (์์ค ๊ธฐ๋ฐ์์) ์คํ๋๋๋ก ํ ์ ์์ต๋๋ค.
lupdate -recursive ./src/ -ts ./translations/mudlet.ts
์ธ์ด๊ฐ ์๋ ๋จ์ผ ํ์ผ์ ์์ฑํ์ฌ Crowdin ๋ฒ์ญ ํ๋ก์ธ์ค์ ์ ๋ฌํ๊ณ ์ํ๋ mudlet_xx_YY.ts
ํ์ผ์ ์์ฑํ๋๋ก ํฉ๋๋ค(Crowdin์์ _xx_YY
๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์ด๋ฏธ ํ๋์ ์ค์ ์ ๋ณ๊ฒฝํ์ต๋๋ค _xx
์ธ์ด๋ก๋ง ์ค์ ๋์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด lrelease
์ค๋น๊ฐ ๋ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ํ์ผ ์ธํธ ๊ฐ ๋ค์ ๋ณต์ฌ๋ฉ๋๋ค.
BTW ์ ๋ฏธ์ฌ๊ฐ ์๋ ์ผ๋ฐ ํ์ผ์ ๋จ๊ฒจ๋๋ ๊ฒ์ ์์ ์ธ์ด ์ดํด ๋น์ฌ์๊ฐ ์ ๊ณต๋ Qt Linguist๋ฅผ ์ฌ์ฉํ์ฌ ๋ณดํธ๋์ง ์์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ํ ๊ฒฝ์ฐ ๋น๊ณต๊ฐ๋ก ์์ ํ๊ธฐ ์ํด ํ์ผ์ ๋ณต์ฌํ๊ณ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์๊ธฐ ๋๋ฌธ์ ๋์์ด ๋ฉ๋๋ค. {์๋ฅผ ๋ค์ด 9์ 19์ผ์ ํด์ ์ผ ์๋ ์์ต๋๋ค!!!}
Qt Designer ํ๋ฌ๊ทธ์ธ์ด ๋ง์ง๋ง ๋ช ๊ฐ์ Qt ๋ฒ์ ์์ HTML์ ๋งน๊ธ๋งํ๋ ค๋ ์ด๋ง์ด ์กฐ๊ธ ๋ํ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ทจํ HTML ๋๋ ํ ๋ฐฉ์ง ๋จ๊ณ๊ฐ ๋ ํ์ํด์ง ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ง๋ง์ผ๋ก ํธ์งํ ์ฌ๋์ด ์์คํ ์ ์๋ ํน์ ๊ธ๊ผด์ ์ผ๋ฐ ๊ธ๊ผด๋ก ๋จ๊ฒจ๋์ง ์๊ณ ๊ฐ์ ๋ก ์ฌ์ฉํ์ฌ ์ํฉ์ ์ด์ง๋ฝํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์์ง ์์ ํ ํ์ ํ์ง ๋ชปํฉ๋๋ค. ๋ชจ๋ ํ๋ซํผ์์ ์๋ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ์์ ์์ ์ด๋ฌํ HTML์ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๋ค์ ์ดํด๋ณด๊ณ ๋ณด๊ณ ํ๊ฒ ์ต๋๋ค.
๋๋ Transifex๊ฐ ํ์ฌ Qt .ts ํ์์ ์/์ง์ ์ ์ผ๋ก ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ์ดํดํ๊ธฐ ๋๋ฌธ์ ์ ์ ์ ์ผ๋ก ๊ณ ๋ ค๋ฅผ ๊ป์ ๋ Transifex๋ฅผ ์์ธํ ์ดํด๋ณด์ง ์์๋ค๊ณ ๊ณ ๋ฐฑํ ๊ฒ์ ๋๋ค.
์ ๋ ๊ทธ๋ฌ๋๋ฐ ๋ณ๊ฒฝ๋ ๊ฒ ๊ฐ์ต๋๋ค:
๋๋ Qt Designer ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ๊ณํ์ด ์์ผ๋ฏ๋ก ์ด๋ค ๋งน๊ธ๋ง์ ํ๋ ๊ด๋ จ์ด ์์ต๋๋ค. crowdin์ ์์ฒด์ ์ผ๋ก ๋ฒ์ญ์ ์ถฉ๋ถํ ์ ์ฒ๋ฆฌํ๊ณ "hide" ์คํ์ผ์ HTML ๋ ๋๋ง์ด ํ์ฉ๋ฉ๋๋ค.
์ค, ์ฌ์ ํ ํ๊ณ ์์ต๋๋ค - ํ ์ด๋ธ๊ณผ DTD ์ฝ์ - ๊ทธ๋์ ์ฌ๋์ด ์ฝ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'FreeSans'; font-size:9pt; font-weight:400; font-style:normal;">
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large; font-weight:600;">Welcome to Mudlet!</span></p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click on one of the MUDs on the list to play.</p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To play a game not in the list, click on <img src=":/icons/list-add_small.png" /><span style=" color:#555753;">New</span>, fill in the <span style=" font-style:italic;">Profile Name</span>, <span style=" font-style:italic;">Server address</span>, and <span style=" font-style:italic;">Port</span> fields in the <span style=" font-style:italic;">Required</span> area.</p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">After that, click <img src=":/icons/dialog-ok-apply_small.png" /><span style=" color:#555753;">Connect</span> to play.</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Have fun!</p>
<p align="right" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The Mudlet Team <img src=":/icons/mudlet_main_16px.png" /></p></body></html>
๋๋ ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ด๋ จ๋ ํ ๋์ผํ ์์ ์ ์ํํฉ๋๋ค.
<html><head/><body><center><big><b>Welcome to Mudlet!</b></big></center></p>
<p><center>Click on one of the MUDs on the list to play.<center></p>
<p><center>To play a game not in the list, click on <img src=":/icons/list-add_small.png"/> <span style="color:#555753;">New</span>, fill in the <i>Profile Name</i>, <i>Server address</i>, and <i>Port</i> fields in the <i>Required</i> area.<center></p>
<p><center>After that, click <img src=":/icons/dialog-ok-apply_small.png"/> <span style=" color:#555753;">Connect</span> to play.</center></p>
<p>Have fun!</p>
<p align="right">The Mudlet Team <img src=":/icons/mudlet_main_16px.png"/></p></body></html>
๊ธฐ์ ์ ์ผ๋ก ์ด๊ฒ์ HTML์ ํ์ ์งํฉ์ผ ๋ฟ์ธ ๋ชจ๋ Qt ์์ ์๋ ํ ์คํธ์ ๋๋ค(์ ์๊ฒฉํ HTML 4.0 DTD๋ฅผ ํฌํจํด์ผ ํฉ๋๊น?)
<
๋ฐ >
๋์ <
๋ฐ >
์ฌ๊ธฐ์ ํ์ํ๋๋ผ๋ ๋ฒ์ญ๊ฐ๊ฐ ๋ณด๊ฒ ๋ ์์ ํ์ผ์ ๋ช
ํํ๋ค๊ณ ์๊ฐํฉ๋๋ค. HTML/Qt ์์ ์๋ ํ
์คํธ ๋์คํ๋ ์ด ์์ ฏ์ด ์์ ๋ ์์
ํ๊ธฐ ๋ ์ฌ์...
๋๋ CJK ์ธ์ด๊ฐ ์ค์ ๋ก ๊ตต๊ฒ ๋๋ ๊ธฐ์ธ์๊ผด ๊ธ๊ผด ํจ๊ณผ๋ฅผ ์ฌ์ฉํด์๋ ์๋๋ค๋ ๊ธ์ ์ด๋๊ฐ์์ ์ฝ์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฒ์ญ ๊ณผ์ ...
์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๊ฒ์ ์ด์ ๊ฐ๋ฅํ์ง ์์ผ๋ฏ๋ก(Windows์ฉ) ๊ทธ๋ ๊ฒ ํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ฌ mudlet_en.ts
ํ์ผ์ด ์ ๋์๊ฐ๋ ๊ฒ ๊ฐ์ต๋๊น?
๊ธ์์ผ์ด๋ฏ๋ก ๋ค์ ๋ฉฐ์น ์์ ์ด์ ๋ํ ๊ฒฐ๋ก ์ ๋๋ฌํ์ฌ ๋ค์ ๋จ๊ณ๋ฅผ ์์ํ ์ ์๋๋ก ํฉ์๋ค. ์ ์๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ๋ฒ์ญ๊ฐ๊ฐ ํผ๋์ค๋ฌ์ด ๋ฌธ์์ด์ ๋ณด๊ณ ํ๋ ํ๋ก์ธ์ค - ๋ฒ์ญ๊ฐ๊ฐ ์ด๋ฅผ ์ดํดํ ์ ์์ผ๋ฉด ์ฌ์ฉ์๋ ์ดํดํ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
2) ์ค์ ๋ฒ์ญ ํ๋ก์ธ์ค์ ์ฐ๋ฆฌ ์ํฌํ๋ก์์ ์ด๋ป๊ฒ ์๋ํ ๊น์?
๋จผ์ ํ์ํ ํ๋ก์ธ์ค์ ์ธ๋ถ ์ฌํญ์ ๋ํด ๋ ๋ง์ด ์๊ฐํ ๋ค์ ๊ฐ์ฅ ์ ํฉํ ๋๊ตฌ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ด๊ฐ ์ง๊ธ ๋ณผ ์ ์๋ ํ, ์ฐ๋ฆฌ๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ฃผ์ ํ ์คํธ ์์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ฐ๊ฐ์ ๋ํ ํ๋ก์ธ์ค๋ ๊ฑฐ์ ๋์ผํ์ง๋ง ๋ณ๋๋ก ๊ฒํ ํด์ผ ํฉ๋๋ค.
Wordpress ๋ฐ Mediawiki
์์ ๋ชจ๋ ๋จ๊ณ์์ ๊ฐ์ฅ ์๋ํ๋ ํ๋ก์ธ์ค๋ฅผ ์ํ๊ณ ๊ฐ์ฅ ์ ์ง์ํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ ํํฉ๋๋ค.
์์ค ์ฝ๋/๋ํ(์์)๊ฐ ์งํ๋๋ ํ:
lupdate
๋ช
๋ น์ผ๋ก ์ํ๋ฉ๋๋ค. ์ด ๋ช
๋ น์ ์์ค ํ
์คํธ๋ฅผ ์ถ์ถํ๊ณ , ์์ค ์ฝ๋๋ฅผ ์ถ์ธกํ๊ณ , ์ธ์ด ์ค๋ฆฝ์ mudlet.ts
ํ์ผ( ํ์ฌ mudlet_en.ts
๋ ์ผ๋ถ ๋น์ฌ์์๊ฒ ํนํ ์์ด ๋ฒ์ญ์ ๋ณด์ ํ๊ณ ์์์ ์๋ฆฝ๋๋ค. ๋ฐ๋ฉด - ์์ค ์ฝ๋๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ==> Crowdin ๋ ์ง ์ ์ก ๋งค์ฒด๋ ์์ด(๋ฏธ๊ตญ์ ) ๊ฒฝ์ฐ์
๋๋ค. --no-obsolete
์ต์
์ผ๋ก ํธ์ถ ํ์ง ์์ผ๋ฉด ์กด์ฌํ์ง๋ง ์ง๊ธ์ ์ฌ๋ผ์ง ๋ฌธ์์ด์ ์ ๊ฑฐ๋์ง ์์ต๋๋ค - ์ด๋ ์ ์ด๋ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์
๋๋ค. en-US ๋ก์ผ์ผ์ "deleting %n room(s)"๊ณผ ๊ฐ์ ์์ค ๋ฌธ์์ด์ด ์๋ ๋ณต์ํ ๋ฌธ์์ด๋ง ํฌํจํ๋ ๋งค์ฐ ์งง์ ๋ก์ผ์ผ์ด๋ฏ๋ก "1 room ์ญ์ " ๋๋ "๋ฐฉ 2๊ฐ ์ญ์ "๊ฐ ์ฌ์ฉ๋ฉ๋๋ค..ts
๊ฐ Linux CI ๋น๋์์ ์
๋ก๋๋๋๋ก ํด์ผ ํฉ๋๋ค.lupdate
๋ค์ ์คํ - ๊ทธ๋ฌ๋ ์ด๊ฒ์ '๊ฐ๋ฐ' ๋ถ๊ธฐ ์
๋ฐ์ดํธ์ ๋ํ CI ์คํฌ๋ฆฝํ
์ ํตํด ์์ฐ์ค๋ฝ๊ฒ ๋ฐ์ํด์ผ ํฉ๋๋ค.mudlet_xx_YY.ts
ํ์ผ์ ์ ์ฒด ์ธํธ๋ก "๋ฒ์ญ์ ๋ค์ด๋ก๋"ํ๊ณ /translations
๋๋ ํ ๋ฆฌ์ ์ปค๋ฐํ ์ ์์ต๋๋ค. ์ด ํ์ผ์ lupdate
์ํด ์
๋ฐ์ดํธ๋์ง ์๋๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค ๋ณต์ํ ์ ์ฉ mudlet_en_US.ts
lupdate
์ ์ธํ๊ณ - ๋์ mudlet.ts
ํ์ผ์์ Crowdin์์ ์์ฑ๋ฉ๋๋ค..ts
ํ์ผ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฒ์ญ ํ
์คํธ๋ฅผ ์ฝ์ง ์์ต๋๋ค. ๋์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ๊ณต๊ฐํ๋ฉด mudlet ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ํํ mudlet_xx_YY.qm
๋ฐ์ด๋๋ฆฌ ํ์ผ(์ ์ ํ Qt ํ์ผ๊ณผ ํจ๊ป - ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ์๊ณ ์์)์ ๋ก๋ํ์ฌ ๋ฐํ์์ ๋ฒ์ญ์ ์ฝ์ต๋๋ค. ์ค์น ํ๋ก๊ทธ๋จ ๋ฒ์ ๊ณผ ํจ๊ป ๋ฐฐํฌํฉ๋๋ค!) ๊ทธ๋์ ์ฒ์์๋ ์ฐ๋ฆฌ ์ค ํ ๋ช
์ด lrelease
๋ฅผ ์คํํ์ฌ .ts
ํ์ผ์ ์ผ์นํ๋ .qm
ํ์ผ๋ก ๋ณํํ๊ณ ๋ค์๊ณผ ๊ฐ์ด git ์ ์ฅ์์ ์ปค๋ฐํ ๊ฒ์ด๋ผ๊ณ ์์ํฉ๋๋ค. ์. ๊ฒฐ๊ตญ Vadim์ ๋ฆฌ์์ค ํ์ผ๋ก ํฌํจ๋ .qm
ํ์ผ ์ธํธ์ ํจ๊ป ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ ์ ๊ณตํ ๊ฒ์ ์ ์ํ์ต๋๋ค. ์ด๊ฒ์ ์ค์น ํ๋ก๊ทธ๋จ ๋ฒ์ ์ ์ ํฉํ์ง๋ง Linux ํจํค์ง ์์ฑ์๋ ๋์ ์ฝ๊ธฐ ์ ์ฉ /usr/share/mudlet/translations
(์ธ๋ถ Mudlet lua ํ์ผ๊ณผ ํจ๊ป)์ ์ ์ฅํฉ๋๋ค. ์ด ๋ ๊ฐ์ง ๋ฐฉ์์ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์๋ ํ๋กํ ํ์
์ฝ๋๊ฐ ์์ง๋ง ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๊ณณ(์์ค ์ฝ๋์ /translations
๋๋ ํ ๋ฆฌ์์ ๋ฒ์ญ ํ์ผ์ ๋ก๋ํ ์ ์์)์์ ๋ฒ์ญ ํ์ผ์ ๋ก๋ํ ์ ์๋๋ก ํ๋ฉด ๋
๋ฆฝ ์คํํ ๋ฒ์ญ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ Qt ๋๊ตฌ Linguist
์ฌ์ฉํ์ฌ ์ดํด ๋น์ฌ์๊ฐ ๋ง๋ ๋ค๋ฅธ ์์ ์ธ์ด์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ธ/ํ
์คํธ ์ฌ๋ก์์ ์์
ํ ์๋ ์์ต๋๋ค.QLangaugeEvent
์ฌ์ฉํ๋ ์คํ์์ QQTranslator::load(...)
๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์คํ๋๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ณต์กํฉ๋๋ค. mudlet
ํด๋์ค๋ฅผ emit
a (void) signal_translatorChangeCompleted(const QString&, const QString&)
์ฌ๊ธฐ์ ํ์ฌ ๋ฐ ์ด์ xx_YY
์ฝ๋(language_COUNTRY/REGION)์ ์ธ์๋ ์คํฌ๋ฆฝํธ์ ๋ํ lua ์ด๋ฒคํธ๋ฅผ ์์ฑํ๋ Host
๋ฅผ ์ ์ธํ๊ณ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. /package ์์
ํ ์ด๋ฒคํธ ํธ๋ค๋ฌ. ๊ทธ ์ ํธ์ ์๊ตฌ์ ์ธ GUI ํ
์คํธ๋ก ๋ชจ๋ ํด๋์ค์ ์ ์ก๋๋ slot_guiLanguageChange()
๊ฐ ํ์ ํธ์ถํ๋ ๊ฒฝ์ฐ retranslateUi(this)
๋ํ ์ฌ์ฉํ๋ ๋ชจ๋ ํด๋์ค์ ์ ์ ๋ setupUi(this)
๊ฐ ์ ๊ณต ๋น์ ์ด ์ค์ ํ Qt IDE์์ ์ต์
์ ์ฌ๋ฐ๋ฅด๊ฒ ์ ํํ์ญ์์ค( qmake
์ง์ ์ฌ์ฉํ ๋ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค):tr(...)
์ฌ์ฉํ์ฌ ์ ๋ฒ์ญ์ ์์ฑํ ๋๋ง๋ค ์๋์ผ๋ก ์ ๋ฒ์ญ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ง์์ฑ( ์ฆ, ์ค๋ซ๋์ ์ฌ์ฉ๋จ) ๋ฌธ์์ด๋ง ๋ณ๊ฒฝํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋ฆฌ๋งํผ ๋์์ง ์์ต๋๋ค.์ด๊ฒ์ด ์ด ์ฃผ์ ์ ๋ํ ์ ๋ถ๋ ์๋์ง๋ง ๋๋ถ๋ถ์ ๋จ๊ณ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ GUI ํ ์คํธ์ ๋ํด ์ด๋ป๊ฒ ์งํ๋์ด์ผ ํ๋์ง ์ ์ ์์ต๋๋ค...
๊ทธ ์ธ๋ถ ์ฌํญ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค SlySven! ๋ด๊ฐ ๋ณด๊ธฐ์, ์๋ง๋ ๋น์ ์ ์ ์ ์ด๊ฒ์ ํ ์ ์ด ์์ต๋๊น? ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํด? ์ฝ์ฐ๋๊ณผ ํจ๊ป? ๊ทธ๋ ๊ฒ ํ๋ฉด Mudlet ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด๋ฅผ ํจ์ฌ ์ฝ๊ฒ ๋ฒ์ญํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด์ Wiki ๋ฌธ์, Mudlet ์น ์ฌ์ดํธ ๋ฐ ์์ ๋ง์ง๋ง ๊ฒ์๋ฌผ์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ์๋์ผ๋ก ํตํฉํด์ผ ํ ์ ์๋ ์ถ๊ฐ ํ ์คํธ์ ๊ฐ์ Mudlet ์ธ๊ณ์ ๋ค๋ฅธ ํ ์คํธ ์์ค์ ๋ํด ์ฌ์ ํ ๋์ผํ ์ง๋ฌธ์ด ์์ต๋๋ค.
์์ ๋ต๋ณ์ ์์ ํ ์ดํด๋ณด์ง๋ ์์์ง๋ง Crowdin์๋ Github ํตํฉ์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค. https://github.com/Mudlet/Mudlet/pull/1692 ๋ ์๋ ์์ฑ๋ PR์ด๋ฏ๋ก ํ ํ์๊ฐ ์์ต๋๋ค. ์๋ ์ ๋ก๋ ๋๋ ๋ค์ด๋ก๋ ๋จ์ํ PR์ ๋ณํฉํ์ญ์์ค. ๋ฐ๋ผ์ ํ๋ก์ธ์ค๋ ์ค๋ช ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๊ฐ๋จํฉ๋๋ค!
ํฌ๋ผ์ฐ๋ ์ธ ํ๊ฐํ์ 4 ์ผ ํ์ ๋ง๋ฃ๋๋ฏ๋ก ๋์ / ๋์๊ฐ ํ์ํฉ๋๋ค. ์ง๊ธ๊น์ง๋ ๋ง์กฑํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋์๊ฒ์ ์ผ์ ๊ฐ ์์๋ค!
์๋ ! ;)
๋๋ https://crowdin.com/ ์ ์๋ํ์ต๋๋ค ... ๋ฒ์ญ์ ์ํด ๊ด์ฐฎ์ต๋๋ค. ๋น ๋ฅธ ํผ๋๋ฐฑ, ์์ฒญ ๋ฑ์ ์ ํฉํ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค... ๋ฒ์ญ์ด๋ ์์ ๋ํ "๊ฒฝ์"๊ณผ ๊ฐ์...
ํฌ๋ผ์ฐ๋ ์ธ์ ๋๊ธ ์น์ ์ ์ด๋ป์ต๋๊น?
์๋ ํ์ธ์ @Joker-ITA๋,
๋ฒ์ญ๊ฐ๋ฅผ ์ํ ์ถ๊ฐ ์ปจํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์๋ ์ค์ ๋ก ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
1) ํธ์ง๊ธฐ์์ ๋ฌธ์์ด ์๋์ "์ปจํ
์คํธ ํธ์ง"์ ํด๋ฆญํ์ฌ ๋ฒ์ญ๊ฐ์๊ฒ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
2) ํธ์ง๊ธฐ์์ ๋ฌธ์์ด์ ๋ํ ์ฃผ์์ ๋จ๊ธธ ์ ์์ต๋๋ค(์ค๋ฅธ์ชฝ ํจ๋์์ ์ฃผ์ ์
๋ ฅ).
3) ํ๋ก์ ํธ ์ค์ -> ๋ฌธ์์ด ํญ์ ํตํด ๋ฌธ์์ด์ ๋ํ ์ปจํ
์คํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
4) ์ผ๋ฐ ๋ฒ์ญ๊ฐ๊ฐ ์ดํดํ ์ ์๋ ํน์ ์ฉ์ด๊ฐ ์์ ์ ์์ผ๋ฏ๋ก ์ฉ์ด์ง์ ๋ง๋ค์ด Crowdin์ ์
๋ก๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ถ๊ฐ ์ ๋ณด . 2๊ฐ์ ์ด์ด ์๋ Excel ์คํ๋ ๋์ํธ์ผ ์๋ ์์ต๋๋ค. ์ฉ์ด ๋ฐ ์ค๋ช
;
5) ํ์ผ ๋ด๋ถ์ ์ฃผ์์ด ์๋ ๊ฒฝ์ฐ(์: Android XML, iOS ๋ฌธ์์ด, .properties, .yml, Google Chrome JSON) ํ์ผ๊ณผ ํจ๊ป ์๋์ผ๋ก ๊ฐ์ ธ์ต๋๋ค.
6) ์คํฌ๋ฆฐ์ท์ Crowdin์ ์
๋ก๋ํ๊ณ ๋ชจ๋ ๋ฌธ์์ด์ ํ๊ทธ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค: https://support.crowdin.com/adding-screenshots/
7) webapp l10n์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ ๋ฒ์ญ๊ฐ๊ฐ ๊ทํ์ ์น์ฌ์ดํธ์์ ์ง์ ๋ฒ์ญํ ์ ์๋๋ก In-Context ๊ธฐ๋ฅ์ ์๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ฒ์ญ์ ์ํด ํ ์คํธ๋ฅผ ๋งฅ๋ฝํํ๋ ๋ฐฉ๋ฒ์ ์ฃผ์ ๋ฐฉ๋ฒ์ผ ๋ฟ์ ๋๋ค ๐
@Kebap ์ ๋ค์
๊ทธ ์ธ๋ถ ์ฌํญ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค SlySven! ๋ด๊ฐ ๋ณด๊ธฐ์, ์๋ง๋ ๋น์ ์ ์ ์ ์ด๊ฒ์ ํ ์ ์ด ์์ต๋๊น? ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํด? ์ฝ์ฐ๋๊ณผ ํจ๊ป? ๊ทธ๋ ๊ฒ ํ๋ฉด Mudlet ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด๋ฅผ ํจ์ฌ ์ฝ๊ฒ ๋ฒ์ญํ ์ ์์ต๋๋ค.
Qt์ ์์ฒด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๋ง (์ ๋ ์ง๋ ๋ช ๋
๋์ ๋จ๋ถ ํ๋์ค์์ ์ธ๋ถ ์ฌํญ์ ์์
ํ๋ ๋ฐ ๋ช ์ฃผ๋ฅผ ๋ณด๋์ต๋๋ค). ์ฐ๋ฆฌ๋ lupdate
& lrelease
์ค ๋ ๊ฐ์ง๋ฅผ ๊ณ์ ์ฌ์ฉํ ๊ฒ์ด์ง๋ง Qt Linguist
๋์ฒดํฉ๋๋ค. .ts
lrelease
๊ฐ ์ธ์ด/์์น ํน์ mudlet_xx_YY.qm
ํ์ผ๋ก ๋ณํํ๊ธฐ ์ ์ ๊ฐ ๋ฒ์ญ์ ๋ํด lupdate
์ ์ํด ์์ฑ๋ mudlet_xx_YY.qm
ํ์ผ - ๋ค์ ์ธ์ด/์์น ๋ฒ์ญ๋น ํ๋์ฉ ์ ๊ณต๋จ) ๋จ์ผ mudlet.ts
โ ํ์ผ์ ์ฌ์ฉํ๊ณ ๋์ mudlet_xx_YY.ts
ํ์ผ์ ์์ฑํ๋ Crowdin์ ์ฌ์ฉํฉ๋๋ค.
linguist
์ฌ์ฉํ๋ ๊ฒ๊ณผ Crowid๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์์
๊ฐ์ ์ค์ํ ์ฐจ์ด์ ์ค ํ๋๋ ๋ค์ ์์ด๋ ๋ฒ์ด๋ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
TRANSLATIONS =
Crowid์ ๋ํ ํ๋ก์ ํธ ํ์ผ์ ๋ผ์ธ.
โ ์ค์ ๋ก ๋ชจ๋ ๋ก์ผ์ผ์ ๋ํด mudlet.ts
, Crowdin ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๋ mudlet_en_US.ts
-pluralonly
์ต์
๊ณผ -pluralonly
์ด ํ์ํฉ๋๋ค. roomCount
์ ๊ฐ์น์ ๋ฐ๋ผ tr("deleted %n room(s)", "", roomCount)
์ ๊ฐ์ ๋ฉ์์ง๋ฅผ "deleted 1 room"
๋๋ "deleted 2 rooms"
๋ก ๋ณํํ๋ ๋ช ๊ฐ์ง ๋ฒ์ญ ์ ์๋ง๋ ๋น์ ์ด ์ง์ ์ผ๋ก ํ ์ ์์ ๊ฒ์
๋๋ค...
์ข์ต๋๋ค - ์ฐ๋ฆฌ๋ Crowdin๊ณผ ํจ๊ป ํ ๊ฒ์ ๋๋ค :)
@SlySven์ด ์ ์ํ ๊ฒ์ฒ๋ผ ํ์ผ ์ด๋ฆ์ ์กฐ์ ํ๊ณ ์ฌ๋๋ค์ด ๋ฒ์ญ์ ์์ํ ์ ์๋๋ก Crowdin์์ ํ๋ก์ ํธ๋ฅผ ์ ์ ํ๊ฒ ์ค์ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ํํ ๊ธฐ์กด ํ ์คํธ ๋ฒ์ญ์ ํธ๋์ญ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ฏ๋ก ๋ค์ ์ ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค.
@SlySven ์ ๋ต๋ณ์ ๊ณ ๋ คํ์ฌ @Kebap ์ ์ง๋ฌธ์ ๋ตํ๊ธฐ:
lupdate
๋๊ตฌ๊ฐ ์ด ์์
์ ์ํํฉ๋๋ค.lupdate
ํ๊ณ ์ปค๋ฐ development
-์ด ๋ถ๋ถ์ ํธ๋๋น์ค์ ์ํด ๋งค์ผ ์๋ํ ํ ์๋ณต์ํ๋ง ์๋ ๋ณ๋์ ๋ฒ์ญ ํ์ผ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ฒ์ญ ์ง์นจ์ https://wiki.mudlet.org/w/Translating_Mudlet ์์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํฌ๋ผ์ฐ๋ ์ธ ํ๊ฐํ์ 4 ์ผ ํ์ ๋ง๋ฃ๋๋ฏ๋ก ๋์ / ๋์๊ฐ ํ์ํฉ๋๋ค. ์ง๊ธ๊น์ง๋ ๋ง์กฑํ๋ ๊ฒ ๊ฐ์ต๋๋ค.