Git Product home page Git Product logo

jibberjabber's Introduction

Jibber Jabber Build Status

Jibber Jabber is a GoLang Library that can be used to detect an operating system's current language, plus helper functionalities for app development.

OS Support

UNIX: GNU/Linux, macOS, FreeBSD, OpenBSD, NetBSD
via the LC_MESSAGES, LC_ALL and LANG environment variables. They are checked in the aforementioned order.
These variables are used in ALL versions of UNIX for language detection.

Windows
via GetUserDefaultLocaleName and GetSystemDefaultLocaleName system calls. These calls are supported in Windows Vista and up.

DetectIETF

DetectIETF will return the current locale as a string. The format of the locale will be the ISO 639 two-letter language code, a DASH, then an ISO 3166 two-letter country code.

Example:

	userLocale, err := jibberjabber.DetectIETF()
	println("Locale:", userLocale)

DetectLanguage

DetectLanguage will return the current language as a string. The format will be the ISO 639 two-letter language code.

also import the following packages for parsing the returned locale

	"golang.org/x/text/language"
	"golang.org/x/text/language/display"

Example:

	userLanguage, err := jibberjabber.DetectLanguage()
	println("Language:", userLanguage)
	languageTag, parseErr := language.Parse(userLanguage)
	println("Language:", display.Self.Name(languageTag))
	

DetectLanguageTag

DetectLanguageTag will return the current language as a language tag as specified by "golang.org/x/text/language".

Example:

	languageTag, parseErr := jibberjabber.DetectLanguageTag()
	println("Language:", display.Self.Name(languageTag))
	

DetectTerritory

DetectTerritory will return the current locale territory as a string. The format will be the ISO 3166 two-letter country code.

Example:

	localeTerritory, err := jibberjabber.DetectTerritory()
	println("Territory:", localeTerritory)

About Errors in Detect

All the Detect commands will return an error if they are unable to read the Locale from the system.

For Windows, additional error information is provided due to the nature of the system call being used.

Helper Singleton

There is a singleton you can, but don't have to, use. It helps you define and later check which locales you support in your application - if not, apply a fallback language locale.

Example:

	langServer := jibberjabber.LanguageServer()
	langServer.SetSupportedLanguages(map[language.Tag]string{
		language.German:  "active.de.toml",
		language.English: "active.en.toml",
	}
	langServer.SetFallbackLanguage(language.English)
	langLocale, err := langServer.StringToSupportedLanguageTag("something") // returns `language.English`
	if err != nil {
		log.Printf("failed fetching supported language locale, use fallback language locale %q\n", display.Self.Name(langLocale))
	}

jibberjabber's People

Contributors

mjacred avatar lvarvel avatar tjarratt avatar drich10 avatar squeedee avatar

Stargazers

Alyx avatar Alyx avatar

Watchers

James Cloos avatar

jibberjabber's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.