npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

domain-translator

v0.1.2

Published

Translator

Downloads

2

Readme

NPM version

Domain translator

JavaScript translator with plural forms support written in ES6.

Installation

$ npm install domain-translator

Dictionary

var dictionary = {
    'en': {
        projectName: 'Trees',
        trees: {
            appleTree: {
                title: 'Apple tree',
                fruits: {
                    title: 'Some apple|Some %count% apples',
                }
            }
        }
    }
};

Usage

var translator = new mesour.Translator({
    language: 'en',
    dictionary: dictionary
});

var projectName = translator.translate('projectName');    // output: Trees
var message = translator.translate('trees.appleTree.title');    // output: Apple tree

Using DomainTranslator

Can use DomainTranslator to shorten keys.

var domainTranslator = translator.domain('trees.appleTree');

var title = domainTranslator.translate('title');    // output: Apple tree

And use method domain again on domainTranslator:

var domainTranslatorFruits = domainTranslator.domain('fruits');

var title = domainTranslatorFruits.translate('title');    // output: Some apple

Plural forms

There is already registered 138 plural forms and you can find list of them on this site. If you will miss some language, wrote issue or register it by your own.

translator.addPluralForm(
	'en',               // language code
	2,                  // total count of plural forms for this language
	'(n===1) ? 0 : 1'   // decision code. In "n" variable is count of items and it says that if it is 1 item, first (0) form will be used, otherwise second form
);

For comparing, here is example of czech plural forms.

translator.addPluralForm(
	'cs',
	3,
	'(n===0) ? 2 : ((n===1) ? 0 : ((n>=2 && n<=4) ? 1 : 2))'
);

Now we have to add plural forms to our dictionary.

{
	"apples": 'Some apple|Some %count% apples'
}

%count% will be automatically replaced with count of items. Again for comparing czech version.

{
	"apples": 'Jedno jablko|%count% jablka|%count% jablek'
}

And now you can finally use it.

var message = translator.translate('apples', 2);		// output: Some 2 apples

You can change pluralSeparator. Default is |:

var translator = new mesour.Translator({
    language: 'en',
    dictionary: dictionary,
    pluralSeparator: '|'
});

Replacements

%count% is the base example of replacements, but you can create others. For example you can set replacement for %url% and then it will be automatically changed to name of your site, so if you will change it in future.

Dictionary:

{
	"info": "web site url: <a href=\"%url%\">%url%</a>"
}

Usage:

var message = translator.translate('info', {
    'url': 'http://mesour.com'
});
// output: web site url: <a href="http://mesour.com">http://mesour.com</a>

You can change replacement prefix and suffix character. Default is %:

var translator = new mesour.Translator({
    language: 'en',
    dictionary: dictionary,
    replacePrefix: '%',
    replaceSuffix: '%'
});

Debug

If you set debug to true, you will receive warning in console for all non existing translate keys.

var translator = new mesour.Translator({
    language: 'en',
    dictionary: dictionary,
    debug: true
});

Synchronous AJAX loading

Warning: This triggers in Chrome warning for deprecated.

var translator = new mesour.Translator({
    language: 'en',
    url: '/dictionary.php?locale=%locale%'  // -> /dictionary.php?locale=en
});

// can translate here
var message = translator.translate('apples');