diff --git a/build/BudgetMaster.exe b/build/BudgetMaster.exe
index 2ff0bfbb6a2c64c1fd953e11eaadff5e794f9a30..5f7212cad765df8b57cf4902b6ba1093ae5e4f1f 100644
Binary files a/build/BudgetMaster.exe and b/build/BudgetMaster.exe differ
diff --git a/build/BudgetMasterClient.jar b/build/BudgetMasterClient.jar
index 53e31589429795df24e10cdec4e42614481150a3..b18685566ba91f3f658051275ee038bc28d41bec 100644
Binary files a/build/BudgetMasterClient.jar and b/build/BudgetMasterClient.jar differ
diff --git a/build/BudgetMasterServer.jar b/build/BudgetMasterServer.jar
index 1afb6dd03c03deb89a07c2a8e7a1970b114858cb..3133317cd7b41133781f30d616c65536745ff7fa 100644
Binary files a/build/BudgetMasterServer.jar and b/build/BudgetMasterServer.jar differ
diff --git a/build/screenshots/einstellungen.png b/build/screenshots/einstellungen.png
index a5ba126f7735637eaa591752aad52a47ac8ae725..276a01e48109851a5e0b1bfc5d36869ee7f3d920 100644
Binary files a/build/screenshots/einstellungen.png and b/build/screenshots/einstellungen.png differ
diff --git a/build/settings.json b/build/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..d2281ffa1e99ec74bc91d8b444c3a43dcf93f26b
--- /dev/null
+++ b/build/settings.json
@@ -0,0 +1,10 @@
+{
+	"databaseUrl": "jdbc:mysql://localhost:3306/",
+	"databaseName": "budgetmaster",
+	"databaseUsername": "root",
+	"databasePassword": "",
+	"serverPort": 9000,
+	"serverSecret": "geheim",
+	"keystorePath": "",
+	"keystorePassword": ""
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/Category.java b/src/de/deadlocker8/budgetmaster/logic/Category.java
index 29c523ae028ab6709db76c641e9a2b0022498f70..8c958bd05423425d659b10231613d6b0d6155922 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Category.java
+++ b/src/de/deadlocker8/budgetmaster/logic/Category.java
@@ -1,20 +1,21 @@
 package de.deadlocker8.budgetmaster.logic;
 
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import tools.Localization;
 
 public class Category
 {
 	private int ID;
 	private String name;
-	private Color color;
+	private String color;
 
-	public Category(String name, Color color)
+	public Category(String name, String color)
 	{
 		this.name = name;
 		this.color = color;
 	}
 
-	public Category(int ID, String name, Color color)
+	public Category(int ID, String name, String color)
 	{
 		this.ID = ID;
 		this.name = name;
@@ -27,7 +28,12 @@ public class Category
 	}
 
 	public String getName()
-	{
+	{	    
+	    if(ID == 1)
+	    {
+	        return Localization.getString(Strings.CATEGORY_NONE);
+	    }
+	    
 		return name;
 	}
 
@@ -36,12 +42,12 @@ public class Category
 		this.name = name;
 	}
 
-	public Color getColor()
+	public String getColor()
 	{
 		return color;
 	}
 
-	public void setColor(Color color)
+	public void setColor(String color)
 	{
 		this.color = color;
 	}
diff --git a/src/de/deadlocker8/budgetmaster/logic/CategoryBudget.java b/src/de/deadlocker8/budgetmaster/logic/CategoryBudget.java
index 35457be494cd81e7ab2cc7af27c81ff95e79d303..d4ddeb3b996b6f36a8649615c9096d33ab35b048 100644
--- a/src/de/deadlocker8/budgetmaster/logic/CategoryBudget.java
+++ b/src/de/deadlocker8/budgetmaster/logic/CategoryBudget.java
@@ -1,40 +1,26 @@
 package de.deadlocker8.budgetmaster.logic;
 
-import javafx.scene.paint.Color;
-
 public class CategoryBudget
 {
-	private String name;
-	private Color color;
+	private Category category;
 	private double budget;
 	
-	public CategoryBudget(String name, Color color, double budget)
+	public CategoryBudget(Category category, double budget)
 	{
-		this.name = name;
-		this.color = color;
+		this.category = category;		
 		this.budget = budget;
-	}
-
-	public String getName()
-	{
-		return name;
-	}
+	}	
 
-	public void setName(String name)
+	public Category getCategory()
 	{
-		this.name = name;
+		return category;
 	}
 
-	public Color getColor()
+	public void setCategory(Category category)
 	{
-		return color;
+		this.category = category;
 	}
 
-	public void setColor(Color color)
-	{
-		this.color = color;
-	}	
-
 	public double getBudget()
 	{
 		return budget;
@@ -48,6 +34,6 @@ public class CategoryBudget
 	@Override
 	public String toString()
 	{
-		return "CategoryBudget [name=" + name + ", color=" + color + ", budget=" + budget + "]";
+		return "CategoryBudget [category=" + category + ", budget=" + budget + "]";
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/CategoryHandler.java b/src/de/deadlocker8/budgetmaster/logic/CategoryHandler.java
index f47381e8b532c95ef8ca079fe480bb610b095587..974d26d0d440ca897004d346431a698f22af9a85 100644
--- a/src/de/deadlocker8/budgetmaster/logic/CategoryHandler.java
+++ b/src/de/deadlocker8/budgetmaster/logic/CategoryHandler.java
@@ -2,7 +2,8 @@ package de.deadlocker8.budgetmaster.logic;
 
 import java.util.ArrayList;
 
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import tools.Localization;
 
 public class CategoryHandler
 {
@@ -13,7 +14,16 @@ public class CategoryHandler
 		this.categories = new ArrayList<>();
 		if(categories != null)
 		{
-			this.categories.addAll(categories);
+			this.categories.addAll(categories);		
+		
+			//set correct localized name for category "rest"
+			for(Category currentCategory : categories)
+			{
+				if(currentCategory.getID() == 2)
+				{
+					currentCategory.setName(Localization.getString(Strings.CATEGORY_REST));
+				}
+			}
 		}
 	}
 
@@ -32,6 +42,6 @@ public class CategoryHandler
 			}
 		}
 		
-		return new Category(1, "NONE", Color.web("#FFFFFF"));
+		return new Category(1, "NONE", "#FFFFFF");
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/CategoryInOutSum.java b/src/de/deadlocker8/budgetmaster/logic/CategoryInOutSum.java
index 4b49c5b10d088b5b6a51ddf7c14a03d82e918c40..5c9d569eee2847d48417a9cc0caee7a5ad5d0e4d 100644
--- a/src/de/deadlocker8/budgetmaster/logic/CategoryInOutSum.java
+++ b/src/de/deadlocker8/budgetmaster/logic/CategoryInOutSum.java
@@ -1,16 +1,17 @@
 package de.deadlocker8.budgetmaster.logic;
 
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import tools.Localization;
 
 public class CategoryInOutSum
 {
 	private int ID;
 	private String name;
-	private Color color;
+	private String color;
 	private int budgetIN;
 	private int budgetOUT;	
 	
-	public CategoryInOutSum(int ID, String name, Color color, int budgetIN, int budgetOUT)
+	public CategoryInOutSum(int ID, String name, String color, int budgetIN, int budgetOUT)
 	{		
 		this.ID = ID;
 		this.name = name;
@@ -20,21 +21,26 @@ public class CategoryInOutSum
 	}
 
 	public String getName()
-	{
-		return name;
-	}
+    {       
+        if(ID == 1)
+        {
+            return Localization.getString(Strings.CATEGORY_NONE);
+        }
+        
+        return name;
+    }
 	
 	public void setName(String name)
 	{
 		this.name = name;
 	}
 
-	public Color getColor()
+	public String getColor()
 	{
 		return color;
 	}
 	
-	public void setColor(Color color)
+	public void setColor(String color)
 	{
 		this.color = color;
 	}
diff --git a/src/de/deadlocker8/budgetmaster/logic/Settings.java b/src/de/deadlocker8/budgetmaster/logic/Settings.java
index 0a633663eefc9316b73cdcdea657d440a85dff0b..29da9144f034f48ca750422b9ab76899a8a21eb7 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Settings.java
+++ b/src/de/deadlocker8/budgetmaster/logic/Settings.java
@@ -2,6 +2,8 @@ package de.deadlocker8.budgetmaster.logic;
 
 import java.util.ArrayList;
 
+import de.deadlocker8.budgetmaster.logic.utils.LanguageType;
+
 public class Settings
 {
 	private String clientSecret;
@@ -10,6 +12,7 @@ public class Settings
 	private String currency;
 	private boolean restActivated;
 	private ArrayList<String> trustedHosts;
+	private LanguageType language;
 	
 	public Settings()
 	{
@@ -74,8 +77,18 @@ public class Settings
 	public void setTrustedHosts(ArrayList<String> trustedHosts)
 	{
 		this.trustedHosts = trustedHosts;
-	}
+	}	
 	
+	public LanguageType getLanguage()
+	{
+		return language;
+	}
+
+	public void setLanguage(LanguageType language)
+	{
+		this.language = language;
+	}
+
 	public boolean isComplete()
 	{
 		if(url == null)
@@ -91,6 +104,6 @@ public class Settings
 	@Override
 	public String toString()
 	{
-		return "Settings [clientSecret=" + clientSecret + ", url=" + url + ", secret=" + secret + ", currency=" + currency + ", restActivated=" + restActivated + ", trustedHosts=" + trustedHosts + "]";
+		return "Settings [clientSecret=" + clientSecret + ", url=" + url + ", secret=" + secret + ", currency=" + currency + ", restActivated=" + restActivated + ", trustedHosts=" + trustedHosts + ", language=" + language + "]";
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java b/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
index 46c039508c72f972cbd4a741945d83300f0de304..6668f410c097cd11eb64d7764bbf306f87be0057 100644
--- a/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
@@ -3,7 +3,9 @@ package de.deadlocker8.budgetmaster.logic.charts;
 import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.Scene;
@@ -21,6 +23,7 @@ import javafx.scene.transform.Transform;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class CategoriesChart extends VBox implements ChartExportable
 {
@@ -85,7 +88,7 @@ public class CategoriesChart extends VBox implements ChartExportable
 		for(CategoryInOutSum currentItem : categoryInOutSums)
 		{
 			Label currentPart = new Label();
-			currentPart.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(currentItem.getColor()));
+			currentPart.setStyle("-fx-background-color: " + currentItem.getColor());
 			currentPart.prefHeightProperty().bind(chart.heightProperty());
 			chart.getChildren().add(currentPart);
 
@@ -104,14 +107,11 @@ public class CategoriesChart extends VBox implements ChartExportable
 
 			currentPart.prefWidthProperty().bind(chart.widthProperty().multiply(percentage));
 			
-			String categoryName = currentItem.getName();
-			if(categoryName.equals("NONE"))
-			{
-				categoryName = "Keine Kategorie";
-			}
-			
 			Tooltip tooltip = new Tooltip();
-			tooltip.setText(categoryName + "\n" + Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.getCurrencyString(value, currency));//
+			tooltip.setText(Localization.getString(Strings.TOOLTIP_CHART_CATEGORIES,
+			                                       currentItem.getName(),
+			                                       Helpers.NUMBER_FORMAT.format(percentage * 100),
+			                                       Helpers.getCurrencyString(value, currency)));
 			currentPart.setTooltip(tooltip);
 		}
 
@@ -127,7 +127,7 @@ public class CategoriesChart extends VBox implements ChartExportable
 		legend.setHgap(20);
 		legend.setVgap(10);
 		legend.setAlignment(Pos.CENTER);
-		legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
+		legend.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_CHART_LEGEND) + "; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
 
 		if(categoryInOutSums.size() == 0)
 		{
@@ -136,13 +136,8 @@ public class CategoriesChart extends VBox implements ChartExportable
 		
 		ArrayList<HBox> legendItems = new ArrayList<>();
 		for(CategoryInOutSum currentItem : categoryInOutSums)
-		{
-			String label = currentItem.getName();
-			if(label.equals("NONE"))
-			{
-				label = "Keine Kategorie";
-			}
-			legendItems.add(getLegendItem(label, currentItem.getColor()));
+		{			
+			legendItems.add(getLegendItem(currentItem.getName(), Color.web(currentItem.getColor())));
 		}
 
 		int legendWidth;
@@ -171,7 +166,7 @@ public class CategoriesChart extends VBox implements ChartExportable
 		VBox legend = new VBox();
 		legend.setPadding(new Insets(10));
 		legend.setSpacing(10);
-		legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
+		legend.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_CHART_LEGEND) + "; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
 
 		if(categoryInOutSums.size() == 0)
 		{
@@ -198,36 +193,30 @@ public class CategoriesChart extends VBox implements ChartExportable
 		labelHeaderSpacer.setMinHeight(20);
 		vboxCircles.getChildren().add(labelHeaderSpacer);
 		
-		Label labelHeaderName = new Label("Kategorie");
+		Label labelHeaderName = new Label(Localization.getString(Strings.TITLE_CATEGORIES));
 		labelHeaderName.setStyle("-fx-font-weight: bold; -fx-underline: true;");
 		labelHeaderName.setMinHeight(20);
 		vboxNames.getChildren().add(labelHeaderName);	
 		
-		Label labelHeaderIn = new Label("Einnahmen");
+		Label labelHeaderIn = new Label(Localization.getString(Strings.TITLE_INCOMES));
 		labelHeaderIn.setStyle("-fx-font-weight: bold; -fx-underline: true;");
 		labelHeaderIn.setMinHeight(20);
 		vboxIn.getChildren().add(labelHeaderIn);		
 		
-		Label labelHeaderOut = new Label("Ausgaben");
+		Label labelHeaderOut = new Label(Localization.getString(Strings.TITLE_PAYMENTS));
 		labelHeaderOut.setStyle("-fx-font-weight: bold; -fx-underline: true;");
 		labelHeaderOut.setMinHeight(20);
 		vboxOut.getChildren().add(labelHeaderOut);		
 		
 		for(CategoryInOutSum currentItem : categoryInOutSums)
-		{
-			String name = currentItem.getName();
-			if(name.equals("NONE"))
-			{
-				name = "Keine Kategorie";
-			}
-			
+		{	
 			Label labelCircle = new Label();
 			labelCircle.setMinWidth(20);
 			labelCircle.setMinHeight(20);
-			labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(currentItem.getColor()) + "; -fx-background-radius: 50%; -fx-border-width: 1; -fx-border-color: black - fx-border-radius: 50%");
+			labelCircle.setStyle("-fx-background-color: " + currentItem.getColor() + "; -fx-background-radius: 50%; -fx-border-width: 1; -fx-border-color: black - fx-border-radius: 50%");
 			vboxCircles.getChildren().add(labelCircle);
 
-			Label labelName = new Label(name);
+			Label labelName = new Label(currentItem.getName());
 			labelName.setStyle("-fx-font-weight: bold;");
 			labelName.setMinHeight(20);
 			vboxNames.getChildren().add(labelName);
@@ -291,7 +280,7 @@ public class CategoriesChart extends VBox implements ChartExportable
 		}
 		return total;
 	}
-
+	
 	@Override
 	public WritableImage export(int width, int height)
 	{
diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java b/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
index 6251812423272a5e189beb9be99c40f92dcb19d3..4a0cef86ecea45aafbf1395feee06142dfb01dec 100644
--- a/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
@@ -4,7 +4,9 @@ import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
 import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import javafx.geometry.Insets;
 import javafx.geometry.Orientation;
 import javafx.geometry.Pos;
@@ -28,6 +30,7 @@ import javafx.scene.transform.Transform;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class MonthBarChart extends VBox implements ChartExportable
 {
@@ -115,7 +118,7 @@ public class MonthBarChart extends VBox implements ChartExportable
 		for(CategoryInOutSum currentItem : categoryInOutSums)
 		{
 			Label currentPart = new Label();
-			currentPart.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(currentItem.getColor()));
+			currentPart.setStyle("-fx-background-color: " + currentItem.getColor());
 			currentPart.prefWidthProperty().bind(chart.widthProperty());
 			chart.getChildren().add(currentPart);
 
@@ -134,14 +137,11 @@ public class MonthBarChart extends VBox implements ChartExportable
 			currentPart.setMinHeight(0);
 			currentPart.prefHeightProperty().bind(chart.heightProperty().multiply(percentage));	
 
-			String categoryName = currentItem.getName();
-			if(categoryName.equals("NONE"))
-			{
-				categoryName = "Keine Kategorie";
-			}
-			
 			Tooltip tooltip = new Tooltip();
-			tooltip.setText(categoryName + "\n"+ Helpers.NUMBER_FORMAT.format(percentage * 100) + " %\n" + Helpers.NUMBER_FORMAT.format(value).replace(".", ",") + currency);//
+			tooltip.setText(Localization.getString(Strings.TOOLTIP_CHART_CATEGORIES,
+                                                    currentItem.getName(),
+                                                    Helpers.NUMBER_FORMAT.format(percentage * 100),
+                                                    Helpers.getCurrencyString(value, currency)));
 			currentPart.setTooltip(tooltip);
 		}
 
@@ -158,7 +158,7 @@ public class MonthBarChart extends VBox implements ChartExportable
 		legend.setHgap(20);
 		legend.setVgap(10);
 		legend.setAlignment(Pos.CENTER);
-		legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
+		legend.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_CHART_LEGEND) + "; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
 		
 		if(monthInOutSums.size() == 0)
 		{
@@ -167,13 +167,8 @@ public class MonthBarChart extends VBox implements ChartExportable
 		
 		ArrayList<HBox> legendItems = new ArrayList<>();
 		for(CategoryInOutSum currentItem : monthInOutSums.get(0).getSums())
-		{
-			String label = currentItem.getName();
-			if(label.equals("NONE"))
-			{
-				label = "Keine Kategorie";
-			}
-			legendItems.add(getLegendItem(label, currentItem.getColor()));
+		{			
+			legendItems.add(getLegendItem(currentItem.getName(), Color.web(currentItem.getColor())));
 		}
 
 		int legendWidth;
diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java b/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
index af5152f69354a666eb8f4993bf29bddbbff8a88e..b4e02909204f200a21c787cd48745ba009a1b023 100644
--- a/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
@@ -5,7 +5,9 @@ import java.util.Iterator;
 import java.util.Set;
 
 import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import javafx.event.EventHandler;
 import javafx.geometry.Insets;
 import javafx.geometry.Point2D;
@@ -24,6 +26,8 @@ import javafx.scene.layout.VBox;
 import javafx.scene.transform.Transform;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
+import tools.ConvertTo;
+import tools.Localization;
 
 public class MonthLineChart extends VBox implements ChartExportable
 {
@@ -48,12 +52,12 @@ public class MonthLineChart extends VBox implements ChartExportable
 		generatedChart.setAnimated(animated);
 
 		xAxis.setLabel("");
-		yAxis.setLabel("Summe in " + currency);
+		yAxis.setLabel(Localization.getString(Strings.CHART_MONTH_LINE_SUM, currency));
 
 		XYChart.Series<String, Number> seriesIN = new XYChart.Series<String, Number>();
-		seriesIN.setName("Einnahmen");
+		seriesIN.setName(Localization.getString(Strings.TITLE_INCOMES));
 		XYChart.Series<String, Number> seriesOUT = new XYChart.Series<String, Number>();
-		seriesOUT.setName("Ausgaben");
+		seriesOUT.setName(Localization.getString(Strings.TITLE_PAYMENTS));
 
 		for(MonthInOutSum currentItem : monthInOutSums)
 		{
@@ -100,25 +104,25 @@ public class MonthLineChart extends VBox implements ChartExportable
 		// style line for incomes
 		for(Node n : generatedChart.lookupAll(".default-color0.chart-series-line"))
 		{
-			n.setStyle("-fx-stroke: " + Helpers.COLOR_INCOME + ";");
+			n.setStyle("-fx-stroke: " + ConvertTo.toRGBHexWithoutOpacity(Colors.INCOME) + ";");
 		}
 		
 		// style line dots for incomes
 		for(Node n : generatedChart.lookupAll(".default-color0.chart-line-symbol"))
 		{
-			n.setStyle("-fx-background-color: " + Helpers.COLOR_INCOME + ", white;");
+			n.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.INCOME) + ", white;");
 		}
 
 		// style line for payments
 		for(Node n : generatedChart.lookupAll(".default-color1.chart-series-line"))
 		{
-			n.setStyle("-fx-stroke: " + Helpers.COLOR_PAYMENT + ";");
+			n.setStyle("-fx-stroke: " + ConvertTo.toRGBHexWithoutOpacity(Colors.PAYMENT) + ";");
 		}
 		
 		// style line dots for payments
 		for(Node n : generatedChart.lookupAll(".default-color1.chart-line-symbol"))
 		{
-			n.setStyle("-fx-background-color: " + Helpers.COLOR_PAYMENT + ", white;");
+			n.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.PAYMENT) + ", white;");
 		}
 
 		// style legend item according to color
@@ -135,11 +139,11 @@ public class MonthLineChart extends VBox implements ChartExportable
 					Label labelLegendItem = (Label)node;
 					if(counter == 0)
 					{
-						labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_INCOME + ";");
+						labelLegendItem.getGraphic().setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.INCOME) + ";");
 					}
 					else
 					{
-						labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_PAYMENT + ";");
+						labelLegendItem.getGraphic().setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.PAYMENT) + ";");
 					}
 				}
 				counter++;
diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java b/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java
index e810df6179e46af257690ba2648abbd5139a8303..313f400cee9784d5483e9fd0d8f11fca3be23902 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java
@@ -1,15 +1,18 @@
 package de.deadlocker8.budgetmaster.logic.report;
 
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import tools.Localization;
+
 public enum ColumnType
 {
-	POSITION("Nr.", 1),
-	DATE("Datum", 2),
-	REPEATING("Wiederholend", 1),
-	CATEGORY("Kategorie", 3),
-	NAME("Name", 3),
-	DESCRIPTION("Notiz", 3), 
-	RATING("+/-", 1), 
-	AMOUNT("Betrag", 2);
+	POSITION(Strings.REPORT_POSITION, 1),
+	DATE(Strings.REPORT_DATE, 2),
+	REPEATING(Strings.REPORT_REPEATING, 1),
+	CATEGORY(Strings.REPORT_CATEGORY, 3),
+	NAME(Strings.REPORT_NAME, 3),
+	DESCRIPTION(Strings.REPORT_DESCRIPTION, 3), 
+	RATING(Strings.REPORT_RATING, 1), 
+	AMOUNT(Strings.REPORT_AMOUNT, 2);
 	
 	private String name;
 	private float proportion;
@@ -22,7 +25,7 @@ public enum ColumnType
 
 	public String getName()
 	{
-		return name;
+		return Localization.getString(name);
 	}
 
 	public float getProportion()
diff --git a/src/de/deadlocker8/budgetmaster/logic/report/HeaderFooterPageEvent.java b/src/de/deadlocker8/budgetmaster/logic/report/HeaderFooterPageEvent.java
index 5eff761741caa39d961e6e88c15df86b0e56328a..6909497dfde3d30c06981bf4a88239f284e8ecc3 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/HeaderFooterPageEvent.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/HeaderFooterPageEvent.java
@@ -12,6 +12,9 @@ import com.itextpdf.text.pdf.GrayColor;
 import com.itextpdf.text.pdf.PdfPageEventHelper;
 import com.itextpdf.text.pdf.PdfWriter;
 
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import tools.Localization;
+
 public class HeaderFooterPageEvent extends PdfPageEventHelper
 {
 	public void onStartPage(PdfWriter writer, Document document)
@@ -23,8 +26,8 @@ public class HeaderFooterPageEvent extends PdfPageEventHelper
 	{
 		Font font = new Font(FontFamily.HELVETICA, 8, Font.NORMAL, GrayColor.BLACK);
 
-		ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("BudgetMaster Monatsbericht", font), 100, 25, 0);
-		ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("Seite " + document.getPageNumber(), font), 300, 25, 0);
+		ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(Localization.getString(Strings.REPORT_FOOTER_LEFT), font), 100, 25, 0);
+		ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(Localization.getString(Strings.REPORT_FOOTER_LEFT, document.getPageNumber()), font), 300, 25, 0);
 		ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(DateTime.now().toString("dd.MM.YYYY"), font), 500, 25, 0);
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
index fcf3ad8cd78ceb6a9a2f1d79f0c34ed7971061de..f67740ae4e959045076f06b94b7ef08f9737c0cc 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
@@ -27,6 +27,8 @@ import com.itextpdf.text.pdf.PdfWriter;
 import de.deadlocker8.budgetmaster.logic.Budget;
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import tools.Localization;
 
 public class ReportGenerator
 {
@@ -58,10 +60,10 @@ public class ReportGenerator
 	private Chapter generateHeader()
 	{
 		Font chapterFont = new Font(FontFamily.HELVETICA, 16, Font.BOLDITALIC);		
-		Chunk chunk = new Chunk("Monatsbericht - " + date.toString("MMMM yyyy"), chapterFont);
+		Chunk chunk = new Chunk(Localization.getString(Strings.REPORT_HEADLINE, date.toString("MMMM yyyy")), chapterFont);
 		Chapter chapter = new Chapter(new Paragraph(chunk), 1);
 		chapter.setNumberDepth(0);
-		chapter.add(Chunk.NEWLINE);		
+		chapter.add(Chunk.NEWLINE);
 		return chapter;
 	}
 
@@ -126,13 +128,13 @@ public class ReportGenerator
 				case BOTH:
 					String totalIncomeString = Helpers.getCurrencyString(totalIncome, currency);
 					String totalPaymentString = Helpers.getCurrencyString(totalPayment, currency);
-					total = "Einnahmen: " + totalIncomeString + " / Ausgaben: " + totalPaymentString;
+					total = Localization.getString(Strings.REPORT_SUM_TOTAL, totalIncomeString, totalPaymentString);
 					break;
 				case INCOME:
-					total = "Summe: " + Helpers.getCurrencyString(totalIncome, currency);
+					total = Localization.getString(Strings.REPORT_SUM, Helpers.getCurrencyString(totalIncome, currency));
 					break;
 				case PAYMENT:
-					total = "Summe: " + Helpers.getCurrencyString(totalPayment, currency);
+					total = Localization.getString(Strings.REPORT_SUM, Helpers.getCurrencyString(totalPayment, currency));
 					break;
 				default:
 					break;
@@ -171,17 +173,18 @@ public class ReportGenerator
 			document.add(Chunk.NEWLINE);
 			document.add(new Paragraph("Einnahmen: " + Helpers.getCurrencyString(budget.getIncomeSum(), currency), fontGreen));
 			document.add(new Paragraph("Ausgaben: " + Helpers.getCurrencyString(budget.getPaymentSum(), currency), fontRed));
-			document.add(new Paragraph("Restbudget: " + Helpers.getCurrencyString(budget.getIncomeSum()-budget.getPaymentSum(), currency), fontBlack));			
+			document.add(new Paragraph("Restbudget: " + Helpers.getCurrencyString(budget.getIncomeSum() + budget.getPaymentSum(), currency), fontBlack));			
 			document.add(Chunk.NEWLINE);
 		}
 		
-		document.add(new Paragraph("Buchungsübersicht", headerFont));
+		document.add(new Paragraph(Localization.getString(Strings.REPORT_HEADLINE_PAYMENTS_OVERVIEW), headerFont));
 		document.add(Chunk.NEWLINE);
 
 		if(splitTable)
 		{
-			document.add(new Paragraph("Einnahmen", smallHeaderFont));
+			document.add(new Paragraph(Localization.getString(Strings.TITLE_INCOMES), smallHeaderFont));
 			document.add(Chunk.NEWLINE);
+			
 			PdfPTable table = generateTable(100, AmountType.INCOME);
 			if(table != null)
 			{
@@ -189,8 +192,9 @@ public class ReportGenerator
 			}
 
 			document.add(Chunk.NEWLINE);
-			document.add(new Paragraph("Ausgaben", smallHeaderFont));
+			document.add(new Paragraph(Localization.getString(Strings.TITLE_PAYMENTS), smallHeaderFont));			
 			document.add(Chunk.NEWLINE);
+			
 			table = generateTable(100, AmountType.PAYMENT);
 			if(table != null)
 			{
@@ -209,8 +213,9 @@ public class ReportGenerator
 		if(includeCategoryBudgets)
 		{
 			document.add(Chunk.NEWLINE);
-			document.add(new Paragraph("Verbrauch nach Kategorien", headerFont));
+			document.add(new Paragraph(Localization.getString(Strings.TITLE_CATEGORY_BUDGETS), headerFont));
 			document.add(Chunk.NEWLINE);
+			
 			PdfPTable table = generateCategoryBudgets();
 			if(table != null)
 			{
@@ -228,23 +233,18 @@ public class ReportGenerator
 		Font font = new Font(FontFamily.HELVETICA, 8, Font.NORMAL, GrayColor.BLACK);
 		
 		//header cells
-		PdfPCell cellHeaderCategory = new PdfPCell(new Phrase("Kategorie", font));
+		PdfPCell cellHeaderCategory = new PdfPCell(new Phrase(Localization.getString(Strings.TITLE_CATEGORY), font));
 		cellHeaderCategory.setBackgroundColor(GrayColor.LIGHT_GRAY);
 		cellHeaderCategory.setHorizontalAlignment(Element.ALIGN_CENTER);
 		table.addCell(cellHeaderCategory);
-		PdfPCell cellHeaderAmount = new PdfPCell(new Phrase("Betrag", font));
+		PdfPCell cellHeaderAmount = new PdfPCell(new Phrase(Localization.getString(Strings.TITLE_AMOUNT), font));
 		cellHeaderAmount.setBackgroundColor(GrayColor.LIGHT_GRAY);
 		cellHeaderAmount.setHorizontalAlignment(Element.ALIGN_CENTER);
 		table.addCell(cellHeaderAmount);		
 
 		for(CategoryBudget budget : categoryBudgets)
-		{			
-			String name = budget.getName();
-			if(name.equals("NONE"))
-			{
-				name = "Keine Kategorie";
-			}			
-			PdfPCell cellName = new PdfPCell(new Phrase(name, font));
+		{				
+			PdfPCell cellName = new PdfPCell(new Phrase(budget.getCategory().getName(), font));
 			cellName.setBackgroundColor(new BaseColor(Color.WHITE));
 			cellName.setHorizontalAlignment(Element.ALIGN_CENTER);
 			table.addCell(cellName);
@@ -264,13 +264,8 @@ public class ReportGenerator
 		{
 			case AMOUNT:
 				return Helpers.getCurrencyString(reportItem.getAmount(), currency);
-			case CATEGORY:
-				String name = reportItem.getCategory().getName();
-				if(name.equals("NONE"))
-				{
-					name = "Keine Kategorie";
-				}			
-				return name;
+			case CATEGORY:	
+				return reportItem.getCategory().getName();
 			case DATE:			    
 				return DateTime.parse(reportItem.getDate(), DateTimeFormat.forPattern("YYYY-MM-dd")).toString("dd.MM.YYYY");
 			case DESCRIPTION:
@@ -284,11 +279,11 @@ public class ReportGenerator
 			case REPEATING:	
 				if(reportItem.getRepeating())
 				{
-					return "Ja";
+					return Localization.getString(Strings.REPORT_REPEATING_YES);
 				}
 				else
 				{
-					return "Nein";
+					return Localization.getString(Strings.REPORT_REPEATING_NO);
 				}				
 			default:
 				return null;
diff --git a/src/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java
index 171a7b68a4c2f1bd054950581c29802589249054..c22912ac563283d82d669161db027d942146cf03 100644
--- a/src/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java
+++ b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java
@@ -2,6 +2,9 @@ package de.deadlocker8.budgetmaster.logic.serverconnection;
 
 import java.net.UnknownHostException;
 
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import tools.Localization;
+
 public class ExceptionHandler
 {
 	public static String getMessageForException(Exception e)
@@ -13,23 +16,21 @@ public class ExceptionHandler
 		
 		if(e instanceof UnknownHostException)
 		{
-			return "Es konnte keine Verbindung mit dem Internet hergestellt werden.";
+			return Localization.getString(Strings.ERROR_UNKNOWN_HOST);
 		}
 		
 		if(e.getMessage() == null)
 		{
-			return "Unbekannter Fehler (" + e.getClass() + ")";
+		    return Localization.getString(Strings.ERROR_UNKNOWN_ERROR, e.getClass());
 		}
 				
 		if(e.getMessage().contains("Connection refused"))
 		{
-			return "Server nicht erreichbar.";
+			return Localization.getString(Strings.ERROR_CONNECTION_REFUSED);
 		}
 		else if(e.getMessage().contains("HTTPS hostname wrong"))
 		{
-			return "Der Server verwendet ein selbst signiertes Zertifkat für die Verschlüsselung. "
-					+ "Aus Sicherheitsgründen werden diese Zertifikate standardmäßig blockiert. "
-					+ "Wenn du dem Zertifikat trotzdem vertrauen möchtest, dann füge den Hostnamen des Servers zur Liste der vertrauenswürdigen Hosts in den Einstellungen hinzu.";
+		    return Localization.getString(Strings.ERROR_HTTPS_HOSTNAME_WRONG);
 		}
 		return e.getMessage();
 	}
@@ -38,9 +39,9 @@ public class ExceptionHandler
 	{
 		switch(e.getMessage())
 		{
-			case "400": return "Der Server erhielt eine fehlerhafte Anfrage oder ungültige Parameter.";
-			case "401": return "Ungültiges Passwort.";
-			case "500": return "Beim Ausführen der Anfrage ist ein interner Serverfehler ist aufgetreten.";
+			case "400": return Localization.getString(Strings.ERROR_400);
+			case "401": return Localization.getString(Strings.ERROR_401);
+			case "500": return Localization.getString(Strings.ERROR_500);
 			default: return e.getMessage();
 		}
 	}
diff --git a/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
index a7edd958d9496f077f0854b01f9f9b5072fdf4c2..77f4a74d47d2d33bcdcffdb4b4afd0b56c21c7af 100644
--- a/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
+++ b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
@@ -28,8 +28,7 @@ import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import de.deadlocker8.budgetmasterserver.logic.Database;
-import tools.ConvertTo;
+import de.deadlocker8.budgetmasterserver.logic.database.Database;
 import tools.Read;
 
 public class ServerConnection
@@ -112,7 +111,7 @@ public class ServerConnection
 
 	public void addCategory(Category category) throws Exception
 	{
-		URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&name=" + Helpers.getURLEncodedString(category.getName()) + "&color=" + ConvertTo.toRGBHexWithoutOpacity(category.getColor()).replace("#", ""));
+		URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&name=" + Helpers.getURLEncodedString(category.getName()) + "&color=" + category.getColor().replace("#", ""));
 		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
 		httpsCon.setRequestMethod("POST");
 		httpsCon.setDoInput(true);
@@ -130,7 +129,7 @@ public class ServerConnection
 
 	public void updateCategory(Category category) throws Exception
 	{
-		URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + category.getID() + "&name=" + Helpers.getURLEncodedString(category.getName()) + "&color=" + ConvertTo.toRGBHexWithoutOpacity(category.getColor()).replace("#", ""));
+		URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + category.getID() + "&name=" + Helpers.getURLEncodedString(category.getName()) + "&color=" + category.getColor().replace("#", ""));
 		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
 		httpsCon.setRequestMethod("PUT");
 		httpsCon.setDoInput(true);
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Colors.java b/src/de/deadlocker8/budgetmaster/logic/utils/Colors.java
new file mode 100644
index 0000000000000000000000000000000000000000..5fedfa500585e77ce537bffe2c4523befb78f18b
--- /dev/null
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Colors.java
@@ -0,0 +1,35 @@
+package de.deadlocker8.budgetmaster.logic.utils;
+
+import javafx.scene.paint.Color;
+
+public class Colors 
+{
+    public static final Color TEXT = Color.web("#212121");
+    public static final Color INCOME = Color.web("#22BAD9");
+    public static final Color PAYMENT = Color.web("#F2612D");
+    public static final Color BACKGROUND = Color.web("#F4F4F4");
+    public static final Color BACKGROUND_MAIN = Color.web("#DDDDDD");
+    public static final Color BACKGROUND_BUTTON_BLUE = Color.web("#2E79B9");
+    public static final Color BACKGROUND_BUTTON_RED = Color.web("#FF5047");
+    public static final Color BACKGROUND_NOTIFICATION = Color.web("#323232");
+    public static final Color BACKGROUND_REPORT_TABLE_HEADER_DISABLED = Color.SALMON;
+    public static final Color BACKGROUND_CHART_LEGEND = Color.web("#EEEEEE");
+
+    // CATEGORIES
+    public static final Color CATEGORIES_LIGHT_GREY = Color.web("#EEEEEE");
+    public static final Color CATEGORIES_GREY = Color.web("#888888");
+    public static final Color CATEGORIES_DARK_GREY = Color.web("#333333");
+    public static final Color CATEGORIES_LIGHT_YELLOW = Color.rgb(255,241,119);
+    public static final Color CATEGORIES_YELLOW = Color.rgb(255,204,0);
+    public static final Color CATEGORIES_ORANGE = Color.rgb(255,149,0);
+    public static final Color CATEGORIES_RED = Color.rgb(255,59,48);
+    public static final Color CATEGORIES_DARK_RED = Color.rgb(169,3,41);
+    public static final Color CATEGORIES_PINK = Color.rgb(255,81,151);
+    public static final Color CATEGORIES_PURPLE = Color.rgb(155,89,182);    
+    public static final Color CATEGORIES_DARK_PURPLE = Color.rgb(88,86,214);
+    public static final Color CATEGORIES_BLUE = Color.rgb(0,122,250);
+    public static final Color CATEGORIES_LIGHT_BLUE = Color.rgb(90,200,250);
+    public static final Color CATEGORIES_LIGHT_GREEN = Color.rgb(76,217,100);
+    public static final Color CATEGORIES_DARK_GREEN = Color.rgb(46,124,43);
+
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java b/src/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java
index 2e6766f7dcbab1a416fd8db16f770706feaeb38e..0aa0e89e7f43e2bfc0d77ddf25cac2e965c69392 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java
@@ -7,26 +7,23 @@ import java.io.Writer;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.Locale;
-import java.util.ResourceBundle;
 
 import com.google.gson.Gson;
 
 import de.deadlocker8.budgetmaster.logic.Settings;
-import de.deadlocker8.budgetmasterserver.logic.Database;
+import de.deadlocker8.budgetmasterserver.logic.database.Database;
+import tools.Localization;
 import tools.PathUtils;
 
 public class FileHelper
-{
-	private static final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/budgetmaster/main/", Locale.GERMANY);
-	
+{	
 	public static Settings loadSettings()
 	{
 		Settings settings;
 		try
 		{
 			Gson gson = new Gson();			
-			Reader reader = Files.newBufferedReader(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder") + "/settings.json"), Charset.forName("UTF-8"));
+			Reader reader = Files.newBufferedReader(Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/settings.json"), Charset.forName("UTF-8"));
 			settings = gson.fromJson(reader, Settings.class);	
 			reader.close();
 			return settings;
@@ -41,8 +38,8 @@ public class FileHelper
 	{		
 		Gson gson = new Gson();
 		String jsonString = gson.toJson(settings);
-		PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + bundle.getString("folder")));
-		Writer writer = Files.newBufferedWriter(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder")  + "/settings.json"), Charset.forName("UTF-8"));
+		PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER)));
+		Writer writer = Files.newBufferedWriter(Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/settings.json"), Charset.forName("UTF-8"));
 		writer.write(jsonString);
 		writer.close();
 	}
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java b/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
index 1933a2fe17a7f8f23c0b1511f5d8fc4c8d4420bb..9c105dcde51c46379359920072cddbdfd90fac09 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
@@ -19,13 +19,11 @@ import javafx.scene.paint.Color;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import logger.Logger;
+import tools.Localization;
 
 public class Helpers
 {
 	public static final DecimalFormat NUMBER_FORMAT = new DecimalFormat("0.00");
-	
-	public static final String COLOR_INCOME = "#22BAD9";
-	public static final String COLOR_PAYMENT = "#F2612D";
 	public static final String SALT = "ny9/Y+G|WrJ,82|oIYQQ X %i-sq#4,uA-qKPtwFPnw+s(k2`rV)^-a1|t{D3Z>S";
 	
 	public static String getCurrencyString(int amount, String currency)
@@ -63,18 +61,18 @@ public class Helpers
 	public static ArrayList<String> getMonthList()
 	{
 		ArrayList<String> monthNames = new ArrayList<>();
-		monthNames.add("Januar");
-		monthNames.add("Februar");
-		monthNames.add("März");
-		monthNames.add("April");
-		monthNames.add("Mai");
-		monthNames.add("Juni");
-		monthNames.add("Juli");
-		monthNames.add("August");
-		monthNames.add("September");
-		monthNames.add("Oktober");
-		monthNames.add("November");
-		monthNames.add("Dezember");
+		monthNames.add(Localization.getString(Strings.MONTH_JANUARY));
+		monthNames.add(Localization.getString(Strings.MONTH_FEBRUARY));
+		monthNames.add(Localization.getString(Strings.MONTH_MARCH));
+		monthNames.add(Localization.getString(Strings.MONTH_APRIL));
+		monthNames.add(Localization.getString(Strings.MONTH_MAY));
+		monthNames.add(Localization.getString(Strings.MONTH_JUNE));
+		monthNames.add(Localization.getString(Strings.MONTH_JULY));
+		monthNames.add(Localization.getString(Strings.MONTH_AUGUST));
+		monthNames.add(Localization.getString(Strings.MONTH_SEPTEMBER));
+		monthNames.add(Localization.getString(Strings.MONTH_OCTOBER));
+		monthNames.add(Localization.getString(Strings.MONTH_NOVEMBER));
+		monthNames.add(Localization.getString(Strings.MONTH_DECEMBER));
 		return monthNames;
 	}
 
@@ -91,22 +89,21 @@ public class Helpers
 	public static ArrayList<Color> getCategoryColorList()
 	{
 	    ArrayList<Color> colors = new ArrayList<>();       
-        //grey (light to dark)      
-        colors.add(Color.web("#CCCCCC"));   
-        colors.add(Color.web("#888888"));       
-        colors.add(Color.web("#333333"));   
-        colors.add(Color.rgb(255, 241, 119));   //lighyellow    
-        colors.add(Color.rgb(255, 204, 0));     //yellow
-        colors.add(Color.rgb(255, 149, 0));     //orange
-        colors.add(Color.rgb(255, 59, 48));     //red
-        colors.add(Color.rgb(169, 3, 41));      //darkred   
-        colors.add(Color.rgb(255, 81, 151));    //pink
-        colors.add(Color.rgb(155, 89, 182));    //purple
-        colors.add(Color.rgb(88, 86, 214));     //darkpurple
-        colors.add(Color.rgb(0, 122, 250));     //blue      
-        colors.add(Color.rgb(90, 200, 250));    //lightblue
-        colors.add(Color.rgb(76, 217, 100));    //lightgreen
-        colors.add(Color.rgb(46, 124, 43));     //darkgreen
+        colors.add(Colors.CATEGORIES_LIGHT_GREY);        
+        colors.add(Colors.CATEGORIES_GREY);
+        colors.add(Colors.CATEGORIES_DARK_GREY);
+        colors.add(Colors.CATEGORIES_LIGHT_YELLOW);
+        colors.add(Colors.CATEGORIES_YELLOW);
+        colors.add(Colors.CATEGORIES_ORANGE);
+        colors.add(Colors.CATEGORIES_RED);
+        colors.add(Colors.CATEGORIES_DARK_RED);
+        colors.add(Colors.CATEGORIES_PINK);
+        colors.add(Colors.CATEGORIES_PURPLE);
+        colors.add(Colors.CATEGORIES_DARK_PURPLE);
+        colors.add(Colors.CATEGORIES_BLUE);
+        colors.add(Colors.CATEGORIES_LIGHT_BLUE);
+        colors.add(Colors.CATEGORIES_LIGHT_GREEN);
+        colors.add(Colors.CATEGORIES_DARK_GREEN);    
         
         return colors;
 	}
@@ -126,6 +123,7 @@ public class Helpers
 		{
 			FXMLLoader fxmlLoader = new FXMLLoader(Helpers.class.getResource("/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
+			fxmlLoader.setResources(Localization.getBundle());
 			Stage newStage = new Stage();
 			newStage.initOwner(owner);
 			newStage.initModality(Modality.APPLICATION_MODAL);
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/LanguageType.java b/src/de/deadlocker8/budgetmaster/logic/utils/LanguageType.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9ed0a08066df8eee6cd6866cbbd2702ab89bd1b
--- /dev/null
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/LanguageType.java
@@ -0,0 +1,35 @@
+package de.deadlocker8.budgetmaster.logic.utils;
+
+import java.util.Locale;
+
+public enum LanguageType
+{
+	GERMAN("Deutsch", Locale.GERMAN, "german"),
+	ENGLISH("English", Locale.ENGLISH, "english");
+	
+	private String name;
+	private Locale locale;
+	private String iconName;
+	
+	private LanguageType(String name, Locale locale, String iconName)
+	{
+		this.name = name;
+		this.locale = locale;
+		this.iconName = iconName;
+	}
+	
+	public String getName()
+	{
+		return name;
+	}
+	
+	public Locale getLocale()
+	{
+		return locale;
+	}
+
+	public String getIconName()
+	{
+		return iconName;
+	}
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e38376d818dca2360933e93bf21129adf805b02
--- /dev/null
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
@@ -0,0 +1,180 @@
+package de.deadlocker8.budgetmaster.logic.utils;
+
+public class Strings 
+{    
+    //APP_INFO
+    public static final String APP_NAME = "app.name";
+    public static final String VERSION_CODE = "version.code";
+    public static final String VERSION_NAME = "version.name";
+    public static final String VERSION_DATE = "version.date";
+    public static final String AUTHOR = "author";
+    public static final String CREDITS = "credits";
+    public static final String FOLDER = "folder";    
+    
+    //TITLE
+    public static final String TITLE_INCOMES = "title.incomes";
+    public static final String TITLE_INCOME = "title.income";
+    public static final String TITLE_PAYMENTS = "title.payments";
+    public static final String TITLE_PAYMENT = "title.payment";
+    public static final String TITLE_CATEGORY = "title.category";
+    public static final String TITLE_CATEGORIES = "title.categories";
+    public static final String TITLE_CATEGORY_BUDGETS = "title.category.budgets";
+    public static final String TITLE_AMOUNT = "title.amount";
+    public static final String TITLE_INFO = "title.info";
+    public static final String TITLE_WARNING = "title.warning";
+    public static final String TITLE_ERROR = "title.error";
+    public static final String TITLE_CATEGORY_NEW = "title.category.new";  
+    public static final String TITLE_CATEGORY_EDIT = "title.category.edit";  
+    public static final String TITLE_CHART_EXPORT = "title.chart.export";
+    public static final String TITLE_MODAL = "title.modal";
+    public static final String TITLE_PAYMENT_EDIT = "title.payment.edit";
+    public static final String TITLE_PAYMENT_NEW = "title.payment.new";
+    public static final String TITLE_FILTER = "title.filter";
+    public static final String TITLE_REPORT_SAVE = "title.report.save";
+    public static final String TITLE_DATABASE_EXPORT = "title.database.export";
+    public static final String TITLE_DATABASE_IMPORT = "title.database.import";
+    
+    //LOAD
+    public static final String LOAD_CHARTS = "load.charts";
+    public static final String LOAD_DATA = "load.data";
+    public static final String LOAD_REPORT = "load.report";
+    public static final String LOAD_DATABASE_EXPORT = "load.database.export";
+    public static final String LOAD_DATABASE_IMPORT = "load.database.import";
+    public static final String LOAD_DATABASE_DELETE = "load.database.delete";
+    
+    //MISC
+    public static final String CATEGORY_NONE = "category.none";
+    public static final String CATEGORY_REST = "category.rest";
+    public static final String TOOLTIP_CHART_CATEGORIES = "tooltip.chart.categories";
+    public static final String CHART_MONTH_LINE_SUM = "chart.month.line.sum";
+    public static final String CATEGORIES_PLACEHOLDER = "categories.placeholder";
+    public static final String CHART_CATEGORIES_TITLE_INCOMES = "chart.categories.title.incomes";
+    public static final String CHART_CATEGORIES_TITLE_PAYMENTS = "chart.categories.title.payments";
+    public static final String OK = "ok";
+    public static final String CANCEL = "cancel";
+    public static final String HOME_PLACEHOLDER = "home.placeholder";
+    public static final String HOME_BUDGET = "home.budget";
+    public static final String PAYMENTS_PLACEHOLDER = "payments.placeholder";
+    public static final String URL_PLACEHOLDER = "url.placeholder";
+    public static final String CURRENCY_PLACEHOLDER = "currency.placeholder";
+    public static final String TRUSTED_HOSTS_PLACEHOLDER = "trusted.hosts.placeholder";
+    
+    //REPORT
+    public static final String REPORT_POSITION = "report.position";
+    public static final String REPORT_DATE = "report.date";
+    public static final String REPORT_REPEATING = "report.repeating";
+    public static final String REPORT_CATEGORY = "report.category";
+    public static final String REPORT_NAME = "report.name";
+    public static final String REPORT_DESCRIPTION = "report.description";
+    public static final String REPORT_RATING = "report.rating";
+    public static final String REPORT_AMOUNT = "report.amount";
+    public static final String REPORT_HEADLINE = "report.headline";
+    public static final String REPORT_HEADLINE_PAYMENTS_OVERVIEW = "report.headline.payments.overview";
+    public static final String REPORT_SUM_TOTAL = "report.sum.total";
+    public static final String REPORT_SUM = "report.sum";
+    public static final String REPORT_FOOTER_LEFT = "report.footer.left";
+    public static final String REPORT_FOOTER_CENTER = "report.footer.center";
+    public static final String REPORT_REPEATING_YES ="report.repeating.yes";
+    public static final String REPORT_REPEATING_NO ="report.repeating.no";
+    public static final String REPORT_INITIAL_FILENAME ="report.initial.filename"; 
+    
+    //MONTH_NAMES
+    public static final String MONTH_JANUARY ="month.january"; 
+    public static final String MONTH_FEBRUARY ="month.february"; 
+    public static final String MONTH_MARCH ="month.march"; 
+    public static final String MONTH_APRIL ="month.april"; 
+    public static final String MONTH_MAY ="month.may"; 
+    public static final String MONTH_JUNE ="month.june"; 
+    public static final String MONTH_JULY ="month.july"; 
+    public static final String MONTH_AUGUST ="month.august"; 
+    public static final String MONTH_SEPTEMBER ="month.september"; 
+    public static final String MONTH_OCTOBER ="month.october"; 
+    public static final String MONTH_NOVEMBER ="month.november"; 
+    public static final String MONTH_DECEMBER ="month.december";
+    
+    //NOTIFICATION
+    public static final String NOTIFICATION_CHART_EXPORT = "notification.chart.export";
+    public static final String NOTIFICATION_REPORT_SAVE = "notification.report.save";
+    public static final String NOTIFICATION_SETTINGS_SAVE = "notification.settings.save";
+    
+    //INFO
+    public static final String INFO_TITLE_CATEGORY_DELETE = "info.title.category.delete";
+    public static final String INFO_TEXT_CATEGORY_DELETE = "info.text.category.delete";
+    public static final String INFO_TITLE_PAYMENT_DELETE = "info.title.payment.delete";
+    public static final String INFO_TEXT_PAYMENT_DELETE = "info.text.payment.delete";
+    public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE = "info.text.payment.repeating.delete";
+    public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE_ALL = "info.text.payment.repeating.delete.all";
+    public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE_FUTURES = "info.text.payment.repeating.delete.futures";
+    public static final String INFO_FIRST_START = "info.first.start";
+    public static final String INFO_TITLE_CHART_EXPORT = "info.title.chart.export";
+    public static final String INFO_TEXT_CHART_EXPORT = "info.text.chart.export";
+    public static final String INFO_TEXT_CHART_EXPORT_OPEN_FOLDER = "info.text.chart.export.open.folder";
+    public static final String INFO_TEXT_CHART_EXPORT_OPEN_CHART = "info.text.chart.export.open.chart";
+    public static final String INFO_TITLE_REPORT_SAVE = "info.title.report.save";
+    public static final String INFO_TEXT_REPORT_SAVE = "info.text.report.save";
+    public static final String INFO_TEXT_REPORT_SAVE_OPEN_FOLDER = "info.text.report.save.open.folder";
+    public static final String INFO_TEXT_REPORT_SAVE_OPEN_REPORT = "info.text.report.save.open.report";
+    public static final String INFO_TITLE_DATABASE_EXPORT = "info.title.database.export";
+    public static final String INFO_TEXT_DATABASE_EXPORT = "info.text.database.export";
+    public static final String INFO_TITLE_DATABASE_IMPORT = "info.title.database.import";
+    public static final String INFO_TEXT_DATABASE_IMPORT = "info.text.database.import";
+    public static final String INFO_TITLE_DATABASE_IMPORT_DIALOG = "info.title.database.import.dialog";
+    public static final String INFO_TEXT_DATABASE_IMPORT_DIALOG = "info.text.database.import.dialog";
+    public static final String INFO_TEXT_DATABASE_IMPORT_DIALOG_DELETE = "info.text.database.import.dialog.delete";
+    public static final String INFO_TEXT_DATABASE_IMPORT_DIALOG_APPEND = "info.text.database.import.dialog.append";
+    public static final String INFO_TITLE_DATABASE_DELETE = "info.title.database.delete";
+    public static final String INFO_HEADER_TEXT_DATABASE_DELETE = "info.header.text.database.delete";
+    public static final String INFO_TEXT_DATABASE_DELETE = "info.text.database.delete";
+    public static final String INFO_TITLE_WELCOME = "info.title.welcome";
+    public static final String INFO_HEADER_TEXT_WELCOME = "info.header.text.welcome";
+    public static final String INFO_TEXT_WELCOME_FIRST_START = "info.text.welcome.first.start";
+    public static final String INFO_TEXT_WELCOME_COMPATIBILITY = "info.text.welcome.compatibility";
+    public static final String INFO_TITLE_LANGUAGE_CHANGED = "info.title.language.changed";
+    public static final String INFO_TEXT_LANGUAGE_CHANGED = "info.text.language.changed";
+    public static final String INFO_TEXT_LANGUAGE_CHANGED_RESTART_NOW = "info.text.language.changed.restart.now";
+    public static final String INFO_TEXT_LANGUAGE_CHANGED_RESTART_LATER = "info.text.language.changed.restart.later";
+        
+    //WARNING
+    public static final String WARNING_ENDDATE_BEFORE_STARTDATE = "warning.enddate.before.startdate";
+    public static final String WARNING_EMPTY_WIDTH_IN_PIXELS = "warning.empty.width.in.pixels";
+    public static final String WARNING_INTEGER_WIDTH_IN_PIXELS = "warning.integer.width.in.pixels";
+    public static final String WARNING_EMPTY_HEIGHT_IN_PIXELS = "warning.empty.height.in.pixels";
+    public static final String WARNING_INTEGER_HEIGHT_IN_PIXELS = "warning.integer.height.in.pixels";
+    public static final String WARNING_EMPTY_SAVEPATH_CHART = "warning.empty.savepath.chart";
+    public static final String WARNING_EMPTY_CATEGORY_NAME = "warning.empty.category.name";
+    public static final String WARNING_EMPTY_PAYMENT_NAME = "warning.empty.payment.name";
+    public static final String WARNING_NAME_CHARACTER_LIMIT_REACHED_45 = "warning.name.character.limit.reached.45";
+    public static final String WARNING_NAME_CHARACTER_LIMIT_REACHED_150 = "warning.name.character.limit.reached.150";
+    public static final String WARNING_DESCRIPTION_CHARACTER_LIMIT_REACHED_150 = "warning.description.character.limit.reached.150";
+    public static final String WARNING_PAYMENT_AMOUNT = "warning.payment.amount";
+    public static final String WARNING_EMPTY_PAYMENT_DATE = "warning.empty.payment.date";
+    public static final String WARNING_PAYMENT_REPEATING = "warning.payment.repeating";    
+    public static final String WARNING_EMPTY_SECRET_CLIENT = " warning.empty.secret.client";
+    public static final String WARNING_EMPTY_URL = "warning.empty.url";
+    public static final String WARNING_EMPTY_SECRET_SERVER = "warning.empty.secret.server";
+    public static final String WARNING_EMPTY_CURRENCY = "warning.empty.currency";
+    public static final String WARNING_WRONG_VERIFICATION_CODE = "warning.wrong.verificationcode";
+    public static final String WARNING_EMPTY_PASSWORD = "warning.empty.password";
+    public static final String WARNING_WRONG_PASSWORD = "warning.wrong.password";
+    
+    //ERROR
+    public static final String ERROR_UNKNOWN_HOST = "error.unknown.host";
+    public static final String ERROR_UNKNOWN_ERROR = "error.unknown.error";
+    public static final String ERROR_CONNECTION_REFUSED = "error.connection.refused";
+    public static final String ERROR_HTTPS_HOSTNAME_WRONG = "error.https.hostname.wrong";
+    public static final String ERROR_400 = "error.400";
+    public static final String ERROR_401 = "error.401";
+    public static final String ERROR_500 = "error.500";
+    public static final String ERROR_CREATE_UI = "error.create.ui";
+    public static final String ERROR_SERVER_CONNECTION = "error.server.connection";
+    public static final String ERROR_SERVER_CONNECTION_WITH_DETAILS = "error.server.connection.with.details";
+    public static final String ERROR_OPEN_FOLDER = "error.open.folder";
+    public static final String ERROR_OPEN_CHART = "error.open.chart";
+    public static final String ERROR_OPEN_REPORT = "error.open.report";
+    public static final String ERROR_CHART_EXPORT = "error.chart.export";
+    public static final String ERROR_REPORT_SAVE = "error.report.save";
+    public static final String ERROR_SETTINGS_SAVE = "error.settings.save";
+    public static final String ERROR_DATABASE_IMPORT = "error.database.import";
+    public static final String ERROR_DATABASE_IMPORT_WRONG_FILE = "error.database.import.wrong.file";
+    public static final String ERROR_PASSWORD_SAVE = "error.password.save";
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/main/Main.java b/src/de/deadlocker8/budgetmaster/main/Main.java
index 30857a6e29f8b1a3de8bbae3e3ebd062199ef5b9..ba19acfd72f8c788be3ebb1929488dd50f60b86e 100644
--- a/src/de/deadlocker8/budgetmaster/main/Main.java
+++ b/src/de/deadlocker8/budgetmaster/main/Main.java
@@ -2,8 +2,10 @@ package de.deadlocker8.budgetmaster.main;
 
 import java.io.File;
 import java.util.Locale;
-import java.util.ResourceBundle;
 
+import de.deadlocker8.budgetmaster.logic.Settings;
+import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.controller.SplashScreenController;
 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
@@ -13,28 +15,39 @@ import javafx.scene.image.Image;
 import javafx.stage.Stage;
 import logger.FileOutputMode;
 import logger.Logger;
+import tools.Localization;
 import tools.PathUtils;
 
 public class Main extends Application
 {
-	public static ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/budgetmaster/main/", Locale.GERMANY);
-
+	public static Stage primaryStage;
+	
 	@Override
 	public void start(Stage stage)
 	{
-		try
+		primaryStage = stage;
+		
+		//load correct language
+		Settings settings = FileHelper.loadSettings();
+		if(settings != null && settings.getLanguage() != null)
 		{
+			Localization.loadLanguage(settings.getLanguage().getLocale());
+		}
+		
+		try
+		{				
 		    Image icon = new Image("/de/deadlocker8/budgetmaster/resources/icon.png");
 			FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml"));
+			loader.setResources(Localization.getBundle());
 			Parent root = (Parent)loader.load();
 			
 			Scene scene = new Scene(root, 450, 230);
 
-			((SplashScreenController)loader.getController()).init(stage, icon, bundle);
+			((SplashScreenController)loader.getController()).init(stage, icon);
 
 			stage.setResizable(false);			
 			stage.getIcons().add(icon);
-			stage.setTitle(bundle.getString("app.name"));
+			stage.setTitle(Localization.getString(Strings.APP_NAME));
 			stage.setScene(scene);			
 			stage.show();
 		}
@@ -47,15 +60,21 @@ public class Main extends Application
 	@Override
 	public void init() throws Exception
 	{
+		Localization.init("de/deadlocker8/budgetmaster/resources/languages/");
+		Localization.loadLanguage(Locale.ENGLISH);
+		
 		Parameters params = getParameters();
 		String logLevelParam = params.getNamed().get("loglevel");
 		Logger.setLevel(logLevelParam);
 		
-		File logFolder = new File(PathUtils.getOSindependentPath() + bundle.getString("folder"));
+		File logFolder = new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER));
 		PathUtils.checkFolder(logFolder);
 		Logger.enableFileOutput(logFolder, System.out, System.err, FileOutputMode.COMBINED);
 
-		Logger.appInfo(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"));
+		Logger.appInfo(Localization.getString(Strings.APP_NAME),
+						Localization.getString(Strings.VERSION_NAME),
+						Localization.getString(Strings.VERSION_CODE),
+						Localization.getString(Strings.VERSION_DATE));
 	}
 
 	public static void main(String[] args)
diff --git a/src/de/deadlocker8/budgetmaster/main/_de.properties b/src/de/deadlocker8/budgetmaster/main/_de.properties
deleted file mode 100644
index 6c6a869a5ad681caeabcd043f560ac2e140054ee..0000000000000000000000000000000000000000
--- a/src/de/deadlocker8/budgetmaster/main/_de.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-app.name=BudgetMaster
-version.code=6
-version.name=1.3.2
-version.date=21.08.17
-author=Robert Goldmann
-
-folder=Deadlocker/BudgetMaster
-color.text=#212121
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/resources/flags/english.png b/src/de/deadlocker8/budgetmaster/resources/flags/english.png
new file mode 100644
index 0000000000000000000000000000000000000000..56268bc43902937b857b586498cf5059a7926f36
Binary files /dev/null and b/src/de/deadlocker8/budgetmaster/resources/flags/english.png differ
diff --git a/src/de/deadlocker8/budgetmaster/resources/flags/german.png b/src/de/deadlocker8/budgetmaster/resources/flags/german.png
new file mode 100644
index 0000000000000000000000000000000000000000..2644cdb785a2ef8eb806b0ae25bcc03c1160ae52
Binary files /dev/null and b/src/de/deadlocker8/budgetmaster/resources/flags/german.png differ
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
new file mode 100644
index 0000000000000000000000000000000000000000..38641effc52c8f8d5003decc64f553064b16851b
--- /dev/null
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
@@ -0,0 +1,266 @@
+# DEFAULT
+app.name=BudgetMaster
+version.code=7
+version.name=1.4.0
+version.date=23.08.17
+author=Robert Goldmann
+credits=L�nderflaggen von Freepik auf https://www.flaticon.com
+
+folder=Deadlocker/BudgetMaster
+
+
+# TITLE
+title.incomes=Einnahmen
+title.income=Einnahme
+title.payments=Ausgaben
+title.payment=Ausgabe
+title.categories=Kategorien
+title.categorie=Kategorie
+title.category.budgets=Verbrauch nach Kategorien
+title.amount=Betrag
+title.info=Hinweis
+title.warning=Warnung
+title.error=Fehler
+title.category.new=Neue Kategorie
+title.category.edit=Kategorie bearbeiten
+title.chart.export=Diagramm exportieren
+title.modal=Vorgang l�uft
+title.payment.edit={0} bearbeiten
+title.payment.new=Neue {0}
+title.filter=Filter
+title.report.save=Bericht speichern
+title.database.export=Datenbank exportieren
+title.database.import=Datenbank importieren
+
+# LOAD
+load.charts=Lade Diagramme...
+load.data=Lade Daten...
+load.report=Der Monatsbericht wird erstellt, bitte warten...
+load.database.export=Die Datenbank wird exportiert, bitte warten...
+load.database.import=Die Datenbank wird importiert, bitte warten...
+load.database.delete=Die Datenbank wird gel�scht, bitte warten...
+
+# MISC
+category.none=Keine Kategorie
+category.rest=�bertrag
+tooltip.chart.categories={0}\n{1} %\n{2}
+chart.month.line.sum=Summe in {0}
+categories.placeholder=Keine Kategorien verf�gbar
+chart.categories.title.incomes=Einnahmen nach Kategorien
+chart.categories.title.payments=Ausgaben nach Kategorien
+ok=OK
+cancel=Abbrechen
+home.placeholder=Keine Daten verf�gbar
+home.budget=von {0} verbleibend
+payments.placeholder=Keine Daten verf�gbar
+url.placeholder=z.B. https://yourdomain.de
+currency.placeholder=z.B. \u20AC, CHF, $
+trusted.hosts.placeholder=z.B. localhost
+
+# REPORT
+report.position=Nr.
+report.date=Datum
+report.repeating=Wiederholend
+report.category=Kategorie
+report.name=Name
+report.description=Notiz
+report.rating=+/-
+report.amount=Betrag
+report.headline=Monatsbericht - {0}
+report.headline.payments.overview=Buchungs�bersicht
+report.sum.total=Einnahmen: {0} / Ausgaben: {1}
+report.sum=Summe: {0}
+report.footer.left=BudgetMaster Monatsbericht
+report.footer.center=Seite {0}
+report.repeating.yes=Ja
+report.repeating.no=Nein
+report.initial.filename=BudgetMaster Monatsbericht - {0}_{1}.pdf
+
+# MONTH
+month.january=Januar 
+month.february=Februar
+month.march=M�rz
+month.april=April
+month.may=Mai
+month.june=Juni
+month.july=Juli
+month.august=August
+month.september=September
+month.october=Oktober
+month.november=November
+month.december=Dezember
+
+# NOTIFICATION
+notification.chart.export=Diagramm erfolgreich exportiert.
+notification.report.save=Bericht erfolgreich gespeichert.
+notification.settings.save=Erfolgreich gespeichert
+
+# INFO
+info.title.category.delete=Kategorie l�schen
+info.text.category.delete=M�chtest du diese Kategorie wirklich unwiderruflich l�schen?
+info.title.payment.delete=Zahlung l�schen
+info.text.payment.delete=M�chtest du diese Zahlung wirklich unwiderruflich l�schen?
+info.text.payment.repeating.delete=Es handelt sich um eine wiederkehrende Zahlung. Welche Zahlungen sollen gel�scht werden?
+info.text.payment.repeating.delete.all=Alle
+info.text.payment.repeating.delete.futures=Alle zuk�nftigen
+info.first.start=Vor der ersten Benutzung musst du deine Serverdaten eingeben.
+info.title.chart.export=Erfolgreich erstellt
+info.text.chart.export=Das Diagramm wurde erfolgreich exportiert.
+info.text.chart.export.open.folder=Ordner �ffnen
+info.text.chart.export.open.chart=Diagramm �ffnen
+info.title.report.save=Erfolgreich erstellt
+info.text.report.save=Der Monatsbericht wurde erfolgreich erstellt.
+info.text.report.save.open.folder=Ordner �ffnen
+info.text.report.save.open.report=Bericht �ffnen
+info.title.database.export=Erfolgreich exportiert
+info.text.database.export=Die Datenbank wurde erfolgreich exportiert.
+info.title.database.import=Erfolgreich importiert
+info.text.database.import=Die Datenbank wurde erfolgreich importiert.
+info.title.database.import.dialog=Datebank importieren
+info.text.database.import.dialog=Soll die Datenbank vor dem Importieren gel�scht werden?
+info.text.database.import.dialog.delete=Ja, Datenbank l�schen
+info.text.database.import.dialog.append=Nein, Daten hinzuf�gen
+info.title.database.delete=Datenbank l�schen
+info.header.text.database.delete=Soll die Datenbank wirklich gel�scht werden?
+info.text.database.delete=Zur Best�tigung gib folgenden Code ein:\t{0}
+info.title.welcome=Willkommen
+info.header.text.welcome=Willkommen beim BudgetMaster
+info.text.welcome.first.start=Dies scheint dein erster Besuch zu sein, da noch keine Einstellungen existieren.\nDamit es losgehen kann, �berlege dir ein Passwort und trage es in das Passwortfeld ein.\n\n(Hinweis: Das Passwort kann sp�ter jederzeit ge�ndert werden.)\n\n
+info.text.welcome.compatibility=Deine Einstellungsdatei ist veraltet und muss aktualisert werden.\nSeit Version v1.3.0 wird ein Passwort ben�tigt, um BudgetMaster zu entsperren. Damit es losgehen kann, �berlege dir ein Passwort und trage es in das Passwortfeld ein.\n\n(Hinweis: Das Passwort kann sp�ter jederzeit ge�ndert werden.)\n\n
+
+info.title.language.changed=Neustarten
+info.text.language.changed=�nderungen der Sprache werden erst nach einem Neustart des Programms wirksam.
+info.text.language.changed.restart.now=Jetzt neustarten
+info.text.language.changed.restart.later=Sp�ter neustarten
+
+# WARNING
+warning.enddate.before.startdate=Das Enddatum darf zeitlich nicht vor dem Startdatum liegen.
+warning.empty.width.in.pixels=Bitte gib eine Breite in Pixeln an.
+warning.integer.width.in.pixels=Nur ganzahlige Werte sind f�r das Feld Breite erlaubt.
+warning.empty.height.in.pixels=Bitte gib eine H�he in Pixeln an.
+warning.integer.height.in.pixels=Nur ganzahlige Werte sind f�r das Feld H�he erlaubt.
+warning.empty.savepath.chart=W�hle einen Speicherort f�r das Diagramm aus.
+warning.empty.category.name=Das Feld f�r den Namen darf nicht leer sein.
+warning.empty.payment.name=Das Feld f�r den Namen darf nicht leer sein.
+warning.name.character.limit.reached.45=Der Name darf maximal 45 Zeichen lang sein.
+warning.name.character.limit.reached.150=Der Name darf maximal 150 Zeichen lang sein.
+warning.description.character.limit.reached.150=Die Notiz darf maximal 150 Zeichen lang sein.
+warning.payment.amount=Gib eine g�ltige Zahl f�r den Betrag ein.
+warning.empty.payment.date=Bitte w�hle ein Datum aus.
+warning.payment.repeating=Wenn Wiederholung aktiviert ist d�rfen nicht beide Eingabefelder 0 sein.\n(Zur Deaktivierung der Wiederholung einfach die Checkbox abw�hlen)
+warning.empty.secret.client=Das Feld f�r das Client Passwort darf nicht leer sein.
+warning.empty.url=Das Feld f�r die Server URL darf nicht leer sein.
+warning.empty.secret.server=Das Server Passwortfeld darf nicht leer sein.
+warning.empty.currency=Bitte gib deine gew�nschte W�hrung ein.
+warning.wrong.verificationcode=Die Eingabe stimmt nicht mit dem Best�tigungscode �berein.
+warning.empty.password=Bitte gib dein Passwort ein.
+warning.wrong.password=Das Passwort ist nicht korrekt.
+
+# ERROR
+error.unknown.host=Es konnte keine Verbindung mit dem Internet hergestellt werden.
+error.unknown.error=Unbekannter Fehler ({0})
+error.connection.refused=Server nicht erreichbar.
+error.https.hostname.wrong=Der Server verwendet ein selbst signiertes Zertifkat f�r die Verschl�sselung. Aus Sicherheitsgr�nden werden diese Zertifikate standardm��ig blockiert. Wenn du dem Zertifikat trotzdem vertrauen m�chtest, dann f�ge den Hostnamen des Servers zur Liste der vertrauensw�rdigen Hosts in den Einstellungen hinzu.
+error.400=Der Server erhielt eine fehlerhafte Anfrage oder ung�ltige Parameter.
+error.401=Ung�ltiges Server Passwort.
+error.500=Beim Ausf�hren der Anfrage ist ein interner Serverfehler ist aufgetreten.
+error.create.ui=Beim Erstellen der Benutzeroberfl�che ist ein Fehler aufgetreten.
+error.server.connection=Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte �berpr�fe deine Einstellungen.
+error.server.connection.with.details=Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte �berpr�fe deine Einstellungen.\n\nFehlerdetails:\n{0}
+error.open.folder=Der Ordner konnte nicht ge�ffnet werden.\n\n{0}
+error.open.chart=Das Diagramm konnte nicht ge�ffnet werden.\n\n{0}
+error.open.report=Der Bericht konnte nicht ge�ffnet werden.\n\n{0}
+error.chart.export=Beim Exportieren des Diagramms ist ein Fehler aufgetreten:\n\n{0}
+error.report.save=Beim Erstellen des Monatsberichts ist ein Fehler aufgetreten:\n\n{0}
+error.settings.save=Beim Speichern der Einstellungen ist ein Fehler aufgetreten.
+error.database.import=Beim Einlesen der Datei ist ein Fehler aufgetreten.
+error.database.import.wrong.file=Die angegebene Datei enth�lt kein g�ltiges BudgetMaster-Datenformat und kann daher nicht importiert werden.
+error.password.save=Beim Speichern des Passworts ist ein Fehler aufgetreten.
+
+# UI
+categorytab.button.category.new=\ Neue Kategorie
+
+charttab.titlepane.chart.categories=Einnahmen/Ausgaben nach Kategorien
+charttab.titlepane.chart.months=Einnahmen/Ausgaben pro Monat
+charttab.label.start=Von:
+charttab.label.end=Bis:
+charttab.checkbox.bars=Balken
+charttab.checkbox.lines=Linien
+
+export.chart.label.width=Breite:
+export.chart.label.height=H�he:
+export.chart.label.savepath=Speicherort:
+export.chart.button.change=�ndern
+export.chart.button.export=Exportieren
+
+filter.headline=Filtern nach:
+filter.type=Art
+filter.type.income=Einnahme
+filter.type.payment=Ausgabe
+filter.repeating=Wiederholung
+filter.repeating.none=keine Wiederholung
+filter.repeating.monthday=monatlich
+filter.repeating.interval=alle X Tage
+filter.categories=Kategorien
+filter.categories.button.all=Alle
+filter.categories.button.none=Keine
+filter.name=Name
+filter.button.reset=Zur�cksetzen
+filter.button.filter=Filtern
+
+gui.tab.home=Startseite
+gui.tab.payments=Buchungen
+gui.tab.categories=Kategorien
+gui.tab.charts=Diagramme
+gui.tab.report=Monatsbericht
+gui.tab.settings=Einstellungen
+
+hometab.categorybudgets=Verbrauch nach Kategorien
+
+category.new.label.name=Name:
+category.new.label.max.characters=(max. 45 Zeichen)
+category.new.label.color=Farbe:
+category.new.button.save=Speichern
+
+payment.new.label.name=Name:
+payment.new.label.max.characters=(max. 150 Zeichen)
+payment.new.label.amount=Betrag:
+payment.new.label.category=Kategorie:
+payment.new.label.date=Datum:
+payment.new.label.description=Notiz:
+payment.new.label.repeating=Wiederholung:
+payment.new.label.repeating.all=Alle
+payment.new.label.repeating.days=Tage
+payment.new.label.repeating.monthday=jeden Monat am:
+payment.new.label.enddate=Enddatum
+payment.new.button.save=Speichern
+
+paymenttab.button.new.income=\ Neue Einnahme
+paymenttab.button.new.payment=\ Neue Ausgabe
+paymenttab.button.filter=Filter
+paymenttab.label.filter.active=Filter aktiv
+paymenttab.label.incomes=Einnahmen:
+paymenttab.label.payments=Ausgaben:
+
+reporttab.checkbox.include.budget=Budgetkalkulation hinzuf�gen
+reporttab.checkbox.split.tables=Einnahmen und Ausgaben als getrennte Tabellen
+reporttab.checkbox.inclue.categorybudgets=Verbrauch nach Kategorien hinzuf�gen
+reporttab.button.generate.report=Bericht erzeugen
+
+settingstab.label.secret.client=Client Passwort:
+settingstab.label.url=Server URL:
+settingstab.label.secret.server=Server Passwort:
+settingstab.label.currency=W�hrung:
+settingstab.label.rest=�bertrag:
+settingstab.label.rest.activated=aktiviert
+settingstab.label.rest.deactivated=deaktiviert
+settingstab.label.trusted.hosts=Vertrauensw�rdige Hosts:
+settingstab.label.trusted.hosts.info=(ein Host pro Zeile)
+settingstab.label.language=Sprache:
+settingstab.label.database=Datenbank:
+settingstab.button.database.export=Exportieren
+settingstab.button.database.import=Importieren
+settingstab.button.database.delete=L�schen
+settings.tab.button.save=Speichern
+
+splashscreen.label.password=Passwort:
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
new file mode 100644
index 0000000000000000000000000000000000000000..1aabc4fca3f7c390c7587def7489111e9d4601fb
--- /dev/null
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
@@ -0,0 +1,266 @@
+# DEFAULT
+app.name=BudgetMaster
+version.code=7
+version.name=1.4.0
+version.date=23.08.17
+author=Robert Goldmann
+credits=Flags by Freepik on https://www.flaticon.com
+
+folder=Deadlocker/BudgetMaster
+
+
+# TITLE
+title.incomes=Incomes
+title.income=Income
+title.payments=Payments
+title.payment=Payment
+title.categories=Categories
+title.categorie=Category
+title.category.budgets=Consumption by categories
+title.amount=Amount
+title.info=Information
+title.warning=Warning
+title.error=Error
+title.category.new=New Category
+title.category.edit=Edit Category
+title.chart.export=Export Chart
+title.modal=Process is running
+title.payment.edit=Edit {0}
+title.payment.new=New {0}
+title.filter=Filter
+title.report.save=Save Report
+title.database.export=Export Database
+title.database.import=Import Database
+
+# LOAD
+load.charts=Loading Charts...
+load.data=Loading Data...
+load.report=Please wait while the report is being generated...
+load.database.export=Please wait while the database is being exported...
+load.database.import=Please wait while the database is being imported...
+load.database.delete=Please wait while the database is being deleted...
+
+# MISC
+category.none=No Category
+category.rest=Rest
+tooltip.chart.categories={0}\n{1} %\n{2}
+chart.month.line.sum=Total in {0}
+categories.placeholder=No categories available
+chart.categories.title.incomes=Incomes by Categories
+chart.categories.title.payments=Payments by Categories
+ok=OK
+cancel=Cancel
+home.placeholder=No data available
+home.budget=of {0} remaining
+payments.placeholder=No data available
+url.placeholder=e.g. https://yourdomain.de
+currency.placeholder=e.g. \u20AC, CHF, $
+trusted.hosts.placeholder=e.g. localhost
+
+# REPORT
+report.position=No.
+report.date=Date
+report.repeating=Repeating
+report.category=Category
+report.name=Name
+report.description=Description
+report.rating=+/-
+report.amount=Amount
+report.headline=Month Report - {0}
+report.headline.payments.overview=Payments Overview
+report.sum.total=Incomes: {0} / Payments: {1}
+report.sum=Total: {0}
+report.footer.left=BudgetMaster Month Report
+report.footer.center=Page {0}
+report.repeating.yes=Yes
+report.repeating.no=No
+report.initial.filename=BudgetMaster Month Report - {0}_{1}.pdf
+
+# MONTH
+month.january=January 
+month.february=February
+month.march=March
+month.april=April
+month.may=May
+month.june=June
+month.july=July
+month.august=August
+month.september=September
+month.october=October
+month.november=November
+month.december=December
+
+# NOTIFICATION
+notification.chart.export=Chart successfully exported.
+notification.report.save=Report successfully saved.
+notification.settings.save=Successfully saved.
+
+# INFO
+info.title.category.delete=Delete Category
+info.text.category.delete=Do you really want to delete this category? This can't be undone.
+info.title.payment.delete=Delete Entry
+info.text.payment.delete=Do you really want to delete this entry? This can't be undone.
+info.text.payment.repeating.delete=The entry you want to delete is a repeating entry. What entries should be deleted?
+info.text.payment.repeating.delete.all=All Entries
+info.text.payment.repeating.delete.futures=Future Entries
+info.first.start=You must enter your server settings prior to first use.
+info.title.chart.export=Successfully Exported
+info.text.chart.export=The chart has been successfully exported.
+info.text.chart.export.open.folder=Open Folder
+info.text.chart.export.open.chart=Open Chart
+info.title.report.save=Successfully Created
+info.text.report.save=The month report has been successfully created.
+info.text.report.save.open.folder=Open Folde
+info.text.report.save.open.report=Open Report
+info.title.database.export=Successfully Exported
+info.text.database.export=The database has been successfully exported.
+info.title.database.import=Successfully Imported
+info.text.database.import=The database has been successfully imported.
+info.title.database.import.dialog=Import Database
+info.text.database.import.dialog=Do you want to delete the database before importing?
+info.text.database.import.dialog.delete=Yes, delete database
+info.text.database.import.dialog.append=No, append data
+info.title.database.delete=Delete Database
+info.header.text.database.delete=Do you really want to delete this entry? This can't be undone.
+info.text.database.delete=Please enter the following code for verification:\t{0}
+info.title.welcome=Welcome
+info.header.text.welcome=Welcome to BudgetMaster
+info.text.welcome.first.start=This seems to be your first visit because there are no settings yet.\nTo enter BudgetMaster consider yourself a password and enter it into the password field.\n\n(Note: the password can be changed at any time.)\n\n
+info.text.welcome.compatibility=Your settings file is deprecated and needs to be updated.\nSince version v1.3.0, a password is required to unlock BudgetMaster. To enter BudgetMaster consider yourself a password and enter it into the password field.\n\n(Please note that the password can be changed at any time.)\n\n
+
+info.title.language.changed=Restart
+info.text.language.changed=Changes to the language will only take effect after a restart of the program.
+info.text.language.changed.restart.now=Restart Now
+info.text.language.changed.restart.later=Restart Later
+
+# WARNING
+warning.enddate.before.startdate=The end date can not be earlier than the start date.
+warning.empty.width.in.pixels=Please enter a width in pixels.
+warning.integer.width.in.pixels=Only integer values are allowed for the width field.
+warning.empty.height.in.pixels=Please enter a height in pixels.
+warning.integer.height.in.pixels=Only integer values are allowed for the height field.
+warning.empty.savepath.chart=Please select a location where you want to save the chart.
+warning.empty.category.name=The field for the name can not be empty.
+warning.empty.payment.name=The field for the name can not be empty.
+warning.name.character.limit.reached.45=The name must not exceed 45 characters in length.
+warning.name.character.limit.reached.150=The name must not exceed 150 characters in length.
+warning.description.character.limit.reached.150=The description must not exceed 150 characters in length.
+warning.payment.amount=Please enter a valid number in the amount field.
+warning.empty.payment.date=Please select a date.
+warning.payment.repeating=If repeating is activated, both input fields may not be 0.\n(To deactivate the repeat, simply deselect the checkbox).
+warning.empty.secret.client=The field for the client password can not be empty.
+warning.empty.url=The field for the server URL can not be empty.
+warning.empty.secret.server=The field for the server password can not be empty.
+warning.empty.currency=Please enter your desired currency.
+warning.wrong.verificationcode=The input does not match the verification code.
+warning.empty.password=Please enter your password.
+warning.wrong.password=The password is not correct.
+
+# ERROR
+error.unknown.host=Could not connect to the Internet.
+error.unknown.error=Unknown Error ({0})
+error.connection.refused=Server not available.
+error.https.hostname.wrong=The server uses a self-signed certifier for encryption. For security reasons, these certificates are blocked by default. If you want to trust the certificate, add the hostname of the server to the list of trusted hosts in the settings.
+error.400=The server received a bad request or invalid parameters.
+error.401=Invalid Server Password.
+error.500=An internal server error occurred while processing the request.
+error.create.ui=An error occurred while creating the user interface.
+error.server.connection=An error occurred while connecting to the server. Please check your settings.
+error.server.connection.with.details=BAn error occurred while connecting to the server. Please check your settings.\n\nError details:\n{0}
+error.open.folder=The folder couldn't be opened.\n\n{0}
+error.open.chart=The chart couldn't be opened.\n\n{0}
+error.open.report=The report couldn't be opened.\n\n{0}
+error.chart.export=An error occurred while exporting the chart:\n\n{0}
+error.report.save=An error occurred while creating the month report:\n\n{0}
+error.settings.save=An error occurred while saving the settings.
+error.database.import=An error occurred while reading the file.
+error.database.import.wrong.file=The specified file does not contain a valid BudgetMaster data format thus can not be imported.
+error.password.save=An error occurred while saving the password.
+
+# UI
+categorytab.button.category.new=\ New Category
+
+charttab.titlepane.chart.categories=Incomes/Payments by Categories
+charttab.titlepane.chart.months=Incomes/Payments per Month
+charttab.label.start=From:
+charttab.label.end=To:
+charttab.checkbox.bars=Bars
+charttab.checkbox.lines=Lines
+
+export.chart.label.width=Width:
+export.chart.label.height=Height:
+export.chart.label.savepath=Location:
+export.chart.button.change=Change
+export.chart.button.export=Export
+
+filter.headline=Filter by:
+filter.type=Type
+filter.type.income=Income
+filter.type.payment=Payment
+filter.repeating=Repeating
+filter.repeating.none=no repeating
+filter.repeating.monthday=monthly
+filter.repeating.interval=every X days
+filter.categories=Categories
+filter.categories.button.all=All
+filter.categories.button.none=None
+filter.name=Name
+filter.button.reset=Reset
+filter.button.filter=Filter
+
+gui.tab.home=Home
+gui.tab.payments=Payments
+gui.tab.categories=Categories
+gui.tab.charts=Charts
+gui.tab.report=Month Report
+gui.tab.settings=Settings
+
+hometab.categorybudgets=Consumption by categories
+
+category.new.label.name=Name:
+category.new.label.max.characters=(up to 45 characters)
+category.new.label.color=Color:
+category.new.button.save=Save
+
+payment.new.label.name=Name:
+payment.new.label.max.characters=(up to 150 characters)
+payment.new.label.amount=Amount:
+payment.new.label.category=Category:
+payment.new.label.date=Date:
+payment.new.label.description=Description:
+payment.new.label.repeating=Repeating:
+payment.new.label.repeating.all=every
+payment.new.label.repeating.days=days
+payment.new.label.repeating.monthday=every month at:
+payment.new.label.enddate=Enddate
+payment.new.button.save=Save
+
+paymenttab.button.new.income=\ New Income
+paymenttab.button.new.payment=\ New Payment
+paymenttab.button.filter=Filter
+paymenttab.label.filter.active=Filter active
+paymenttab.label.incomes=Incomes:
+paymenttab.label.payments=Payments:
+
+reporttab.checkbox.include.budget=Include budget calculation
+reporttab.checkbox.split.tables=Split incomes and payments into separate tables
+reporttab.checkbox.inclue.categorybudgets=Include consumption by categories
+reporttab.button.generate.report=Create Report
+
+settingstab.label.secret.client=Client Password:
+settingstab.label.url=Server URL:
+settingstab.label.secret.server=Server Password:
+settingstab.label.currency=Currency:
+settingstab.label.rest=Rest:
+settingstab.label.rest.activated=activated
+settingstab.label.rest.deactivated=deactivated
+settingstab.label.trusted.hosts=Trusted Hosts:
+settingstab.label.trusted.hosts.info=(one per line)
+settingstab.label.language=Language:
+settingstab.label.database=Database:
+settingstab.button.database.export=Export
+settingstab.button.database.import=Import
+settingstab.button.database.delete=Delete
+settings.tab.button.save=Save
+
+splashscreen.label.password=Password:
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/ButtonCategoryCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/ButtonCategoryCell.java
index 233398f6aba6a04a8cb2b52a050ce440c49bfa4c..1158ed1c078ea8c2b04c8feaab89b94a0c301ce6 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/ButtonCategoryCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/ButtonCategoryCell.java
@@ -31,12 +31,7 @@ public class ButtonCategoryCell extends ListCell<Category>
 
 		if(!empty)
 		{		
-			HBox hbox = new HBox();		
-			
-			if(item.getID() == 1)
-			{
-				item.setName("Keine Kategorie");
-			}			
+			HBox hbox = new HBox();
 		
 			Label labelName = new Label(item.getName());
 			labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: " + ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(color)));
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
index 11296797f1be9efd9bf0b607b8f7cf746fe5e4c9..207c868f65d88c321397e0bedca1f5ea6c2abf87 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
@@ -1,5 +1,6 @@
 package de.deadlocker8.budgetmaster.ui.cells;
 
+import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.ui.controller.HomeController;
@@ -10,6 +11,7 @@ import javafx.scene.control.ListCell;
 import javafx.scene.layout.HBox;
 import javafx.scene.layout.Priority;
 import javafx.scene.layout.Region;
+import javafx.scene.paint.Color;
 import tools.ConvertTo;
 
 public class CategoryBudgetCell extends ListCell<CategoryBudget>
@@ -30,24 +32,19 @@ public class CategoryBudgetCell extends ListCell<CategoryBudget>
 
 		if(!empty)
 		{
-			String name = item.getName();
-			if(item.getName().equals("NONE"))
-			{
-				name = "Keine Kategorie";
-			}
-			
 			HBox hbox = new HBox();
+			Category currentCategory = item.getCategory();
 
-			Label labelCircle = new Label(name.substring(0, 1).toUpperCase());
+			Label labelCircle = new Label(currentCategory.getName().substring(0, 1).toUpperCase());
 			labelCircle.setPrefWidth(HEIGHT);
 			labelCircle.setPrefHeight(HEIGHT);
 			labelCircle.setAlignment(Pos.CENTER);
 			labelCircle.getStyleClass().add("greylabel");
-			String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(item.getColor()));
-			labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHex(item.getColor()) + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;");
+			String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(currentCategory.getColor())));
+			labelCircle.setStyle("-fx-background-color: " + currentCategory.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;");
 			hbox.getChildren().add(labelCircle);
 
-			Label labelName = new Label(name);
+			Label labelName = new Label(currentCategory.getName());
 			labelName.setPrefHeight(HEIGHT);
 			labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #212121");
 			labelName.setAlignment(Pos.CENTER);
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
index 3d4b91854244fe5ded12664c68f2ae55e72797a0..9e80a8bf73ff7edbf3d06c292cf7bba5969db41a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
@@ -4,6 +4,7 @@ import java.util.Optional;
 
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.controller.CategoryController;
 import fontAwesome.FontIconType;
 import javafx.geometry.Insets;
@@ -19,6 +20,7 @@ import javafx.scene.layout.Region;
 import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class CategoryCell extends ListCell<Category>
 {		
@@ -45,8 +47,8 @@ public class CategoryCell extends ListCell<Category>
 			labelCircle.setPrefHeight(HEIGHT);
 			labelCircle.setAlignment(Pos.CENTER);
 			labelCircle.getStyleClass().add("greylabel");
-			String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(item.getColor()));
-			labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHex(item.getColor()) + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;");
+			String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(item.getColor())));
+			labelCircle.setStyle("-fx-background-color: " + item.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;");
 			hbox.getChildren().add(labelCircle);
 			
 			Label labelName = new Label(item.getName());
@@ -79,9 +81,9 @@ public class CategoryCell extends ListCell<Category>
 			buttonDelete.setStyle("-fx-background-color: transparent");
 			buttonDelete.setOnAction((event)->{
 				 Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
-                 alert.setTitle("Kategorie löschen");
+                 alert.setTitle(Localization.getString(Strings.INFO_TITLE_CATEGORY_DELETE));
                  alert.setHeaderText("");
-                 alert.setContentText("Möchtest du diese Kategorie wirklich unwiderruflich löschen?");
+                 alert.setContentText(Localization.getString(Strings.INFO_TEXT_CATEGORY_DELETE));
                  Stage dialogStage = (Stage) alert.getDialogPane().getScene().getWindow();
                  dialogStage.getIcons().add(categoryController.getController().getIcon());
                  dialogStage.centerOnScreen();
@@ -92,7 +94,7 @@ public class CategoryCell extends ListCell<Category>
                 	 categoryController.deleteCategory(item.getID());
                  }				
 			});
-			//don't allow category "Übertrag" to be deleted
+			//don't allow category "rest" to be deleted
 			if(item.getID() != 2)
 			{
 				hbox.getChildren().add(buttonDelete);
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/LanguageCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/LanguageCell.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7da4df94a8325a5aee359f03de9d46f5cac5c69
--- /dev/null
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/LanguageCell.java
@@ -0,0 +1,63 @@
+package de.deadlocker8.budgetmaster.ui.cells;
+
+import de.deadlocker8.budgetmaster.logic.utils.LanguageType;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.control.Label;
+import javafx.scene.control.ListCell;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.HBox;
+
+public class LanguageCell extends ListCell<LanguageType>
+{		
+	private final double HEIGHT = 20.0;
+	private boolean useBorder;
+	
+	public LanguageCell(boolean useBorder)
+	{
+		this.useBorder = useBorder;
+	}
+	
+	@Override
+	protected void updateItem(LanguageType item, boolean empty)
+	{
+		super.updateItem(item, empty);
+
+		if(!empty)
+		{		
+			HBox hbox = new HBox();
+			
+			Image image = new Image("de/deadlocker8/budgetmaster/resources/flags/" + item.getIconName() + ".png");
+			ImageView imageView = new ImageView(image);
+			imageView.setFitWidth(HEIGHT);
+			imageView.setFitHeight(HEIGHT);
+			hbox.getChildren().add(imageView);			
+			
+			Label labelName = new Label(item.getName());
+			labelName.setPrefHeight(HEIGHT);
+			labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121");
+			labelName.setAlignment(Pos.CENTER);
+			hbox.getChildren().add(labelName);
+			HBox.setMargin(labelName, new Insets(0, 0, 0, 20));
+			
+			hbox.setPadding(new Insets(0));
+			if(useBorder)
+			{
+				setStyle("-fx-background: transparent; -fx-border-color: #545454; -fx-border-width: 0 0 1 0");
+			}
+			else
+			{
+				setStyle("-fx-background: transparent;");
+			}
+			setGraphic(hbox);	
+			setAlignment(Pos.CENTER);
+		}
+		else
+		{
+			setStyle("-fx-background: transparent");
+			setText(null);
+			setGraphic(null);
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
index ce02969c7f592b4da63f44009aeaebe7f97fcd45..2fcb0e413f099020171e66e81940291d0e4f37eb 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
@@ -11,6 +11,7 @@ import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.controller.PaymentController;
 import fontAwesome.FontIconType;
 import javafx.geometry.Insets;
@@ -29,6 +30,7 @@ import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import logger.Logger;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class PaymentCell extends ListCell<Payment>
 {
@@ -88,20 +90,14 @@ public class PaymentCell extends ListCell<Payment>
 			hbox.getChildren().add(labelRepeating);
 			HBox.setMargin(labelRepeating, new Insets(0, 20, 0, 15));
 
-			String categoryName = category.getName();
-			if(categoryName.equals("NONE"))
-			{
-				categoryName = "Keine Kategorie";
-			}
-
-			Label labelCircle = new Label(categoryName.substring(0, 1).toUpperCase());
+			Label labelCircle = new Label(category.getName().substring(0, 1).toUpperCase());
 			labelCircle.setMinWidth(HEIGHT);
 			labelCircle.setMinHeight(HEIGHT);
 			labelCircle.setAlignment(Pos.CENTER);
 			labelCircle.getStyleClass().add("greylabel");
-			String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(category.getColor()));
-			labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHex(category.getColor()) + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;");
-			Tooltip tooltip = new Tooltip(categoryName);
+			String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(category.getColor())));
+			labelCircle.setStyle("-fx-background-color: " + category.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;");
+			Tooltip tooltip = new Tooltip(category.getName());
 			tooltip.setStyle("-fx-font-size: 14");
 			labelCircle.setTooltip(tooltip);
 			hbox.getChildren().add(labelCircle);			
@@ -144,20 +140,20 @@ public class PaymentCell extends ListCell<Payment>
 			buttonDelete.setStyle("-fx-background-color: transparent");			
 			buttonDelete.setOnAction((event) -> {
 				Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
-				alert.setTitle("Zahlung löschen");
+				alert.setTitle(Localization.getString(Strings.INFO_TITLE_PAYMENT_DELETE));
 				alert.setHeaderText("");
-				alert.setContentText("Diese Zahlung wirklich unwiderruflich löschen?");
+				alert.setContentText(Localization.getString(Strings.INFO_TEXT_PAYMENT_DELETE));
 				Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
 				dialogStage.getIcons().add(paymentController.getController().getIcon());
 				dialogStage.centerOnScreen();
 
 				if(item instanceof RepeatingPaymentEntry)
 				{
-					alert.setContentText("Es handelt sich um eine wiederkehrende Zahlung. Welche Zahlungen sollen gelöscht werden?");
+					alert.setContentText(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE));
 					
-					ButtonType buttonTypeOne = new ButtonType("Alle");
-					ButtonType buttonTypeTwo = new ButtonType("Alle zukünftigen");				
-					ButtonType buttonTypeCancel = new ButtonType("Abbrechen", ButtonData.CANCEL_CLOSE);
+					ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE_ALL));
+					ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE_FUTURES));			
+					ButtonType buttonTypeCancel = new ButtonType(Localization.getString(Strings.CANCEL), ButtonData.CANCEL_CLOSE);
 
 					alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeCancel);
 
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/SmallCategoryCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/SmallCategoryCell.java
index 9aa0b9baa4fe7a468d833f1441a2670aeeb0a56c..dba566d87328ed7005f923e258acc8f3e8b06556 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/SmallCategoryCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/SmallCategoryCell.java
@@ -6,6 +6,7 @@ import javafx.geometry.Pos;
 import javafx.scene.control.Label;
 import javafx.scene.control.ListCell;
 import javafx.scene.layout.HBox;
+import javafx.scene.paint.Color;
 import tools.ConvertTo;
 
 public class SmallCategoryCell extends ListCell<Category>
@@ -21,20 +22,13 @@ public class SmallCategoryCell extends ListCell<Category>
 		{		
 			HBox hbox = new HBox();
 			
-			if(item.getID() != 1)
-			{
-				Label labelCircle = new Label(item.getName().substring(0, 1).toUpperCase());
-				labelCircle.setPrefWidth(HEIGHT);
-				labelCircle.setPrefHeight(HEIGHT);
-				labelCircle.setAlignment(Pos.CENTER);
-				String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(item.getColor()));
-				labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHex(item.getColor()) + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 15;");
-				hbox.getChildren().add(labelCircle);
-			}
-			else
-			{
-				item.setName("Keine Kategorie");
-			}
+			Label labelCircle = new Label(item.getName().substring(0, 1).toUpperCase());
+			labelCircle.setPrefWidth(HEIGHT);
+			labelCircle.setPrefHeight(HEIGHT);
+			labelCircle.setAlignment(Pos.CENTER);
+			String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(item.getColor())));
+			labelCircle.setStyle("-fx-background-color: " + item.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 15;");
+			hbox.getChildren().add(labelCircle);			
 			
 			Label labelName = new Label(item.getName());
 			labelName.setPrefHeight(HEIGHT);
diff --git a/src/de/deadlocker8/budgetmaster/ui/colorPick/ColorView.java b/src/de/deadlocker8/budgetmaster/ui/colorPick/ColorView.java
index a633cbe1e4b163f6b33772a4e9ffecdc6acef516..6e3d4f022ec3d41b1777a76deeaecf624cbaf6ed 100644
--- a/src/de/deadlocker8/budgetmaster/ui/colorPick/ColorView.java
+++ b/src/de/deadlocker8/budgetmaster/ui/colorPick/ColorView.java
@@ -20,6 +20,7 @@ import javafx.stage.Modality;
 import javafx.stage.Stage;
 import logger.Logger;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class ColorView extends GridPane
 {
@@ -75,6 +76,7 @@ public class ColorView extends GridPane
 							try
 							{
 								FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/colorPick/ColorPickGUI.fxml"));
+								loader.setResources(Localization.getBundle());
 								Parent root = (Parent)loader.load();
 
 								Scene scene = new Scene(root, 500, 225);
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java b/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
index 5a03fcc229c5f70451d3e7c966c239398b062acf..2643375e346134070a64aeddee9f6cef25ac674a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
@@ -7,7 +7,9 @@ import java.util.ArrayList;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.Refreshable;
 import de.deadlocker8.budgetmaster.ui.cells.CategoryCell;
 import fontAwesome.FontIconType;
@@ -30,6 +32,8 @@ import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.util.Callback;
 import logger.Logger;
+import tools.ConvertTo;
+import tools.Localization;
 
 public class CategoryController implements Refreshable
 {
@@ -84,15 +88,15 @@ public class CategoryController implements Refreshable
 			}
 		});
 		
-		Label labelPlaceholder = new Label("Keine Kategorien verfügbar");
+		Label labelPlaceholder = new Label(Localization.getString(Strings.CATEGORIES_PLACEHOLDER));
 		labelPlaceholder.setStyle("-fx-font-size: 16");
 		listView.setPlaceholder(labelPlaceholder);
 
 		buttonCategory.setGraphic(Helpers.getFontIcon(FontIconType.PLUS, 18, Color.WHITE));
 
 		//apply theme
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
-		buttonCategory.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
+		buttonCategory.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
 
 		refreshListView();
 	}
@@ -123,6 +127,7 @@ public class CategoryController implements Refreshable
 		try
 		{
 			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
@@ -130,11 +135,11 @@ public class CategoryController implements Refreshable
 			
 			if(edit)
 			{
-				newStage.setTitle("Kategorie bearbeiten");
+				newStage.setTitle(Localization.getString(Strings.TITLE_CATEGORY_EDIT));
 			}
 			else
 			{
-				newStage.setTitle("Neue Kategorie");
+				newStage.setTitle(Localization.getString(Strings.TITLE_CATEGORY_NEW));
 			}
 			
 			newStage.setScene(new Scene(root));
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
index ddd9882794e82ad3ac4b51db0cf6069e19bfd8db..8ae13536db2ccd8b2d37daa015a857f9ccc73f84 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
@@ -17,7 +17,9 @@ import de.deadlocker8.budgetmaster.logic.charts.MonthBarChart;
 import de.deadlocker8.budgetmaster.logic.charts.MonthLineChart;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.Refreshable;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
@@ -43,6 +45,8 @@ import javafx.stage.Stage;
 import javafx.util.Callback;
 import logger.Logger;
 import tools.AlertGenerator;
+import tools.ConvertTo;
+import tools.Localization;
 import tools.Worker;
 
 public class ChartController implements Refreshable
@@ -75,21 +79,21 @@ public class ChartController implements Refreshable
 	{
 		this.controller = controller;
 
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
-		vboxChartCategories.setStyle("-fx-background-color: #F4F4F4;");
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
+		vboxChartCategories.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
 		vboxChartCategories.setSpacing(20);
-		vboxChartMonth.setStyle("-fx-background-color: #F4F4F4;");
+		vboxChartMonth.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
 		
-		buttonChartCategoriesShow.setStyle("-fx-background-color: #2E79B9;");
+		buttonChartCategoriesShow.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE));
 		buttonChartCategoriesShow.setGraphic(Helpers.getFontIcon(FontIconType.CHECK, 16, Color.WHITE));
 
-		buttonChartCategoriesExport.setStyle("-fx-background-color: #2E79B9;");
+		buttonChartCategoriesExport.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE));
 		buttonChartCategoriesExport.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 16, Color.WHITE));
 
-		buttonChartMonthShow.setStyle("-fx-background-color: #2E79B9;");
+		buttonChartMonthShow.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE));
 		buttonChartMonthShow.setGraphic(Helpers.getFontIcon(FontIconType.CHECK, 16, Color.WHITE));
 
-		buttonChartMonthExport.setStyle("-fx-background-color: #2E79B9;");
+		buttonChartMonthExport.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE));
 		buttonChartMonthExport.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 16, Color.WHITE));		
 	
 		datePickerEnd.setDayCellFactory(new Callback<DatePicker, DateCell>()
@@ -143,11 +147,11 @@ public class ChartController implements Refreshable
 
 			Platform.runLater(()->{;
 				vboxChartCategories.getChildren().clear();
-				categoriesChart = new CategoriesChart("Einnahmen nach Kategorien", 
-																	  "Ausgaben nach Kategorien",
-																	  sums,
-																	  controller.getSettings().getCurrency(),
-																	  legendType);
+				categoriesChart = new CategoriesChart(Localization.getString(Strings.CHART_CATEGORIES_TITLE_INCOMES), 
+													  Localization.getString(Strings.CHART_CATEGORIES_TITLE_PAYMENTS),
+													  sums,
+													  controller.getSettings().getCurrency(),
+													  legendType);
 				vboxChartCategories.getChildren().add(categoriesChart);
 				VBox.setVgrow(categoriesChart, Priority.ALWAYS);
 			});
@@ -194,11 +198,12 @@ public class ChartController implements Refreshable
 				try
 				{
 					FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml"));
+					fxmlLoader.setResources(Localization.getBundle());
 					Parent root = (Parent)fxmlLoader.load();
 					Stage newStage = new Stage();
 					newStage.initOwner(controller.getStage());
 					newStage.initModality(Modality.APPLICATION_MODAL);
-					newStage.setTitle("Diagramm exportieren");
+					newStage.setTitle(Localization.getString(Strings.TITLE_CHART_EXPORT));
 					newStage.setScene(new Scene(root));
 					newStage.getIcons().add(controller.getIcon());
 					newStage.setResizable(false);
@@ -234,7 +239,7 @@ public class ChartController implements Refreshable
 		if(endDate.isBefore(startDate))
 		{
 			Platform.runLater(() -> {
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Enddatum darf nicht vor dem Startdatum liegen.", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", Localization.getString(Strings.WARNING_ENDDATE_BEFORE_STARTDATE), controller.getIcon(), controller.getStage(), null, false);
 			});
 			return;
 		}
@@ -288,11 +293,11 @@ public class ChartController implements Refreshable
 	@Override
 	public void refresh()
 	{
-		Stage modalStage = Helpers.showModal("Vorgang läuft", "Lade Diagramme...", controller.getStage(), controller.getIcon());
+		Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_CHARTS), controller.getStage(), controller.getIcon());
 
 		// prepare chart categories
 		LocalDate startDate = LocalDate.parse(controller.getCurrentDate().withDayOfMonth(1).toString("yyyy-MM-dd"));
-		LocalDate endDate = LocalDate.parse(controller.getCurrentDate().dayOfMonth().withMaximumValue().toString("yyy-MM-dd"));
+		LocalDate endDate = LocalDate.parse(controller.getCurrentDate().dayOfMonth().withMaximumValue().toString("yyyy-MM-dd"));
 
 		datePickerStart.setValue(startDate);
 		datePickerEnd.setValue(endDate);
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
index 5d78940b58085a2e06211f3fa5c9ac6e17bd384e..2d960d0a2bbb93b4911a366543f0ebf1e02ff7ae 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
@@ -2,7 +2,6 @@ package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.ResourceBundle;
 
 import org.joda.time.DateTime;
 
@@ -14,7 +13,9 @@ import de.deadlocker8.budgetmaster.logic.PaymentHandler;
 import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import fontAwesome.FontIconType;
 import javafx.animation.FadeTransition;
 import javafx.animation.SequentialTransition;
@@ -30,11 +31,12 @@ import javafx.scene.control.Tab;
 import javafx.scene.control.TabPane;
 import javafx.scene.image.Image;
 import javafx.scene.layout.AnchorPane;
-import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import javafx.util.Duration;
 import logger.Logger;
 import tools.AlertGenerator;
+import tools.ConvertTo;
+import tools.Localization;
 import tools.Worker;
 
 public class Controller
@@ -62,8 +64,7 @@ public class Controller
 	private SettingsController settingsController;
 
 	private Stage stage;
-	private Image icon = new Image("de/deadlocker8/budgetmaster/resources/icon.png");
-	private ResourceBundle bundle;
+	private Image icon = new Image("de/deadlocker8/budgetmaster/resources/icon.png");	
 	private Settings settings;
 	private DateTime currentDate;
 	private ArrayList<CategoryBudget> categoryBudgets;
@@ -73,10 +74,9 @@ public class Controller
 
 	private boolean alertIsShowing = false;
 
-	public void init(Stage stage, ResourceBundle bundle, Settings settings)
+	public void init(Stage stage, Settings settings)
 	{
 		this.stage = stage;
-		this.bundle = bundle;
 		this.settings = settings;
 		
 		stage.setOnCloseRequest((event)->{
@@ -93,24 +93,28 @@ public class Controller
 		try
 		{
 			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent nodeTabHome = (Parent)fxmlLoader.load();
 			homeController = fxmlLoader.getController();
 			homeController.init(this);
 			tabHome.setContent(nodeTabHome);
 
 			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent nodeTabPayment = (Parent)fxmlLoader.load();
 			paymentController = fxmlLoader.getController();
 			paymentController.init(this);
 			tabPayments.setContent(nodeTabPayment);
 
 			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent nodeTabCategory = (Parent)fxmlLoader.load();
 			categoryController = fxmlLoader.getController();
 			categoryController.init(this);
 			tabCategories.setContent(nodeTabCategory);
 
 			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent nodeTabChart = (Parent)fxmlLoader.load();
 			chartController = fxmlLoader.getController();
 			chartController.init(this);
@@ -123,12 +127,14 @@ public class Controller
 			});
 			
 			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent nodeTabReport = (Parent)fxmlLoader.load();
 			reportController = fxmlLoader.getController();
 			reportController.init(this);
 			tabReports.setContent(nodeTabReport);
 
 			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent nodeTabSettings = (Parent)fxmlLoader.load();
 			settingsController = fxmlLoader.getController();
 			settingsController.init(this);
@@ -138,18 +144,18 @@ public class Controller
 		{
 			Logger.error(e);
 			Platform.runLater(() -> {
-				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Erstellen der Benutzeroberfläche ist ein Fehler aufgetreten", icon, stage, null, false);
+				AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_CREATE_UI), icon, stage, null, false);
 			});			
 		}
 		
-		buttonLeft.setGraphic(Helpers.getFontIcon(FontIconType.CHEVRON_LEFT, 20, Color.web(bundle.getString("color.text"))));		
-		buttonRight.setGraphic(Helpers.getFontIcon(FontIconType.CHEVRON_RIGHT, 20, Color.web(bundle.getString("color.text"))));		
-		buttonToday.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR_ALT, 20, Color.web(bundle.getString("color.text"))));		
-		buttonAbout.setGraphic(Helpers.getFontIcon(FontIconType.INFO, 20, Color.web(bundle.getString("color.text"))));
+		buttonLeft.setGraphic(Helpers.getFontIcon(FontIconType.CHEVRON_LEFT, 20, Colors.TEXT));		
+		buttonRight.setGraphic(Helpers.getFontIcon(FontIconType.CHEVRON_RIGHT, 20, Colors.TEXT));		
+		buttonToday.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR_ALT, 20, Colors.TEXT));		
+		buttonAbout.setGraphic(Helpers.getFontIcon(FontIconType.INFO, 20, Colors.TEXT));
 
 		// apply theme
-		anchorPaneMain.setStyle("-fx-background-color: #DDDDDD");
-		labelMonth.setStyle("-fx-text-fill: " + bundle.getString("color.text"));
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_MAIN));
+		labelMonth.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
 		labelNotification.setStyle("-fx-text-fill: #FFFFFF; -fx-font-size: 16; -fx-font-weight: bold; -fx-background-color: transparent;");
 		buttonLeft.setStyle("-fx-background-color: transparent;");
 		buttonRight.setStyle("-fx-background-color: transparent;");
@@ -161,7 +167,7 @@ public class Controller
 			Platform.runLater(() -> {
 				toggleAllTabsExceptSettings(true);
 				tabPane.getSelectionModel().select(tabSettings);
-				AlertGenerator.showAlert(AlertType.INFORMATION, "Hinweis", "", "Vor der ersten Benutzung musst du deine Serverdaten eingeben.", icon, stage, null, false);
+				AlertGenerator.showAlert(AlertType.INFORMATION, Localization.getString(Strings.TITLE_INFO), "", Localization.getString(Strings.INFO_FIRST_START), icon, stage, null, false);
 			});
 		}
 		else
@@ -180,11 +186,6 @@ public class Controller
 		return icon;
 	}
 
-	public ResourceBundle getBundle()
-	{
-		return bundle;
-	}
-
 	public Settings getSettings()
 	{
 		return settings;
@@ -198,7 +199,7 @@ public class Controller
 	public void showNotification(String text)
 	{
 		labelNotification.setText(text);
-		labelNotification.setStyle("-fx-text-fill: #FFFFFF; -fx-font-size: 16; -fx-font-weight: bold; -fx-background-color: #323232;");
+		labelNotification.setStyle("-fx-text-fill: #FFFFFF; -fx-font-size: 16; -fx-font-weight: bold; -fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_NOTIFICATION));
 		FadeTransition fadeIn = new FadeTransition(Duration.millis(200), labelNotification);
 		fadeIn.setFromValue(0.0);
 		fadeIn.setToValue(1.0);
@@ -256,16 +257,15 @@ public class Controller
 				
 				alertIsShowing = true;
 				Alert alert = new Alert(AlertType.ERROR);
-				alert.setTitle("Fehler");
+				alert.setTitle(Localization.getString(Strings.TITLE_ERROR));
 				alert.setHeaderText("");
 				if(errorMessage == null)
 				{
-					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen.");
+					alert.setContentText(Localization.getString(Strings.ERROR_SERVER_CONNECTION));
 				}
 				else
 				{
-					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen.\n\n"
-							+ "Fehlerdetails:\n" + errorMessage);
+					alert.setContentText(Localization.getString(Strings.ERROR_SERVER_CONNECTION_WITH_DETAILS, errorMessage));
 				}
 				
 				Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
@@ -328,12 +328,24 @@ public class Controller
 
 	public void about()
 	{
-		AlertGenerator.showAboutAlert(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), bundle.getString("author"), icon, stage, null, false);
+		ArrayList<String> creditLines = new ArrayList<>();
+		creditLines.add(Localization.getString(Strings.CREDITS));
+				
+		AlertGenerator.showAboutAlertWithCredits(Localization.getString(Strings.APP_NAME),
+												Localization.getString(Strings.VERSION_NAME),
+												Localization.getString(Strings.VERSION_CODE),
+												Localization.getString(Strings.VERSION_DATE),
+												Localization.getString(Strings.AUTHOR),
+												creditLines,
+												icon, 
+												stage, 
+												null, 
+												false);
 	}	
 	
 	public void refresh(FilterSettings newFilterSettings)
 	{
-		Stage modalStage = Helpers.showModal("Vorgang läuft", "Lade Daten...", stage, icon);
+		Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATA), stage, icon);
 
 		Worker.runLater(() -> {
 			try
@@ -348,7 +360,7 @@ public class Controller
 				{
 					int rest = connection.getRestForAllPreviousMonths(currentDate.getYear(), currentDate.getMonthOfYear());
 					//categoryID 2 = Rest
-					paymentHandler.getPayments().add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, "Übertrag", ""));				
+					paymentHandler.getPayments().add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, Localization.getString(Strings.CATEGORY_REST), ""));				
 				}
 				
 				categoryHandler = new CategoryHandler(connection.getCategories());
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
index 14e7cc02eacbf9a44b792f27d0fb4f24eaa1c910..7fccd8c7d477058f3d1287c9d4278db31112821f 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
@@ -8,7 +8,9 @@ import java.util.Optional;
 import javax.imageio.ImageIO;
 
 import de.deadlocker8.budgetmaster.logic.charts.ChartExportable;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import fontAwesome.FontIconType;
 import javafx.embed.swing.SwingFXUtils;
 import javafx.fxml.FXML;
@@ -26,6 +28,8 @@ import javafx.stage.FileChooser;
 import javafx.stage.Stage;
 import logger.Logger;
 import tools.AlertGenerator;
+import tools.ConvertTo;
+import tools.Localization;
 
 public class ExportChartController
 {
@@ -57,15 +61,15 @@ public class ExportChartController
 		textFieldWidth.setText(String.valueOf((int)chart.getSuggestedWidth()));
 		textFieldHeight.setText(String.valueOf((int)chart.getSuggestedHeight()));
 
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");		
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));		
 	
-		buttonChooseFile.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
+		buttonChooseFile.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
 		buttonChooseFile.setGraphic(Helpers.getFontIcon(FontIconType.FOLDER_OPEN, 14, Color.WHITE));
 		
-		buttonExport.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
+		buttonExport.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
 		buttonExport.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 14, Color.WHITE));
 
-		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
+		buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
 		buttonCancel.setGraphic(Helpers.getFontIcon(FontIconType.TIMES, 14, Color.WHITE));		
 		
 		textFieldWidth.setTextFormatter(new TextFormatter<>(c -> {
@@ -104,7 +108,7 @@ public class ExportChartController
 	public void chooseFile()
 	{
 		FileChooser fileChooser = new FileChooser();
-		fileChooser.setTitle("Diagramm exportieren");
+		fileChooser.setTitle(Localization.getString(Strings.TITLE_CHART_EXPORT));
 		FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PNG (*.png)", "*.png");
 		if(savePath != null)
 		{
@@ -125,7 +129,14 @@ public class ExportChartController
 		String widthText = textFieldWidth.getText();
 		if(widthText == null || widthText.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte gib eine Breite in Pixeln an.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+			                         Localization.getString(Strings.TITLE_WARNING), 
+			                         "", 
+			                         Localization.getString(Strings.WARNING_EMPTY_WIDTH_IN_PIXELS), 
+			                         controller.getControlle().getIcon(), 
+			                         stage, 
+			                         null, 
+			                         false);
 			return;
 		}
 		
@@ -136,14 +147,28 @@ public class ExportChartController
 		}
 		catch(Exception e)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Nur ganzahlige Werte sind für das Feld Breite erlaubt.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+			                        Localization.getString(Strings.TITLE_WARNING), 
+			                        "", 
+			                        Localization.getString(Strings.WARNING_INTEGER_WIDTH_IN_PIXELS), 
+			                        controller.getControlle().getIcon(), 
+			                        stage, 
+			                        null, 
+			                        false);
 			return;
 		}
 		
 		String heightText = textFieldHeight.getText();
 		if(heightText == null || heightText.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte gib eine Höhe in Pixeln an.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+			                        Localization.getString(Strings.TITLE_WARNING), 
+			                        "", 
+			                        Localization.getString(Strings.WARNING_EMPTY_HEIGHT_IN_PIXELS), 
+			                        controller.getControlle().getIcon(), 
+			                        stage, 
+			                        null, 
+			                        false);
 			return;
 		}
 		
@@ -154,13 +179,27 @@ public class ExportChartController
 		}
 		catch(Exception e)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Nur ganzahlige Werte sind für das Feld Höhe erlaubt.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+			                        Localization.getString(Strings.TITLE_WARNING), 
+			                        "", 
+			                        Localization.getString(Strings.WARNING_INTEGER_HEIGHT_IN_PIXELS),
+			                        controller.getControlle().getIcon(), 
+			                        stage, 
+			                        null, 
+			                        false);
 			return;
 		}
 
 		if(savePath == null)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Wähle einen Speicherort für das Diagramm aus.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+			                        Localization.getString(Strings.TITLE_WARNING), 
+			                        "", 
+			                        Localization.getString(Strings.WARNING_EMPTY_SAVEPATH_CHART), 
+			                        controller.getControlle().getIcon(), 
+			                        stage,
+			                        null, 
+			                        false);
 			return;
 		}
 		
@@ -169,20 +208,20 @@ public class ExportChartController
 		try
 		{
 			ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", savePath);
-			controller.getControlle().showNotification("Diagramm erfolgreich exportiert");	
+			controller.getControlle().showNotification(Localization.getString(Strings.NOTIFICATION_CHART_EXPORT));	
 			
 			stage.close();			
 			
 			Alert alert = new Alert(AlertType.INFORMATION);
-			alert.setTitle("Erfolgreich erstellt");
+			alert.setTitle(Localization.getString(Strings.INFO_TITLE_CHART_EXPORT));
 			alert.setHeaderText("");
-			alert.setContentText("Das Diagramm wurde erfolgreich exportiert");			
+			alert.setContentText(Localization.getString(Strings.INFO_TEXT_CHART_EXPORT));			
 			Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
 			dialogStage.getIcons().add(controller.getControlle().getIcon());						
 			
-			ButtonType buttonTypeOne = new ButtonType("Ordner öffnen");
-			ButtonType buttonTypeTwo = new ButtonType("Diagramm öffnen");
-			ButtonType buttonTypeThree = new ButtonType("OK");						
+			ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_CHART_EXPORT_OPEN_FOLDER));
+			ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_CHART_EXPORT_OPEN_CHART));
+			ButtonType buttonTypeThree = new ButtonType(Localization.getString(Strings.OK));						
 			alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeThree);
 			
 			Optional<ButtonType> result = alert.showAndWait();						
@@ -195,7 +234,14 @@ public class ExportChartController
 				catch(IOException e1)
 				{
 					Logger.error(e1);
-					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Der Ordner konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getControlle().getIcon(), stage, null, false);
+					AlertGenerator.showAlert(AlertType.ERROR, 
+					                        Localization.getString(Strings.TITLE_ERROR), 
+                                            "",
+                                            Localization.getString(Strings.ERROR_OPEN_FOLDER, e1.getMessage()),
+                                            controller.getControlle().getIcon(), 
+                                            stage, 
+                                            null, 
+                                            false);
 				}
 			}
 			else if (result.get() == buttonTypeTwo)
@@ -207,7 +253,14 @@ public class ExportChartController
 				catch(IOException e1)
 				{
 					Logger.error(e1);
-					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Das Diagramm konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getControlle().getIcon(), stage, null, false);
+					AlertGenerator.showAlert(AlertType.ERROR, 
+                                            Localization.getString(Strings.TITLE_ERROR), 
+                                            "", 
+                                            Localization.getString(Strings.ERROR_OPEN_CHART, e1.getMessage()), 
+                                            controller.getControlle().getIcon(), 
+                                            stage, 
+                                            null, 
+                                            false);
 				}
 			}
 			else
@@ -218,7 +271,14 @@ public class ExportChartController
 		catch(IOException e)
 		{
 			Logger.error(e);
-			AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Exportieren des Diagramms ist ein Fehler aufgetreten:\n\n" + e.getMessage(), controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.ERROR, 
+			                         Localization.getString(Strings.TITLE_ERROR), 
+			                         "",
+			                         Localization.getString(Strings.ERROR_CHART_EXPORT, e.getMessage()),
+			                         controller.getControlle().getIcon(), 
+			                         stage, 
+			                         null, 
+			                         false);
 		}
 		
 		stage.close();	
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/FilterController.java b/src/de/deadlocker8/budgetmaster/ui/controller/FilterController.java
index c264a28baa2f8bd6bf014f9eff8f3a3acdc75545..0acf4e391f139ef6b32491bd14779fbdefdcce99 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/FilterController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/FilterController.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.FilterSettings;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import fontAwesome.FontIconType;
 import javafx.fxml.FXML;
@@ -14,6 +15,7 @@ import javafx.scene.control.TextField;
 import javafx.scene.layout.VBox;
 import javafx.scene.paint.Color;
 import javafx.stage.Stage;
+import tools.ConvertTo;
 
 public class FilterController
 {
@@ -44,11 +46,11 @@ public class FilterController
 		buttonReset.setGraphic(Helpers.getFontIcon(FontIconType.UNDO, 17, Color.WHITE));		
 		buttonFilter.setGraphic(Helpers.getFontIcon(FontIconType.FILTER, 17, Color.WHITE));
 
-		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
-		buttonReset.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
-		buttonFilter.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
-		buttonCategoryAll.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;");
-		buttonCategoryNone.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;");
+		buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
+		buttonReset.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
+		buttonFilter.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
+		buttonCategoryAll.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;");
+		buttonCategoryNone.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;");
 
 		for(Category currentCategory : controller.getCategoryHandler().getCategories())
 		{
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/HomeController.java b/src/de/deadlocker8/budgetmaster/ui/controller/HomeController.java
index 5a8dcb30e95b48de692afc4a55dc37ddd4652b2b..24e807b0151109759ade30da8b5fc15f195ee1a8 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/HomeController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/HomeController.java
@@ -4,7 +4,9 @@ import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.Budget;
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.Refreshable;
 import de.deadlocker8.budgetmaster.ui.cells.CategoryBudgetCell;
 import javafx.application.Platform;
@@ -17,6 +19,8 @@ import javafx.scene.control.ListView;
 import javafx.scene.control.ProgressBar;
 import javafx.scene.layout.AnchorPane;
 import javafx.util.Callback;
+import tools.ConvertTo;
+import tools.Localization;
 
 public class HomeController implements Refreshable
 {
@@ -42,7 +46,7 @@ public class HomeController implements Refreshable
 			}
 		});
 		
-		Label labelPlaceholder = new Label("Keine Daten verfügbar");          
+		Label labelPlaceholder = new Label(Localization.getString(Strings.HOME_PLACEHOLDER));          
         labelPlaceholder.setStyle("-fx-font-size: 16");
         listView.setPlaceholder(labelPlaceholder);
 
@@ -60,7 +64,7 @@ public class HomeController implements Refreshable
 				});
 			}
 		});
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
 		
 		refresh();
 	}
@@ -94,9 +98,9 @@ public class HomeController implements Refreshable
 			}
 			else
 			{
-				labelBudget.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
+				labelBudget.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
 			}
-			labelStartBudget.setText("von " + Helpers.getCurrencyString(budget.getIncomeSum(), currency) + " verbleibend");
+			labelStartBudget.setText(Localization.getString(Strings.HOME_BUDGET, Helpers.getCurrencyString(budget.getIncomeSum(), currency)));
 			
 			double factor = remaining / budget.getIncomeSum();
 			if(factor < 0)
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/NewCategoryController.java b/src/de/deadlocker8/budgetmaster/ui/controller/NewCategoryController.java
index 6b08ff5dfb10bf6e97afb7d54d813a5dfd30d7f8..1f9454e41a31bd0d4987d9d44e7e2b7ee5458bc9 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/NewCategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/NewCategoryController.java
@@ -8,7 +8,9 @@ import org.controlsfx.control.PopOver.ArrowLocation;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.colorPick.ColorView;
 import fontAwesome.FontIconType;
 import javafx.fxml.FXML;
@@ -20,6 +22,7 @@ import javafx.stage.Stage;
 import javafx.util.Duration;
 import tools.AlertGenerator;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class NewCategoryController
 {
@@ -49,8 +52,8 @@ public class NewCategoryController
 		buttonCancel.setGraphic(Helpers.getFontIcon(FontIconType.TIMES, 17, Color.WHITE));		
 		buttonSave.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 17, Color.WHITE));
 
-		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
-		buttonSave.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
+		buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
+		buttonSave.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
 		buttonColor.setStyle("-fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;");
 		
 		buttonColor.prefWidthProperty().bind(textFieldName.widthProperty());
@@ -82,10 +85,10 @@ public class NewCategoryController
 		if(edit)
 		{
 			textFieldName.setText(category.getName());
-			colorView = new ColorView(category.getColor(), colors, this, (finishColor) -> {
+			colorView = new ColorView(Color.web(category.getColor()), colors, this, (finishColor) -> {
 				setColor(finishColor);
 			});
-			setColor(category.getColor());
+			setColor(Color.web(category.getColor()));
 		}
 		else
 		{
@@ -111,20 +114,34 @@ public class NewCategoryController
 		String name = textFieldName.getText();
 		if(name == null || name.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Feld für den Namen darf nicht leer sein.", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING,
+			                        Localization.getString(Strings.TITLE_WARNING),
+                        	        "",
+                        	        Localization.getString(Strings.WARNING_EMPTY_CATEGORY_NAME),
+                        	        controller.getIcon(), 
+                        	        controller.getStage(), 
+                        	        null, 
+                        	        false);
 			return;
 		}
 		
 		if(name.length() > 45)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Der Name darf maximal 45 Zeichen lang sein.", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING,
+			                        Localization.getString(Strings.TITLE_WARNING),
+		                            "", 
+		                            Localization.getString(Strings.WARNING_NAME_CHARACTER_LIMIT_REACHED_45), 
+		                            controller.getIcon(), 
+		                            controller.getStage(), 
+		                            null, 
+		                            false);
 			return;
 		}
 		
 		if(edit)
 		{
 			category.setName(name);
-			category.setColor(color);
+			category.setColor(ConvertTo.toRGBHexWithoutOpacity(color));
 			ServerConnection connection;
 			try
 			{
@@ -138,7 +155,7 @@ public class NewCategoryController
 		}
 		else
 		{			
-			Category newCategory = new Category(name, color);		
+			Category newCategory = new Category(name, ConvertTo.toRGBHexWithoutOpacity(color));		
 			ServerConnection connection;
 			try
 			{
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java b/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
index 51031c0f7d10537ed92d4cc1e1dca19bf7b97d62..bed43daa5ef76ca69c2ba29dc85d44ff50bf030a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
@@ -12,7 +12,9 @@ import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.cells.ButtonCategoryCell;
 import de.deadlocker8.budgetmaster.ui.cells.RepeatingDayCell;
 import de.deadlocker8.budgetmaster.ui.cells.SmallCategoryCell;
@@ -36,6 +38,7 @@ import javafx.stage.Stage;
 import logger.Logger;
 import tools.AlertGenerator;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class NewPaymentController
 {
@@ -74,8 +77,8 @@ public class NewPaymentController
 		buttonCancel.setGraphic(Helpers.getFontIcon(FontIconType.TIMES, 17, Color.WHITE));
 		buttonSave.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 17, Color.WHITE));
 
-		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
-		buttonSave.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
+		buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
+		buttonSave.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
 
 		SpinnerValueFactory<Integer> valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 1000, 0);
 		spinnerRepeatingPeriod.setValueFactory(valueFactory);
@@ -105,8 +108,8 @@ public class NewPaymentController
 		comboBoxCategory.setButtonCell(buttonCategoryCell);
 		comboBoxCategory.setStyle("-fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;");
 		comboBoxCategory.valueProperty().addListener((listener, oldValue, newValue) -> {		
-			comboBoxCategory.setStyle("-fx-background-color: " + ConvertTo.toRGBHex(newValue.getColor()) + "; -fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;");
-			buttonCategoryCell.setColor(newValue.getColor());
+			comboBoxCategory.setStyle("-fx-background-color: " + newValue.getColor() + "; -fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;");
+			buttonCategoryCell.setColor(Color.web(newValue.getColor()));
 		});
 
 		checkBoxRepeat.selectedProperty().addListener((listener, oldValue, newValue) -> {
@@ -240,27 +243,55 @@ public class NewPaymentController
 		String name = textFieldName.getText();
 		if(name == null || name.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Feld für den Namen darf nicht leer sein.", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING,
+			                        Localization.getString(Strings.TITLE_WARNING),
+			                        "", 
+			                        Localization.getString(Strings.WARNING_EMPTY_PAYMENT_NAME), 
+			                        controller.getIcon(), 
+			                        controller.getStage(), 
+			                        null, 
+			                        false);
 			return;
 		}
 		
 		if(name.length() > 150)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Der Name darf maximal 150 Zeichen lang sein.", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING,
+			                        Localization.getString(Strings.TITLE_WARNING),
+			                        "", 
+			                        Localization.getString(Strings.WARNING_NAME_CHARACTER_LIMIT_REACHED_150), 
+			                        controller.getIcon(), 
+			                        controller.getStage(), 
+			                        null, 
+			                        false);
 			return;
 		}
 
 		String amountText = textFieldAmount.getText();
 		if(!amountText.matches("^-?\\d+(,\\d+)*(\\.\\d+(e\\d+)?)?$"))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Gib eine gültige Zahl für den Betrag ein.", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+			                        Localization.getString(Strings.TITLE_WARNING),
+			                        "",
+			                        Localization.getString(Strings.WARNING_PAYMENT_AMOUNT),
+			                        controller.getIcon(),
+			                        controller.getStage(),
+			                        null,
+			                        false);
 			return;
 		}
 
 		LocalDate date = datePicker.getValue();
 		if(date == null)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte wähle ein Datum aus.", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING,
+                			        Localization.getString(Strings.TITLE_WARNING),
+                			        "",
+                			        Localization.getString(Strings.WARNING_EMPTY_PAYMENT_DATE),
+                			        controller.getIcon(),
+                			        controller.getStage(),
+                			        null,
+                			        false);
 			return;
 		}
 
@@ -276,7 +307,14 @@ public class NewPaymentController
 		{
 			if(description.length() > 150)
 			{
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Notiz darf maximal 150 Zeichen lang sein.", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.WARNING,
+				                        Localization.getString(Strings.TITLE_WARNING),
+				                        "",
+				                        Localization.getString(Strings.WARNING_DESCRIPTION_CHARACTER_LIMIT_REACHED_150),
+				                        controller.getIcon(),
+				                        controller.getStage(),
+				                        null,
+				                        false);
 				return;
 			}
 		}
@@ -300,13 +338,27 @@ public class NewPaymentController
 
 			if(repeatingInterval == 0 && repeatingDay == 0)
 			{
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Wenn Wiederholung aktiviert ist dürfen nicht beide Eingabefelder 0 sein.\n(Zur Deaktivierung der Wiederholung einfach die Checkbox enthaken)", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.WARNING,
+				        Localization.getString(Strings.TITLE_WARNING),
+				        "",
+				        Localization.getString(Strings.WARNING_PAYMENT_REPEATING),				       
+				        controller.getIcon(),
+				        controller.getStage(),
+				        null,
+				        false);
 				return;
 			}
 
 			if(datePickerEnddate.getValue() != null && datePickerEnddate.getValue().isBefore(date))
 			{
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Enddatum darf zeitlich nicht vor dem Datum der Zahlung liegen.", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.WARNING, 
+				                        Localization.getString(Strings.TITLE_WARNING),
+				                        "",
+				                        Localization.getString(Strings.WARNING_ENDDATE_BEFORE_STARTDATE),
+				                        controller.getIcon(),
+				                        controller.getStage(),
+				                        null,
+				                        false);
 				return;
 			}			
 
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/PaymentController.java b/src/de/deadlocker8/budgetmaster/ui/controller/PaymentController.java
index 634a08e0e6cbf62d42436177f6a349709ba379a9..c7671f562b1a7bb0e46a45741d4bd746cb5af02f 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/PaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/PaymentController.java
@@ -11,7 +11,9 @@ import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.Refreshable;
 import de.deadlocker8.budgetmaster.ui.cells.PaymentCell;
 import fontAwesome.FontIconType;
@@ -34,6 +36,8 @@ import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.util.Callback;
 import logger.Logger;
+import tools.ConvertTo;
+import tools.Localization;
 
 public class PaymentController implements Refreshable
 {
@@ -81,7 +85,7 @@ public class PaymentController implements Refreshable
 			}
 		});
 		
-		Label labelPlaceholder = new Label("Keine Daten verfügbar");      
+		Label labelPlaceholder = new Label(Localization.getString(Strings.PAYMENTS_PLACEHOLDER));      
         labelPlaceholder.setStyle("-fx-font-size: 16");
         listView.setPlaceholder(labelPlaceholder);
 
@@ -103,18 +107,18 @@ public class PaymentController implements Refreshable
 		buttonNewIncome.setGraphic(Helpers.getFontIcon(FontIconType.DOWNLOAD, 18, Color.WHITE));
 		buttonFilter.setGraphic(Helpers.getFontIcon(FontIconType.FILTER, 18, Color.WHITE));
 		buttonNewPayment.setGraphic(Helpers.getFontIcon(FontIconType.UPLOAD, 18, Color.WHITE));
-		labelFilterActive.setGraphic(Helpers.getFontIcon(FontIconType.WARNING, 13, Color.web(controller.getBundle().getString("color.text"))));
+		labelFilterActive.setGraphic(Helpers.getFontIcon(FontIconType.WARNING, 13, Colors.TEXT));
 
 		// apply theme
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
-		labelIncome.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelIncomes.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelPayment.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelPayments.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelFilterActive.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		buttonNewIncome.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
-		buttonFilter.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
-		buttonNewPayment.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
+		labelIncome.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		labelIncomes.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		labelPayment.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		labelPayments.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		labelFilterActive.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		buttonNewIncome.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		buttonFilter.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		buttonNewPayment.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
 
 		refresh();
 	}
@@ -134,21 +138,22 @@ public class PaymentController implements Refreshable
 		try
 		{
 			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
 			newStage.initModality(Modality.APPLICATION_MODAL);
 			String titlePart;
 
-			titlePart = isPayment ? "Ausgabe" : "Einnahme";
+			titlePart = isPayment ? Localization.getString(Strings.TITLE_PAYMENT) : Localization.getString(Strings.TITLE_INCOME);
 
 			if(edit)
 			{
-				newStage.setTitle(titlePart + " bearbeiten");
+				newStage.setTitle(Localization.getString(Strings.TITLE_PAYMENT_EDIT, titlePart));
 			}
 			else
 			{
-				newStage.setTitle("Neue " + titlePart);
+				newStage.setTitle(Localization.getString(Strings.TITLE_PAYMENT_NEW, titlePart));
 			}
 
 			newStage.setScene(new Scene(root));
@@ -241,11 +246,12 @@ public class PaymentController implements Refreshable
 		try
 		{
 			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
 			newStage.initModality(Modality.APPLICATION_MODAL);	
-			newStage.setTitle("Filter");
+			newStage.setTitle(Localization.getString(Strings.TITLE_FILTER));
 			newStage.setScene(new Scene(root));
 			newStage.getIcons().add(controller.getIcon());
 			newStage.setResizable(false);
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
index 9d48523978f3db1faf0859d6fa2054c0387a4510..c216e026e687c80b45943dc376eb6739aa842764 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
@@ -22,7 +22,9 @@ import de.deadlocker8.budgetmaster.logic.report.ColumnOrder;
 import de.deadlocker8.budgetmaster.logic.report.ColumnType;
 import de.deadlocker8.budgetmaster.logic.report.ReportGenerator;
 import de.deadlocker8.budgetmaster.logic.report.ReportItem;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.Refreshable;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
@@ -56,6 +58,8 @@ import javafx.stage.Stage;
 import javafx.util.Callback;
 import logger.Logger;
 import tools.AlertGenerator;
+import tools.ConvertTo;
+import tools.Localization;
 import tools.Worker;
 
 public class ReportController implements Refreshable
@@ -73,6 +77,7 @@ public class ReportController implements Refreshable
 	private Controller controller;
 	private ColumnFilter columnFilter;
 	private File reportPath;
+	private String initialReportPath;
 
 	public void init(Controller controller)
 	{
@@ -80,18 +85,18 @@ public class ReportController implements Refreshable
 
 		buttonFilter.setGraphic(Helpers.getFontIcon(FontIconType.FILTER, 18, Color.WHITE));		
 		buttonGenerate.setGraphic(Helpers.getFontIcon(FontIconType.COGS, 18, Color.WHITE));	
-		labelFilterActive.setGraphic(Helpers.getFontIcon(FontIconType.WARNING, 16, Color.web(controller.getBundle().getString("color.text"))));
+		labelFilterActive.setGraphic(Helpers.getFontIcon(FontIconType.WARNING, 16, Colors.TEXT));
 		
 		initTable();
 
 		// apply theme
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
-		labelFilterActive.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		buttonFilter.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
-		buttonGenerate.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
-		checkBoxIncludeBudget.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text") + "; -fx-font-size: 14;");
-		checkBoxSplitTable.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text") + "; -fx-font-size: 14;");
-		checkBoxIncludeCategoryBudgets.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text") + "; -fx-font-size: 14;");
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
+		labelFilterActive.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		buttonFilter.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		buttonGenerate.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		checkBoxIncludeBudget.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-size: 14;");
+		checkBoxSplitTable.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-size: 14;");
+		checkBoxIncludeCategoryBudgets.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-size: 14;");
 
 		refresh();
 	}
@@ -111,11 +116,11 @@ public class ReportController implements Refreshable
         checkBoxPositions.setSelected(true);
         hboxColumnPosition.getChildren().add(checkBoxPositions);
 
-        Label labelColumnPosition = new Label("Nr.");      
+        Label labelColumnPosition = new Label(Localization.getString(Strings.REPORT_POSITION));      
         hboxColumnPosition.getChildren().add(labelColumnPosition);
         
         checkBoxPositions.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);           
             hboxColumnPosition.setStyle(style);
             columnFilter.toggleColumn(ColumnType.POSITION, c);
         });
@@ -158,11 +163,11 @@ public class ReportController implements Refreshable
         checkBoxDate.setSelected(true);
         hboxColumnDate.getChildren().add(checkBoxDate);
 
-        Label labelComlumnDate = new Label("Datum");
+        Label labelComlumnDate = new Label(Localization.getString(Strings.REPORT_DATE));
         hboxColumnDate.getChildren().add(labelComlumnDate);        
         
         checkBoxDate.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);           
             hboxColumnDate.setStyle(style);
             columnFilter.toggleColumn(ColumnType.DATE, c);
         });
@@ -191,7 +196,7 @@ public class ReportController implements Refreshable
                             Label labelRepeating = new Label();
                             if(item)
                             {
-                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR, 16, Color.web(controller.getBundle().getString("color.text"))));
+                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR, 16, Colors.TEXT));
                             }
                             else
                             {
@@ -220,11 +225,11 @@ public class ReportController implements Refreshable
         checkBoxRepeating.setSelected(true);
         hboxColumnIsRepeating.getChildren().add(checkBoxRepeating);
         
-        Label labelColumnIsRepeating = new Label("Wiederholend");
+        Label labelColumnIsRepeating = new Label(Localization.getString(Strings.REPORT_REPEATING));
         hboxColumnIsRepeating.getChildren().add(labelColumnIsRepeating);
         
         checkBoxRepeating.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);           
             hboxColumnIsRepeating.setStyle(style);
             columnFilter.toggleColumn(ColumnType.REPEATING, c);
         });
@@ -242,12 +247,7 @@ public class ReportController implements Refreshable
             @Override
             public ObservableValue<String> call(CellDataFeatures<ReportItem, String> param)
             {
-                String categoryName = param.getValue().getCategory().getName();
-                if(categoryName.equals("NONE"))
-                {
-                    categoryName = "";
-                }
-                return new SimpleStringProperty(categoryName);
+                return new SimpleStringProperty(param.getValue().getCategory().getName());
             }
         });
         columnCategory.setStyle("-fx-alignment: CENTER;");
@@ -260,11 +260,11 @@ public class ReportController implements Refreshable
         checkBoxCategory.setSelected(true);
         hboxColumnCategory.getChildren().add(checkBoxCategory);
         
-        Label labelColumnCategory = new Label("Kategorie");
+        Label labelColumnCategory = new Label(Localization.getString(Strings.REPORT_CATEGORY));
         hboxColumnCategory.getChildren().add(labelColumnCategory);
         
         checkBoxCategory.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);           
             hboxColumnCategory.setStyle(style);
             columnFilter.toggleColumn(ColumnType.CATEGORY, c);
         });
@@ -287,11 +287,11 @@ public class ReportController implements Refreshable
         checkBoxName.setSelected(true);
         hboxColumnName.getChildren().add(checkBoxName);
         
-        Label labelColumnName = new Label("Name");
+        Label labelColumnName = new Label(Localization.getString(Strings.REPORT_NAME));
         hboxColumnName.getChildren().add(labelColumnName);        
         
         checkBoxName.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);           
             hboxColumnName.setStyle(style);
             columnFilter.toggleColumn(ColumnType.NAME, c);
         });
@@ -314,11 +314,11 @@ public class ReportController implements Refreshable
         checkBoxDescription.setSelected(true);
         hboxColumnDescription.getChildren().add(checkBoxDescription);
         
-        Label labelColumnDescription = new Label("Notiz");
+        Label labelColumnDescription = new Label(Localization.getString(Strings.REPORT_DESCRIPTION));
         hboxColumnDescription.getChildren().add(labelColumnDescription);
         
         checkBoxDescription.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);           
             hboxColumnDescription.setStyle(style);
             columnFilter.toggleColumn(ColumnType.DESCRIPTION, c);
         });
@@ -346,11 +346,11 @@ public class ReportController implements Refreshable
                             Label labelRepeating = new Label();
                             if(item > 0)
                             {
-                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.PLUS, 14, Color.web(controller.getBundle().getString("color.text"))));
+                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.PLUS, 14, Colors.TEXT));
                             }
                             else
                             {
-                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.MINUS, 14, Color.web(controller.getBundle().getString("color.text"))));
+                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.MINUS, 14, Colors.TEXT));
                             }
                             labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121");
                             labelRepeating.setAlignment(Pos.CENTER);
@@ -375,11 +375,11 @@ public class ReportController implements Refreshable
         checkBoxRating.setSelected(true);
         hboxColumnRating.getChildren().add(checkBoxRating);
         
-        Label labelColumnRating = new Label("Bewertung");
+        Label labelColumnRating = new Label(Localization.getString(Strings.REPORT_RATING));
         hboxColumnRating.getChildren().add(labelColumnRating);
         
         checkBoxRating.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);           
             hboxColumnRating.setStyle(style);
             columnFilter.toggleColumn(ColumnType.RATING, c);
         });
@@ -413,11 +413,11 @@ public class ReportController implements Refreshable
         checkBoxAmount.setSelected(true);
         hboxColumnAmount.getChildren().add(checkBoxAmount);
         
-        Label labelColumnAmount = new Label("Betrag");
+        Label labelColumnAmount = new Label(Localization.getString(Strings.REPORT_AMOUNT));
         hboxColumnAmount.getChildren().add(labelColumnAmount);
         
         checkBoxAmount.selectedProperty().addListener((a, b, c)->{
-            String style = c ? "" : "-fx-background-color: salmon;";           
+            String style = c ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED);          
             hboxColumnAmount.setStyle(style);
             columnFilter.toggleColumn(ColumnType.AMOUNT, c);
         });
@@ -433,7 +433,7 @@ public class ReportController implements Refreshable
 			columnFilter.addColumn(type);
 		}
 		
-		Label labelPlaceholder = new Label("Keine Daten verfügbar");
+		Label labelPlaceholder = new Label(Localization.getString(Strings.PAYMENTS_PLACEHOLDER));
 		labelPlaceholder.setStyle("-fx-font-size: 16");
 		tableView.setPlaceholder(labelPlaceholder);		
 
@@ -454,11 +454,12 @@ public class ReportController implements Refreshable
 		try
 		{
 			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
 			newStage.initModality(Modality.APPLICATION_MODAL);
-			newStage.setTitle("Filter");
+			newStage.setTitle(Localization.getString(Strings.TITLE_FILTER));
 			newStage.setScene(new Scene(root));
 			newStage.getIcons().add(controller.getIcon());
 			newStage.setResizable(false);
@@ -520,7 +521,7 @@ public class ReportController implements Refreshable
 		}		
 		
 		FileChooser fileChooser = new FileChooser();
-		fileChooser.setTitle("Bericht speichern");
+		fileChooser.setTitle(Localization.getString(Strings.TITLE_REPORT_SAVE));
 		FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PDF (*.pdf)", "*.pdf");
 		if(reportPath != null)
 		{
@@ -529,10 +530,7 @@ public class ReportController implements Refreshable
 		}
 		else
 		{
-		    DateTime currentDate = controller.getCurrentDate();
-		    String currentMonth = currentDate.toString("MMMM");
-		    String currentYear = currentDate.toString("YYYY");
-		    fileChooser.setInitialFileName("BudgetMaster Monatsbericht - " + currentMonth + " " + currentYear + ".pdf");
+		    fileChooser.setInitialFileName(initialReportPath);
 		}
 		fileChooser.getExtensionFilters().add(extFilter);
 		File file = fileChooser.showSaveDialog(controller.getStage());		
@@ -553,7 +551,7 @@ public class ReportController implements Refreshable
 																controller.getCurrentDate(),
 																budget);
 			
-			Stage modalStage = Helpers.showModal("Vorgang läuft", "Der Monatsbericht wird erstellt, bitte warten...", controller.getStage(), controller.getIcon());
+			Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT), controller.getStage(), controller.getIcon());
 
 			Worker.runLater(() -> {
 				try
@@ -566,18 +564,18 @@ public class ReportController implements Refreshable
 							modalStage.close();
 						}
 						
-						controller.showNotification("Bericht erfolgreich gespeichert");	
+						controller.showNotification(Localization.getString(Strings.NOTIFICATION_REPORT_SAVE));	
 						
 						Alert alert = new Alert(AlertType.INFORMATION);
-						alert.setTitle("Erfolgreich erstellt");
+						alert.setTitle(Localization.getString(Strings.INFO_TITLE_REPORT_SAVE));
 						alert.setHeaderText("");
-						alert.setContentText("Der Monatsbericht wurde erfolgreich erstellt");			
+						alert.setContentText(Localization.getString(Strings.INFO_TEXT_REPORT_SAVE));			
 						Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
 						dialogStage.getIcons().add(controller.getIcon());						
 						
-						ButtonType buttonTypeOne = new ButtonType("Ordner öffnen");
-						ButtonType buttonTypeTwo = new ButtonType("Bericht öffnen");
-						ButtonType buttonTypeThree = new ButtonType("OK");						
+						ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_REPORT_SAVE_OPEN_FOLDER));
+						ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_REPORT_SAVE_OPEN_REPORT));
+						ButtonType buttonTypeThree = new ButtonType(Localization.getString(Strings.OK));						
 						alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeThree);
 						
 						Optional<ButtonType> result = alert.showAndWait();						
@@ -590,7 +588,14 @@ public class ReportController implements Refreshable
 							catch(IOException e1)
 							{
 								Logger.error(e1);
-								AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Der Ordner konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getIcon(), controller.getStage(), null, false);
+								AlertGenerator.showAlert(AlertType.ERROR, 
+														Localization.getString(Strings.TITLE_ERROR), 
+														"", 
+														Localization.getString(Strings.ERROR_OPEN_FOLDER, e1.getMessage()),
+														controller.getIcon(), 
+														controller.getStage(), 
+														null, 
+														false);
 							}
 						}
 						else if (result.get() == buttonTypeTwo)
@@ -602,7 +607,14 @@ public class ReportController implements Refreshable
 							catch(IOException e1)
 							{
 								Logger.error(e1);
-								AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Der Bericht konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getIcon(), controller.getStage(), null, false);
+								AlertGenerator.showAlert(AlertType.ERROR, 
+														Localization.getString(Strings.TITLE_ERROR), 
+														"", 
+														Localization.getString(Strings.ERROR_OPEN_REPORT, e1.getMessage()), 
+														controller.getIcon(), 
+														controller.getStage(), 
+														null, 
+														false);
 							}
 						}
 						else
@@ -619,7 +631,14 @@ public class ReportController implements Refreshable
 						{
 							modalStage.close();
 						}
-						AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Erstellen des Monatsberichts ist ein Fehler aufgetreten:\n\n" + e.getMessage(), controller.getIcon(), controller.getStage(), null, false);
+						AlertGenerator.showAlert(AlertType.ERROR, 
+												Localization.getString(Strings.TITLE_ERROR), 
+												"", 
+												Localization.getString(Strings.ERROR_REPORT_SAVE, e.getMessage()), 
+												controller.getIcon(), 
+												controller.getStage(), 
+												null, 
+												false);
 					});
 				}
 			});			
@@ -644,5 +663,11 @@ public class ReportController implements Refreshable
 		}
 		
 		refreshTableView();
+		
+		DateTime currentDate = controller.getCurrentDate();
+		String currentMonth = currentDate.toString("MM");
+	    String currentYear = currentDate.toString("YYYY");
+	   
+	    initialReportPath = Localization.getString(Strings.REPORT_INITIAL_FILENAME, currentYear, currentMonth);
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
index 34993a4d68c4e92cded299e56cda8413a8723971..c348f1499454586b64eb070a62b272f7efa75b59 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
@@ -8,22 +8,32 @@ import java.util.Optional;
 import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import de.deadlocker8.budgetmasterserver.logic.Database;
+import de.deadlocker8.budgetmaster.logic.utils.LanguageType;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import de.deadlocker8.budgetmaster.main.Main;
+import de.deadlocker8.budgetmaster.ui.cells.LanguageCell;
+import de.deadlocker8.budgetmasterserver.logic.database.Database;
 import javafx.application.Platform;
 import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
 import javafx.scene.control.Alert;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
 import javafx.scene.control.ButtonBar.ButtonData;
 import javafx.scene.control.ButtonType;
+import javafx.scene.control.ComboBox;
 import javafx.scene.control.Label;
 import javafx.scene.control.RadioButton;
 import javafx.scene.control.TextArea;
 import javafx.scene.control.TextField;
 import javafx.scene.control.TextInputDialog;
 import javafx.scene.control.ToggleGroup;
+import javafx.scene.image.Image;
 import javafx.scene.layout.AnchorPane;
 import javafx.stage.FileChooser;
 import javafx.stage.Stage;
@@ -32,6 +42,7 @@ import tools.AlertGenerator;
 import tools.BASE58Type;
 import tools.ConvertTo;
 import tools.HashUtils;
+import tools.Localization;
 import tools.RandomCreations;
 import tools.Worker;
 
@@ -53,8 +64,10 @@ public class SettingsController
 	@FXML private RadioButton radioButtonRestActivated;
 	@FXML private RadioButton radioButtonRestDeactivated;
 	@FXML private TextArea textAreaTrustedHosts;
+	@FXML private ComboBox<LanguageType> comboBoxLanguage;
 
 	private Controller controller;
+	private LanguageType previousLanguage;
 
 	public void init(Controller controller)
 	{
@@ -63,6 +76,15 @@ public class SettingsController
 		textFieldClientSecret.setText("******");
 		radioButtonRestDeactivated.setSelected(true);
 		
+		comboBoxLanguage.setCellFactory((view) -> {
+			return new LanguageCell(true);
+		});		
+		
+		comboBoxLanguage.getItems().addAll(LanguageType.values());		
+		comboBoxLanguage.setButtonCell(new LanguageCell(false));
+		comboBoxLanguage.setValue(LanguageType.ENGLISH);
+		previousLanguage = LanguageType.ENGLISH;
+		
 		if(controller.getSettings().isComplete())
 		{
 			textFieldURL.setText(controller.getSettings().getUrl());
@@ -77,20 +99,28 @@ public class SettingsController
 				radioButtonRestDeactivated.setSelected(true);
 			}
 			setTextAreaTrustedHosts(controller.getSettings().getTrustedHosts());
+			
+			if(controller.getSettings().getLanguage() != null)
+			{
+				LanguageType language = controller.getSettings().getLanguage();
+				comboBoxLanguage.setValue(language);
+				previousLanguage = language;
+			}
 		}
+		
+		anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND));
+		labelClientSecret.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		labelSecret.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		labelURL.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		labelCurrency.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT));
+		buttonSave.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		buttonExportDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
+		buttonImportDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
+		buttonDeleteDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_RED) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
 
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
-		labelClientSecret.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelSecret.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelURL.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelCurrency.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		buttonSave.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
-		buttonExportDB.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
-		buttonImportDB.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
-		buttonDeleteDB.setStyle("-fx-background-color: #FF5047; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
-		textFieldURL.setPromptText("z.B. https://yourdomain.de");
-		textFieldCurrency.setPromptText("z.B. €, CHF, $");
-		textAreaTrustedHosts.setPromptText("z.B. localhost");
+		textFieldURL.setPromptText(Localization.getString(Strings.URL_PLACEHOLDER));
+		textFieldCurrency.setPromptText(Localization.getString(Strings.CURRENCY_PLACEHOLDER));
+		textAreaTrustedHosts.setPromptText(Localization.getString(Strings.TRUSTED_HOSTS_PLACEHOLDER));
 
 		ToggleGroup toggleGroup = new ToggleGroup();
 		radioButtonRestActivated.setToggleGroup(toggleGroup);
@@ -124,25 +154,53 @@ public class SettingsController
 		
 		if(clientSecret == null || clientSecret.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Feld für das Client Passwort darf nicht leer sein!", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+									Localization.getString(Strings.TITLE_WARNING), 
+									"",
+									Localization.getString(Strings.WARNING_EMPTY_SECRET_CLIENT),
+									controller.getIcon(), 
+									controller.getStage(), 
+									null, 
+									false);
 			return;
 		}
 		
 		if(url == null || url.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Feld für die Server URL darf nicht leer sein!", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+									Localization.getString(Strings.TITLE_WARNING), 
+									"", 
+									Localization.getString(Strings.WARNING_EMPTY_URL),
+									controller.getIcon(), 
+									controller.getStage(),
+									null, 
+									false);
 			return;
 		}
 
 		if(secret == null || secret.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Server Passwortfeld darf nicht leer sein!", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+									Localization.getString(Strings.TITLE_WARNING), 
+									"", 
+									Localization.getString(Strings.WARNING_EMPTY_SECRET_SERVER), 
+									controller.getIcon(), 
+									controller.getStage(), 
+									null, 
+									false);
 			return;
 		}
 
 		if(currency == null || currency.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte gib deine gewünschte Währung ein!", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+									Localization.getString(Strings.TITLE_WARNING), 
+									"", 
+									Localization.getString(Strings.WARNING_EMPTY_CURRENCY),
+									controller.getIcon(), 
+									controller.getStage(), 
+									null, 
+									false);
 			return;
 		}
 
@@ -174,6 +232,7 @@ public class SettingsController
 			controller.getSettings().setCurrency(currency);
 			controller.getSettings().setRestActivated(radioButtonRestActivated.isSelected());
 			controller.getSettings().setTrustedHosts(trustedHosts);
+			controller.getSettings().setLanguage(comboBoxLanguage.getValue());
 		}
 		else
 		{
@@ -200,6 +259,7 @@ public class SettingsController
 			settings.setCurrency(currency);
 			settings.setRestActivated(radioButtonRestActivated.isSelected());
 			settings.setTrustedHosts(trustedHosts);
+			settings.setLanguage(comboBoxLanguage.getValue());
 			controller.setSettings(settings);
 		}
 
@@ -210,26 +270,82 @@ public class SettingsController
 		catch(IOException e)
 		{
 			Logger.error(e);
-			AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Speichern der Einstellungen ist ein Fehler aufgetreten", controller.getIcon(), controller.getStage(), null, false);
+			AlertGenerator.showAlert(AlertType.ERROR, 
+									Localization.getString(Strings.TITLE_ERROR), 
+									"", 
+									Localization.getString(Strings.ERROR_SETTINGS_SAVE),
+									controller.getIcon(), 
+									controller.getStage(), 
+									null, 
+									false);
 		}
 
 		textFieldClientSecret.setText("******");
 		textFieldSecret.setText("******");
 
 		controller.refresh(controller.getFilterSettings());
-		controller.showNotification("Erfolgreich gespeichert");
+		controller.showNotification(Localization.getString(Strings.NOTIFICATION_SETTINGS_SAVE));
+		
+		//retstart application if language has changed
+		if(controller.getSettings().getLanguage() != previousLanguage)
+		{
+			Alert alert = new Alert(AlertType.INFORMATION);
+			alert.setTitle(Localization.getString(Strings.INFO_TITLE_LANGUAGE_CHANGED));
+			alert.setHeaderText("");
+			alert.setContentText(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED));			
+			Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
+			dialogStage.getIcons().add(controller.getIcon());					
+			
+			ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_NOW));
+			ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_LATER));							
+			alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo);
+			
+			Optional<ButtonType> result = alert.showAndWait();						
+			if (result.get() == buttonTypeOne)
+			{				
+				controller.getStage().close();				
+				
+				Localization.loadLanguage(controller.getSettings().getLanguage().getLocale());
+				
+				try
+				{				
+				    Image icon = new Image("/de/deadlocker8/budgetmaster/resources/icon.png");
+					FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml"));
+					loader.setResources(Localization.getBundle());
+					Parent root = (Parent)loader.load();
+					
+					Scene scene = new Scene(root, 450, 230);
+
+					((SplashScreenController)loader.getController()).init(Main.primaryStage, icon);
+
+					Main.primaryStage.setResizable(false);			
+					Main.primaryStage.getIcons().add(icon);
+					Main.primaryStage.setTitle(Localization.getString(Strings.APP_NAME));
+					Main.primaryStage.setScene(scene);			
+					Main.primaryStage.show();
+				}
+				catch(Exception e)
+				{
+					Logger.error(e);
+				}	
+			}
+			else
+			{
+				alert.close();
+			}
+		}
 	}
 
 	public void exportDB()
 	{
 		FileChooser fileChooser = new FileChooser();
-		fileChooser.setTitle("Datenbank exportieren");
+		fileChooser.setTitle(Localization.getString(Strings.TITLE_DATABASE_EXPORT));
 		FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("JSON (*.json)", "*.json");
 		fileChooser.getExtensionFilters().add(extFilter);
 		File file = fileChooser.showSaveDialog(controller.getStage());
 		if(file != null)
 		{
-			Stage modalStage = Helpers.showModal("Vorgang läuft", "Die Datenbank wird exportiert, bitte warten...", controller.getStage(), controller.getIcon());
+			Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_EXPORT), controller.getStage(), controller.getIcon());
 
 			Worker.runLater(() -> {
 				try
@@ -243,7 +359,14 @@ public class SettingsController
 						{
 							modalStage.close();
 						}
-						AlertGenerator.showAlert(AlertType.INFORMATION, "Erfolgreich exportiert", "", "Die Datenbank wurde erfolgreich exportiert.", controller.getIcon(), controller.getStage(), null, false);
+						AlertGenerator.showAlert(AlertType.INFORMATION, 
+												Localization.getString(Strings.INFO_TITLE_DATABASE_EXPORT), 
+												"", 
+												Localization.getString(Strings.INFO_TEXT_DATABASE_EXPORT), 
+												controller.getIcon(), 
+												controller.getStage(), 
+												null, 
+												false);
 					});
 				}
 				catch(Exception e)
@@ -264,7 +387,7 @@ public class SettingsController
 	private void importDatabase()
 	{
 		FileChooser fileChooser = new FileChooser();
-		fileChooser.setTitle("Datenbank importieren");
+		fileChooser.setTitle(Localization.getString(Strings.TITLE_DATABASE_IMPORT));
 		FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("JSON (*.json)", "*.json");
 		fileChooser.getExtensionFilters().add(extFilter);
 		File file = fileChooser.showOpenDialog(controller.getStage());
@@ -276,18 +399,32 @@ public class SettingsController
 				database = FileHelper.loadDatabaseJSON(file);
 				if(database.getCategories() == null || database.getNormalPayments() == null || database.getRepeatingPayments() == null)
 				{
-					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Die angegebene Datei enthält kein gültiges BudgetMaster-Datenformat und kann daher nicht importiert werden.", controller.getIcon(), controller.getStage(), null, false);
+					AlertGenerator.showAlert(AlertType.ERROR, 
+											Localization.getString(Strings.TITLE_ERROR), 
+											"", 
+											Localization.getString(Strings.ERROR_DATABASE_IMPORT_WRONG_FILE), 
+											controller.getIcon(), 
+											controller.getStage(), 
+											null, 
+											false);
 					return;
 				}
 			}
 			catch(IOException e1)
 			{
 				Logger.error(e1);
-				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Einlesen der Datei ist ein Fehler aufgetreten.", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.ERROR, 
+										Localization.getString(Strings.TITLE_ERROR), 
+										"", 
+										Localization.getString(Strings.ERROR_DATABASE_IMPORT), 
+										controller.getIcon(), 
+										controller.getStage(), 
+										null, 
+										false);
 				return;
 			}
 
-			Stage modalStage = Helpers.showModal("Vorgang läuft", "Die Datenbank wird importiert, bitte warten...", controller.getStage(), controller.getIcon());
+			Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_IMPORT), controller.getStage(), controller.getIcon());
 
 			Worker.runLater(() -> {
 				try
@@ -299,8 +436,18 @@ public class SettingsController
 						if(modalStage != null)
 						{
 							modalStage.close();
-						}
-						AlertGenerator.showAlert(AlertType.INFORMATION, "Erfolgreich exportiert", "", "Die Datenbank wurder erfolgreich importiert.", controller.getIcon(), controller.getStage(), null, false);
+						}						
+						
+						AlertGenerator.showAlert(AlertType.INFORMATION, 
+												Localization.getString(Strings.INFO_TITLE_DATABASE_IMPORT), 
+												"", 
+												Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT), 
+												controller.getIcon(), 
+												controller.getStage(), 
+												null, 
+												false);
+						
+						controller.refresh(controller.getFilterSettings());
 					});
 				}
 				catch(Exception e)
@@ -316,21 +463,25 @@ public class SettingsController
 				}
 			});
 		}
+		else
+		{
+			controller.refresh(controller.getFilterSettings());
+		}
 	}
 
 	public void importDB()
 	{
 		Alert alert = new Alert(AlertType.CONFIRMATION);
-		alert.setTitle("Datenbank importieren");
+		alert.setTitle(Localization.getString(Strings.INFO_TITLE_DATABASE_IMPORT_DIALOG));
 		alert.setHeaderText("");		
-		alert.setContentText("Soll die Datenbank vor dem Importieren gelöscht werden?");
+		alert.setContentText(Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT_DIALOG));
 		Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
 		dialogStage.getIcons().add(controller.getIcon());
 		dialogStage.initOwner(controller.getStage());
 
-		ButtonType buttonTypeDelete = new ButtonType("Ja, Datenbank löschen");
-		ButtonType buttonTypeAppend = new ButtonType("Nein, Daten hinzufügen");
-		ButtonType buttonTypeCancel = new ButtonType("Abbrechen", ButtonData.CANCEL_CLOSE);
+		ButtonType buttonTypeDelete = new ButtonType(Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT_DIALOG_DELETE));
+		ButtonType buttonTypeAppend = new ButtonType(Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT_DIALOG_APPEND));
+		ButtonType buttonTypeCancel = new ButtonType(Localization.getString(Strings.CANCEL), ButtonData.CANCEL_CLOSE);
 
 		alert.getButtonTypes().setAll(buttonTypeDelete, buttonTypeAppend, buttonTypeCancel);
 		Optional<ButtonType> result = alert.showAndWait();
@@ -341,7 +492,7 @@ public class SettingsController
 		else if(result.get() == buttonTypeAppend)
 		{	
 			importDatabase();
-		}
+		}		
 	}
 	
 	public void deleteDB()
@@ -354,9 +505,9 @@ public class SettingsController
 		String verificationCode = ConvertTo.toBase58(RandomCreations.generateRandomMixedCaseString(4, true), true, BASE58Type.UPPER);
 
 		TextInputDialog dialog = new TextInputDialog();
-		dialog.setTitle("Datenbank löschen");
-		dialog.setHeaderText("Soll die Datenbank wirklich gelöscht werden?");
-		dialog.setContentText("Zur Bestätigung gib folgenden Code ein:\t" + verificationCode);
+		dialog.setTitle(Localization.getString(Strings.INFO_TITLE_DATABASE_DELETE));
+		dialog.setHeaderText(Localization.getString(Strings.INFO_HEADER_TEXT_DATABASE_DELETE));
+		dialog.setContentText(Localization.getString(Strings.INFO_TEXT_DATABASE_DELETE, verificationCode));
 		Stage dialogStage = (Stage)dialog.getDialogPane().getScene().getWindow();
 		dialogStage.getIcons().add(controller.getIcon());
 		dialogStage.initOwner(controller.getStage());
@@ -366,14 +517,14 @@ public class SettingsController
 		{
 			if(result.get().equals(verificationCode))
 			{
-				Stage modalStage = Helpers.showModal("Vorgang läuft", "Die Datenbank wird gelöscht, bitte warten...", controller.getStage(), controller.getIcon());
+				Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_DELETE), controller.getStage(), controller.getIcon());
 
 				Worker.runLater(() -> {
 					try
 					{
 						ServerConnection connection = new ServerConnection(controller.getSettings());
 						connection.deleteDatabase();
-						Platform.runLater(() -> {
+						Platform.runLater(() -> {							
 							if(modalStage != null)
 							{
 								modalStage.close();
@@ -381,6 +532,10 @@ public class SettingsController
 								{
 									importDatabase();
 								}
+								else
+								{
+									controller.refresh(controller.getFilterSettings());
+								}
 							}
 						});
 					}
@@ -399,7 +554,14 @@ public class SettingsController
 			}
 			else
 			{
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Eingabe stimmt nicht mit dem Bestätigungscode überein.", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.WARNING, 
+										Localization.getString(Strings.TITLE_WARNING), 
+										"", 
+										Localization.getString(Strings.WARNING_WRONG_VERIFICATION_CODE), 
+										controller.getIcon(), 
+										controller.getStage(), 
+										null, 
+										false);
 				deleteDB();
 			}
 		}
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
index 5c2efed54bb7f3915b404fff847525345184aa2d..04920fa91c8d9a4222eda79d3099c706de3305b5 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
@@ -1,11 +1,12 @@
 package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.IOException;
-import java.util.ResourceBundle;
 
 import de.deadlocker8.budgetmaster.logic.Settings;
+import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.fxml.FXML;
@@ -24,33 +25,33 @@ import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import logger.Logger;
 import tools.AlertGenerator;
+import tools.ConvertTo;
 import tools.HashUtils;
+import tools.Localization;
 
 public class SplashScreenController
 {
 	@FXML private ImageView imageViewLogo;
 	@FXML private Label labelVersion;
 	@FXML private PasswordField textFieldPassword;
-	@FXML private Button buttonLogin;
-	
-	private ResourceBundle bundle;
+	@FXML private Button buttonLogin;	
+
 	private Stage stage;
 	private Image icon;
 	private Settings settings;
 	private boolean isFirstStart;
 
-	public void init(Stage stage, Image icon, ResourceBundle bundle)
+	public void init(Stage stage, Image icon)
 	{
 		this.stage = stage;
 		this.icon = icon;
-		this.bundle = bundle;
 		
 		imageViewLogo.setImage(icon);
 		
-		labelVersion.setText("v" + bundle.getString("version.name"));
+		labelVersion.setText("v" + Localization.getString(Strings.VERSION_NAME));
 	
 		buttonLogin.setGraphic(Helpers.getFontIcon(FontIconType.SIGN_IN, 18, Color.WHITE));
-		buttonLogin.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
+		buttonLogin.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
 		buttonLogin.setPadding(new Insets(3, 7, 3, 7));		
 		
 		textFieldPassword.setOnKeyReleased((event)->{
@@ -60,13 +61,21 @@ public class SplashScreenController
 			}
 		});
 		
-		settings = FileHelper.loadSettings();
+		settings = FileHelper.loadSettings();		
+		
 		if(settings == null)
 		{	
 			settings = new Settings();
 			//first start of budgetmaster
 			Platform.runLater(() -> {
-				AlertGenerator.showAlert(AlertType.INFORMATION, "Willkommen", "Willkommen beim BudgetMaster", "Dies scheint dein erster Besuch zu sein, da noch keine Einstellungen existieren.\nDamit es losgehen kann, überlege dir ein Passwort und trage es in das Passwortfeld ein.\n\n(Hinweis: Das Passwort kann später jederzeit geändert werden.)\n ", icon, stage, null, false);
+				AlertGenerator.showAlert(AlertType.INFORMATION, 
+										Localization.getString(Strings.INFO_TITLE_WELCOME), 
+										Localization.getString(Strings.INFO_HEADER_TEXT_WELCOME),
+										Localization.getString(Strings.INFO_TEXT_WELCOME_FIRST_START),
+										icon, 
+										stage, 
+										null, 
+										false);
 			});
 			isFirstStart = true;
 		}
@@ -76,7 +85,14 @@ public class SplashScreenController
 			{
 				//compatibility (settings exists but from older version without clientSecret)
 				Platform.runLater(() -> {
-					AlertGenerator.showAlert(AlertType.INFORMATION, "Willkommen", "Willkommen beim BudgetMaster", "Deine Einstellungsdatei ist veraltet und muss aktualisert werden.\nSeit Version v1.3.0 wird ein Passwort benötigt, um BudgetMaster zu entsperren. Damit es losgehen kann, überlege dir ein Passwort und trage es in das Passwortfeld ein.\n\n(Hinweis: Das Passwort kann später jederzeit geändert werden.)\n ", icon, stage, null, false);
+					AlertGenerator.showAlert(AlertType.INFORMATION,
+											Localization.getString(Strings.INFO_TITLE_WELCOME), 
+											Localization.getString(Strings.INFO_HEADER_TEXT_WELCOME),
+											Localization.getString(Strings.INFO_TEXT_WELCOME_COMPATIBILITY),
+											icon,
+											stage,
+											null,
+											false);
 				});
 				isFirstStart = true;
 			}
@@ -92,7 +108,14 @@ public class SplashScreenController
 		String password = textFieldPassword.getText().trim();
 		if(password == null || password.isEmpty())
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte gib dein Passwort ein.", icon, stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, 
+									Localization.getString(Strings.TITLE_WARNING), 
+									"", 
+									Localization.getString(Strings.WARNING_EMPTY_PASSWORD), 
+									icon, 
+									stage, 
+									null, 
+									false);
 			return;
 		}		
 	
@@ -110,7 +133,14 @@ public class SplashScreenController
 			catch(IOException e)
 			{
 				Logger.error(e);
-				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Speichern des Passworts ist ein Fehler aufgetreten.", icon, stage, null, false);
+				AlertGenerator.showAlert(AlertType.ERROR, 
+										Localization.getString(Strings.TITLE_ERROR), 
+										"", 
+										Localization.getString(Strings.ERROR_PASSWORD_SAVE),
+										icon, 
+										stage, 
+										null, 
+										false);
 			}
 		}
 		else
@@ -118,7 +148,14 @@ public class SplashScreenController
 			//check password
 			if(!HashUtils.hash(password, Helpers.SALT).equals(settings.getClientSecret()))
 			{
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Passwort ist nicht korrekt.", icon, stage, null, false);
+				AlertGenerator.showAlert(AlertType.WARNING, 
+										Localization.getString(Strings.TITLE_WARNING), 
+										"", 
+										Localization.getString(Strings.WARNING_WRONG_PASSWORD),
+										icon, 
+										stage, 
+										null, 
+										false);
 				return;
 			}
 			
@@ -132,17 +169,18 @@ public class SplashScreenController
 		try
 		{
 			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml"));
+			fxmlLoader.setResources(Localization.getBundle());
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
-			newStage.setTitle(bundle.getString("app.name"));
-			newStage.setScene(new Scene(root, 650, 650));
+			newStage.setTitle(Localization.getString(Strings.APP_NAME));
+			newStage.setScene(new Scene(root, 650, 675));
 			newStage.getIcons().add(icon);			
 			newStage.setResizable(true);
 			newStage.setMinHeight(650);
 			newStage.setMinWidth(610);
 			newStage.getScene().getStylesheets().add("/de/deadlocker8/budgetmaster/ui/style.css");
 			Controller newController = fxmlLoader.getController();
-			newController.init(newStage, bundle, settings);
+			newController.init(newStage, settings);
 			newStage.show();
 		}
 		catch(IOException e)
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml
index 308c45777eb5722cf94af3f6ade82e2659f4680b..0d2c84f888c5893648f1d0a230beb25108d3676e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml
@@ -7,11 +7,11 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.CategoryController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.CategoryController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
          <children>
-            <Button fx:id="buttonCategory" mnemonicParsing="false" onAction="#createNewCategory" text=" Neue Kategorie">
+            <Button fx:id="buttonCategory" mnemonicParsing="false" onAction="#createNewCategory" text="%categorytab.button.category.new">
                <font>
                   <Font name="System Bold" size="14.0" />
                </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml
index 608f46d85e4a54e45443bb67844ed7a22d49fdbb..ce7cfe0c10e962b08ffae02ea90cc83efce82e02 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml
@@ -17,7 +17,7 @@
    <children>
       <Accordion fx:id="accordion" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
         <panes>
-          <TitledPane animated="false" text="Einnahmen/Ausgaben nach Kategorien">
+          <TitledPane animated="false" text="%charttab.titlepane.chart.categories">
                <content>
                   <VBox spacing="20.0">
                      <children>
@@ -25,7 +25,7 @@
                            <children>
                               <HBox alignment="CENTER_RIGHT" spacing="10.0" HBox.hgrow="ALWAYS">
                                  <children>
-                                    <Label text="Von:">
+                                    <Label text="%charttab.label.start">
                                        <font>
                                           <Font name="System Bold" size="16.0" />
                                        </font>
@@ -38,7 +38,7 @@
                               </HBox>
                               <HBox alignment="CENTER_LEFT" spacing="10.0" HBox.hgrow="ALWAYS">
                                  <children>
-                                    <Label text="Bis:">
+                                    <Label text="%charttab.label.end">
                                        <font>
                                           <Font name="System Bold" size="16.0" />
                                        </font>
@@ -78,7 +78,7 @@
                   <Font name="System Bold" size="12.0" />
                </font>
           </TitledPane>
-          <TitledPane animated="false" text="Einnahmen/Ausgaben pro Monat">
+          <TitledPane animated="false" text="%charttab.titlepane.chart.months">
                <font>
                   <Font name="System Bold" size="12.0" />
                </font>
@@ -91,7 +91,7 @@
                                  <children>
                                     <HBox alignment="CENTER_RIGHT" spacing="10.0">
                                        <children>
-                                          <Label prefHeight="25.0" prefWidth="45.0" text="Von:">
+                                          <Label prefHeight="25.0" prefWidth="45.0" text="%charttab.label.start">
                                              <font>
                                                 <Font name="System Bold" size="16.0" />
                                              </font>
@@ -102,7 +102,7 @@
                                     </HBox>
                                     <HBox alignment="CENTER_LEFT" spacing="10.0">
                                        <children>
-                                          <Label prefWidth="45.0" text="Bis:">
+                                          <Label prefWidth="45.0" text="%charttab.label.end">
                                              <font>
                                                 <Font name="System Bold" size="16.0" />
                                              </font>
@@ -115,11 +115,11 @@
                               </VBox>
                               <HBox alignment="CENTER_LEFT" spacing="15.0" HBox.hgrow="ALWAYS">
                                  <children>
-                                    <RadioButton fx:id="radioButtonBars" mnemonicParsing="false" text="Balken">
+                                    <RadioButton fx:id="radioButtonBars" mnemonicParsing="false" text="%charttab.checkbox.bars">
                                        <font>
                                           <Font size="14.0" />
                                        </font></RadioButton>
-                                    <RadioButton fx:id="radioButtonLines" mnemonicParsing="false" text="Linien">
+                                    <RadioButton fx:id="radioButtonLines" mnemonicParsing="false" text="%charttab.checkbox.lines">
                                        <font>
                                           <Font size="14.0" />
                                        </font></RadioButton>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml
index 1b0ad1292b4d9f91aeb8a40e0eccbdec22969c48..eb2edfe7b7c14c5afb8afa964dda58d653a0c0c6 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml
@@ -17,17 +17,17 @@
                <children>
                   <VBox alignment="TOP_RIGHT" prefHeight="125.0" prefWidth="99.0" spacing="15.0">
                      <children>
-                        <Label text="Breite:">
+                        <Label text="%export.chart.label.width">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                         </Label>
-                        <Label text="Höhe:">
+                        <Label text="%export.chart.label.height">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                         </Label>
-                        <Label prefHeight="30.0" prefWidth="92.0" text="Speicherort:">
+                        <Label prefHeight="30.0" prefWidth="92.0" text="%export.chart.label.savepath">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
@@ -44,7 +44,7 @@
                         <HBox alignment="CENTER_LEFT" spacing="15.0">
                            <children>
                               <Label fx:id="labelSavePath" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS" />
-                              <Button fx:id="buttonChooseFile" mnemonicParsing="false" onAction="#chooseFile" text="Ändern" />
+                              <Button fx:id="buttonChooseFile" mnemonicParsing="false" onAction="#chooseFile" text="%export.chart.button.change" />
                            </children>
                         </HBox>
                      </children>
@@ -53,8 +53,8 @@
             </HBox>
             <HBox alignment="CENTER" spacing="25.0" VBox.vgrow="ALWAYS">
                <children>
-                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="Abbrechen" />
-                  <Button fx:id="buttonExport" mnemonicParsing="false" onAction="#export" text="Exportieren" />
+                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel" />
+                  <Button fx:id="buttonExport" mnemonicParsing="false" onAction="#export" text="%export.chart.button.export" />
                </children>
             </HBox>
          </children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
index 9d3e61437ca8cab1118bafc0503d88a40571e52c..804c5464c4dad4f4b0c18b3fd15ab910e0f46afb 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
@@ -12,30 +12,30 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.FilterController">
+<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.FilterController">
    <children>
       <VBox prefHeight="273.0" prefWidth="465.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
-            <Label text="Filtern nach:">
+            <Label text="%filter.headline">
                <font>
                   <Font name="System Bold" size="18.0" />
                </font>
             </Label>
             <VBox prefHeight="15.0" prefWidth="422.0" spacing="10.0">
                <children>
-                  <Label text="Art">
+                  <Label text="%filter.type">
                      <font>
                         <Font name="System Bold" size="16.0" />
                      </font>
                   </Label>
                   <HBox prefHeight="10.0" prefWidth="422.0" spacing="25.0">
                      <children>
-                        <CheckBox fx:id="checkBoxIncome" mnemonicParsing="false" text="Einnahme">
+                        <CheckBox fx:id="checkBoxIncome" mnemonicParsing="false" text="%filter.type.income">
                            <font>
                               <Font size="14.0" />
                            </font>
                         </CheckBox>
-                        <CheckBox fx:id="checkBoxPayment" mnemonicParsing="false" text="Ausgabe">
+                        <CheckBox fx:id="checkBoxPayment" mnemonicParsing="false" text="%filter.type.payment">
                            <font>
                               <Font size="14.0" />
                            </font>
@@ -46,22 +46,22 @@
             </VBox>
             <VBox prefHeight="33.0" prefWidth="422.0" spacing="10.0">
                <children>
-                  <Label text="Wiederholung">
+                  <Label text="%filter.repeating">
                      <font>
                         <Font name="System Bold" size="16.0" />
                      </font>
                   </Label>
-                  <CheckBox fx:id="checkBoxNoRepeating" mnemonicParsing="false" text="keine Wiederholung">
+                  <CheckBox fx:id="checkBoxNoRepeating" mnemonicParsing="false" text="%filter.repeating.none">
                      <font>
                         <Font size="14.0" />
                      </font>
                   </CheckBox>
-                  <CheckBox fx:id="checkBoxMonthlyRepeating" mnemonicParsing="false" text="monatlich">
+                  <CheckBox fx:id="checkBoxMonthlyRepeating" mnemonicParsing="false" text="%filter.repeating.monthday">
                      <font>
                         <Font size="14.0" />
                      </font>
                   </CheckBox>
-                  <CheckBox fx:id="checkBoxRepeatEveryXDays" mnemonicParsing="false" text="alle X Tage">
+                  <CheckBox fx:id="checkBoxRepeatEveryXDays" mnemonicParsing="false" text="%filter.repeating.interval">
                      <font>
                         <Font size="14.0" />
                      </font>
@@ -72,18 +72,18 @@
                <children>
                   <HBox spacing="10.0">
                      <children>
-                        <Label text="Kategorien">
+                        <Label text="%filter.categories">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                         </Label>
                         <Region prefWidth="200.0" HBox.hgrow="ALWAYS" />
-                        <Button fx:id="buttonCategoryAll" mnemonicParsing="false" onAction="#enableAllCategories" text="Alle">
+                        <Button fx:id="buttonCategoryAll" mnemonicParsing="false" onAction="#enableAllCategories" text="%filter.categories.button.all">
                            <font>
                               <Font name="System Bold" size="13.0" />
                            </font>
                         </Button>
-                        <Button fx:id="buttonCategoryNone" mnemonicParsing="false" onAction="#disableAllCategories" text="Keine">
+                        <Button fx:id="buttonCategoryNone" mnemonicParsing="false" onAction="#disableAllCategories" text="%filter.categories.button.none">
                            <font>
                               <Font name="System Bold" size="13.0" />
                            </font>
@@ -99,7 +99,7 @@
             </VBox>
             <VBox prefHeight="33.0" prefWidth="422.0" VBox.vgrow="ALWAYS">
                <children>
-                  <Label text="Name">
+                  <Label text="%filter.name">
                      <font>
                         <Font name="System Bold" size="16.0" />
                      </font>
@@ -109,12 +109,12 @@
             </VBox>
             <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0" spacing="10.0">
                <children>
-                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="Abbrechen">
+                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
                   </Button>
-                  <Button fx:id="buttonReset" mnemonicParsing="false" onAction="#reset" text="Zurücksetzen">
+                  <Button fx:id="buttonReset" mnemonicParsing="false" onAction="#reset" text="%filter.button.reset">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
@@ -122,7 +122,7 @@
                         <Insets left="25.0" />
                      </HBox.margin>
                   </Button>
-                  <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="Filtern">
+                  <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="%filter.button.filter">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml
index f6f3815ef6f5ba9dd9ca2d798f357e9ba84f3767..61f0dd7e053fefc11112b9d13aa484192f427d2e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml
@@ -24,7 +24,7 @@
                      </HBox.margin>
                   </Region>
                   <Button fx:id="buttonLeft" mnemonicParsing="false" onAction="#previousMonth" />
-                  <Label fx:id="labelMonth" alignment="CENTER" prefHeight="36.0" prefWidth="280.0" text="Dezember 2016" HBox.hgrow="ALWAYS">
+                  <Label fx:id="labelMonth" alignment="CENTER" prefHeight="36.0" prefWidth="280.0" HBox.hgrow="ALWAYS">
                      <font>
                         <Font name="System Bold" size="24.0" />
                      </font>
@@ -43,12 +43,12 @@
                <children>
                   <TabPane fx:id="tabPane" prefHeight="200.0" prefWidth="403.0" tabClosingPolicy="UNAVAILABLE">
                     <tabs>
-                      <Tab fx:id="tabHome" closable="false" text="Startseite" />
-                        <Tab fx:id="tabPayments" closable="false" text="Buchungen" />
-                        <Tab fx:id="tabCategories" closable="false" text="Kategorien" />
-                        <Tab fx:id="tabCharts" closable="false" text="Diagramme" />
-                        <Tab fx:id="tabReports" closable="false" text="Monatsbericht" />
-                        <Tab fx:id="tabSettings" closable="false" text="Einstellungen" />
+                      <Tab fx:id="tabHome" closable="false" text="%gui.tab.home" />
+                        <Tab fx:id="tabPayments" closable="false" text="%gui.tab.payments" />
+                        <Tab fx:id="tabCategories" closable="false" text="%gui.tab.categories" />
+                        <Tab fx:id="tabCharts" closable="false" text="%gui.tab.charts" />
+                        <Tab fx:id="tabReports" closable="false" text="%gui.tab.report" />
+                        <Tab fx:id="tabSettings" closable="false" text="%gui.tab.settings" />
                     </tabs>
                   </TabPane>
                   <Label fx:id="labelNotification" alignment="CENTER" maxWidth="1.7976931348623157E308" />
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml
index 77674f01c5c45b86e088df7c7820cd59511f538d..98d51c305f73724459c7901ab6016e62749a643f 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml
@@ -8,7 +8,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.HomeController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.HomeController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="15.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
@@ -17,13 +17,13 @@
                   <Font name="System Bold" size="55.0" />
                </font>
             </Label>
-            <Label fx:id="labelStartBudget" text="von 0,00 € verbleibend">
+            <Label fx:id="labelStartBudget">
                <font>
                   <Font name="System Bold" size="18.0" />
                </font>
             </Label>
             <ProgressBar fx:id="progressBar" prefHeight="18.0" prefWidth="380.0" progress="0.68" />
-            <Label text="Verbrauch nach Kategorien">
+            <Label text="%hometab.categorybudgets">
                <font>
                   <Font name="System Bold" size="16.0" />
                </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml
index 0bb2bb676e02a1c6ef47e336022f7c151bb256f7..79d254ac6e5a082d329604da194b13e0959853a0 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml
@@ -9,7 +9,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="180.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.NewCategoryController">
+<AnchorPane prefHeight="180.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.NewCategoryController">
    <children>
       <VBox prefHeight="273.0" prefWidth="465.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
@@ -17,12 +17,12 @@
                <children>
                   <VBox>
                      <children>
-                        <Label prefHeight="29.0" prefWidth="125.0" text="Name:">
+                        <Label prefHeight="29.0" prefWidth="125.0" text="%category.new.label.name">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
                         </Label>
-                        <Label prefHeight="29.0" prefWidth="125.0" text="(max. 45 Zeichen)">
+                        <Label prefHeight="29.0" prefWidth="125.0" text="%category.new.label.max.characters">
                            <font>
                               <Font size="11.0" />
                            </font>
@@ -41,7 +41,7 @@
             </HBox>
             <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0">
                <children>
-                  <Label prefHeight="29.0" prefWidth="125.0" text="Farbe:">
+                  <Label prefHeight="29.0" prefWidth="125.0" text="%category.new.label.color">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
@@ -55,12 +55,12 @@
             </HBox>
             <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0">
                <children>
-                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text=" Abbrechen">
+                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
                   </Button>
-                  <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text=" Speichern">
+                  <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text="%category.new.button.save">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
index 59b546bdf8234e1044cbada23c69a4be65192a08..10b33bc9a7b194359838fe0c51d9db4067d1a774 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
@@ -16,7 +16,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.NewPaymentController">
+<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.NewPaymentController">
    <children>
       <VBox prefHeight="273.0" prefWidth="465.0" spacing="20.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
@@ -24,12 +24,12 @@
                <children>
                   <VBox>
                      <children>
-                        <Label prefHeight="29.0" prefWidth="125.0" text="Name:">
+                        <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.name">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
                         </Label>
-                        <Label prefHeight="29.0" prefWidth="125.0" text="(max. 150 Zeichen)">
+                        <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.max.characters">
                            <font>
                               <Font size="11.0" />
                            </font>
@@ -48,7 +48,7 @@
             </HBox>
             <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0">
                <children>
-                  <Label prefHeight="29.0" prefWidth="125.0" text="Betrag:">
+                  <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.amount">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
@@ -65,7 +65,7 @@
             </HBox>
             <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0">
                <children>
-                  <Label prefHeight="29.0" prefWidth="125.0" text="Kategorie:">
+                  <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.category">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
@@ -75,7 +75,7 @@
             </HBox>
             <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0">
                <children>
-                  <Label prefHeight="29.0" prefWidth="125.0" text="Datum:">
+                  <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.date">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
@@ -87,12 +87,12 @@
                <children>
                   <VBox alignment="CENTER_LEFT">
                      <children>
-                        <Label prefHeight="29.0" prefWidth="125.0" text="Notiz:">
+                        <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.description">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
                         </Label>
-                        <Label prefHeight="29.0" prefWidth="125.0" text="(max. 150 Zeichen)">
+                        <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.max.characters">
                            <font>
                               <Font size="11.0" />
                            </font>
@@ -107,7 +107,7 @@
                   <HBox alignment="CENTER">
                      <children>
                         <CheckBox fx:id="checkBoxRepeat" mnemonicParsing="false" />
-                        <Label alignment="CENTER" maxWidth="1.7976931348623157E308" prefHeight="29.0" prefWidth="125.0" text="Wiederholung:">
+                        <Label alignment="CENTER" maxWidth="1.7976931348623157E308" prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.repeating">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
@@ -123,13 +123,13 @@
                                     <Insets bottom="10.0" />
                                  </VBox.margin>
                               </RadioButton>
-                              <Label fx:id="labelText1" prefHeight="25.0" prefWidth="40.0" text="Alle">
+                              <Label fx:id="labelText1" prefHeight="25.0" prefWidth="40.0" text="%payment.new.label.repeating.all">
                                  <font>
                                     <Font name="System Bold" size="14.0" />
                                  </font>
                               </Label>
                               <Spinner fx:id="spinnerRepeatingPeriod" prefHeight="25.0" prefWidth="90.0" />
-                              <Label fx:id="labelText2" prefHeight="25.0" prefWidth="36.0" text="Tage">
+                              <Label fx:id="labelText2" prefHeight="25.0" prefWidth="36.0" text="%payment.new.label.repeating.days">
                                  <font>
                                     <Font name="System Bold" size="14.0" />
                                  </font>
@@ -147,7 +147,7 @@
                                     <Insets bottom="10.0" />
                                  </VBox.margin>
                               </RadioButton>
-                              <Label fx:id="labelText3" prefHeight="29.0" prefWidth="125.0" text="jeden Monat am:">
+                              <Label fx:id="labelText3" prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.repeating.monthday">
                                  <font>
                                     <Font name="System Bold" size="14.0" />
                                  </font>
@@ -167,7 +167,7 @@
                   </HBox>
                   <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0">
                      <children>
-                        <Label prefHeight="29.0" prefWidth="125.0" text="Enddatum:">
+                        <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.enddate">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
@@ -179,12 +179,12 @@
             </VBox>
             <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0">
                <children>
-                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text=" Abbrechen">
+                  <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
                   </Button>
-                  <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text=" Speichern">
+                  <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text="%payment.new.button.save">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml
index ede86bb05d9a96997b1a479b5fc72f38b06a12e0..24a4beca78889dd6dd5e8111c74f5c231b1a4a82 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml
@@ -10,13 +10,13 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.PaymentController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.PaymentController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
          <children>
             <HBox prefHeight="11.0" prefWidth="772.0">
                <children>
-                  <Button fx:id="buttonNewIncome" mnemonicParsing="false" onAction="#newIncome" text=" Neue Einnahme">
+                  <Button fx:id="buttonNewIncome" mnemonicParsing="false" onAction="#newIncome" text="%paymenttab.button.new.income">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
@@ -24,12 +24,12 @@
                   <Region HBox.hgrow="ALWAYS" />
                   <VBox alignment="CENTER" spacing="10.0">
                      <children>
-                        <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="Filter">
+                        <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="%paymenttab.button.filter">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
                         </Button>
-                        <Label fx:id="labelFilterActive" text="Filter aktiv">
+                        <Label fx:id="labelFilterActive" text="%paymenttab.label.filter.active">
                            <font>
                               <Font name="System Bold" size="13.0" />
                            </font>
@@ -37,7 +37,7 @@
                      </children>
                   </VBox>
                   <Region HBox.hgrow="ALWAYS" />
-                  <Button fx:id="buttonNewPayment" mnemonicParsing="false" onAction="#newPayment" text=" Neue Ausgabe">
+                  <Button fx:id="buttonNewPayment" mnemonicParsing="false" onAction="#newPayment" text="%paymenttab.button.new.payment">
                      <font>
                         <Font name="System Bold" size="14.0" />
                      </font>
@@ -49,7 +49,7 @@
             </HBox>
             <HBox alignment="CENTER" prefHeight="16.0" prefWidth="772.0">
                <children>
-                  <Label fx:id="labelIncome" prefHeight="27.0" text="Einnahmen:">
+                  <Label fx:id="labelIncome" prefHeight="27.0" text="%paymenttab.label.incomes">
                      <font>
                         <Font name="System Bold" size="18.0" />
                      </font>
@@ -63,7 +63,7 @@
                      </HBox.margin>
                   </Label>
                   <Region prefHeight="27.0" HBox.hgrow="ALWAYS" />
-                  <Label fx:id="labelPayment" prefHeight="27.0" text="Ausgaben:">
+                  <Label fx:id="labelPayment" prefHeight="27.0" text="%paymenttab.label.payments">
                      <font>
                         <Font name="System Bold" size="18.0" />
                      </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml
index 35239f67f597ccd7771823c28e4fed449228c04d..45f4fa37912f585517a53dc93994f6d9a7436bb4 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml
@@ -18,12 +18,12 @@
                <children>
                   <VBox alignment="CENTER" spacing="10.0">
                      <children>
-                        <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="Filter">
+                        <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="%paymenttab.button.filter">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
                         </Button>
-                        <Label fx:id="labelFilterActive" text="Filter aktiv">
+                        <Label fx:id="labelFilterActive" text="%paymenttab.label.filter.active">
                            <font>
                               <Font name="System Bold" size="13.0" />
                            </font>
@@ -39,9 +39,9 @@
                <children>
                   <VBox spacing="10.0">
                      <children>
-                        <CheckBox fx:id="checkBoxIncludeBudget" mnemonicParsing="false" text="Budgetkalkulation hinzufügen" />
-                        <CheckBox fx:id="checkBoxSplitTable" mnemonicParsing="false" text="Einnahmen und Ausgaben als getrennte Tabellen" />
-                        <CheckBox fx:id="checkBoxIncludeCategoryBudgets" mnemonicParsing="false" text="Verbrauch nach Kategorien hinzufügen" />
+                        <CheckBox fx:id="checkBoxIncludeBudget" mnemonicParsing="false" text="%reporttab.checkbox.include.budget" />
+                        <CheckBox fx:id="checkBoxSplitTable" mnemonicParsing="false" text="%reporttab.checkbox.split.tables" />
+                        <CheckBox fx:id="checkBoxIncludeCategoryBudgets" mnemonicParsing="false" text="%reporttab.checkbox.inclue.categorybudgets" />
                      </children>
                   </VBox>
                </children>
@@ -57,7 +57,7 @@
                <children>
                   <VBox alignment="CENTER" spacing="10.0">
                      <children>
-                        <Button fx:id="buttonGenerate" mnemonicParsing="false" onAction="#generate" text="Bericht erzeugen">
+                        <Button fx:id="buttonGenerate" mnemonicParsing="false" onAction="#generate" text="%reporttab.button.generate.report">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml
index 29b7eeb2ed092f59d70fcf8ca7c0908ca3192bf7..209c927ab5f71f8a98649360fe60e01515576a2a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml
@@ -2,6 +2,7 @@
 
 <?import javafx.geometry.Insets?>
 <?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ComboBox?>
 <?import javafx.scene.control.Label?>
 <?import javafx.scene.control.RadioButton?>
 <?import javafx.scene.control.TextArea?>
@@ -12,7 +13,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.SettingsController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.SettingsController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
          <children>
@@ -20,12 +21,12 @@
                <children>
                   <VBox alignment="CENTER_RIGHT" prefHeight="25.0" prefWidth="158.0" spacing="20.0">
                      <children>
-                        <Label fx:id="labelClientSecret" prefHeight="25.0" text="Client Passwort:">
+                        <Label fx:id="labelClientSecret" prefHeight="25.0" text="%settingstab.label.secret.client">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                         </Label>
-                        <Label fx:id="labelURL" prefHeight="25.0" text="Server URL:">
+                        <Label fx:id="labelURL" prefHeight="25.0" text="%settingstab.label.url">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
@@ -33,30 +34,30 @@
                               <Insets />
                            </VBox.margin>
                         </Label>
-                        <Label fx:id="labelSecret" prefHeight="25.0" text="Server Passwort:">
+                        <Label fx:id="labelSecret" prefHeight="25.0" text="%settingstab.label.secret.server">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                         </Label>
-                        <Label fx:id="labelCurrency" prefHeight="25.0" text="Währung:">
+                        <Label fx:id="labelCurrency" prefHeight="25.0" text="%settingstab.label.currency">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                         </Label>
-                        <Label fx:id="labelSecret11" prefHeight="25.0" text="Übertrag:">
+                        <Label fx:id="labelSecret11" prefHeight="25.0" text="%settingstab.label.rest">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                         </Label>
-                        <Label fx:id="labelSecret111" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" minHeight="60.0" prefWidth="158.0" text="Vertrauenswürdige Hosts:" textAlignment="RIGHT" wrapText="true">
+                        <Label fx:id="labelSecret111" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" minHeight="60.0" prefWidth="158.0" text="%settingstab.label.trusted.hosts" textAlignment="RIGHT" wrapText="true">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
                            <VBox.margin>
-                              <Insets top="-5.0" />
+                              <Insets top="-7.0" />
                            </VBox.margin>
                         </Label>
-                        <Label fx:id="labelSecret1111" alignment="CENTER" contentDisplay="CENTER" maxHeight="-Infinity" text="(ein Host pro Zeile)" textAlignment="CENTER" wrapText="true" VBox.vgrow="ALWAYS">
+                        <Label fx:id="labelSecret1111" alignment="CENTER" contentDisplay="CENTER" maxHeight="-Infinity" text="%settingstab.label.trusted.hosts.info" textAlignment="CENTER" wrapText="true" VBox.vgrow="ALWAYS">
                            <font>
                               <Font size="14.0" />
                            </font>
@@ -64,7 +65,7 @@
                               <Insets top="-20.0" />
                            </VBox.margin>
                         </Label>
-                        <Label fx:id="labelSecret1112" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="Datenbank:" textAlignment="RIGHT" wrapText="true">
+                        <Label fx:id="labelSecret1112" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.language" textAlignment="RIGHT" wrapText="true">
                            <font>
                               <Font name="System Bold" size="16.0" />
                            </font>
@@ -72,6 +73,14 @@
                               <Insets top="35.0" />
                            </VBox.margin>
                         </Label>
+                        <Label fx:id="labelSecret11122" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.database" textAlignment="RIGHT" wrapText="true">
+                           <font>
+                              <Font name="System Bold" size="16.0" />
+                           </font>
+                           <VBox.margin>
+                              <Insets />
+                           </VBox.margin>
+                        </Label>
                         <Label fx:id="labelSecret11121" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" textAlignment="RIGHT" wrapText="true">
                            <font>
                               <Font name="System Bold" size="16.0" />
@@ -94,7 +103,7 @@
                         <TextField fx:id="textFieldCurrency" />
                         <HBox alignment="CENTER" prefHeight="11.0" prefWidth="539.0" spacing="30.0">
                            <children>
-                              <RadioButton fx:id="radioButtonRestActivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="aktiviert">
+                              <RadioButton fx:id="radioButtonRestActivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%settingstab.label.rest.activated">
                                  <font>
                                     <Font size="14.0" />
                                  </font>
@@ -102,7 +111,7 @@
                                     <Insets />
                                  </HBox.margin>
                               </RadioButton>
-                              <RadioButton fx:id="radioButtonRestDeactivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="deaktiviert" HBox.hgrow="ALWAYS">
+                              <RadioButton fx:id="radioButtonRestDeactivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%settingstab.label.rest.deactivated" HBox.hgrow="ALWAYS">
                                  <font>
                                     <Font size="14.0" />
                                  </font>
@@ -113,19 +122,20 @@
                            <VBox.margin>
                               <Insets />
                            </VBox.margin></TextArea>
+                        <ComboBox fx:id="comboBoxLanguage" maxWidth="1.7976931348623157E308" />
                         <HBox alignment="CENTER_LEFT" prefHeight="11.0" prefWidth="539.0" spacing="30.0">
                            <children>
-                              <Button fx:id="buttonExportDB" mnemonicParsing="false" onAction="#exportDB" text="Exportieren">
+                              <Button fx:id="buttonExportDB" mnemonicParsing="false" onAction="#exportDB" text="%settingstab.button.database.export">
                                  <font>
                                     <Font name="System Bold" size="14.0" />
                                  </font>
                               </Button>
-                              <Button fx:id="buttonImportDB" mnemonicParsing="false" onAction="#importDB" text="Importieren">
+                              <Button fx:id="buttonImportDB" mnemonicParsing="false" onAction="#importDB" text="%settingstab.button.database.import">
                                  <font>
                                     <Font name="System Bold" size="14.0" />
                                  </font>
                               </Button>
-                              <Button fx:id="buttonDeleteDB" mnemonicParsing="false" onAction="#deleteDB" text="Löschen">
+                              <Button fx:id="buttonDeleteDB" mnemonicParsing="false" onAction="#deleteDB" text="%settingstab.button.database.delete">
                                  <font>
                                     <Font name="System Bold" size="14.0" />
                                  </font>
@@ -135,7 +145,7 @@
                               <Insets />
                            </VBox.margin>
                         </HBox>
-                        <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text="Speichern">
+                        <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text="%settings.tab.button.save">
                            <font>
                               <Font name="System Bold" size="14.0" />
                            </font>
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml
index a028fad4e6d8894c5b51a38db79102ceed5b2f5d..33be9b46c1128aff1c773bccfcf44d8f26b93c15 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml
@@ -10,7 +10,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="230.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.SplashScreenController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="230.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.SplashScreenController">
    <children>
       <VBox layoutX="14.0" layoutY="14.0" spacing="10.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
@@ -22,7 +22,7 @@
                      </HBox.margin></ImageView>
                   <VBox alignment="CENTER" HBox.hgrow="ALWAYS">
                      <children>
-                        <Label alignment="CENTER" maxWidth="1.7976931348623157E308" text="BudgetMaster">
+                        <Label alignment="CENTER" maxWidth="1.7976931348623157E308" text="%app.name">
                            <font>
                               <Font name="System Bold" size="25.0" />
                            </font>
@@ -38,7 +38,7 @@
             </HBox>
             <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="20.0">
                <children>
-                  <Label text="Passwort:">
+                  <Label text="%splashscreen.label.password">
                      <font>
                         <Font name="System Bold" size="16.0" />
                      </font>
diff --git a/src/de/deadlocker8/budgetmasterserver/logic/Database.java b/src/de/deadlocker8/budgetmasterserver/logic/database/Database.java
similarity index 94%
rename from src/de/deadlocker8/budgetmasterserver/logic/Database.java
rename to src/de/deadlocker8/budgetmasterserver/logic/database/Database.java
index 05740dae2752cab71a041f93dcfd08911e4d5088..0fc7d225244e3de5db5b8e5dbf0b304f7e09246d 100644
--- a/src/de/deadlocker8/budgetmasterserver/logic/Database.java
+++ b/src/de/deadlocker8/budgetmasterserver/logic/database/Database.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmasterserver.logic;
+package de.deadlocker8.budgetmasterserver.logic.database;
 
 import java.util.ArrayList;
 
diff --git a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseCreator.java b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseCreator.java
similarity index 98%
rename from src/de/deadlocker8/budgetmasterserver/logic/DatabaseCreator.java
rename to src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseCreator.java
index 398629d7b146d0aee5a4b3d3bbac5451b2b39f05..18d81340e14f17c0fbbee56c8b37a4b93813f347 100644
--- a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseCreator.java
+++ b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseCreator.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmasterserver.logic;
+package de.deadlocker8.budgetmasterserver.logic.database;
 
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
@@ -7,6 +7,7 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.ArrayList;
 
+import de.deadlocker8.budgetmasterserver.logic.Settings;
 import logger.Logger;
 
 public class DatabaseCreator
diff --git a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseExporter.java b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java
similarity index 96%
rename from src/de/deadlocker8/budgetmasterserver/logic/DatabaseExporter.java
rename to src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java
index 754c631652a5421eb878549ca182a329aa3a1883..4dbf4022e81e6d143155002d89293718c0fcaf67 100644
--- a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseExporter.java
+++ b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmasterserver.logic;
+package de.deadlocker8.budgetmasterserver.logic.database;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
@@ -11,7 +11,7 @@ import java.util.ArrayList;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmasterserver.logic.Settings;
 import logger.Logger;
 
 public class DatabaseExporter
@@ -68,7 +68,7 @@ public class DatabaseExporter
                 String name = rs.getString("Name");
                 String color = rs.getString("Color");
 
-                results.add(new Category(id, name, Color.web(color)));
+                results.add(new Category(id, name, color));
             }
         }
         catch(SQLException e)
diff --git a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseHandler.java b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java
similarity index 96%
rename from src/de/deadlocker8/budgetmasterserver/logic/DatabaseHandler.java
rename to src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java
index f1e4863c8be3901bb95c310ce78e2e0afc1c4d40..c02d8a08c4e1210f5d476bd340fb05961d58d163 100644
--- a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseHandler.java
+++ b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmasterserver.logic;
+package de.deadlocker8.budgetmasterserver.logic.database;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
@@ -18,9 +18,8 @@ import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmasterserver.logic.Settings;
 import logger.Logger;
-import tools.ConvertTo;
 
 public class DatabaseHandler
 {
@@ -228,7 +227,7 @@ public class DatabaseHandler
 				String name = rs.getString("Name");
 				String color = rs.getString("Color");
 
-				results.add(new Category(id, name, Color.web(color)));
+				results.add(new Category(id, name, color));
 			}
 		}
 		catch(SQLException e)
@@ -258,7 +257,7 @@ public class DatabaseHandler
 				String name = rs.getString("Name");
 				String color = rs.getString("Color");
 
-				result = new Category(id, name, Color.web(color));
+				result = new Category(id, name, color);
 			}
 		}
 		catch(SQLException e)
@@ -273,7 +272,7 @@ public class DatabaseHandler
 		return result;
 	}
 	
-	public Category getCategory(String name, Color color)
+	public Category getCategory(String name, String color)
 	{
 		PreparedStatement stmt = null;
 		Category result = null;
@@ -281,7 +280,7 @@ public class DatabaseHandler
 		{
 			stmt = connection.prepareStatement("SELECT * FROM category WHERE category.name = ? AND category.color = ?;");
 			stmt.setString(1, name);
-			stmt.setString(2, ConvertTo.toRGBHexWithoutOpacity(color));
+			stmt.setString(2, color);
 			
 			ResultSet rs = stmt.executeQuery();
 			while(rs.next())
@@ -290,7 +289,7 @@ public class DatabaseHandler
 				String categoryName = rs.getString("Name");
 				String categoryColor = rs.getString("Color");
 
-				result = new Category(id, categoryName, Color.web(categoryColor));
+				result = new Category(id, categoryName, categoryColor);
 			}
 		}
 		catch(SQLException e)
@@ -717,14 +716,14 @@ public class DatabaseHandler
 	/*
 	 * ADD
 	 */
-	public void addCategory(String name, Color color)
+	public void addCategory(String name, String color)
 	{
 		PreparedStatement stmt = null;
 		try
 		{
 			stmt = connection.prepareStatement("INSERT INTO category (Name, Color) VALUES(?, ?);");
 			stmt.setString(1, name);
-			stmt.setString(2, ConvertTo.toRGBHexWithoutOpacity(color));
+			stmt.setString(2, color);
 			stmt.execute();
 		}
 		catch(SQLException e)
@@ -745,7 +744,7 @@ public class DatabaseHandler
 			stmt = connection.prepareStatement("INSERT INTO category (ID, Name, Color) VALUES(?, ?, ?);");
 			stmt.setInt(1,  category.getID());
 			stmt.setString(2, category.getName());
-			stmt.setString(3, ConvertTo.toRGBHexWithoutOpacity(category.getColor()));
+			stmt.setString(3, category.getColor());
 			stmt.execute();
 		}
 		catch(SQLException e)
@@ -838,14 +837,14 @@ public class DatabaseHandler
 	/*
 	 * UPDATE
 	 */
-	public void updateCategory(int ID, String name, Color color)
+	public void updateCategory(int ID, String name, String color)
 	{
 		PreparedStatement stmt = null;
 		try
 		{
 			stmt = connection.prepareStatement("UPDATE category SET name=? , color=? WHERE ID = ?;");
 			stmt.setString(1, name);
-			stmt.setString(2, ConvertTo.toRGBHexWithoutOpacity(color));
+			stmt.setString(2, color);
 			stmt.setInt(3, ID);
 			stmt.executeUpdate();
 		}
diff --git a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseImporter.java b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java
similarity index 98%
rename from src/de/deadlocker8/budgetmasterserver/logic/DatabaseImporter.java
rename to src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java
index 7880c9c2dd7d0e1c3e61989d371114f79458b713..db5da2244820c620fd5d3c97ff3b4c5bff692f43 100644
--- a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseImporter.java
+++ b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmasterserver.logic;
+package de.deadlocker8.budgetmasterserver.logic.database;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/src/de/deadlocker8/budgetmasterserver/main/Main.java b/src/de/deadlocker8/budgetmasterserver/main/Main.java
index 38a523850192a9d3ca547d8d454c82aa69c1ba55..1b8d945bedb5d71b475bb28f5621397029c4eb62 100644
--- a/src/de/deadlocker8/budgetmasterserver/main/Main.java
+++ b/src/de/deadlocker8/budgetmasterserver/main/Main.java
@@ -15,13 +15,19 @@ import de.deadlocker8.budgetmasterserver.server.SparkServer;
 import logger.FileOutputMode;
 import logger.LogLevel;
 import logger.Logger;
+import tools.Localization;
 
 public class Main
 {
-	private static ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/budgetmasterserver/main/", Locale.GERMANY);
+	//for server specific version information
+	private static ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/budgetmasterserver/main/", Locale.ENGLISH);
 
 	public static void main(String[] args)
 	{
+		//for category.none in class Category
+		Localization.init("de/deadlocker8/budgetmaster/resources/languages/");
+		Localization.loadLanguage(Locale.ENGLISH);
+		
 		Logger.setLevel(LogLevel.ALL);		
 		Logger.appInfo(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"));
 		try
diff --git a/src/de/deadlocker8/budgetmasterserver/main/_de.properties b/src/de/deadlocker8/budgetmasterserver/main/_de.properties
index 18d434a320eb11c0e768bfc7881848efa79661f9..fbb01a8c8e4d0c4a48a8996dd1c94ea615260447 100644
--- a/src/de/deadlocker8/budgetmasterserver/main/_de.properties
+++ b/src/de/deadlocker8/budgetmasterserver/main/_de.properties
@@ -1,5 +1,5 @@
 app.name=BudgetMasterServer
-version.code=6
-version.name=1.3.2
-version.date=21.08.17
+version.code=7
+version.name=1.4.0
+version.date=23.08.17
 author=Robert Goldmann
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
index 29317035bd5b5e5d585dcb568baf2713ccbc2307..6a35e670f4e5030ecbf6735686f2643814c7c4c2 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
@@ -18,8 +18,8 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.logic.Settings;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryAdd;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryDelete;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryGet;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java
index 71e5dcac445853179abdf3aa35ed2cff6c1ae875..e1c68a1fab74995e212a9f5cd6cf124aee5282ad 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java
@@ -2,8 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.category;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
@@ -27,7 +26,7 @@ public class CategoryAdd implements Route
 						
 		try
 		{			
-			handler.addCategory(req.queryMap("name").value(), Color.web("#" + req.queryMap("color").value()));			
+			handler.addCategory(req.queryMap("name").value(), "#" + req.queryMap("color").value());			
 
 			return "";
 		}
diff --git a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java
index 5e4ad5a6958cf02678651d6e06a0e25e08311980..134d68b26d999055b676952670d6983856bf54a0 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.category;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java
index bf4eb9c41614aff11d4b2173893822656b86a3e3..29cbb37e1adbeeabc77f254331685d197df155ae 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java
@@ -5,7 +5,7 @@ import static spark.Spark.halt;
 import com.google.gson.Gson;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java
index 8bb67cab65a1a3fb7346ef9cc3e9139ef099f18e..6b25afee1303049f749d84fbb6d36c63ef0cc247 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java
@@ -7,7 +7,7 @@ import java.util.ArrayList;
 import com.google.gson.Gson;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java
index a8f4d65dddc92caae6953173d6b0c6a367799a0f..0b55664fac5968338e3091e57f149186fb104d4b 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java
@@ -2,8 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.category;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
@@ -38,7 +37,7 @@ public class CategoryUpdate implements Route
 			
 			try
 			{				
-				handler.updateCategory(id, req.queryMap("name").value(), Color.web("#" + req.queryMap("color").value()));			
+				handler.updateCategory(id, req.queryMap("name").value(), "#" + req.queryMap("color").value());			
 
 				return "";
 			}
diff --git a/src/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java b/src/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java
index 26504559b0cd744843a9c32b574bb039cdfe1c9d..60b3f37a0a7d18181273fe201bf0c48249452efe 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java
@@ -12,7 +12,7 @@ import com.google.gson.Gson;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.Payment;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
@@ -59,7 +59,7 @@ public class CategoryBudgetGet implements Route
 				
 				for(Category currentCategory : handler.getCategories())
 				{
-					budgets.add(new CategoryBudget(currentCategory.getName(), currentCategory.getColor(), 0));
+					budgets.add(new CategoryBudget(currentCategory, 0));
 					CategoryBudget currentBudget = budgets.get(budgets.size() - 1);
 					for(Payment currentPayment : payments)
 					{					
diff --git a/src/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java b/src/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java
index 067567b4a9658742dc33d19a70c0840a5d0b9d58..52543c4c60bf41609e0c443b83e0aa7c721f587f 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java
@@ -9,7 +9,7 @@ import com.google.gson.Gson;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
 import de.deadlocker8.budgetmaster.logic.Payment;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java b/src/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java
index 452e9acdffb3c820c9dff64d7600796659edb1ce..4ae6da848f0fa97507136bdcabb3587edba2c0e1 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java
@@ -11,7 +11,7 @@ import com.google.gson.Gson;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
 import de.deadlocker8.budgetmaster.logic.Payment;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java b/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java
index 373a788ade424ea1cbb62c35632a58a82efbcc6a..f82a3e082089ca5be357b63c757bc3a4ca69a9ae 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java
@@ -2,8 +2,8 @@ package de.deadlocker8.budgetmasterserver.server.database;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.logic.Settings;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java b/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java
index 5205de6f69fdc68ff3988e23ab85e2502fe18422..c9d88f6a72ec94205461d8c33146e7663192e151 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java
@@ -4,8 +4,8 @@ import static spark.Spark.halt;
 
 import com.google.gson.Gson;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseExporter;
 import de.deadlocker8.budgetmasterserver.logic.Settings;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseExporter;
 import logger.Logger;
 import spark.Request;
 import spark.Response;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java b/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java
index 082e938ae41446f8814edddfb8c825f55f0af685..86dce0c839fd30528cf4cb467c4f5907287a4668 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java
@@ -4,9 +4,9 @@ import static spark.Spark.halt;
 
 import com.google.gson.Gson;
 
-import de.deadlocker8.budgetmasterserver.logic.Database;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseImporter;
+import de.deadlocker8.budgetmasterserver.logic.database.Database;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseImporter;
 import logger.Logger;
 import spark.Request;
 import spark.Response;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java
index 9d016915dc8eeb91a1575b480fc3549a7bd5b66b..53580d8b925d12db336c1a649dff3c51d6975748 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.payment.normal;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java
index f5ff9285872dff0339bd02a6c15c787d0cb8f4d6..ff7b6a5ae53c0b42c2cd91e04212545cf0a698f9 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.payment.normal;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java
index b13dba89e08a7832ea8c0b152b2a5042899ea260..19a9106e56e26b941925f7cc3ab0229d2a684e4c 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java
@@ -9,7 +9,7 @@ import org.joda.time.DateTime;
 import com.google.gson.Gson;
 
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater;
 import spark.Request;
 import spark.Response;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java
index 3c58aa12cfe1c8a16a41b0b32ce2ccbe8599c5fa..6c4215e4abb046abb0781f2458017858b2ccf57d 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.payment.normal;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java
index 4d622ffb1179f671b11cc1534602838dcc77f029..0c711c30f0f6e1c5ea8baf7c7ff721c61c2a0221 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.payment.repeating;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java
index a88de42bffad9293f85214a4c0975ecda7fbb208..89d2c121929fd5198eb0fd67e93fb1c54240d101 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmasterserver.server.payment.repeating;
 
 import static spark.Spark.halt;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java
index 0a8fd5af5c87a92b58205a771eeebb2e6d13ca07..59724e2027676d4eeb1f971f5c44de56948c3bb2 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java
@@ -5,7 +5,7 @@ import static spark.Spark.halt;
 import com.google.gson.Gson;
 
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java
index 573a3c0114fc94c3a366d5d1ea3a0f4435e8fbc9..0b49df55505325f3e7ffb2009685d5f2286ac455 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java
@@ -9,7 +9,7 @@ import org.joda.time.DateTime;
 import com.google.gson.Gson;
 
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater;
 import spark.Request;
 import spark.Response;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java b/src/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java
index 2dd749311af34963b22d1d4a4149028a9ea40994..1ebdf5004b4a8bb8959018692b795aed4bd9cfd4 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java
@@ -4,7 +4,7 @@ import static spark.Spark.halt;
 
 import com.google.gson.Gson;
 
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import spark.Request;
 import spark.Response;
 import spark.Route;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java b/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java
index c43cd7caebb5391726969ac64aa8c741a671071a..bf3d5cd037162975976305d787482039b0c7b839 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java
@@ -8,7 +8,7 @@ import org.joda.time.Months;
 
 import de.deadlocker8.budgetmaster.logic.LatestRepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
 import logger.Logger;
 
 public class RepeatingPaymentUpdater
diff --git a/tests/de/deadlocker8/budgetmaster/tests/resources/export.json b/tests/de/deadlocker8/budgetmaster/tests/resources/export.json
index 12515b0b63822774520696258cc0d14ecb525eff..209392219510b137d085d93f7db36fca6faf9754 100644
--- a/tests/de/deadlocker8/budgetmaster/tests/resources/export.json
+++ b/tests/de/deadlocker8/budgetmaster/tests/resources/export.json
@@ -1 +1 @@
-{"categories":[{"ID":1,"name":"NONE","color":{"red":1.0,"green":1.0,"blue":1.0,"opacity":1.0}},{"ID":2,"name":"Übertrag","color":{"red":1.0,"green":1.0,"blue":0.0,"opacity":1.0}},{"ID":3,"name":"123 Tü+?est Category","color":{"red":0.9411765,"green":0.972549,"blue":1.0,"opacity":1.0}}],"normalPayments":[{"ID":1,"amount":23,"date":"2017-06-02","categoryID":0,"name":"Test Normal","description":"Lorem Ipsum"}],"repeatingPayments":[{"repeatInterval":7,"repeatEndDate":"2017-06-30","repeatMonthDay":0,"ID":1,"amount":-10012,"date":"2017-06-01","categoryID":1,"name":"Test Repeating","description":"Lorem Ipsum"}]}
\ No newline at end of file
+{"categories":[{"ID":1,"name":"NONE","color":"#FFFFFF"},{"ID":2,"name":"Übertrag","color":"#FFFF00"},{"ID":3,"name":"Keine Kategorie","color":"#FFFFFF"},{"ID":4,"name":"123 Tü+?est Category","color":"#FF9500"}],"normalPayments":[{"ID":1,"amount":23,"date":"2017-06-02","categoryID":0,"name":"Test Normal","description":"Lorem Ipsum"}],"repeatingPayments":[{"repeatInterval":7,"repeatEndDate":"2017-06-30","repeatMonthDay":0,"ID":1,"amount":-10012,"date":"2017-06-01","categoryID":3,"name":"Test Repeating","description":"Lorem Ipsum"}]}
\ No newline at end of file
diff --git a/tests/de/deadlocker8/budgetmaster/tests/resources/import.json b/tests/de/deadlocker8/budgetmaster/tests/resources/import.json
index 12515b0b63822774520696258cc0d14ecb525eff..209392219510b137d085d93f7db36fca6faf9754 100644
--- a/tests/de/deadlocker8/budgetmaster/tests/resources/import.json
+++ b/tests/de/deadlocker8/budgetmaster/tests/resources/import.json
@@ -1 +1 @@
-{"categories":[{"ID":1,"name":"NONE","color":{"red":1.0,"green":1.0,"blue":1.0,"opacity":1.0}},{"ID":2,"name":"Übertrag","color":{"red":1.0,"green":1.0,"blue":0.0,"opacity":1.0}},{"ID":3,"name":"123 Tü+?est Category","color":{"red":0.9411765,"green":0.972549,"blue":1.0,"opacity":1.0}}],"normalPayments":[{"ID":1,"amount":23,"date":"2017-06-02","categoryID":0,"name":"Test Normal","description":"Lorem Ipsum"}],"repeatingPayments":[{"repeatInterval":7,"repeatEndDate":"2017-06-30","repeatMonthDay":0,"ID":1,"amount":-10012,"date":"2017-06-01","categoryID":1,"name":"Test Repeating","description":"Lorem Ipsum"}]}
\ No newline at end of file
+{"categories":[{"ID":1,"name":"NONE","color":"#FFFFFF"},{"ID":2,"name":"Übertrag","color":"#FFFF00"},{"ID":3,"name":"Keine Kategorie","color":"#FFFFFF"},{"ID":4,"name":"123 Tü+?est Category","color":"#FF9500"}],"normalPayments":[{"ID":1,"amount":23,"date":"2017-06-02","categoryID":0,"name":"Test Normal","description":"Lorem Ipsum"}],"repeatingPayments":[{"repeatInterval":7,"repeatEndDate":"2017-06-30","repeatMonthDay":0,"ID":1,"amount":-10012,"date":"2017-06-01","categoryID":3,"name":"Test Repeating","description":"Lorem Ipsum"}]}
\ No newline at end of file
diff --git a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java
index 94bd4b2ae7bb367ba5674c5b06e574c2623891ab..9321e7af500030007363f92e5cd89aaddef34330 100644
--- a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java
+++ b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java
@@ -8,6 +8,7 @@ import static org.junit.Assert.fail;
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
+import java.util.Locale;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -16,10 +17,10 @@ import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.LatestRepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.logic.Settings;
 import de.deadlocker8.budgetmasterserver.logic.Utils;
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
+import tools.Localization;
 
 public class DatabaseHandlerTest
 {			
@@ -37,6 +38,9 @@ public class DatabaseHandlerTest
 			handler.deleteDatabase();
 			handler = new DatabaseHandler(settings);			
 			databaseHandler = handler;
+			
+			Localization.init("de/deadlocker8/budgetmaster/resources/");
+			Localization.loadLanguage(Locale.GERMANY);
 		}
 		catch(IOException | URISyntaxException e)
 		{
@@ -47,7 +51,7 @@ public class DatabaseHandlerTest
 	@Test
 	public void testLastInsertID()
 	{			
-		Category expected = new Category("123 Tü+?est Category", Color.ALICEBLUE);
+		Category expected = new Category("123 Tü+?est Category", "#FF0000");
 		databaseHandler.addCategory(expected.getName(), expected.getColor());
 		//3 because "NONE" and "Übertrag" has already been inserted at database creation	
 		assertEquals(3, databaseHandler.getLastInsertID());		
@@ -57,7 +61,7 @@ public class DatabaseHandlerTest
 	public void testCategory()
 	{
 		//add
-		Category expected = new Category("123 Tü+?est Category", Color.ALICEBLUE);
+		Category expected = new Category("123 Tü+?est Category", "#FF0000");
 		databaseHandler.addCategory(expected.getName(), expected.getColor());
 		ArrayList<Category> categories = databaseHandler.getCategories();	
 		
@@ -67,14 +71,14 @@ public class DatabaseHandlerTest
 		assertEquals(expected.getColor(), category.getColor());
 		
 		//update
-		Category expectedUpdated = new Category(category.getID(), "456", Color.RED);
+		Category expectedUpdated = new Category(category.getID(), "456", "#00FF00");
 		databaseHandler.updateCategory(expectedUpdated.getID(), expectedUpdated.getName(), expectedUpdated.getColor());
 		category = databaseHandler.getCategory(expectedUpdated.getID());
 		assertEquals(expectedUpdated.getName(), category.getName());
 		assertEquals(expectedUpdated.getColor(), category.getColor());
 		
 		//misc
-		category = databaseHandler.getCategory("NONE", Color.web("#FFFFFF"));
+		category = databaseHandler.getCategory("NONE", "#FFFFFF");
 		assertEquals(1, category.getID());
 		
 		assertTrue(databaseHandler.categoryExists(1));
@@ -84,7 +88,7 @@ public class DatabaseHandlerTest
 	public void testDeleteCategory()
 	{
 		//add
-		Category expected = new Category("123 Tü+?est Category", Color.ALICEBLUE);
+		Category expected = new Category("123 Tü+?est Category", "#FF0000");
 		databaseHandler.addCategory(expected.getName(), expected.getColor());		
 		
 		int id = databaseHandler.getLastInsertID();
diff --git a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java
index f319ff5d5c64f56be491167e641b1ae501231205..3e713d563afb5e932e6d9bd132c87737252cdcda 100644
--- a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java
+++ b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java
@@ -9,6 +9,7 @@ import java.net.URISyntaxException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.ArrayList;
+import java.util.Locale;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -19,13 +20,13 @@ import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
-import de.deadlocker8.budgetmasterserver.logic.Database;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseExporter;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
-import de.deadlocker8.budgetmasterserver.logic.DatabaseImporter;
 import de.deadlocker8.budgetmasterserver.logic.Settings;
 import de.deadlocker8.budgetmasterserver.logic.Utils;
-import javafx.scene.paint.Color;
+import de.deadlocker8.budgetmasterserver.logic.database.Database;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseExporter;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseImporter;
+import tools.Localization;
 
 public class DatabaseImportExportTest
 {			
@@ -43,6 +44,9 @@ public class DatabaseImportExportTest
 			handler.deleteDatabase();
 			handler = new DatabaseHandler(settings);			
 			databaseHandler = handler;
+			
+			Localization.init("de/deadlocker8/budgetmaster/resources/");
+			Localization.loadLanguage(Locale.GERMANY);
 		}
 		catch(IOException | URISyntaxException e)
 		{
@@ -62,7 +66,7 @@ public class DatabaseImportExportTest
 			importer.importDatabase(database);
 			
 			//test category
-			Category expectedCategory = new Category(3, "123 Tü+?est Category", Color.ALICEBLUE);			
+			Category expectedCategory = new Category(3, "123 Tü+?est Category", "#FF9500");			
 			ArrayList<Category> categories = databaseHandler.getCategories();	
 			
 			Category category = databaseHandler.getCategory(categories.get(categories.size()-1).getID());
@@ -79,7 +83,7 @@ public class DatabaseImportExportTest
 			assertEquals(expectedPayment.getDescription(), payment.getDescription());
 			
 			//test repeating payment
-			RepeatingPayment expectedRepeatingPayment = new RepeatingPayment(1, -10012, "2017-06-01", 1, "Test Repeating", "Lorem Ipsum", 7, "2017-06-30", 0);			
+			RepeatingPayment expectedRepeatingPayment = new RepeatingPayment(1, -10012, "2017-06-01", 3, "Test Repeating", "Lorem Ipsum", 7, "2017-06-30", 0);			
 			RepeatingPayment repeatingPayment = databaseHandler.getRepeatingPayment(1);
 			assertEquals(expectedRepeatingPayment.getAmount(), repeatingPayment.getAmount());
 			assertEquals(expectedRepeatingPayment.getDate(), repeatingPayment.getDate());
@@ -115,7 +119,8 @@ public class DatabaseImportExportTest
 			DatabaseExporter exporter = new DatabaseExporter(settings);	
 			Gson gson = new Gson();
 			String databaseJSON = gson.toJson(exporter.exportDatabase());
-			FileHelper.saveDatabaseJSON(file, databaseJSON);		
+			FileHelper.saveDatabaseJSON(file, databaseJSON);
+			FileHelper.saveDatabaseJSON(new File("C:/Users/ROGO2/Desktop/123.json"), databaseJSON);
 			
 			String expectedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/import.json")));
 			String exportedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/export.json")));