Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
github.com/meilihao/i18n
Package i18n is for app Internationalization and Localization.
This package provides multiple-language options to improve user experience. Sites like Go Walker and gogs.io are using this module to implement Chinese and English user interfaces.
You can use following command to install this module:
go get github.com/Unknwon/i18n
First of all, you have to import this package:
import "github.com/unknwon/i18n"
The format of locale files is very like INI format configuration file, which is basically key-value pairs. But this module has some improvements. Every language corresponding to a locale file, for example, suppose there are two files called locale_en-US.ini
and locale_zh-CN.ini
.
The name and extensions of locale files can be anything, but we strongly recommend you to follow the style of gogsweb.
Here are two simplest locale file examples:
File locale_en-US.ini
:
hi = hello, %s
bye = goodbye
File locale_zh-CN.ini
:
hi = 您好,%s
bye = 再见
There are two ways to do translation depends on which way is the best fit for your application or framework.
Directly use package function to translate:
i18n.Tr("en-US", "hi", "Unknwon")
i18n.Tr("en-US", "bye")
Or create a struct and embed it:
type MyController struct{
// ...other fields
i18n.Locale
}
//...
func ... {
c := &MyController{
Locale: i18n.Locale{"en-US"},
}
_ = c.Tr("hi", "Unknwon")
_ = c.Tr("bye")
}
Code above will produce correspondingly:
en-US
:hello, Unknwon
, goodbye
zh-CN
:您好,Unknwon
, 再见
For different pages, one key may map to different values. Therefore, i18n module also uses the section feature of INI format configuration to achieve section.
For example, the key name is about
, and we want to show About
in the home page and About Us
in about page. Then you can do following:
Content in locale file:
about = About
[about]
about = About Us
Get about
in home page:
i18n.Tr("en-US", "about")
Get about
in about page:
i18n.Tr("en-US", "about.about")
Because dot .
is sign of section in both INI parser and locale files, so when your key name contains .
will cause ambiguity. At this point, you just need to add one more .
in front of the key.
For example, the key name is about.
, then we can use:
i18n.Tr("en-US", ".about.")
to get expect result.
Module i18n provides a command line helper tool beei18n for simplify steps of your development. You can install it as follows:
go get github.com/unknwon/i18n/ui18n
Command sync
allows you use a exist local file as the template to create or sync other locale files:
ui18n sync source_file.ini other1.ini other2.ini
This command can operate 1 or more files in one command.
hi
and it does not exist in locale file, simply return hi
as output.FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.