Skip to content

Commit

Permalink
다국어 처리 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
erados committed Dec 22, 2024
1 parent 773bf70 commit 1707094
Show file tree
Hide file tree
Showing 8 changed files with 310 additions and 37 deletions.
86 changes: 86 additions & 0 deletions _locales/en/messages.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"description": {
"message" : "Safespace is a Chrome extension that helps users protect themselves from unwanted content."
},
"selectParentElement": {
"message": "Select Parent Element"
},
"preview": {
"message": "Preview"
},
"saveFilter": {
"message": "Save Filter"
},
"selectedElement": {
"message": "Selected Element"
},
"similarElementsFound": {
"message": "Similar Elements Found"
},
"viewFilterList": {
"message": "View Filter List"
},
"domain": {
"message": "Domain"
},
"export": {
"message": "Export"
},
"import": {
"message": "Import"
},
"deleteAll": {
"message": "Delete All"
},
"savedFilterList": {
"message": "Saved Filter List"
},
"noFiltersSaved": {
"message": "No filters saved"
},
"selector": {
"message": "Selector"
},
"filterText": {
"message": "Filter Text"
},
"share": {
"message": "Share"
},
"delete": {
"message": "Delete"
},
"invalidFilterFormat": {
"message": "Invalid filter format"
},
"filterImportFailed": {
"message": "Filter import failed"
},
"filterCopiedToClipboard": {
"message": "Filter copied to clipboard"
},
"copyFailed": {
"message": "Copy failed"
},
"confirmDeleteAllFilters": {
"message": "Are you sure you want to delete all filters?"
},
"enterFilterText": {
"message": "Enter text to filter"
},
"pleaseEnterFilterText": {
"message": "Please enter filter text"
},
"elementsFiltered": {
"message": "Elements filtered"
},
"filterSavedSuccessfully": {
"message": "Filter saved successfully"
},
"unknownError": {
"message": "Unknown error"
},
"startSelection": {
"message": "Start Element Selection"
}
}
86 changes: 86 additions & 0 deletions _locales/ko/messages.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"description": {
"message" : "Safespace는 사용자가 불필요한 콘텐츠로부터 보호하는 데 도움을 주는 Chrome 확장 프로그램입니다."
},
"selectParentElement": {
"message": "상위 요소 선택"
},
"preview": {
"message": "미리보기"
},
"saveFilter": {
"message": "필터 저장"
},
"selectedElement": {
"message": "선택된 요소"
},
"similarElementsFound": {
"message": "발견된 비슷한 요소"
},
"viewFilterList": {
"message": "필터 목록보기"
},
"domain": {
"message": "도메인"
},
"export": {
"message": "내보내기"
},
"import": {
"message": "가져오기"
},
"deleteAll": {
"message": "전체 삭제"
},
"savedFilterList": {
"message": "저장된 필터 목록"
},
"noFiltersSaved": {
"message": "저장된 필터가 없습니다"
},
"selector": {
"message": "선택자"
},
"filterText": {
"message": "필터 텍스트"
},
"share": {
"message": "공유"
},
"delete": {
"message": "삭제"
},
"invalidFilterFormat": {
"message": "잘못된 필터 형식입니다"
},
"filterImportFailed": {
"message": "필터 가져오기 실패"
},
"filterCopiedToClipboard": {
"message": "필터가 클립보드에 복사되었습니다"
},
"copyFailed": {
"message": "복사 실패"
},
"confirmDeleteAllFilters": {
"message": "모든 필터를 삭제하시겠습니까?"
},
"enterFilterText": {
"message": "필터링할 텍스트 입력"
},
"pleaseEnterFilterText": {
"message": "필터 텍스트를 입력해주세요"
},
"elementsFiltered": {
"message": "필터링된 요소"
},
"filterSavedSuccessfully": {
"message": "필터가 성공적으로 저장되었습니다"
},
"unknownError": {
"message": "알 수 없는 오류"
},
"startSelection": {
"message": "요소 선택 시작"
}
}
86 changes: 86 additions & 0 deletions _locales/zh/messages.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"description": {
"message" : "Safespace 是一个 Chrome 扩展程序,帮助用户保护自己免受不必要的内容。"
},
"selectParentElement": {
"message": "选择父元素"
},
"preview": {
"message": "预览"
},
"saveFilter": {
"message": "保存过滤器"
},
"selectedElement": {
"message": "已选择元素"
},
"similarElementsFound": {
"message": "发现相似元素"
},
"viewFilterList": {
"message": "查看过滤器列表"
},
"domain": {
"message": "域名"
},
"export": {
"message": "导出"
},
"import": {
"message": "导入"
},
"deleteAll": {
"message": "删除全部"
},
"savedFilterList": {
"message": "已保存的过滤器列表"
},
"noFiltersSaved": {
"message": "没有保存的过滤器"
},
"selector": {
"message": "选择器"
},
"filterText": {
"message": "过滤文本"
},
"share": {
"message": "分享"
},
"delete": {
"message": "删除"
},
"invalidFilterFormat": {
"message": "无效的过滤器格式"
},
"filterImportFailed": {
"message": "过滤器导入失败"
},
"filterCopiedToClipboard": {
"message": "过滤器已复制到剪贴板"
},
"copyFailed": {
"message": "复制失败"
},
"confirmDeleteAllFilters": {
"message": "确定要删除所有过滤器吗?"
},
"enterFilterText": {
"message": "输入要过滤的文本"
},
"pleaseEnterFilterText": {
"message": "请输入过滤文本"
},
"elementsFiltered": {
"message": "已过滤元素"
},
"filterSavedSuccessfully": {
"message": "过滤器保存成功"
},
"unknownError": {
"message": "未知错误"
},
"startSelection": {
"message": "开始选择元素"
}
}
33 changes: 16 additions & 17 deletions background.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
let isSelecting = false;

// background.js 파일 맨 위에 추가
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: 'viewFilters',
title: '필터 목록 보기',
title: chrome.i18n.getMessage("viewFilterList"),
contexts: ['action']
});
});
Expand Down Expand Up @@ -43,7 +42,7 @@ chrome.action.onClicked.addListener(async (tab) => {
tabId: tab.id
});
await chrome.action.setTitle({
title: '선택 모드 활성화됨',
title: '${chrome.i18n.getMessage("startSelection")}',
tabId: tab.id
});

Expand All @@ -53,7 +52,7 @@ chrome.action.onClicked.addListener(async (tab) => {
function: startSelection
});
} catch (error) {
console.error('스크립트 실행 중 오류:', error);
console.error('Error when script execution:', error);
isSelecting = false;
await chrome.action.setBadgeText({
text: 'ERR',
Expand Down Expand Up @@ -188,8 +187,8 @@ function startSelection() {
const logElement = document.createElement('div');
logElement.style.marginBottom = '10px';
logElement.innerHTML = `
<div>선택된 요소: ${result.selector}</div>
<div>비슷한 요소 수: ${result.elements.length}개</div>
<div>${chrome.i18n.getMessage("selectedElement")}: ${result.selector}</div>
<div>${chrome.i18n.getMessage("foundSimilarElements")}: ${result.elements.length}개</div>
`;
logArea.appendChild(logElement);
}
Expand All @@ -201,15 +200,15 @@ function startSelection() {
const selectionInfo = document.createElement('div');
selectionInfo.innerHTML = `
<div style="margin-bottom: 15px;">
<div>선택된 요소: ${result.selector}</div>
<div>발견된 비슷한 요소: ${result.elements.length}개</div>
<div>${chrome.i18n.getMessage("selectedElement")}: ${result.selector}</div>
<div>${chrome.i18n.getMessage("foundSimilarElements")}: ${result.elements.length}개</div>
</div>
`;
logArea.appendChild(selectionInfo);

// 상위 요소 선택 버튼 추가
const parentButton = document.createElement('button');
parentButton.textContent = '상위 요소 선택';
parentButton.textContent = chrome.i18n.getMessage("selectParentElement");
parentButton.style.cssText = `
margin-bottom: 15px;
padding: 8px;
Expand Down Expand Up @@ -265,7 +264,7 @@ function startSelection() {
`;

filterUI.innerHTML = `
<div style="margin-bottom: 10px;">필터링할 텍스트 입력:</div>
<div style="margin-bottom: 10px;">${chrome.i18n.getMessage("enterFilterText")}:</div>
<input type="text" id="filterText" style="
width: 100%;
padding: 8px;
Expand Down Expand Up @@ -293,7 +292,7 @@ function startSelection() {

// 미리보기 버튼
const previewButton = document.createElement('button');
previewButton.textContent = '미리보기';
previewButton.textContent = chrome.i18n.getMessage("preview");
previewButton.style.cssText = `
margin-top: 10px;
padding: 8px;
Expand Down Expand Up @@ -325,7 +324,7 @@ function startSelection() {

// 저장 버튼 (처음에는 숨김)
const saveButton = document.createElement('button');
saveButton.textContent = '필터 저장';
saveButton.textContent = chrome.i18n.getMessage("saveFilter");
saveButton.style.cssText = `
margin-top: 10px;
padding: 8px;
Expand Down Expand Up @@ -355,7 +354,7 @@ function startSelection() {
previewButton.addEventListener('click', () => {
const filterText = document.getElementById('filterText').value.trim();
if (!filterText) {
alert('필터링할 텍스트를 입력해주세요.');
alert(chrome.i18n.getMessage("pleaseEnterFilterText"));
return;
}

Expand All @@ -366,7 +365,7 @@ function startSelection() {
// 미리보기 표시
previewArea.innerHTML = `
<div style="margin-bottom: 10px;">
필터링될 요소: ${filteredElements.length}
${chrome.i18n.getMessage("elementsFiltered")}: ${filteredElements.length}
</div>
`;

Expand Down Expand Up @@ -423,7 +422,7 @@ function startSelection() {
// 성공 메시지 표시
logArea.innerHTML = `
<div style="color: #4CAF50;">
필터가 성공적으로 저장되었습니다!
${chrome.i18n.getMessage("filterSavedSuccessfully")}
</div>
`;

Expand All @@ -437,7 +436,7 @@ function startSelection() {
document.removeEventListener('mouseover', handleMouseOver);
document.removeEventListener('click', handleClick, true);
} else {
throw new Error(response.error || '알 수 없는 오류가 발생했습니다.');
throw new Error(response.error || chrome.i18n.getMessage("unknownError"));
}
} catch (error) {
console.error('필터 저장 중 오류:', error);
Expand Down Expand Up @@ -741,4 +740,4 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
});
return true;
}
});
});
Loading

0 comments on commit 1707094

Please sign in to comment.