i18n
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
183bbfb780
commit
9604e030dd
|
@ -1,63 +1,47 @@
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import yaml
|
|
||||||
|
|
||||||
SOURCE_DIR = "docs"
|
SOURCE_DIR = "docs"
|
||||||
ENGLISH_DIR = os.path.join(SOURCE_DIR, "en")
|
ENGLISH_DIR = "docs/en"
|
||||||
MKDOCS_YML = "mkdocs.yml"
|
|
||||||
|
|
||||||
# 1. Kopiera alla filer från docs/ till docs/en/
|
# Rensa tidigare engelska mappar
|
||||||
if os.path.exists(ENGLISH_DIR):
|
if os.path.exists(ENGLISH_DIR):
|
||||||
shutil.rmtree(ENGLISH_DIR)
|
shutil.rmtree(ENGLISH_DIR)
|
||||||
shutil.copytree(SOURCE_DIR, ENGLISH_DIR)
|
shutil.copytree(SOURCE_DIR, ENGLISH_DIR)
|
||||||
|
|
||||||
|
# --- Inline-hantering ---
|
||||||
|
def remove_other_language_inline(content, keep_lang):
|
||||||
|
def replacer(match):
|
||||||
|
lang, text = match.group(1), match.group(2)
|
||||||
|
return text if lang == keep_lang else ""
|
||||||
|
return re.sub(r"\{(sv|en):(.*?)}", replacer, content)
|
||||||
|
|
||||||
|
# --- Block-hantering ---
|
||||||
|
def remove_other_language_blocks(content, keep_lang):
|
||||||
|
content = re.sub(
|
||||||
|
r":(sv|en)\n(.*?)\n:::",
|
||||||
|
lambda m: m.group(2) if m.group(1) == keep_lang else "",
|
||||||
|
content,
|
||||||
|
flags=re.DOTALL
|
||||||
|
)
|
||||||
|
return content
|
||||||
|
|
||||||
|
# --- Kombinerad rengöring ---
|
||||||
def clean_file(path, keep_lang):
|
def clean_file(path, keep_lang):
|
||||||
with open(path, "r", encoding="utf-8") as f:
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
|
content = remove_other_language_blocks(content, keep_lang)
|
||||||
# 2. Rensa block: :sv ... ::: eller :en ... :::
|
|
||||||
if keep_lang == "sv":
|
|
||||||
content = re.sub(r":en\n.*?\n:::", "", content, flags=re.DOTALL)
|
|
||||||
elif keep_lang == "en":
|
|
||||||
content = re.sub(r":sv\n.*?\n:::", "", content, flags=re.DOTALL)
|
|
||||||
|
|
||||||
# 3. Ta bort alla språk-taggar som :sv, :en och :::
|
|
||||||
content = re.sub(r":(sv|en)", "", content)
|
|
||||||
content = re.sub(r":::", "", content)
|
|
||||||
|
|
||||||
# 4. Rensa inline-översättningar
|
|
||||||
def remove_other_language_inline(text, keep_lang):
|
|
||||||
def replacer(match):
|
|
||||||
lang = match.group(1)
|
|
||||||
txt = match.group(2)
|
|
||||||
return txt if lang == keep_lang else ""
|
|
||||||
return re.sub(r"\[:(sv|en)](.*?)(?=\[:|$)", replacer, text)
|
|
||||||
|
|
||||||
content = remove_other_language_inline(content, keep_lang)
|
content = remove_other_language_inline(content, keep_lang)
|
||||||
|
|
||||||
with open(path, "w", encoding="utf-8") as f:
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
f.write(content.strip() + "\n")
|
f.write(content.strip() + "\n")
|
||||||
|
|
||||||
# 5. Rensa svenska versioner
|
# --- Rensa svenska filer ---
|
||||||
for filename in os.listdir(SOURCE_DIR):
|
for filename in os.listdir(SOURCE_DIR):
|
||||||
if filename.endswith(".md"):
|
if filename.endswith(".md"):
|
||||||
clean_file(os.path.join(SOURCE_DIR, filename), keep_lang="sv")
|
clean_file(os.path.join(SOURCE_DIR, filename), keep_lang="sv")
|
||||||
|
|
||||||
# 6. Rensa engelska versioner
|
# --- Rensa engelska filer ---
|
||||||
for filename in os.listdir(ENGLISH_DIR):
|
for filename in os.listdir(ENGLISH_DIR):
|
||||||
if filename.endswith(".md"):
|
if filename.endswith(".md"):
|
||||||
clean_file(os.path.join(ENGLISH_DIR, filename), keep_lang="en")
|
clean_file(os.path.join(ENGLISH_DIR, filename), keep_lang="en")
|
||||||
|
|
||||||
# 7. Skapa .pages i docs/en/ från mkdocs.yml
|
|
||||||
def extract_nav_from_mkdocs_yml(path):
|
|
||||||
with open(path, "r", encoding="utf-8") as f:
|
|
||||||
data = yaml.safe_load(f)
|
|
||||||
return {
|
|
||||||
"title": data.get("site_name", "SA6ANW"),
|
|
||||||
"nav": data.get("nav", [])
|
|
||||||
}
|
|
||||||
|
|
||||||
english_pages = extract_nav_from_mkdocs_yml(MKDOCS_YML)
|
|
||||||
with open(os.path.join(ENGLISH_DIR, ".pages"), "w", encoding="utf-8") as f:
|
|
||||||
yaml.dump(english_pages, f, allow_unicode=True)
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ Whether you're a licensed ham or just a loyal viewer, add your name and help us
|
||||||
<input type="text" name="fornamn" required><br>
|
<input type="text" name="fornamn" required><br>
|
||||||
<label>Efternamn / Surname:</label><br>
|
<label>Efternamn / Surname:</label><br>
|
||||||
<input type="text" name="efternamn" required><br><br>
|
<input type="text" name="efternamn" required><br><br>
|
||||||
<input type="submit" value="[:sv]Skicka[:][:en]Send[:]">
|
<input type="submit" value="{sv:Skicka}{en:Send}">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue