Skip to content
Snippets Groups Projects
Commit 42e14cf6 authored by Felix Fischer's avatar Felix Fischer :shrimp:
Browse files

Exclude brackets from translation

parent 0b5ed9fc
Branches
No related tags found
1 merge request!62Exclude brackets from translation
Pipeline #1685912 passed with warnings
......@@ -5,4 +5,4 @@ useful across several different projects and repositories. It also contains
stub-files with several data-type annotations for scipy and matplot-lib
functions."""
__version__ = "1.8.10"
__version__ = "1.8.11"
......@@ -13,6 +13,7 @@ import csv
from functools import wraps
import locale
from pathlib import Path
import re
import sys
from textwrap import dedent
from typing import Callable, Generator, Optional, Union, overload
......@@ -137,6 +138,35 @@ mpl.colormaps.register(rwth_gradient_map)
mpl.colormaps.register(rwth_gradient_map_simple)
def germanify_between(string: str, reverse: bool = False) -> str:
"""Only apply the German translation to strings
outside of math areas indicated by dollar sings ($)"""
match = re.search(r"\$(.*?)\$", string)
if match:
before = str(string[:match.start()])
between = str(match.group(0))
after = str(string[match.end():])
else:
before = ""
between = ""
after = string
match = re.search(r"\[.*?\]$", string)
if match:
bracket = match.group(0)
bracket_start = after.find(bracket)
before_bracket = after[:bracket_start]
after_bracket = after[bracket_start + len(bracket):]
else:
bracket = ""
before_bracket = after
after_bracket = ""
return translate(before, reverse=reverse)\
+ between + translate(before_bracket, reverse=reverse)\
+ bracket + translate(after_bracket, reverse=reverse)
def _germanify(ax: Axes, reverse: bool = False) -> None:
"""
translate a figure from english to german.
......@@ -165,6 +195,10 @@ def _germanify(ax: Axes, reverse: bool = False) -> None:
if axi.get_legend():
items += [*axi.get_legend().texts]
for item in items:
if r"$" in item.get_text():
item.set_text(
germanify_between(
item.get_text(), reverse=reverse))
item.set_text(translate(item.get_text(),
reverse=reverse))
try:
......
......@@ -198,7 +198,7 @@ def use_translator(string: str, lang1: str, lang2: str) -> str:
result = translator.translate(string, lang1, lang2)
except (OSError, MaxRetryError):
return string
return result
return str(result)
def translate(string: str, reverse: bool = False) -> str:
......@@ -207,6 +207,9 @@ def translate(string: str, reverse: bool = False) -> str:
@input reverse translate ger->en if set to true
@return the german translation of the same string"""
if r"$" in string or not string:
return string
if reverse:
string = re.sub(r'(\d+),(\d+)', r'\1\.\2', string)
else:
......@@ -263,12 +266,15 @@ def translate(string: str, reverse: bool = False) -> str:
"absolute": "absolut",
"plot": "Graph",
"orifice": "Blende",
"Hagen–Poiseuille": "Hagen-Poiseuille"
"Hagen–Poiseuille": "Hagen-Poiseuille",
"test": "Test"
})
if not reverse and r"\times" not in string:
for key, value in _dict.items():
if key in string.lower():
string = re.sub(key, value, string, flags=re.IGNORECASE)
string = re.sub(
key, value, string,
flags=re.IGNORECASE)
break
else:
string = use_translator(string, "german", "english")
......
......@@ -31,7 +31,7 @@ def test_two_plots() -> None:
filename.parent.mkdir(exist_ok=True)
two_plots(x_test, y_test1, "plot1",
x_test, y_test2, "plot2",
"x", "y",
"distance", r"$\dot{m} = \frac{a}{b}$ leakage [bar]",
filename)
assert filename.exists()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment