기능: Discourse 관리자 설정 한국어 번역 기반 추가
관리자 설정 이름 100개와 필수 설명 10개를 한국어로 제공한다. 독립 프로젝트 저장소의 최초 배포 기반과 작업 문서를 함께 정리했다.
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# ITOSM 관리자 한국어 보완
|
||||
|
||||
Discourse 관리자 설정 화면에서 내부 설정 키를 영어 문장으로 표시하는 항목을 자연스러운 한국어 이름으로 바꾼다.
|
||||
|
||||
- 한국어 화면에서만 동작한다.
|
||||
- 등록하지 않은 설정은 Discourse 기본 이름을 그대로 사용한다.
|
||||
- 데이터베이스와 사이트 설정값은 변경하지 않는다.
|
||||
- Discourse 기본 번역 구조가 설정 이름을 지원하게 되면 공식 번역으로 옮길 수 있다.
|
||||
|
||||
## 작성자
|
||||
|
||||
이창현 (Lee Chang Hyun) <syskiller@naver.com>
|
||||
@@ -0,0 +1,12 @@
|
||||
ko:
|
||||
site_settings:
|
||||
title: "사이트 이름입니다. 비회원 포함 모든 방문자에게 표시됩니다. 이름을 바꾸면 설치형 웹 앱 사용자에게 앱 업데이트나 제거 안내가 나타날 수 있습니다."
|
||||
site_description: "사이트를 한 문장으로 설명합니다. 비회원 포함 모든 방문자에게 표시됩니다."
|
||||
short_site_description: "사이트를 몇 단어로 짧게 설명합니다. 비회원 포함 모든 방문자에게 표시됩니다."
|
||||
contact_email: "사이트 운영을 책임지는 주요 연락처 이메일입니다. 중요 알림에 사용하며 공개 사이트의 소개 화면에도 표시됩니다."
|
||||
contact_url: "사이트 연락처 주소입니다. 입력하면 소개 화면의 연락처 이메일을 대신하며 공개 사이트에서는 비회원에게도 표시됩니다."
|
||||
site_contact_group_name: "자동으로 보내는 모든 개인 메시지에 초대할 그룹입니다."
|
||||
company_name: "회사 또는 단체 이름입니다. 비워 두면 기본 서비스 이용 약관과 개인정보 처리 안내를 제공하지 않습니다."
|
||||
company_url: "회사 또는 단체의 웹사이트 주소입니다. 선택 항목입니다."
|
||||
governing_law: "서비스 이용 약관과 개인정보 처리방침 등 사이트의 법률 사항에 적용할 관할권을 지정합니다. 보통 운영 회사가 등록되어 있거나 사업을 수행하는 국가 또는 지역을 입력합니다."
|
||||
city_for_disputes: "포럼 이용과 관련된 분쟁을 해결할 관할 도시를 지정합니다. 이 정보는 보통 서비스 이용 약관 같은 법률 문서에 포함됩니다."
|
||||
@@ -0,0 +1,46 @@
|
||||
# 관리자 한글화 운영 기록 · 2026-09-20
|
||||
|
||||
- Trilium 노트 ID: `N0v5eGIKqa28`
|
||||
- 상위 폴더: `Discourse 한국어 배포` · `1wcGHtWA2OEz`
|
||||
- 담당: 이창현
|
||||
- 운영 반영: 완료
|
||||
|
||||
## 변경 이유
|
||||
|
||||
Discourse의 일부 관리자 설정 이름은 번역 파일을 거치지 않고 내부 키를 영문 문장으로 바꾸어 표시한다. 한국어 언어 설정만으로는 바뀌지 않는 영역이 있어 전용 보완 플러그인으로 처리했다.
|
||||
|
||||
## 반영 내용
|
||||
|
||||
| 항목 | 결과 |
|
||||
|---|---|
|
||||
| 설정 이름 | 주요 항목 100개를 한국어로 표시 |
|
||||
| 필수 설정 설명 | 사이트 이름과 연락처와 법률 관련 설명 10개 보완 |
|
||||
| 언어 조건 | 한국어 화면에서만 보완 번역 적용 |
|
||||
| 안전한 대체 표시 | 미등록 설정은 Discourse 기본 표시 유지 |
|
||||
| 영구 설치 | `app.yml`에 저장소 플러그인 경로 연결 |
|
||||
| 데이터베이스 | 변경 없음 |
|
||||
|
||||
## 검사 결과
|
||||
|
||||
- Ruby 문법 검사 통과
|
||||
- YAML 구문 검사 통과
|
||||
- Rails에서 `사이트 이름`과 `로그인 필수` 표시 확인
|
||||
- 미등록 설정의 기본 표시 유지 확인
|
||||
- 포럼 HTTP 200 응답 확인
|
||||
- 관리자 화면에서 설정 이름과 필수 설명의 한국어 표시 확인
|
||||
- Docker 컨테이너는 다시 만들지 않고 웹 프로세스만 다시 시작
|
||||
|
||||
## 백업
|
||||
|
||||
`/mnt/nas_storage/volume2/itosmgame/블리어스/20260920-관리자-설정이름-한글화`
|
||||
|
||||
변경 전 `app.yml`과 컨테이너 구성 확인 자료와 복구 안내를 보관했다.
|
||||
|
||||
## 남은 작업
|
||||
|
||||
관리자 범주 이름과 플러그인별 고유 문구를 별도 목록으로 정리한다. 누락 검사가 끝나면 일반 번역문은 공식 번역 플랫폼에 제출한다. 설정 이름 처리처럼 코드 변경이 필요한 항목은 Discourse 저장소 기여 방식으로 준비한다.
|
||||
|
||||
## 기여자
|
||||
|
||||
- 이름: 이창현 (Lee Chang Hyun)
|
||||
- 이메일: syskiller@naver.com
|
||||
@@ -0,0 +1,19 @@
|
||||
# 한국어 번역 기반 작업 · 2026-09-20
|
||||
|
||||
- Trilium 노트 ID: `dZobqUI4a5ZH`
|
||||
- 상위 폴더: `Discourse 한국어 배포` · `1wcGHtWA2OEz`
|
||||
|
||||
## 작업 개요
|
||||
|
||||
`forum.itosm.co.kr`의 사용자 화면과 관리자 화면에서 영어로 남은 항목을 점검했다. Discourse 코어와 Chat 플러그인과 Voice 플러그인의 번역 누락을 나눠 확인한 뒤 공식 한국어 계정의 기본 번역을 보완했다.
|
||||
|
||||
## 적용 내용
|
||||
|
||||
- 한국어 계정의 번역 182개를 저장했다.
|
||||
- 최신 글과 관리자 대시보드와 채팅 및 음성 메뉴와 로그인 화면의 주요 영문 문구를 보완했다.
|
||||
- 기본 음성 대화 서비스 이름을 자연스러운 한국어로 바꿨다.
|
||||
- 운영 화면에서 주요 사용자 흐름과 관리자 메뉴 표시를 확인했다.
|
||||
|
||||
## 기록 구조 변경
|
||||
|
||||
처음에는 `버전 기록` 아래에 문서가 잘못 만들어졌다. 내용을 보존한 채 `블리어스 (ITOSMGames)` 아래의 새 전용 폴더로 옮겨 다시 구성했다. 잘못 배치된 원본 노트는 새 문서의 저장과 내용을 확인한 뒤 정리했다.
|
||||
@@ -0,0 +1,18 @@
|
||||
# Discourse 한국어 배포
|
||||
|
||||
Trilium의 `블리어스 (ITOSMGames)` 바로 아래에 만든 전용 분류다. 포럼과 관리자 패널의 한국어 번역 적용 기록과 공식 배포판 기여 준비를 이곳에서 관리한다.
|
||||
|
||||
- Trilium 폴더 노트: `1wcGHtWA2OEz`
|
||||
- 상위 노트: `블리어스 (ITOSMGames)` · `LrrNdhdqVAes`
|
||||
- 데이터베이스 변경: 없음
|
||||
|
||||
## 문서 목록
|
||||
|
||||
| 문서 | Trilium 노트 ID | 용도 |
|
||||
|---|---|---|
|
||||
| 한국어 번역 기반 작업 · 2026-09-20 | `dZobqUI4a5ZH` | 사용자 화면과 관리자 화면의 초기 번역 기반 기록 |
|
||||
| 관리자 한글화 운영 기록 · 2026-09-20 | `N0v5eGIKqa28` | 설정 이름 보완 플러그인과 운영 반영 및 검증 기록 |
|
||||
|
||||
## 작성 기준
|
||||
|
||||
관련성이 분명한 기존 분류가 없으면 이 폴더 안에 새 문서를 만든다. 다른 프로젝트 기록이나 일반 서버 기록에 섞어 넣지 않는다. 문서는 마이그레이션 기록과 같은 수준으로 표지와 색상과 카드와 표와 제목 단계를 사용한다. 모바일 폭에서도 내용이 겹치거나 잘리지 않게 확인한다.
|
||||
@@ -0,0 +1,126 @@
|
||||
# frozen_string_literal: true
|
||||
# name: itosm-admin-korean
|
||||
# about: Discourse 관리자 설정 이름을 자연스러운 한국어로 표시합니다.
|
||||
# version: 0.1.0
|
||||
# authors: 이창현
|
||||
# url: https://gitea.itosm.co.kr/syskiller/ITOSMGames
|
||||
|
||||
module ::ItosmAdminKorean
|
||||
NAMES = {
|
||||
default_locale: "기본 언어",
|
||||
title: "사이트 이름",
|
||||
site_description: "사이트 설명",
|
||||
short_site_description: "짧은 사이트 설명",
|
||||
short_title: "짧은 사이트 이름",
|
||||
contact_email: "연락처 이메일",
|
||||
contact_url: "연락처 주소",
|
||||
site_contact_username: "시스템 메시지 발신자",
|
||||
site_contact_group_name: "시스템 메시지 수신 그룹",
|
||||
exclude_rel_nofollow_domains: "nofollow 제외 도메인",
|
||||
company_name: "회사 또는 단체 이름",
|
||||
company_url: "회사 또는 단체 주소",
|
||||
governing_law: "준거법",
|
||||
city_for_disputes: "분쟁 관할 도시",
|
||||
logo: "기본 로고",
|
||||
logo_small: "작은 로고",
|
||||
digest_logo: "요약 메일 로고",
|
||||
mobile_logo: "모바일 로고",
|
||||
logo_dark: "어두운 화면용 로고",
|
||||
logo_small_dark: "어두운 화면용 작은 로고",
|
||||
mobile_logo_dark: "어두운 화면용 모바일 로고",
|
||||
large_icon: "큰 아이콘",
|
||||
manifest_icon: "앱 설치 아이콘",
|
||||
manifest_screenshots: "앱 설치 화면 이미지",
|
||||
favicon: "파비콘",
|
||||
apple_touch_icon: "Apple 터치 아이콘",
|
||||
opengraph_image: "OpenGraph 이미지",
|
||||
twitter_summary_large_image: "X 요약 큰 이미지",
|
||||
display_local_time_in_user_card: "사용자 카드에 현지 시각 표시",
|
||||
support_mixed_text_direction: "혼합 텍스트 방향 지원",
|
||||
categories_topics: "카테고리별 주제 수",
|
||||
suggested_topics: "추천 주제 수",
|
||||
limit_suggested_to_category: "같은 카테고리의 주제만 추천",
|
||||
suggested_topics_unread_max_days_old: "읽지 않은 추천 주제 최대 보관 일수",
|
||||
suggested_topics_max_days_old: "추천 주제 최대 보관 일수",
|
||||
ga_version: "Google Analytics 버전",
|
||||
ga_universal_tracking_code: "Google Analytics 추적 코드",
|
||||
ga_universal_domain_name: "Google Analytics 도메인",
|
||||
ga_universal_auto_link_domains: "Google Analytics 교차 도메인",
|
||||
gtm_container_id: "Google Tag Manager 컨테이너 ID",
|
||||
google_site_verification_token: "Google 사이트 확인 토큰",
|
||||
top_menu: "상단 메뉴",
|
||||
default_homepage: "기본 홈페이지",
|
||||
custom_homepage_crawler_route: "검색 엔진용 홈페이지 경로",
|
||||
post_menu: "게시물 메뉴",
|
||||
post_menu_hidden_items: "기본 숨김 게시물 메뉴",
|
||||
share_links: "공유 링크",
|
||||
allow_username_in_share_links: "공유 링크에 사용자 이름 포함",
|
||||
share_quote_visibility: "인용 공유 표시 대상",
|
||||
share_quote_buttons: "인용 공유 버튼",
|
||||
desktop_category_page_style: "데스크톱 카테고리 화면 형식",
|
||||
mobile_category_page_style: "모바일 카테고리 화면 형식",
|
||||
category_colors: "카테고리 색상",
|
||||
enable_direct_s3_uploads: "S3 직접 업로드 사용",
|
||||
relative_date_duration: "상대 날짜 표시 기간",
|
||||
topics_per_period_in_top_summary: "인기 주제 요약 표시 수",
|
||||
topics_per_period_in_top_page: "인기 주제 화면 표시 수",
|
||||
top_page_default_timeframe: "인기 주제 기본 기간",
|
||||
fixed_category_positions: "카테고리 순서 고정",
|
||||
fixed_category_positions_on_create: "주제 작성 화면에서 카테고리 순서 고정",
|
||||
enable_badges: "배지 사용",
|
||||
show_badges_in_post_header: "게시물 머리글에 배지 표시",
|
||||
max_favorite_badges: "즐겨찾기 배지 최대 수",
|
||||
whispers_allowed_groups: "귓속말 허용 그룹",
|
||||
hidden_post_visible_groups: "숨긴 게시물 조회 그룹",
|
||||
push_notifications_prompt: "푸시 알림 동의 안내",
|
||||
push_notifications_icon: "푸시 알림 아이콘",
|
||||
enable_desktop_push_notifications: "데스크톱 푸시 알림 사용",
|
||||
push_notification_time_window_mins: "푸시 알림 대기 시간",
|
||||
base_font: "기본 글꼴",
|
||||
heading_font: "제목 글꼴",
|
||||
enable_sitemap: "사이트맵 사용",
|
||||
sitemap_page_size: "사이트맵 페이지당 주소 수",
|
||||
enable_user_tips: "사용자 도움말 사용",
|
||||
page_loading_indicator: "화면 로딩 표시",
|
||||
show_user_menu_avatars: "사용자 메뉴에 아바타 표시",
|
||||
about_page_hidden_groups: "소개 화면에서 숨길 그룹",
|
||||
about_page_extra_groups: "소개 화면에 추가할 그룹",
|
||||
about_page_extra_groups_initial_members: "소개 화면 그룹별 기본 표시 인원",
|
||||
about_page_extra_groups_order: "소개 화면 추가 그룹 순서",
|
||||
about_page_extra_groups_show_description: "소개 화면에 그룹 설명 표시",
|
||||
adobe_analytics_tags_url: "Adobe Analytics 태그 주소",
|
||||
interface_color_selector: "화면 색상 선택기",
|
||||
login_required: "로그인 필수",
|
||||
must_approve_users: "신규 사용자 승인 필요",
|
||||
invite_only: "초대 전용",
|
||||
invite_code: "초대 코드",
|
||||
enable_local_logins: "아이디와 비밀번호 로그인 사용",
|
||||
enable_local_logins_via_email: "이메일 로그인 링크 사용",
|
||||
enable_random_usernames: "임의 사용자 이름 생성",
|
||||
random_username_adjectives: "임의 사용자 이름 형용사",
|
||||
random_username_nouns: "임의 사용자 이름 명사",
|
||||
allow_passkeys_for_2fa: "2단계 인증에 패스키 허용",
|
||||
allow_new_registrations: "신규 가입 허용",
|
||||
enable_signup_cta: "가입 권유 안내 사용",
|
||||
enable_discourse_id: "Discourse ID 로그인 사용",
|
||||
enable_google_oauth2_logins: "Google 로그인 사용",
|
||||
google_oauth2_client_id: "Google OAuth2 클라이언트 ID",
|
||||
google_oauth2_client_secret: "Google OAuth2 클라이언트 비밀 키",
|
||||
google_oauth2_prompt: "Google OAuth2 요청 방식",
|
||||
}.freeze
|
||||
|
||||
module SiteSettingNames
|
||||
def humanized_names(name)
|
||||
if I18n.locale.to_s.start_with?("ko")
|
||||
localized_name = ItosmAdminKorean::NAMES[name.to_sym]
|
||||
return localized_name if localized_name
|
||||
end
|
||||
|
||||
super
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
after_initialize do
|
||||
SiteSetting.singleton_class.prepend(::ItosmAdminKorean::SiteSettingNames)
|
||||
end
|
||||
Reference in New Issue
Block a user