Hello, I'm

Philipp König

a software developer based in Stuttgart, Germany.
var langDir = "langs"
var defaultLanguage string
var langs map[string]i18n.TranslateFunc

func Init() {
if langs == nil {
langs = make(map[string]i18n.TranslateFunc)
}

dirList, _ := ioutil.ReadDir(fmt.Sprintf("%s%s", env.GetPath(), langDir))
defaultLanguage = config.GetDefaultLanguage()
hasDefaultLanguage := false

for _, dir := range dirList {
lang := dir.Name()
files, _ := ioutil.ReadDir(fmt.Sprintf("%s%s/%s", env.GetPath(), langDir, lang))

if lang == defaultLanguage {
hasDefaultLanguage = true
}

for _, file := range files {
fileName := file.Name()
err := i18n.LoadTranslationFile(fmt.Sprintf("%s%s/%s/%s", env.GetPath(), langDir, lang, fileName))

if err != nil {
panic(fmt.Sprintf("Error loading language file -> %s/%s: %s", lang, fileName, err))
}

log.Info.Println("Loaded translation file", "->", fileName)
}

var err error
langs[lang], err = i18n.Tfunc(lang)

if err != nil {
panic(fmt.Sprintf("Error parsing language -> %s: %s", lang, err))
}

log.Info.Println("Finished loading language", "->", lang)
}

if !hasDefaultLanguage {
panic(fmt.Sprintf("There is no translation for %s", defaultLanguage))
}
}

func GetUserLanguage(r *http.Request) string {
ret := config.GetDefaultLanguage()
userLangs, _, _ := language.ParseAcceptLanguage(r.Header.Get("Accept-Language"))

for _, userLang := range userLangs {
userLangStr := strings.Replace(userLang.String(), "-", "_", -1)
userLangSplitted := strings.Split(userLangStr, "_")

if LangExists(userLangStr) {
ret = userLangStr
break
} else if len(userLangSplitted) > 1 {
if LangExists(userLangSplitted[0]) {
ret = userLangSplitted[0]
break
}
}
}
return ret
}

func LangExists(lang string) bool {
_, ok := langs[lang]
return ok
}

func GetAll() []string {
var ret []string
for lang := range langs {
ret = append(ret, lang)
}
return ret
}

func Get(lang string, key string) string {
return GetPlural(lang, key, 1)
}

func GetPlural(lang string, key string, amount int) string {
ret := key

if LangExists(lang) {
ret = langs[lang](key, amount)

if ret == key && lang != defaultLanguage {
ret = Get(defaultLanguage, key)
}
}
return ret
}

Frame

I have created two browser extensions for Google Chrome and Microsoft Edge to improve the user experience by providing some new features within the browser.

I always disliked how bookmarks are managed in these browsers, especially when dealing with many entries and folders.

To circumvent this problem I created a browser extension which displays the bookmarks as a nested list in a togglable and highly user-configurable sidebar.

Currently over 450,000 people are benefiting from using my extensions.

Read more

I uploaded some of my projects to Github. Feel free to check them out and contribute by sending feedback, suggestions, or report issues.

Show profile
Want to talk? hey@philipp-koenig.com