Files
SCM-Manager/docs/v2/i18n for Plugins.md

60 lines
1.4 KiB
Markdown
Raw Normal View History

2020-03-31 17:28:30 +02:00
# i18n for Plugins
2020-03-09 08:01:43 +01:00
How to internationalize your own plugin
### Create the plugins.json file
The translation file for plugins should be stored in the resources path
2020-03-31 17:28:30 +02:00
locales/*{lang}*/plugins.json
2020-03-09 08:01:43 +01:00
2020-03-31 17:28:30 +02:00
All translation keys are parts of a **unique root key**. It is
recommended to **use the maven artifactId of the plugin as root
key** to avoid conflicts with other plugin. All translation files
2020-03-09 08:01:43 +01:00
would be collected and merged to a single file containing all
2020-03-31 17:28:30 +02:00
translations. Therefore it is **necessary to use a unique root key**
2020-03-09 08:01:43 +01:00
for the translations.
2020-03-31 17:28:30 +02:00
***Example:***
2020-03-09 08:01:43 +01:00
the translation file of the svn plugin is stored in
locales/en/plugins.json
2020-03-31 17:28:30 +02:00
```json
{
"scm-svn-plugin": {
"information": {
"checkout" : "Checkout repository"
}
}
}
```
2020-03-09 08:01:43 +01:00
### Usage in the own React components
SCM-Manager use react-i18next to render translations.
The following steps are needed to use react-i18next in the own
components
- import react-i18next
2020-03-31 17:28:30 +02:00
```javascript
import { translate } from "react-i18next";
```
2020-03-09 08:01:43 +01:00
2020-03-31 17:28:30 +02:00
- declare the translation method `t: string => string` as property
```javascript
type Props = {
t: string => string
}
```
2020-03-09 08:01:43 +01:00
- wrap the react component with the translate method and give the json
translation file name \"plugins\"
2020-03-31 17:28:30 +02:00
```javascript
export default translate("plugins")(MyPluginComponent);
```
2020-03-09 08:01:43 +01:00
- use the translation keys like this:
2020-03-31 17:28:30 +02:00
```javascript
const { t } = this.props;
<h3>{t("scm-svn-plugin.information.checkout")}</h3>
```