์๋ ํ์ธ์,
GUI์ ๋ฒ์ญ(์ธ์ด ํ์ผ)์ ์ด๋ป๊ฒ ์ถ๊ฐํ ์ ์์ต๋๊น? ์์ด๋ ๋ง์ง ์์ง๋ง ๊ณ ๊ฐ์ ๋ ์ผ์ด๋ฅผ ์ ํธํฉ๋๋ค.
๋๊ตฐ๊ฐ ๋ฒ์ญํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ฉด ๋ ์ผ์ด๋ก ๋ฒ์ญํ๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ ๊ณตํ ์๋ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค
๋ง์ปค์คR
@markusr ์ฃ์กํฉ๋๋ค. ์ง๊ธ์ ๊ตญ์ ํ๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ง๋ ์ค๋ซ๋์ ์ฐ์ ์์๊ฐ ๋์ง ์์ ๊ฒ์ด๋ฉฐ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด(์ ์งํ๊ธฐ ์ฝ๊ณ ํ ํ๋ฆฟ ์ฑ๋ฅ์ ์ ํ์ํค์ง ์๋) ๊ทธ๋ฐ ์ผ์ ์ผ์ด๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ angular.js์ ๊ตญ์ ํ๋ฅผ ๋ง์ด ๋ณด์ง ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์์ผ๋ฉด ์ ์๊ฒ ์๋ ค์ฃผ์ญ์์ค(๋ํ ์ด ๋ฌธ์ ๋ฅผ +1).
+1
์ค๊ตญ์ด ๊ฐ์ฒด๋ก ๋ฒ์ญํ๊ฒ ์ต๋๋ค.
+1
+1
+1
+1
์คํ์ธ์ด์ ์นดํ๋ก๋์์ด ๋ฒ์ญ์ ํ ์ ์์ต๋๋ค.
๋๋ ์ฝ๊ฐ์ ์ฐ๊ตฌ๋ฅผ ํ๋ค.
angular-translate๋ฅผ ์ฌ์ฉํ๊ณ transifex ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ๋ก ๋ฒ์ญ ์์ฒด๋ฅผ ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ ์ผ์ด๋ ์ง์ํ๊ณ ์ถ์ต๋๋ค :-)
+1
+1
์ ๋ ๊ตญ์ ํ์ ๊ด๋ จ๋ ๋ง์ ํ๋ก์ ํธ์์ ์ผํ์ผ๋ฉฐ ๊ฐ๋ฐ ์๋๊ฐ ์์ฒญ๋๊ฒ ๋๋ ค์ง๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋น์ ์ ๋ชจ๊ตญ์ด๋ก ์ ๋ณด๋ฅผ ์๋นํด์ผ ํ ํ์์ฑ์ ์ดํดํฉ๋๋ค.
์ ํ์ด ์๋ ๋ค๋ฅธ ์ธ์ด๋ก ๋ ๋ฌธ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๊น? ์ด์จ๋ ๊ทธ๋ํ์ ์ซ์๋ 99%์ ๋๋ค :) //cc @torkelo @nopzor1200
+1
+1
+1
+1 @bergquist b2g ํ๋ก์ ํธ์์ Grafana๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
+1
+1
+1
+1 .. ํ๋์ค์ด์ ์๋์ด ๋ฒ์ญ์ ์ ๊ณตํ ์ ์์ต๋๋ค
+1
ํฌ๋ฅดํฌ๊ฐ์ด - ๋ธ๋ผ์ง
+1
ja_JP.utf8
+1
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ ๋ด์ ๋ ๋ค๋ฅธ ๋ฌธ์ : ํ์ฌ grafana๋ รครถรผ์์์ ๊ฐ์ด ๋
์ผ์ด "์๋ผ์ฐํธ"๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๊ทธ๋ํ ๋ฒ๋ก์ ๋ณ์นญ ํ๋์์ ์ฌ์ฉํ๋ฉด ์ ์ฒด ๊ทธ๋ํ๊ฐ ์์๋๋ก ์๋ํ์ง ์๊ณ "๋ด๋ถ ์๋ฒ ์ค๋ฅ"๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฌธ์ ์
๋๋ค.
์ด์ ์๋ผ์ฐํธ๋ฅผ ํํ์ผ๋ก ๋ณ๊ฒฝํ์ง๋ง ์ข์ ํด๊ฒฐ์ฑ
์ ์๋๋๋ค.
+1
+1
+2
+1
+1
+1
๋ ๋ค๋ฅธ (์ผ์ข
์) ์ผ ์คํ ํผ๋ CSV ๋ด๋ณด๋ด๊ธฐ์ ๊ตญ์ ํ๊ฐ ํ์ํ๋ค๋ ๊ฒ์
๋๋ค. ์ค๋ง ์ค๋ฝ์ง๋ง ๋
์ผ์ด ์ฌ์ฉ ๊ตญ๊ฐ์์๋ ","๊ฐ ๊ตญ์ ์ ์ผ๋ก "."์ธ ๊ณณ์์ ์์๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฌธ์ ๋ ๋
์ผ์ด ์ค์ ์ด ์๋ Excel/LibreOffice๊ฐ ์ซ์๋ฅผ ํ
์คํธ๋ก ๊ฐ์ ธ์ต๋๋ค. :-/
๋ํ: ์, GUI์ฉ ๋
์ผ์ด๋ ๊ต์ฅํ ๊ฒ์
๋๋ค!
๊ตญ์ ํ์ ํจ๊ป ์ด๋ค ์ง์ ์ด ์์ต๋๊น?. ๋ฒ์ญ ์คํฌ๋ฆฝํธ ์์ ์ ์์ํ๋ ค๊ณ ํ๋๋ฐ ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ ์ ์ฌ๊ธฐ ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฏธ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๊ณ ์ถ์์ต๋๋ค.
+1. ๋ํ ์ด ์์ ์ ์ํํ๋ ๋ฐ ๋์์ด ํ์ํ์ง ๊ถ๊ธํฉ๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ์ผ์คํ ํผ๊ฐ ๋ ๊ฒ์ ๋๋ค. i18n์ด ์์ผ๋ฉด ๋ณด๊ณ ์๋ ํ๋ก์ ํธ์์ Grafana๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+1
+1
+1
+1
+1
+1
๋ฌ์์์ด๋ก ๋ฒ์ญํ๊ฒ ์ต๋๋ค.
+1
+1
๋ฌ์์์ด ๋ฒ์ญ์ ๋์ธ ์ค๋น๊ฐ๋์์ต๋๋ค.
+1
+1
์ด๋ฌํ ํ์งํ ๋ถ์กฑ์ ์ค์ ๋ก ์ฐ๋ฆฌ ํ๋ก์ ํธ ์ค ํ๋์์ grafana๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉํดํฉ๋๋ค.
๐ +2
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
angular-translate
์ฌ์ฉํ์ฌ Grafana๋ฅผ ํ๋์ค์ด๋ก ๋ฒ์ญํ๋ ๋ฐ ์ด๋ ์ ๋ ์ฑ๊ณตํ์ต๋๋ค. 90% ์ ๋ ์๋ํฉ๋๋ค.
์ง๊ธ์ ์บ๋ฆฐ๋๋ฅผ ๋ฒ์ญํ ์ ์์ต๋๋ค.
๊ฐ ์ธ์ด์ ๋ํ ๋ฒ์ญ์ ์์ฑํ๋ ํ์ผ์ด ์์ต๋๋ค.
app.config(['$translateProvider', function ($translateProvider) {
$translateProvider.translations('fr', {
'resetmail': 'Mot de passe oubliรฉ?',
'User' : "Utilisateur",
"Password" : "Mot de passe",
"emailorusername" : "mail ou identifiant",
"Back to dashboard" : "Retour au tableau de bord",
๋ค์๊ณผ ๊ฐ์ด HTML์ ์์ด ํ ์คํธ๋ฅผ ํ์ดํํฉ๋๋ค.
<span class="gf-form-label width-7">{{'User' | translate}}</span>
<span class="gf-form-label width-7">{{'Password' | translate }}</span>
๋ฃจํ์์๋ ์๋
<select class="gf-form-input" ng-model="ctrl.prefs.timezone" ng-options="f.value as (f.text | translate) for f in ctrl.timezones">
๋๋ ๋ด ์๋ง์ ์กฐ๊ธ ์ฒญ์ํ๊ณ ๋์ค์ ์ฝ๋๋ฅผ ๊ฒ์ ํ ๊ฒ์ ๋๋ค
+1
+1
@Nayar ๋๋กญ๋ค์ด ๋ฉ๋ด์ ์บ๋ฆฐ๋๋ฅผ ์ ์ธํ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๋ณ๊ฒฝํ ์ ์์์ต๋๋ค. ํด๊ฒฐ์ฑ
์ ์ฐพ์ผ์
จ์ต๋๊น?
@Nayar ์ฝ๋ ์ ๋ฆฌ ์ํ๋ ์ด๋ป์ต๋๊น? ๋น์ ์ด ๊ณต๊ฐํ ์๋ฃจ์ ์ ํ์คํ ๊ด์ฌ์ด ์์ ๊ฒ์ด๋ฉฐ, ์ฒ์์ผ๋ก ์ฌ๊ธฐ์ ๊ฒ์ํ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
+1
์ฐ๋ฆฌ๋ ๊ฐ๋ ๋ณํ ์ ๊ทผ ๋ฐฉ์์ ์ข์ํฉ๋๋ค. ์ฌ์ ํ ๋ค๋ฅธ ์ธ์ด์ ๋ํด ๋ค๋ฅธ ๋์๋ณด๋ ์ฝํ
์ธ ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๊น? ํน์ ์ธ์ด(๋ค๋๋๋์ด, ๋
์ผ์ด, ํ๋์ค์ด)๋ก ๋ ๋์๋ณด๋ ์์ฒด์ Grafana UX๊ฐ ๋ชจ๋ ์์ด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค.
์ด ๋ถ๊ธฐ์ ๋ฒ ์ด๋ณธ์ ๋ฃ๊ณ ์์ต๋๋ค. https://github.com/Nayar/grafana/commits/i18n
์ด๋ฏธ ๋ก๊ทธ์ธ ์์์ ๋ฒ์ญํ์ต๋๋ค.
+1
+1
+1
+1
+1 ๋ฌ์์์ด
+1
+1
๊ตญ์ ํ๋ ์ฃผ์ ํ์ด ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฐ ์๋๋ฅผ ๋ฆ์ถฅ๋๋ค.
๋ค๋ฅธ ๋ง์ ํ๋ก์ ํธ์์ ์ปค๋ฎค๋ํฐ๊ฐ crowdin ๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญํ ์ ์๋๋ก ํฉ๋๋ค.
๋ฌ์์์ด ๋ฒ์ญ์ ๊ฒฝ์ฐ +1. ์ค๋น๋๋ฉด ์ด๋ฉ์ผ๋ก
+1 ์ผ๋ณธ์ด
+1 ํ๊ตญ์ด
+1
์ค๊ตญ์ด์ +1!
์ค๊ตญ์ด ํจํค์ง +1
์ค๊ตญ์ด ํจํค์ง +1
์ค๊ตญ์ด ํจํค์ง +1
์ค๊ตญ์ด ํจํค์ง +1
์ค๊ตญ์ด ํจํค์ง +1
+1
+1
"+1" ๋๊ธ๋ก ์คํธ์ ๋ณด๋ด์ง ์๋๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ด ๊ธ์ด ๋ง์์ ๋์ จ๋ค๋ฉด ์ฒซ๊ธ์ '์ข์์'๋ฅผ ์ฃผ์๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ด์ ์์ฒ ๊ฐ์ "+1" ๋๊ธ์ด ์๋ ๊ฒฝ์ฐ ์ฌ๊ธฐ์์ ๊ธฐ๋ฅ ์์ฒญ์ ๋ํ ํ ๋ก ์ ์์ํ๊ธฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. ๊ฐ์ฌ ํด์!
์๋ ํ์ธ์ ํ ๋ฅด์ผ๋ก์ ๋๋ค! ์์ฒญ์ด ์์ต๋๋ค. ์ค๋ ๊ตญ์ ํ๊ฐ ๊ฐ๋ฅํ๊ฐ์? ๋๋ ๋ง์ ๊ฒ์๋ฌผ์ ์ฝ์์ง๋ง ๊ฐ๋ฅํ์ง ๋ช ํํ์ง ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
+1 ๋ถ๊ฐ๋ฆฌ์์ด
+1 ํ๋ฅด์์์ด + RTL
+1 ํฌ๋ฅดํฌ๊ฐ์ด - BR
์ค๊ตญ์ด ํจํค์ง +1
์ค๊ตญ์ด ํจํค์ง +1
+1
+1
ํ๋์ค์ด ์ง์ +1 ๐
์ผ๋ณธ์ด ํจํค์ง +1
+1 ํฌ๋ฅดํฌ๊ฐ์ด - BR
์ค๊ตญ์ด ํจํค์ง +1
์ค๊ตญ์ด ๊ฐ์ฒด์ ๊ฒฝ์ฐ +1
+1
+1
+1
์ค๊ตญ์ด ๊ฐ์ฒด์ ๊ฒฝ์ฐ +1
์๋ ํ์ธ์,
Grafana๋ AngularJS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค. Angular Translate ๋ AngularJS ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตญ์ ํ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋ฃจ์ ์ ๋๋ค. ๋๋ ์ด๋ฏธ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ์ ์๋ํฉ๋๋ค. ๋ํ ๋น๋ ํ๋ก์ธ์ค์ ์ถ๊ฐํ์ฌ JS ์์ค, HTML ํ ํ๋ฆฟ ๋ฐ ๋ฒ์ญ ํ์ผ์ ํ์ธํ ์ ์๋ NodeJS ํ๋ฌ๊ทธ์ธ์ธ Angular Translate Quality ๋ ๊ฐ๋ฐํ์ต๋๋ค.
๊ตญ์ ํ๋ ๋์๋ณด๋๋ ๊ณ ๊ฐ์ ๋น๋ฒํ ์๊ตฌ ์ฌํญ์ ๋๋ค. ๊ณต๊ณต ํ์ ๋ฐ ์กฐ์ง์ ๊ฒฝ์ฐ ์๋ฌด์ ์ผ ์๋ ์์ต๋๋ค(๋ฒ๋ฅ ). Grafana์ i18n์ ์ถ๊ฐํ๊ธฐ ์ํด pull ์์ฒญ์ ์ ์ถํ๊ณ ๊ฐ๋ฐ ์ง์นจ์ ์ค์ํ๋ค๋ฉด ์๋ฝํ์๊ฒ ์ต๋๊น? ๋ํ ๋ฒ์ญ ํ์ผ์ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ํด ์ปค๋ฎค๋ํฐ์ ์์กดํ ๊ฒ์์ ์๋ฏธํฉ๋๋ค. ๋ฐ์๋ค์ผ ์ค๋น๊ฐ ๋์ด ์์ต๋๊น?
BTW, AngularJS๋ฅผ ์ ์งํ ๊ณํ์ ๋๊น? ๋ค๋ฅธ ์น ํ๋ ์์ํฌ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด ๊ตญ์ ํ๋ฅผ ์ฌ์ค์ ํด์ผ ํ๊ณ ์ง๊ธ ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
React๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์์ต๋๋ค. Grafana์ ๋ง์ ๋ถ๋ถ์ด ์ด๋ฏธ ๋ฐ์ ์ค์ ๋๋ค.
์์์ด ๊ณ ๋ง์. ๋ด ์ํ๋ฅผ ์ฒซ ๋ฒ์งธ ๋ฉ์์ง์ package.json
ํ์ผ๋ก ์ ํํ์ต๋๋ค.
์ง๋ฌธ: ๋ง์ด๊ทธ๋ ์ด์
์ ์กด์ฌํ๋ ๊ฒ์ ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด์ฃผํ๋ ๋์ ๊ตญ์ ํ ์์
์ ๊ณ ๋ คํ์ต๋๊น?
+1
+1 @torkelo , i18n์ ๋งค์ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
+1
ํ๋์ค์ด์ ๊ฒฝ์ฐ +1
angular-translate
์ฌ์ฉํ์ฌ Grafana๋ฅผ ํ๋์ค์ด๋ก ๋ฒ์ญํ๋ ๋ฐ ์ด๋ ์ ๋ ์ฑ๊ณตํ์ต๋๋ค. 90% ์ ๋ ์๋ํฉ๋๋ค.์ง๊ธ์ ์บ๋ฆฐ๋๋ฅผ ๋ฒ์ญํ ์ ์์ต๋๋ค.
๊ฐ ์ธ์ด์ ๋ํ ๋ฒ์ญ์ ์์ฑํ๋ ํ์ผ์ด ์์ต๋๋ค.
app.config(['$translateProvider', function ($translateProvider) { $translateProvider.translations('fr', { 'resetmail': 'Mot de passe oubliรฉ?', 'User' : "Utilisateur", "Password" : "Mot de passe", "emailorusername" : "mail ou identifiant", "Back to dashboard" : "Retour au tableau de bord",
๋ค์๊ณผ ๊ฐ์ด HTML์ ์์ด ํ ์คํธ๋ฅผ ํ์ดํํฉ๋๋ค.
<span class="gf-form-label width-7">{{'User' | translate}}</span> <span class="gf-form-label width-7">{{'Password' | translate }}</span>
๋ฃจํ์์๋ ์๋
<select class="gf-form-input" ng-model="ctrl.prefs.timezone" ng-options="f.value as (f.text | translate) for f in ctrl.timezones">
๋๋ ๋ด ์๋ง์ ์กฐ๊ธ ์ฒญ์ํ๊ณ ๋์ค์ ์ฝ๋๋ฅผ ๊ฒ์ ํ ๊ฒ์ ๋๋ค
=======================================
๋ง์ ๋์์ ๋ฐ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค .
๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ ์ฑ๊ณต
ํ์ง๋ง
๋๋ ์ฑ๊ณตํ์ง ๋ชปํ๋ค.
pageHeader(tsx ํ์ผ)
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๊น?
๋น์ ์ ๋์์ด ํ์ํฉ๋๋ค.
return <h1 className="page-header__title">{title}</h1>;
->
return <h1 className="page-header__title">{title | translate}</h1>;
https://stackoverflow.com/questions/53476757/angular-translate-in-grafana-headerpage-modify-tsx-file
ํ - Canoe(getcanoe.io)์์ ์ฐ๋ฆฌ๋ POEditor.com์ ์ฌ์ฉํ์ฌ ์ฌ๋๋ค์ด ๋ฑ๋กํ๊ณ ๋ฒ์ญ์ ๋๊ฒ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๊ฒ์ ํ๋ฅญํ๊ฒ ์๋ํ๋ฉฐ 100๋ช ์ด์์ ์ฌ๋๋ค์ด ๋ฒ์ญ์ ๋๊ณ ์์ต๋๋ค. POEditor๋ ์คํ ์์ค ํ๋ก์ ํธ์์ ๋ฌด๋ฃ์ ๋๋ค. ๊ฐ๋ฐ ์๋๊ฐ ๋ง์ด ๋๋ ค์ง๋ค๊ณ ๋งํ ์๋ ์์ต๋๋ค.
@sundoforce
์ด๊ฒ์ ํ์ด๋ฐ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค. ๋ฒ์ญ ์ ๊ณต์๋ ์ ๋ชฉ์ด ๋ฐํ๋๊ธฐ ์ ์ ์คํ๋ ์ ์์ต๋๋ค. ๋ฒ์ญ ๋ฃจํ๋ฅผ ๋ค์ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ผ์ญ์์ค. ์ฌ๊ธฐ์ 'tsx' ํ์ผ์ด ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ํ์ผ์ Angular ์๋น์ค๋ฅผ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ค๊ตญ์ด ๊ฐ์ฒด์ ๊ฒฝ์ฐ +1
์ค๊ตญ์ด ๊ฐ์ฒด์ ๊ฒฝ์ฐ +1
+1
์ค๊ตญ์ด ๋ฒ์ฒด์ ๊ฒฝ์ฐ +1
+1
+1
@sundoforce ๋๋ ์คํ ์ค์ธ ํ๋ก์ ํธ์์ ๋ฒ์ญ์ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ ์ฌ๋:
๊ตฌํ์ ๋จ๊ณ๋ณ๋ก ๋์์ฃผ์๊ฒ ์ต๋๊น? ์ ๋ฒ์ญ ํ์ผ์ ๋ง๋๋ ๋ฐฉ๋ฒ๊ณผ ํ๋ก์ ํธ๋ฅผ ๋ฐ์ํ ์ ์๋๋ก ์
๋ฐ์ดํธํ๋ ์์น์ ๋ฐฉ๋ฒ์ ์ ํํ ์๊ณ ์ถ์ต๋๋ค.
+1
angular-translate
์ฌ์ฉํ์ฌ Grafana๋ฅผ ํ๋์ค์ด๋ก ๋ฒ์ญํ๋ ๋ฐ ์ด๋ ์ ๋ ์ฑ๊ณตํ์ต๋๋ค. 90% ์ ๋ ์๋ํฉ๋๋ค.
๋ฉ์ง๋ค์ @sundoforce ! Grafana๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ๋ฒ์ญํ ์ ์๋๋ก ํ์ผ์ ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ทธ๋ ๊ฒ ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ฐพ์ ์ ์์์ง๋ ๋ชจ๋ฆ ๋๋ค. ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
+1
+1
+1
+1
+1
+1
+1
+1
+1
์ค๊ตญ์ด ๊ฐ์ฒด์ ๊ฒฝ์ฐ +1
์ด ๋ฌธ์ ์ ์คํธ์ ์ค์งํ์ญ์์ค. ๋์ ๋ฌธ์ ์ ํฌํํ์ญ์์ค.
์ฐ๋ฆฌ๋ ํ์ฌ Angular์์ react๋ก Grafana์ ํ๋ก ํธ์๋๋ฅผ ๋ค์ ์์ฑ ์ค์ด๋ฏ๋ก ์ง๊ธ ๊ณ ๋ คํ๋ ๊ฒ๊ณผ๋ ๋งค์ฐ ๋ค๋ฆ ๋๋ค.
angular-translate
์ฌ์ฉํ์ฌ Grafana๋ฅผ ํ๋์ค์ด๋ก ๋ฒ์ญํ๋ ๋ฐ ์ด๋ ์ ๋ ์ฑ๊ณตํ์ต๋๋ค. 90% ์ ๋ ์๋ํฉ๋๋ค.
์ง๊ธ์ ์บ๋ฆฐ๋๋ฅผ ๋ฒ์ญํ ์ ์์ต๋๋ค.
๊ฐ ์ธ์ด์ ๋ํ ๋ฒ์ญ์ ์์ฑํ๋ ํ์ผ์ด ์์ต๋๋ค.app.config(['$translateProvider', function ($translateProvider) { $translateProvider.translations('fr', { 'resetmail': 'Mot de passe oubliรฉ?', 'User' : "Utilisateur", "Password" : "Mot de passe", "emailorusername" : "mail ou identifiant", "Back to dashboard" : "Retour au tableau de bord",
๋ค์๊ณผ ๊ฐ์ด HTML์ ์์ด ํ ์คํธ๋ฅผ ํ์ดํํฉ๋๋ค.
<span class="gf-form-label width-7">{{'User' | translate}}</span> <span class="gf-form-label width-7">{{'Password' | translate }}</span>
๋ฃจํ์์๋ ์๋
<select class="gf-form-input" ng-model="ctrl.prefs.timezone" ng-options="f.value as (f.text | translate) for f in ctrl.timezones">
๋๋ ๋ด ์๋ง์ ์กฐ๊ธ ์ฒญ์ํ๊ณ ๋์ค์ ์ฝ๋๋ฅผ ๊ฒ์ ํ ๊ฒ์ ๋๋ค
=======================================
๋ง์ ๋์์ ๋ฐ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค .
๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ ์ฑ๊ณตํ์ง๋ง
๋๋ ์ฑ๊ณตํ์ง ๋ชปํ๋ค.
pageHeader(tsx ํ์ผ)์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๊น?
๋น์ ์ ๋์์ด ํ์ํฉ๋๋ค.
return <h1 className="page-header__title">{title}</h1>;
->
return <h1 className="page-header__title">{title | translate}</h1>;
https://stackoverflow.com/questions/53476757/angular-translate-in-grafana-headerpage-modify-tsx-file
์๋ ํ์ธ์ ์ฝ๋์ผ, ๋ฒ์ญ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. grafana๋ฅผ ์คํ์ธ์ด๋ก, datepicker ๋ฐ timepicker.
++++
+1
์คํ์ธ์ด๋ก ๋ฒ์ญ์ ์ํ 1+
"grafana/public" ๋๋ ํ ๋ฆฌ์์ ๋ฒ์ญ๋ ์ง๋ง ์ถฉ๋ถํ์ง ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. "grafana/build/ .js" ์์ ์์ต๋๋ค.
๋ด ๋ฒ์ญ์ grafana์ ํฌํจํ ์ ์์ต๋๊น?
๊ทธ๊ฒ์ ์์ ํ Grafana ํ๋ก ํธ ์๋ ๋ฆฌํฉํฐ๋ง์ด ๋ ๊ฒ์ด์ง๋ง ๊ทธ๊ฒ์ ์์ด๋์ด ์ ๋๋ค. ์ด๋์์ ๋ฌธ์ ์ ํฌํํ ์ ์์ต๋๊น?
์ค๊ตญ์ด ๋ฒ์ญ +1
angular-translate
์ฌ์ฉํ์ฌ Grafana๋ฅผ ํ๋์ค์ด๋ก ๋ฒ์ญํ๋ ๋ฐ ์ด๋ ์ ๋ ์ฑ๊ณตํ์ต๋๋ค. 90% ์ ๋ ์๋ํฉ๋๋ค.
์ง๊ธ์ ์บ๋ฆฐ๋๋ฅผ ๋ฒ์ญํ ์ ์์ต๋๋ค.
๊ฐ ์ธ์ด์ ๋ํ ๋ฒ์ญ์ ์์ฑํ๋ ํ์ผ์ด ์์ต๋๋ค.app.config(['$translateProvider', function ($translateProvider) { $translateProvider.translations('fr', { 'resetmail': 'Mot de passe oubliรฉ?', 'User' : "Utilisateur", "Password" : "Mot de passe", "emailorusername" : "mail ou identifiant", "Back to dashboard" : "Retour au tableau de bord",
๋ค์๊ณผ ๊ฐ์ด HTML์ ์์ด ํ ์คํธ๋ฅผ ํ์ดํํฉ๋๋ค.
<span class="gf-form-label width-7">{{'User' | translate}}</span> <span class="gf-form-label width-7">{{'Password' | translate }}</span>
๋ฃจํ์์๋ ์๋
<select class="gf-form-input" ng-model="ctrl.prefs.timezone" ng-options="f.value as (f.text | translate) for f in ctrl.timezones">
๋๋ ๋ด ์๋ง์ ์กฐ๊ธ ์ฒญ์ํ๊ณ ๋์ค์ ์ฝ๋๋ฅผ ๊ฒ์ ํ ๊ฒ์ ๋๋ค
=======================================
๋ง์ ๋์์ ๋ฐ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค .
๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ ์ฑ๊ณต
ํ์ง๋ง
๋๋ ์ฑ๊ณตํ์ง ๋ชปํ๋ค.
pageHeader(tsx ํ์ผ)
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๊น?
๋น์ ์ ๋์์ด ํ์ํฉ๋๋ค.
return <h1 className="page-header__title">{title}</h1>;
->
return <h1 className="page-header__title">{title | translate}</h1>;
https://stackoverflow.com/questions/53476757/angular-translate-in-grafana-headerpage-modify-tsx-file์๋ ํ์ธ์ ์ฝ๋์ผ, ๋ฒ์ญ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. grafana๋ฅผ ์คํ์ธ์ด๋ก, datepicker ๋ฐ timepicker.
๋๋ angular-translate ์ํ์ angular๋ก ์ดํดํ์ต๋๋ค. ๊ทธ๋ฌ๋ grafana์๋ ๋ฐ์์ ๋ง์ TSX ํ์ผ์ด ์์ต๋๋ค. ์ด๋ป๊ฒ angular-translate๊ฐ ์๋ํฉ๋๊น?
+1
ํฌ๋ฅดํฌ๊ฐ์ด ๋ธ๋ผ์ง
+1
ํด๋๋์ด์ฉ html ํ์ผ์์ 100% o ํ ์คํธ์ ๋ํ ๋ฒ์ญ์ ๋ฐ์์ต๋๋ค. ๊ตฌํํ ์ค๋น๊ฐ ๋์์ง๋ง ์ง์์ด ํ์ํ์ญ๋๊น?
+1
์ฌ๋ก๋ฐํค์์ด ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค sk_SK
@bergquist , ๊ทธ๋์ i18n์ React์ ํจ๊ป ๋ฏธ๋์ Grafana๋ฅผ ์ํด ์์ ํ ํ๊ธฐ๋ฉ๋๊น? ๋ด ๊ฒฝํ์ ๋น์ถ์ด ๋ณผ ๋ i18n์ ํ๋ก์ ํธ ์์๋ถํฐ ๊ณ ๋ คํ๋ฉด ๋งค์ฐ ์ฝ์ต๋๋ค.
+1
๋๋ ํ๋์ค์ด๋ก ๋ฒ์ญํ๋ ๊ฒ์ ๋์ธ ์ ์์ต๋๋ค
+1
+1
๋ฒ ํธ๋จ์ด๋ก ๋ฒ์ญํ๊ธฐ ์ํด +1
์ด๋ฅผ ์ํ ์ํคํ ์ฒ๋ ์ฐ๋ฆฌ๊ฐ ์ํํ๊ณ ์๋ e2 ๋ณ๊ฒฝ ์ฌํญ์ ์ถ๊ฐ ๋ถ๋ถ์ผ๋ก ์ํ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ณต์์ ์ผ๋ก ํ๋ก์ ํธ๋น ์์ด ํ์ผ(์ฝ์ด ๋ฐ ํ๋ฌ๊ทธ์ธ)๋ง ์ ๊ณตํ ์ ์์ง๋ง ๋ค๋ฅธ ์ธ์ด๋ ์ปค๋ฎค๋ํฐ์์ ์ ์ง ๊ด๋ฆฌํ๋ ํ๋ฌ๊ทธ์ธ์ผ ์ ์์ต๋๋ค. @torkelo
+1
+1
์คํ์ธ์ด ๋ฒ์ญ +1
+1 ๋ผํธ๋น์์ด ๋ฒ์ญ
+1
ํ๊ตญ์ด ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค
+1
ํ๋์ค์ด ๋ฒ์ญ์ ๋์์ด ํ์ํ๋ฉด ๋์๋๋ฆด ์ ์์ต๋๋ค.
์คํ์ธ์ด(๋จ๋ฏธ) ๋ฒ์ญ์ ๊ฒฝ์ฐ +1, ๋ฏฟ๊ฑฐ๋ ๋ง๊ฑฐ๋ ์์ด ์๊ตญ(๋ค๋ฅธ ๋ ์ง ํ์์ ์ฌ์ฉํ๊ณ ์ ์ฌ์ ์ผ๋ก ๋ช ๊ฐ์ง ์ฉ์ด๊ฐ ๋ค๋ฅผ ์ ์์)
https://localizejs.com ์ ๋ํ ์ง์์ Grafana์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฒํ ํ ์ฌ๋์ด ์์ต๋๊น? ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ์ฌ๋์ด ์์ ์ ๋ฒ์ญ์ ๊ด๋ฆฌํ ์ ์๊ณ Grafana ํต์ฌ ํ์ ๊ณ์ํด์ ๋ค๋ฅธ ๋ก์ผ์ผ์ ์ ์งํด์ผ ํ๋ ์ถ๊ฐ ์ฃผ๊ธฐ๋ฅผ ๋ณด๋ผ ํ์๊ฐ ์์ต๋๋ค.
+1
+1
\ + 1
๋ฌ์์์ด์ ๊ฒฝ์ฐ +1.
๋ ์ง\์๊ฐ ํ์์ ์ง์ ํ๋ ค๋ฉด https://momentjs.com ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๊ฒ๋ค์ ์ํด gettext๊ฐ ์์ต๋๋ค. ์ํ์๋ฉด ์ ์๊ฒ ๋์์ ์์ฒญํ์ธ์.
์ด๋ฅผ ์ํ ์ํคํ ์ฒ๋ ์ฐ๋ฆฌ๊ฐ ์ํํ๊ณ ์๋ e2 ๋ณ๊ฒฝ ์ฌํญ์ ์ถ๊ฐ ๋ถ๋ถ์ผ๋ก ์ํ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ณต์์ ์ผ๋ก ํ๋ก์ ํธ๋น ์์ด ํ์ผ(์ฝ์ด ๋ฐ ํ๋ฌ๊ทธ์ธ)๋ง ์ ๊ณตํ ์ ์์ง๋ง ๋ค๋ฅธ ์ธ์ด๋ ์ปค๋ฎค๋ํฐ์์ ์ ์ง ๊ด๋ฆฌํ๋ ํ๋ฌ๊ทธ์ธ์ผ ์ ์์ต๋๋ค. @torkelo
์, ์ํคํ ์ฒ๋ฅผ ๋ณ๊ฒฝํ์ญ์์ค. ์ค์ ๋ฒ์ญ์ ๊ธฐ์ฌ์๊ฐ ๋ง๋ ๊ฐ๋จํ pull ์์ฒญ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. Gettext๋ ๋ฒ์ญ๋์ง ์์ ๋ถ๋ถ์ ์ค๋ฅ๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก ์ฝ๋ ๋ณ๊ฒฝ์ ๋ํด ๋ชจ๋ ๋ฒ์ญ์ ์์ ํด์๋ ์ ๋ฉ๋๋ค. ๋ํ gettext๋ ๋ณต์ํ์ ์ ํฉํฉ๋๋ค.
๋ธ๋ผ์ง์์ +1
+1
+1
ํ๋ฅด์์์ด ๋ฒ์ญ์ ์ ๊ณตํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. :-)
+1
ํ๋ฅด์์์ด ๋ฒ์ญ์ ์ ๊ณตํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. :-)
๊ทธ ๋ค์์๋ ์๋๋ฆฌ ์บ๋ฆฐ๋ ์ถ๊ฐ์ ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค! ๐ฏ
@torkelo ์ด ์๊ฐ์ด ์ง๋๋ฉด ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! :)
์ฐํฌ๋ผ์ด๋์ด์ ๊ฒฝ์ฐ +1.
+1 ์ดํ๋ฆฌ์์ด ๋ฐ ๋ ์ผ์ด
์ฐํฌ๋ผ์ด๋์ด ๋ฐ ๋ฌ์์์ด์ ๊ฒฝ์ฐ +1
+1
https://github.com/date-fns/date-fns
momentjs๋ณด๋ค ๋ซ๋ค
Grafana์ ์๋ฐฑ ๋ช ์ ์ฌ์ฉ์๊ฐ์ด ๋ฉ์ง ์คํ ์์ค ์ํํธ์จ์ด์ ๋ฒ์ญ์ํ๊ณ ์ํ๋ ๋, ์ฐ๋ฆฌ Weblate๋ ์ฐ๋ฆฌ๊ฐ ๋์ ๋๋ฆฌ๊ฒ ์ต๋๋ค ๋ ๊ฒ์ด๋ผ๊ณ ๋งํ๊ณ ์๋ค. ํ์งํ๋ ๊ฐ๋ฐ ์๋๋ฅผ ๋ฆ์ถ๊ฑฐ๋ ๊ฐ๋ฐ์์ ์์ ๋์ ์ฆ๊ฐ์ํฌ ํ์๊ฐ ์์ต๋๋ค. ์ปค๋ฎค๋ํฐ์ ์์ ๋ก์ด ๋ฐฉ์์ผ๋ก ์ฝ๊ฒ ์๋์ผ๋ก ์ํํ ์ ์์ต๋๋ค. openSUSE์ ๋ง์ฐฌ๊ฐ์ง๋ก Fedora, LibreOffice, Godot Engine ๋ฐ ๊ธฐํ ๋ง์ ํ๋ก์ ํธ๊ฐ ๊ทธ๋ ์ต๋๋ค.
Grafana repo์ Qt Linguist translation files
, language JSONs
๋ฐ HTML
์ธ์ด ํ์ผ์ด ์ด๋ฏธ ์๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ๐ i18n ์ฝ๋๊ฐ ์์ฑ๋๋ฉด ๐ค , ์ฐ๋ฆฌ๋ libre l10n ํ๋ซํผ์ ์ ๊ณตํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
Grafana ํ์ ๋ฌด์์ ๋งํฉ๋๊น?
+1 ์ผ๋ณธ์ด
+1 ํ๋์ค์ด๋ฅผ ๋์๋๋ฆด ์ ์์ต๋๋ค. ๋ฒ์ญ ํ๋ก์ ํธ๋ฅผ ๊ธฐ์ฌ์์ ํ์ ๊ทธ๋ฃน์ ์์ํ๊ณ ์ถ์ต๋๋ค. ์ ๊ฐ 2๋ ๋์ ์ด๋ ์ ์์ต๋๋ค.
ํฌ๋ฅดํฌ๊ฐ์ด์ ๊ฒฝ์ฐ +1
+1
+1
+1
์ค๊ตญ์ด์ +1!
+1 ์คํ์ธ์ด
Grafana๋ก ์ค์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋์๋ณด๋๋ฅผ ๋ง๋ ํ ๋ค๋ก ๋ฌผ๋ฌ๋ ์์์ต๋๋ค.
๋ทฐ์ด ์ก์ธ์ค ์ญํ ๋ง ๋ฒ์ญํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ์ฌ์ฉ์๋ ์์ ์ ์ธ์ด์ ๊ด๋ จํ์ฌ ์์
ํ๊ณ EN์์ Grafana๋ก ์ ํํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ ์ฌ์ฉ์์๊ฒ๋ ๋ฒ์ญ์ด ์๋ฏธ๊ฐ ์๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋๋ฌด ์ด๋ ต์ต๋๋ค. ์ด ์ฌ์ฉ์๋ ๊ณ ๊ธ ์ฌ์ฉ์์ด๋ฉฐ EN์์ ์์
ํ๋ค๋ ๊ฒ์ ์ดํดํ ์ ์์ต๋๋ค.
Grafana๋ก ์ค์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋์๋ณด๋๋ฅผ ๋ง๋ ํ ๋ค๋ก ๋ฌผ๋ฌ๋ ์์์ต๋๋ค.
๋ทฐ์ด ์ก์ธ์ค ์ญํ ๋ง ๋ฒ์ญํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ์ฌ์ฉ์๋ ์์ ์ ์ธ์ด์ ๊ด๋ จํ์ฌ ์์ ํ๊ณ EN์์ Grafana๋ก ์ ํํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ ์ฌ์ฉ์์๊ฒ๋ ๋ฒ์ญ์ด ์๋ฏธ๊ฐ ์๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋๋ฌด ์ด๋ ต์ต๋๋ค. ์ด ์ฌ์ฉ์๋ ๊ณ ๊ธ ์ฌ์ฉ์์ด๋ฉฐ EN์์ ์์ ํ๋ค๋ ๊ฒ์ ์ดํดํ ์ ์์ต๋๋ค.
๋์ํฉ๋๋ค. ๋ฒ์ญ์ ์์ฒญ์์๊ฒ๋ง ์ค์ํฉ๋๋ค.
@fdepierre
Grafana๋ก ์ค์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋์๋ณด๋๋ฅผ ๋ง๋ ํ ๋ค๋ก ๋ฌผ๋ฌ๋ ์์์ต๋๋ค.
๋ทฐ์ด ์ก์ธ์ค ์ญํ ๋ง ๋ฒ์ญํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ์ฌ์ฉ์๋ ์์ ์ ์ธ์ด์ ๊ด๋ จํ์ฌ ์์ ํ๊ณ EN์์ Grafana๋ก ์ ํํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ ์ฌ์ฉ์์๊ฒ๋ ๋ฒ์ญ์ด ์๋ฏธ๊ฐ ์๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋๋ฌด ์ด๋ ต์ต๋๋ค. ์ด ์ฌ์ฉ์๋ ๊ณ ๊ธ ์ฌ์ฉ์์ด๋ฉฐ EN์์ ์์ ํ๋ค๋ ๊ฒ์ ์ดํดํ ์ ์์ต๋๋ค.
SW ํ์งํ๋ ์ ์ผ์ฉํ ์์์ด๋ฉฐ ํ์งํ๋ฅผ ์์ํ๊ณ ๋๋ฉด ๊ณต์ ํด ์ฃผ์ ์๊ฒฌ์ด ๋๋ถ๋ถ ์ฌ๋ผ์ง๋๋ค. ๋ง์ ํ๋ก์ ํธ ์์ ์๊ฐ ๊ทธ๊ฒ์ ์ค๋ ์ ์งํ์ง ์์ต๋๋ค.
์, ์ต์ข ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ l10n์ ์์ํ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ๊ณ ํ์คํ ๊ฐ์ฅ ์ข์ ์์น์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๋๊ตฌ๋ ํ์งํ๋ ๊ด๋ฆฌ ์ฝ์์ด๋ ๋ฌธ์๋ก ์ธํด ํผํด๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค. ์ปค๋ฎค๋ํฐ๋ ์ด๋ฅผ ๋์์ฃผ๋ ๊ฒ์ ์ข์ํฉ๋๋ค! Godot ์์ง ํ๋ก์ ํธ์ ๋ฌธ์ํ๊ฑฐ๋ ๋ค์ํ ์ธ์ด๋ก https://docs.weblate.org/ ๋ฅผ ํ์ธ
์ต์ข
์ฌ์ฉ์/๋ทฐ์ด UI๊ฐ Grafana ํ์งํ๋ฅผ ํตํด start
์ ์ ํฉํ ์์น๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ๐
์ฌ๊ธฐ์์ ๋ค๊ตญ์ด ์ง์์ ์ค์์ฑ์ ๋ํด ํ ํ๋ฅผ ๋ ์ถ๊ฐํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ๋ ๋์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ ๊ฒ์ด +1์ ๋๋ค.
๋ํ ๋ ์ผ์ด ๋ฒ์ญ์ด ๊ฐ๋ฅํด์ง๋ฉด ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ ๊ฒ์ ๋๋ค.
์์ฒญ์๋ง์ ์ํ i18n์ ์ฅ๊ธฐ์ ์ธ ์ ํ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ์ด๊ธฐ ์ฐ์ ์์๋ก. ๊ทธ๋ฌ๋ ์๋ง๋ ์ฅ๊ธฐ์ ์ผ๋ก๋ ์๋ ๊ฒ์ ๋๋ค.
+1 ์คํ์ธ์ด ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค.
+1 ์ดํ๋ฆฌ์์ด ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค!
+1์ ์คํ์ธ์ด ๋ฒ์ญ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
+1์ ์คํ์ธ์ด๋ฅผ ๋์ธ ์ ์์ต๋๋ค
+1
+1
+1
+1
+1
+1 ์ผ๋ณธ์ด๋ฅผ ๋์๋๋ฆด ์ ์์ต๋๋ค.
+1 ์คํ์ธ์ด ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค.
+1 ์คํ์ธ์ด ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค.
+1 ์ค๊ตญ์ด ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค.
+1 ํฐํค์ด๋ก์ ๋ฒ์ญ์ ๋์๋๋ฆด ์ ์์ต๋๋ค.
+1
+1
๋ฌ์์์ด์ ๊ฒฝ์ฐ +1. ๋ฒ์ญ์ ๋์ธ ์ ์์ต๋๋ค
+1 ์ผ๋ณธ์ด ๋ฒ์ญ
์คํ์ธ์ด+
์ ์ ๋ง๋ฅด, 11์ 24์ผ de 2020 a la(s) 04:07, ajoneba <
์๋ฆผ@github.com> ์ค๋ช
:
+1 ์ผ๋ณธ์ด ๋ฒ์ญ
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/grafana/grafana/issues/448#issuecomment-732699235 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAT7GTAIG4VCLWV5262S2WLSRNLS5ANCNFSM4AP2O6QA
.
ํฌ๋ฅดํฌ๊ฐ์ด ๋ฒ์ญ์ ๊ฒฝ์ฐ +1.
+1
+1
๋ค๋ฅธ ์ธ์ด๋ก ๋ ์ง ํ์์ ์ง์ ํ๋ ๊ฒ์ด ์ ์ด๋ ๋ฉ์ง ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์์ 11-12๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ ์ฌ์ฉ์๋ ์์ต๋๋ค(๋ ์ผ์์๋ 11.12์ - ์ฐ๋ฆฌ๋ 12.11์).
+1 ...
๊ทธ๋์ ์ด ๋ฌธ์ ๋ 6์ธ์ ๊ฐ์ต๋๋ค. ์ต์ํ ๊ฐ๊ณผ ์๊ฐ ๋ฐ ๋ ์ง ํ์์ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ถ๊ฐํ์ญ์์ค...
+1
๋ค๊ตญ์ด๋ GUI ๊ธฐ๋ฐ ์ํํธ์จ์ด์ ๋งค์ฐ ์ค์ํ๋ฉฐ ๋ ๋ง์ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ฉด grafana๊ฐ ์ ์ธ๊ณ์ ์ผ๋ก ๋ ์ ๋ช
ํด์ง ์ ์์ต๋๋ค.
๊ฐ๋จํ ์คํฌ๋ฆฝํธ๋ก grafana๋ฅผ ์ฝ๊ฒ ๋ฒ์ญํ ์ ์์ต๋๋ค. ๋ฌ์์์ด๋ก timepicker๋ฅผ ๋ฒ์ญํ์ต๋๋ค.
๊ฐ๋จํ ์คํฌ๋ฆฝํธ๋ก grafana๋ฅผ ์ฝ๊ฒ ๋ฒ์ญํ ์ ์์ต๋๋ค. ๋ฌ์์์ด๋ก timepicker๋ฅผ ๋ฒ์ญํ์ต๋๋ค.
์์ํ! ๋น์ ์ ๊ฒฝํ์ ๊ณต์ ํ ์ ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@markusr ์ฃ์กํฉ๋๋ค. ์ง๊ธ์ ๊ตญ์ ํ๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ง๋ ์ค๋ซ๋์ ์ฐ์ ์์๊ฐ ๋์ง ์์ ๊ฒ์ด๋ฉฐ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด(์ ์งํ๊ธฐ ์ฝ๊ณ ํ ํ๋ฆฟ ์ฑ๋ฅ์ ์ ํ์ํค์ง ์๋) ๊ทธ๋ฐ ์ผ์ ์ผ์ด๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ angular.js์ ๊ตญ์ ํ๋ฅผ ๋ง์ด ๋ณด์ง ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์์ผ๋ฉด ์ ์๊ฒ ์๋ ค์ฃผ์ญ์์ค(๋ํ ์ด ๋ฌธ์ ๋ฅผ +1).