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/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
index 545c847ae46f9d07c1a2af8f8929700f78ec63b0..6e38376d818dca2360933e93bf21129adf805b02 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
@@ -8,6 +8,7 @@ public class Strings
     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
@@ -128,6 +129,10 @@ public class Strings
     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";
diff --git a/src/de/deadlocker8/budgetmaster/resources/_de.properties b/src/de/deadlocker8/budgetmaster/resources/_de.properties
index 99ffe43b1cf0fe055ed381c0508cae7a491b5195..9525724647f640fbe2d7b2345e1ec373132d8e1f 100644
--- a/src/de/deadlocker8/budgetmaster/resources/_de.properties
+++ b/src/de/deadlocker8/budgetmaster/resources/_de.properties
@@ -1,9 +1,10 @@
 # DEFAULT
 app.name=BudgetMaster
-version.code=6
+version.code=7
 version.name=1.4.0_alpha
 version.date=12.08.17
 author=Robert Goldmann
+credits=L�nderflaggen von Freepik auf https://www.flaticon.com
 
 folder=Deadlocker/BudgetMaster
 
@@ -127,6 +128,11 @@ 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 "
 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 "
 
+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.
@@ -250,6 +256,7 @@ 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
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/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/controller/Controller.java b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
index f87742a17469a388aec0847937bfe3dac922decd..2d960d0a2bbb93b4911a366543f0ebf1e02ff7ae 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
@@ -328,12 +328,19 @@ public class Controller
 
 	public void about()
 	{
-		AlertGenerator.showAboutAlert(Localization.getString(Strings.APP_NAME),
-									Localization.getString(Strings.VERSION_NAME),
-									Localization.getString(Strings.VERSION_CODE),
-									Localization.getString(Strings.VERSION_DATE),
-									Localization.getString(Strings.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)
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
index 5d8dc9535aec4c07129e457d812e447e22e69fc2..506a7f6480dba8b70a52f3d7608f0abdb586543d 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
@@ -11,7 +11,9 @@ 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.budgetmaster.logic.utils.LanguageType;
 import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import de.deadlocker8.budgetmaster.ui.cells.LanguageCell;
 import de.deadlocker8.budgetmasterserver.logic.database.Database;
 import javafx.application.Platform;
 import javafx.fxml.FXML;
@@ -20,6 +22,7 @@ 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;
@@ -56,8 +59,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)
 	{
@@ -66,6 +71,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.GERMAN);
+		previousLanguage = LanguageType.GERMAN;
+		
 		if(controller.getSettings().isComplete())
 		{
 			textFieldURL.setText(controller.getSettings().getUrl());
@@ -80,8 +94,15 @@ 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));
@@ -206,6 +227,7 @@ public class SettingsController
 			controller.getSettings().setCurrency(currency);
 			controller.getSettings().setRestActivated(radioButtonRestActivated.isSelected());
 			controller.getSettings().setTrustedHosts(trustedHosts);
+			controller.getSettings().setLanguage(comboBoxLanguage.getValue());
 		}
 		else
 		{
@@ -232,6 +254,7 @@ public class SettingsController
 			settings.setCurrency(currency);
 			settings.setRestActivated(radioButtonRestActivated.isSelected());
 			settings.setTrustedHosts(trustedHosts);
+			settings.setLanguage(comboBoxLanguage.getValue());
 			controller.setSettings(settings);
 		}
 
@@ -257,6 +280,30 @@ public class SettingsController
 
 		controller.refresh(controller.getFilterSettings());
 		controller.showNotification(Localization.getString(Strings.NOTIFICATION_SETTINGS_SAVE));
+		
+		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)
+			{
+				//TODO restart programm
+			}
+			else
+			{
+				alert.close();
+			}
+		}
 	}
 
 	public void exportDB()
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
index 8fe0b27393c633a0d78c02940100fc66b9119abc..65bea18bd2166a6279557b026bbe606a576568e7 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
@@ -62,6 +62,12 @@ public class SplashScreenController
 		});
 		
 		settings = FileHelper.loadSettings();
+		//load correct language
+		if(settings.getLanguage() != null)
+		{
+			Localization.loadLanguage(settings.getLanguage().getLocale());
+		}
+		
 		if(settings == null)
 		{	
 			settings = new Settings();
@@ -172,7 +178,7 @@ public class SplashScreenController
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.setTitle(Localization.getString(Strings.APP_NAME));
-			newStage.setScene(new Scene(root, 650, 650));
+			newStage.setScene(new Scene(root, 650, 675));
 			newStage.getIcons().add(icon);			
 			newStage.setResizable(true);
 			newStage.setMinHeight(650);
diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml
index 96f3f6aed567868a15d4d358698577ce8057cb85..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?>
@@ -53,7 +54,7 @@
                               <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="%settingstab.label.trusted.hosts.info" textAlignment="CENTER" wrapText="true" VBox.vgrow="ALWAYS">
@@ -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="%settingstab.label.database" 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" />
@@ -113,6 +122,7 @@
                            <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="%settingstab.button.database.export">
diff --git a/src/de/deadlocker8/budgetmasterserver/main/_de.properties b/src/de/deadlocker8/budgetmasterserver/main/_de.properties
index 9eb890aca03c5d0cae11b3f10073c9ad0a45d340..dd7db603ab1211376122c7b8d202c0d535c2c0bb 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.code=7
 version.name=1.4.0_alpha
 version.date=12.08.17
 author=Robert Goldmann
\ No newline at end of file