Skip to content

Commit 449ef1d

Browse files
Merge branch 'pr-123'
# Conflicts: # desktop-app/resources/index.html # desktop-app/resources/js/script.js # index.html # script.js
2 parents b142fb6 + f197bc9 commit 449ef1d

6 files changed

Lines changed: 95 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
All notable code changes to **Markdown Viewer** are documented here.
44
Non-code commits (documentation, planning, README-only updates) are excluded.
55

6+
## v3.6.4
7+
8+
- **Description:** Implemented Brazilian Portuguese (pt-BR) translation module. Localized all main editor labels, stats, tooltips, dialogs, placeholder, and search/replace options. Registered `hreflang` alternate link for Portuguese (pt-BR) search indexation and enabled automatic browser language detection fallback for Portuguese language preferences. Rotated Service Worker cache namespace to `v3.6.4` to trigger background cache updates.
9+
- **Date:** 2026-05-27
10+
- **URL:** https://github.com/ThisIs-Developer/Markdown-Viewer/commit/v3.6.4
11+
612
---
713

814
## v3.6.3

desktop-app/resources/index.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<link rel="alternate" hreflang="zh-Hans" href="https://markdownviewer.pages.dev/?lang=zh" />
1919
<link rel="alternate" hreflang="ja" href="https://markdownviewer.pages.dev/?lang=ja" />
2020
<link rel="alternate" hreflang="ko" href="https://markdownviewer.pages.dev/?lang=ko" />
21+
<link rel="alternate" hreflang="pt-BR" href="https://markdownviewer.pages.dev/?lang=pt" />
2122

2223
<!-- Asian Search Engine Verification Meta Tags -->
2324
<meta name="baidu-site-verification" content="baidu_verification_code_placeholder" />
@@ -190,6 +191,7 @@ <h1 class="h4 mb-0 me-2">Markdown Viewer</h1>
190191
<li><a class="dropdown-item lang-select-item" href="#" data-lang="zh">🇨🇳 简体中文</a></li>
191192
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ja">🇯🇵 日本語</a></li>
192193
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ko">🇰🇷 한국어</a></li>
194+
<li><a class="dropdown-item lang-select-item" href="#" data-lang="pt">🇧🇷 Português (Brasil)</a></li>
193195
</ul>
194196
</div>
195197

@@ -297,10 +299,11 @@ <h5>Menu</h5>
297299
<i class="bi bi-translate me-2"></i> Language: <span id="mobile-current-lang-label">English</span>
298300
</button>
299301
<ul class="dropdown-menu w-100" aria-labelledby="mobileLanguageDropdown">
300-
<li><a class="dropdown-item lang-select-item active" href="#" data-lang="en">us English</a></li>
301-
<li><a class="dropdown-item lang-select-item" href="#" data-lang="zh">CN 简体中文</a></li>
302-
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ja">JP 日本語</a></li>
303-
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ko">KR 한국어</a></li>
302+
<li><a class="dropdown-item lang-select-item active" href="#" data-lang="en">us English</a></li>
303+
<li><a class="dropdown-item lang-select-item" href="#" data-lang="zh">CN 简体中文</a></li>
304+
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ja">JP 日本語</a></li>
305+
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ko">KR 한국어</a></li>
306+
<li><a class="dropdown-item lang-select-item" href="#" data-lang="pt">BR Português (Brasil)</a></li>
304307
</ul>
305308
</div>
306309
<button id="mobile-theme-toggle" class="mobile-menu-item" title="Toggle Dark Mode">

desktop-app/resources/js/script.js

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6685,6 +6685,42 @@ This is a fully client-side application. Your content never leaves your browser
66856685
insertTable: "표 삽입",
66866686
findReplace: "찾기 및 바꾸기",
66876687
placeholder: "여기에 마크다운 내용을 입력하세요..."
6688+
},
6689+
pt: {
6690+
title: "Visualizador de Markdown",
6691+
syncOff: "Desativar Sincronia",
6692+
syncOn: "Ativar Sincronia",
6693+
import: "Importar",
6694+
importFile: "De arquivos",
6695+
importGithub: "Do GitHub",
6696+
export: "Exportar",
6697+
exportMd: "Markdown (.md)",
6698+
exportHtml: "HTML",
6699+
exportPdf: "PDF",
6700+
copy: "Copiar",
6701+
copied: "Copiado!",
6702+
share: "Compartilhar",
6703+
reset: "Redefinir",
6704+
editor: "Editor",
6705+
split: "Dividido",
6706+
preview: "Visualizar",
6707+
minRead: "Min de leitura",
6708+
words: "Palavras",
6709+
chars: "Caracteres",
6710+
switchRtl: "Mudar para RTL",
6711+
switchLtr: "Mudar para LTR",
6712+
darkMode: "Modo Escuro",
6713+
lightMode: "Modo Claro",
6714+
helpTitle: "Ajuda do Visualizador de Markdown",
6715+
aboutTitle: "Sobre o Markdown",
6716+
shareTitle: "Compartilhar Documento",
6717+
renameTitle: "Renomear arquivo",
6718+
insertLink: "Inserir link",
6719+
insertRef: "Inserir referência",
6720+
insertImg: "Inserir imagem",
6721+
insertTable: "Inserir tabela",
6722+
findReplace: "Localizar & Substituir",
6723+
placeholder: "Digite seu markdown aqui..."
66886724
}
66896725
};
66906726

@@ -6702,12 +6738,12 @@ This is a fully client-side application. Your content never leaves your browser
67026738
// Update dynamic current language labels in drop menus
67036739
const labelEl = document.getElementById('current-lang-label');
67046740
if (labelEl) {
6705-
const flags = { en: "🇺🇸 English", zh: "🇨🇳 简体中文", ja: "🇯🇵 日本語", ko: "🇰🇷 한국어" };
6741+
const flags = { en: "🇺🇸 English", zh: "🇨🇳 简体中文", ja: "🇯🇵 日本語", ko: "🇰🇷 한국어", pt: "🇧🇷 Português (Brasil)" };
67066742
labelEl.textContent = flags[lang];
67076743
}
67086744
const mobileLabelEl = document.getElementById('mobile-current-lang-label');
67096745
if (mobileLabelEl) {
6710-
const flags = { en: "us English", zh: "CN 简体中文", ja: "JP 日本語", ko: "KR 한국어" };
6746+
const flags = { en: "us English", zh: "CN 简体中文", ja: "JP 日本語", ko: "KR 한국어", pt: "BR Português (Brasil)" };
67116747
mobileLabelEl.textContent = flags[lang];
67126748
}
67136749

@@ -6880,6 +6916,7 @@ This is a fully client-side application. Your content never leaves your browser
68806916
if (navLang.startsWith('zh')) lang = 'zh';
68816917
else if (navLang.startsWith('ja')) lang = 'ja';
68826918
else if (navLang.startsWith('ko')) lang = 'ko';
6919+
else if (navLang.startsWith('pt')) lang = 'pt';
68836920
}
68846921

68856922
if (!lang || !I18N_DICTS[lang]) {

index.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<link rel="alternate" hreflang="zh-Hans" href="https://markdownviewer.pages.dev/?lang=zh" />
1919
<link rel="alternate" hreflang="ja" href="https://markdownviewer.pages.dev/?lang=ja" />
2020
<link rel="alternate" hreflang="ko" href="https://markdownviewer.pages.dev/?lang=ko" />
21+
<link rel="alternate" hreflang="pt-BR" href="https://markdownviewer.pages.dev/?lang=pt" />
2122

2223
<!-- Asian Search Engine Verification Meta Tags -->
2324
<meta name="baidu-site-verification" content="baidu_verification_code_placeholder" />
@@ -187,6 +188,7 @@ <h1 class="h4 mb-0 me-2">Markdown Viewer</h1>
187188
<li><a class="dropdown-item lang-select-item" href="#" data-lang="zh">🇨🇳 简体中文</a></li>
188189
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ja">🇯🇵 日本語</a></li>
189190
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ko">🇰🇷 한국어</a></li>
191+
<li><a class="dropdown-item lang-select-item" href="#" data-lang="pt">🇧🇷 Português (Brasil)</a></li>
190192
</ul>
191193
</div>
192194

@@ -298,6 +300,7 @@ <h5>Menu</h5>
298300
<li><a class="dropdown-item lang-select-item" href="#" data-lang="zh">CN 简体中文</a></li>
299301
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ja">JP 日本語</a></li>
300302
<li><a class="dropdown-item lang-select-item" href="#" data-lang="ko">KR 한국어</a></li>
303+
<li><a class="dropdown-item lang-select-item" href="#" data-lang="pt">BR Português (Brasil)</a></li>
301304
</ul>
302305
</div>
303306
<button id="mobile-theme-toggle" class="mobile-menu-item" title="Toggle Dark Mode">

script.js

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6685,6 +6685,42 @@ This is a fully client-side application. Your content never leaves your browser
66856685
insertTable: "표 삽입",
66866686
findReplace: "찾기 및 바꾸기",
66876687
placeholder: "여기에 마크다운 내용을 입력하세요..."
6688+
},
6689+
pt: {
6690+
title: "Visualizador de Markdown",
6691+
syncOff: "Desativar Sincronia",
6692+
syncOn: "Ativar Sincronia",
6693+
import: "Importar",
6694+
importFile: "De arquivos",
6695+
importGithub: "Do GitHub",
6696+
export: "Exportar",
6697+
exportMd: "Markdown (.md)",
6698+
exportHtml: "HTML",
6699+
exportPdf: "PDF",
6700+
copy: "Copiar",
6701+
copied: "Copiado!",
6702+
share: "Compartilhar",
6703+
reset: "Redefinir",
6704+
editor: "Editor",
6705+
split: "Dividido",
6706+
preview: "Visualizar",
6707+
minRead: "Min de leitura",
6708+
words: "Palavras",
6709+
chars: "Caracteres",
6710+
switchRtl: "Mudar para RTL",
6711+
switchLtr: "Mudar para LTR",
6712+
darkMode: "Modo Escuro",
6713+
lightMode: "Modo Claro",
6714+
helpTitle: "Ajuda do Visualizador de Markdown",
6715+
aboutTitle: "Sobre o Markdown",
6716+
shareTitle: "Compartilhar Documento",
6717+
renameTitle: "Renomear arquivo",
6718+
insertLink: "Inserir link",
6719+
insertRef: "Inserir referência",
6720+
insertImg: "Inserir imagem",
6721+
insertTable: "Inserir tabela",
6722+
findReplace: "Localizar & Substituir",
6723+
placeholder: "Digite seu markdown aqui..."
66886724
}
66896725
};
66906726

@@ -6702,12 +6738,12 @@ This is a fully client-side application. Your content never leaves your browser
67026738
// Update dynamic current language labels in drop menus
67036739
const labelEl = document.getElementById('current-lang-label');
67046740
if (labelEl) {
6705-
const flags = { en: "🇺🇸 English", zh: "🇨🇳 简体中文", ja: "🇯🇵 日本語", ko: "🇰🇷 한국어" };
6741+
const flags = { en: "🇺🇸 English", zh: "🇨🇳 简体中文", ja: "🇯🇵 日本語", ko: "🇰🇷 한국어", pt: "🇧🇷 Português (Brasil)" };
67066742
labelEl.textContent = flags[lang];
67076743
}
67086744
const mobileLabelEl = document.getElementById('mobile-current-lang-label');
67096745
if (mobileLabelEl) {
6710-
const flags = { en: "us English", zh: "CN 简体中文", ja: "JP 日本語", ko: "KR 한국어" };
6746+
const flags = { en: "us English", zh: "CN 简体中文", ja: "JP 日本語", ko: "KR 한국어", pt: "BR Português (Brasil)" };
67116747
mobileLabelEl.textContent = flags[lang];
67126748
}
67136749

@@ -6880,6 +6916,7 @@ This is a fully client-side application. Your content never leaves your browser
68806916
if (navLang.startsWith('zh')) lang = 'zh';
68816917
else if (navLang.startsWith('ja')) lang = 'ja';
68826918
else if (navLang.startsWith('ko')) lang = 'ko';
6919+
else if (navLang.startsWith('pt')) lang = 'pt';
68836920
}
68846921

68856922
if (!lang || !I18N_DICTS[lang]) {

sw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const CACHE_NAME = 'markdown-viewer-cache-v3.6.3';
1+
const CACHE_NAME = 'markdown-viewer-cache-v3.6.4';
22
const ASSETS = [
33
'./',
44
'./index.html',

0 commit comments

Comments
 (0)