Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
@vocab/core
Advanced tools
Vocab is a strongly typed internationalisation framework for React.
Vocab is a monorepo with different packages you can install depending on your usage, the below list will get you started using the cli, React and webpack integrations.
$ npm i --save @vocab/cli @vocab/react @vocab/webpack
Before starting to write code you'll need to setup webpack to understand how to use translation.json
files.
This is done using the VocabWebpackPlugin.
webpack.config.js
const VocabWebpackPlugin = require('@vocab/webpack').default;
module.exports = {
...,
plugins: [new VocabWebpackPlugin({})]
}
You can configure Vocab directly when calling the API or via a vocab.config.js
file.
In this example we've configured two languages, English and French, where our initial translation.json
files will use English.
vocab.config.js
module.exports = {
devLanguage: 'en',
languages: [{ name: 'en' }, { name: 'fr' }]
};
Vocab doesn't tell you how to select or change your language. You just need to tell Vocab what language to use.
Note: Using methods discussed later we'll make sure the first language is loaded on page load. However, after this changing languages may then lead to a period of no translations as Vocab downloads the new language's translations.
src/App.tsx
import { TranslationsProvider } from '@vocab/react';
function App({ children }) {
return (
<TranslationsProvider language={language}>
{children}
</TranslationsProvider>
);
}
A translation file is a JSON file consisting of a flat structure of keys, each with a message and an optional description.
./translations.json
{
"my key": {
"message": "Hello from Vocab",
"description": "An optional description to help when translating"
}
}
You can then import these translations into your React components. Translations can be used by calling the t
function returned by useTranslation
.
./MyComponent.tsx
import { useTranslation } from '@vocab/react';
import translations from './translations.json';
function MyComponent({ children }) {
const { t } = useTranslation(translations);
return <div>{t('my key')}</div>;
}
So far your app will run, but you're missing any translations other than the initial language. The below file can be created manually; however, you can also integrate with a remote translation platform to push and pull translations automatically.
./__translations__/translations.fr-FR.json
{
"my key": {
"message": "Bonjour de Vocab",
"decription": "An optional description to help when translating"
}
}
Using the above method without optimizing what chunks webpack uses you may find the page needing to do an extra round trip to load languages on a page.
This is where getChunkName
can be used to retrieve the Webpack chunk used for a specific language.
For example here is a Server Render function that would add the current language chunk to Loadable component's ChunkExtractor.
src/render.tsx
import { getChunkName } from '@vocab/webpack/chunk-name';
// ...
const chunkName = getChunkName(language);
const extractor = new ChunkExtractor();
extractor.addChunk(chunkName);
Configuration can either be passed into the Node API directly or be gathered from the nearest vocab.config.js file.
vocab.config.js
module.exports = {
devLanguage: 'en',
languages: [
{ name: 'en' },
{ name: 'en-AU', extends: 'en' },
{ name: 'en-US', extends: 'en' },
{ name: 'fr-FR' }
]
};
Vocab generates custom translation.json.d.ts
files that give your React components strongly typed translations to work with.
To generate these types run:
$ vocab generate-types
Vocab can be used to syncronize your translations with translations from a remote translation platform.
Platform | Environment Variables |
---|---|
Phrase | PHRASE_PROJECT_ID, PHRASE_API_TOKEN |
$ vocab push --branch my-branch
$ vocab pull --branch my-branch
MIT.
FAQs
Vocab is a strongly typed internationalization framework for React.
The npm package @vocab/core receives a total of 3,933 weekly downloads. As such, @vocab/core popularity was classified as popular.
We found that @vocab/core demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
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.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.