diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index dd390c3..8dbc517 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,13 +4,30 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -19,19 +36,26 @@
+
+
+
+
true
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..906ff99
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module gitport.de/oldperl/go-thousands
+
+go 1.24
diff --git a/thousands.go b/thousands.go
new file mode 100644
index 0000000..dbb434a
--- /dev/null
+++ b/thousands.go
@@ -0,0 +1,102 @@
+package thousands
+
+import (
+ "fmt"
+ "strings"
+)
+
+func Separate(Number interface{}, language ...string) (string, error) {
+
+ switch Number.(type) {
+ case int:
+ case int8:
+ case int16:
+ case int32:
+ case int64:
+ case float32:
+ case float64:
+
+ default:
+ return "", fmt.Errorf("no valid number format")
+ }
+
+ formattedNumber := fmt.Sprintf("%.2f", Number)
+
+ if len(language) < 1 {
+ language[0] = "en"
+ }
+
+ switch language[0] {
+ case "de":
+
+ formattedNumber = strings.ReplaceAll(formattedNumber, ",", ".")
+ numberLength := len(formattedNumber)
+
+ dec := ""
+
+ if strings.Index(formattedNumber, ".") != -1 {
+ dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : numberLength]
+ formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")]
+
+ }
+
+ for i := 0; i <= numberLength; i = i + 4 {
+
+ a := formattedNumber[0 : numberLength-i]
+ b := formattedNumber[numberLength-i : numberLength]
+ formattedNumber = a + "." + b
+
+ }
+
+ if formattedNumber[0:1] == "." {
+ formattedNumber = formattedNumber[1:numberLength]
+ }
+
+ if formattedNumber[numberLength-1:numberLength] == "." {
+ formattedNumber = formattedNumber[0 : numberLength-1]
+ }
+
+ if dec != "" {
+ formattedNumber = formattedNumber + "," + dec
+ }
+
+ return formattedNumber, nil
+
+ case "en":
+
+ formattedNumber = strings.ReplaceAll(formattedNumber, ",", "")
+ numberLength := len(formattedNumber)
+
+ dec := ""
+
+ if strings.Index(formattedNumber, ".") != -1 {
+ dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : numberLength]
+ formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")]
+
+ }
+
+ for i := 0; i <= numberLength; i = i + 4 {
+
+ a := formattedNumber[0 : numberLength-i]
+ b := formattedNumber[numberLength-i : numberLength]
+ formattedNumber = a + "," + b
+
+ }
+
+ if formattedNumber[0:1] == "," {
+ formattedNumber = formattedNumber[1:numberLength]
+ }
+
+ if formattedNumber[numberLength-1:numberLength] == "," {
+ formattedNumber = formattedNumber[0 : numberLength-1]
+ }
+
+ if dec != "" {
+ formattedNumber = formattedNumber + "." + dec
+ }
+
+ return formattedNumber, nil
+ }
+
+ return formattedNumber, nil
+}