diff --git a/src/View/LateralContribution/Edit/Plot.py b/src/View/LateralContribution/Edit/Plot.py
index 5843ee56ab6a150ddac588a012a98493f56f6ad0..ea1c04547d5ea66d2637a222974d9577be6a586f 100644
--- a/src/View/LateralContribution/Edit/Plot.py
+++ b/src/View/LateralContribution/Edit/Plot.py
@@ -19,7 +19,7 @@
 from datetime import datetime
 
 from tools import timer, trace
-from View.Plot.APlot import APlot
+from View.Tools.PamhyrPlot import PamhyrPlot
 
 from PyQt5.QtCore import (
     QCoreApplication
@@ -29,15 +29,19 @@ from View.LateralContribution.Edit.translate import *
 
 _translate = QCoreApplication.translate
 
-class Plot(APlot):
-    def __init__(self, canvas=None, data=None,
-                 mode = "time", toolbar=None):
+class Plot(PamhyrPlot):
+    def __init__(self, mode = "time", data=None,
+                 canvas=None, trad=None, toolbar=None,
+                 parent=None):
         super(Plot, self).__init__(
-            canvas=canvas,
-            data=data,
-            toolbar=toolbar
+            canvas = canvas,
+            trad = trad,
+            data = data,
+            toolbar = toolbar,
+            parent = parent
         )
 
+        self._table_headers = self._trad.get_dict("table_headers")
         self._mode = mode
 
     def custom_ticks(self):
@@ -105,10 +109,10 @@ class Plot(APlot):
         # Plot label
         header = self.data.header
         self.canvas.axes.set_xlabel(
-            table_headers[header[0]], color='black', fontsize=10
+            self._table_headers[header[0]], color='black', fontsize=10
         )
         self.canvas.axes.set_ylabel(
-            table_headers[header[1]], color='black', fontsize=10
+            self._table_headers[header[1]], color='black', fontsize=10
         )
 
         self.canvas.axes.autoscale_view(True, True, True)
diff --git a/src/View/LateralContribution/Edit/Window.py b/src/View/LateralContribution/Edit/Window.py
index f37c1759b31db6500450307d4ce00dee2a3f2da7..55f1307fd89976c069a66500ce7fb0831d7a6069 100644
--- a/src/View/LateralContribution/Edit/Window.py
+++ b/src/View/LateralContribution/Edit/Window.py
@@ -36,11 +36,10 @@ from PyQt5.QtWidgets import (
     QHeaderView,
 )
 
-from View.Plot.MplCanvas import MplCanvas
-from View.Plot.PamhyrToolbar import PamhyrPlotToolbar
+from View.Tools.Plot.PamhyrCanvas import MplCanvas
+from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar
 
-from View.LateralContribution.translate import long_types
-from View.LateralContribution.Edit.translate import table_headers, retranslate
+from View.LateralContribution.Edit.translate import LCETranslate
 from View.LateralContribution.Edit.Table import TableModel
 from View.LateralContribution.Edit.Plot import Plot
 
@@ -54,6 +53,7 @@ class EditLateralContributionWindow(PamhyrWindow):
                  study=None, config=None,
                  parent=None):
         self._data = data
+        trad = LCETranslate()
 
         name = self._pamhyr_name
         if self._data is not None:
@@ -63,13 +63,14 @@ class EditLateralContributionWindow(PamhyrWindow):
                 _translate("Edit lateral contribution", self._pamhyr_name) +
                 f" - {study.name} " +
                 f" - {self._data.name} ({self._data.id}) " +
-                f"({long_types[self._data.lctype]} - {edge_name})"
+                f"({trad.get_dict('long_types')[self._data.lctype]} - {edge_name})"
             )
 
         super(EditLateralContributionWindow, self).__init__(
             title = name,
             study = study,
             config = config,
+            trad = trad,
             parent = parent
         )
 
@@ -78,17 +79,17 @@ class EditLateralContributionWindow(PamhyrWindow):
         self.setup_connections()
 
     def setup_table(self):
-        retranslate()
-        headers = {}
-        for h in self._data.header:
-            headers[h] = table_headers[h]
-
         self._delegate_time = PamhyrExTimeDelegate(
             data = self._data,
             mode = self._study.time_system,
             parent = self
         )
 
+        headers = {}
+        table_headers = self._trad.get_dict("table_headers")
+        for h in self._data.header:
+            headers[h] = table_headers[h]
+
         table = self.find(QTableView, "tableView")
         self._table = TableModel(
             table_view = table,
@@ -99,6 +100,7 @@ class EditLateralContributionWindow(PamhyrWindow):
             },
             data = self._data,
             undo = self._undo_stack,
+            trad = self._trad,
             opt_data = self._study.time_system
         )
 
@@ -121,6 +123,8 @@ class EditLateralContributionWindow(PamhyrWindow):
             data = self._data,
             mode = self._study.time_system,
             toolbar = self.toolbar,
+            trad = self._trad,
+            parent = self
         )
         self.plot.draw()
 
diff --git a/src/View/LateralContribution/Edit/translate.py b/src/View/LateralContribution/Edit/translate.py
index f04534e01d34aeaa36da46f4d23026ca91635fb8..247cdc4e08fe67626a8baca04c7dadf32dde194f 100644
--- a/src/View/LateralContribution/Edit/translate.py
+++ b/src/View/LateralContribution/Edit/translate.py
@@ -18,21 +18,20 @@
 
 from PyQt5.QtCore import QCoreApplication
 
+from View.Tools.PamhyrTranslate import PamhyrTranslate
+from View.LateralContribution.translate import LCTranslate
+
 _translate = QCoreApplication.translate
 
-table_headers = {
-    "x": _translate("LateralContribution", "X"),
-    "y": _translate("LateralContribution", "Y"),
-    "time": _translate("LateralContribution", "Time"),
-    "date": _translate("LateralContribution", "Date"),
-    "discharge": _translate("LateralContribution", "Discharge (m³/s)"),
-    "z": _translate("LateralContribution", "Z (m)")
-}
+class LCETranslate(LCTranslate):
+    def __init__(self):
+        super(LCETranslate, self).__init__()
 
-def retranslate():
-    table_headers["x"] = _translate("LateralContribution", "X")
-    table_headers["y"] = _translate("LateralContribution", "Y")
-    table_headers["time"] = _translate("LateralContribution", "Time")
-    table_headers["date"] = _translate("LateralContribution", "Date")
-    table_headers["discharge"] = _translate("LateralContribution", "Discharge (m³/s)")
-    table_headers["z"] = _translate("LateralContribution", "Z (m)")
+        self._sub_dict["table_headers"] = {
+            "x": _translate("LateralContribution", "X"),
+            "y": _translate("LateralContribution", "Y"),
+            "time": _translate("LateralContribution", "Time"),
+            "date": _translate("LateralContribution", "Date"),
+            "discharge": _translate("LateralContribution", "Discharge (m³/s)"),
+            "z": _translate("LateralContribution", "Z (m)")
+        }
diff --git a/src/View/LateralContribution/Table.py b/src/View/LateralContribution/Table.py
index 2a3f41961bbba6cdbb95cdb6542b5ea1466449fb..3c5f5cb79ae314c9bb9b37ddd530f661e2f63584 100644
--- a/src/View/LateralContribution/Table.py
+++ b/src/View/LateralContribution/Table.py
@@ -46,22 +46,24 @@ from Model.LateralContribution.LateralContributionTypes import (
 )
 
 from View.Tools.PamhyrTable import PamhyrTableModel
-from View.LateralContribution.translate import *
+from View.LateralContribution.translate import LC_types
 
 logger = logging.getLogger()
 
 _translate = QCoreApplication.translate
 
 class ComboBoxDelegate(QItemDelegate):
-    def __init__(self, data=None, mode="type", tab="", parent=None):
+    def __init__(self, data=None, mode="type", tab="", trad = None, parent=None):
         super(ComboBoxDelegate, self).__init__(parent)
 
         self._data = data
         self._mode = mode
         self._tab = tab
+        self._trad = trad
 
     def createEditor(self, parent, option, index):
         self.editor = QComboBox(parent)
+        long_types = self._trad.get_dict("long_types")
 
         if self._mode == "type":
             lst = list(
@@ -108,6 +110,7 @@ class TableModel(PamhyrTableModel):
     def _setup_lst(self):
         self._lst = self._data.lateral_contribution
         self._tab = self._opt_data
+        self._long_types = self._trad.get_dict("long_types")
 
     def rowCount(self, parent):
         return self._lst.len(self._tab)
@@ -123,7 +126,7 @@ class TableModel(PamhyrTableModel):
             return self._lst.get(self._tab, row).name
         elif self._headers[column] == "type":
             t = self._lst.get(self._tab, row).lctype
-            return long_types[t]
+            return self._long_types[t]
         elif self._headers[column] == "edge":
             n = self._lst.get(self._tab, row).edge
             if n is None:
@@ -151,7 +154,7 @@ class TableModel(PamhyrTableModel):
                     )
                 )
             elif self._headers[column] == "type":
-                key = next(k for k, v in long_types.items() if v == value)
+                key = next(k for k, v in self._long_types.items() if v == value)
                 self._undo.push(
                     SetTypeCommand(
                         self._lst, self._tab, row, LC_types[key]
diff --git a/src/View/LateralContribution/Window.py b/src/View/LateralContribution/Window.py
index 2793ee36990648221c5d45bf07294612a34410f1..467f2a4b40a6f45f826939c91e952555f2563a2a 100644
--- a/src/View/LateralContribution/Window.py
+++ b/src/View/LateralContribution/Window.py
@@ -53,16 +53,13 @@ from View.LateralContribution.Table import (
     TableModel, ComboBoxDelegate
 )
 
-from View.Plot.MplCanvas import MplCanvas
+from View.Tools.Plot.PamhyrCanvas import MplCanvas
 from View.Geometry.PlotXY import PlotXY
 from View.LateralContribution.translate import (
-    long_types, table_headers, LC_types,
-    retranslate,
+    LC_types, LCTranslate,
 )
 from View.LateralContribution.Edit.Window import EditLateralContributionWindow
 
-_translate = QCoreApplication.translate
-
 logger = logging.getLogger()
 
 class LateralContributionWindow(PamhyrWindow):
@@ -75,6 +72,7 @@ class LateralContributionWindow(PamhyrWindow):
         super(LateralContributionWindow, self).__init__(
             title = name,
             study = study,
+            trad = LCTranslate(),
             config = config,
             parent=parent
         )
@@ -86,7 +84,6 @@ class LateralContributionWindow(PamhyrWindow):
         self.setup_connections()
 
     def setup_table(self):
-        retranslate()
         self._table = {}
 
         for t in ["liquid", "solid", "suspenssion"]:
@@ -94,19 +91,21 @@ class LateralContributionWindow(PamhyrWindow):
                 data = self._study.river,
                 mode = "type",
                 tab = t,
+                trad = self._trad,
                 parent=self
             )
             self._delegate_edge = ComboBoxDelegate(
                 data = self._study.river,
                 mode = "edge",
                 tab = t,
+                trad = self._trad,
                 parent=self
             )
 
             table = self.find(QTableView, f"tableView_{t}")
             self._table[t] = TableModel(
                 table_view = table,
-                table_headers = table_headers,
+                table_headers = self._trad.get_dict("table_headers"),
                 editable_headers = True,
                 delegates = {
                     "type": self._delegate_type,
@@ -114,6 +113,7 @@ class LateralContributionWindow(PamhyrWindow):
                 },
                 data = self._study.river,
                 undo = self._undo_stack,
+                trad = self._trad,
                 opt_data = t,
             )
             table.setModel(self._table[t])
diff --git a/src/View/LateralContribution/translate.py b/src/View/LateralContribution/translate.py
index cf430824e155df8d6378974deaf763de8e18f37c..aaf44798ce9c7ba2f04f4949c8f6e9c6c816b26c 100644
--- a/src/View/LateralContribution/translate.py
+++ b/src/View/LateralContribution/translate.py
@@ -18,27 +18,14 @@
 
 from PyQt5.QtCore import QCoreApplication
 
+from View.Tools.PamhyrTranslate import PamhyrTranslate
+
 from Model.LateralContribution.LateralContributionTypes import (
     NotDefined, LateralContrib, Rain, Evaporation,
 )
 
 _translate = QCoreApplication.translate
 
-long_types = {
-    "ND": _translate("LateralContribution", "Not defined"),
-    "LC": _translate("LateralContribution", "Lateral contribution"),
-    "RA": _translate("LateralContribution", "Rain"),
-    "EV": _translate("LateralContribution", "Evaporation"),
-}
-
-table_headers = {
-    "name": _translate("LateralContribution", "Name"),
-    "type": _translate("LateralContribution", "Type"),
-    "edge": _translate("LateralContribution", "Reach"),
-    "begin_kp": _translate("LateralContribution", "Begin kp (m)"),
-    "end_kp": _translate("LateralContribution", "End kp (m)")
-}
-
 LC_types = {
     "ND": NotDefined,
     "LC": LateralContrib,
@@ -46,14 +33,21 @@ LC_types = {
     "EV": Evaporation,
 }
 
-def retranslate():
-    table_headers["name"] = _translate("LateralContribution", "Name")
-    table_headers["type"] = _translate("LateralContribution", "Type")
-    table_headers["edge"] = _translate("LateralContribution", "Reach")
-    table_headers["begin_kp"] = _translate("LateralContribution", "Begin kp (m)")
-    table_headers["end_kp"] = _translate("LateralContribution", "End kp (m)")
-
-    long_types["ND"] = _translate("LateralContribution", "Not defined")
-    long_types["LC"] = _translate("LateralContribution", "Lateral contribution")
-    long_types["RA"] = _translate("LateralContribution", "Rain")
-    long_types["EV"] = _translate("LateralContribution", "Evaporation")
+class LCTranslate(PamhyrTranslate):
+    def __init__(self):
+        super(LCTranslate, self).__init__()
+
+        self._sub_dict["long_types"] = {
+            "ND": _translate("LateralContribution", "Not defined"),
+            "LC": _translate("LateralContribution", "Lateral contribution"),
+            "RA": _translate("LateralContribution", "Rain"),
+            "EV": _translate("LateralContribution", "Evaporation"),
+        }
+
+        self._sub_dict["table_headers"] = {
+            "name": _translate("LateralContribution", "Name"),
+            "type": _translate("LateralContribution", "Type"),
+            "edge": _translate("LateralContribution", "Reach"),
+            "begin_kp": _translate("LateralContribution", "Begin kp (m)"),
+            "end_kp": _translate("LateralContribution", "End kp (m)")
+        }
diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index 266dc321f92b3098fa2e42893107500eaf4c3f99..5ee7a3828fd8ccbdcf3d6d26b3122f16f92f3e27 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -46,7 +46,7 @@ from View.About.Window import AboutWindow
 from View.Network.Window import NetworkWindow
 from View.Geometry.Window import GeometryWindow
 from View.BoundaryCondition.Window import BoundaryConditionWindow
-# from View.LateralContribution.Window import LateralContributionWindow
+from View.LateralContribution.Window import LateralContributionWindow
 # from View.InitialConditions.Window import InitialConditionsWindow
 # from View.Stricklers.Window import StricklersWindow
 # from View.Frictions.Window import FrictionsWindow
diff --git a/src/View/Tools/PamhyrWidget.py b/src/View/Tools/PamhyrWidget.py
index 8c85b1c1af450c3c39bb79b2f308f5f2fb80582a..f906beedd3dc2d8e836c53c5d75c1a197f905248 100644
--- a/src/View/Tools/PamhyrWidget.py
+++ b/src/View/Tools/PamhyrWidget.py
@@ -18,6 +18,8 @@
 
 import logging
 
+from datetime import datetime, timedelta
+
 from PyQt5.QtCore import (
     QModelIndex, QRect, QTime, QDateTime,
 )