Allow plugins to set short translation locale

This commit is contained in:
Chocobozzz 2021-04-20 16:14:09 +02:00
parent 24a792404c
commit 67baf6478a
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 10 additions and 8 deletions

View File

@ -23,6 +23,7 @@ import { PluginLibrary, RegisterServerAuthExternalOptions, RegisterServerAuthPas
import { ClientHtml } from '../client-html' import { ClientHtml } from '../client-html'
import { RegisterHelpers } from './register-helpers' import { RegisterHelpers } from './register-helpers'
import { installNpmPlugin, installNpmPluginFromDisk, removeNpmPlugin } from './yarn' import { installNpmPlugin, installNpmPluginFromDisk, removeNpmPlugin } from './yarn'
import { getCompleteLocale } from '@shared/core-utils'
export interface RegisteredPlugin { export interface RegisteredPlugin {
npmName: string npmName: string
@ -444,10 +445,12 @@ export class PluginManager implements ServerHook {
const path = translationPaths[locale] const path = translationPaths[locale]
const json = await readJSON(join(this.getPluginPath(plugin.name, plugin.type), path)) const json = await readJSON(join(this.getPluginPath(plugin.name, plugin.type), path))
if (!this.translations[locale]) this.translations[locale] = {} const completeLocale = getCompleteLocale(locale)
this.translations[locale][npmName] = json
logger.info('Added locale %s of plugin %s.', locale, npmName) if (!this.translations[completeLocale]) this.translations[completeLocale] = {}
this.translations[completeLocale][npmName] = json
logger.info('Added locale %s of plugin %s.', completeLocale, npmName)
} }
} }

View File

@ -75,9 +75,9 @@ export function isDefaultLocale (locale: string) {
} }
export function peertubeTranslate (str: string, translations?: { [ id: string ]: string }) { export function peertubeTranslate (str: string, translations?: { [ id: string ]: string }) {
// FIXME: remove disable rule when the client is upgraded to typescript 3.7 if (!translations || !translations[str]) return str
// eslint-disable-next-line
return translations && translations[str] ? translations[str] : str return translations[str]
} }
const possiblePaths = POSSIBLE_LOCALES.map(l => '/' + l) const possiblePaths = POSSIBLE_LOCALES.map(l => '/' + l)

View File

@ -744,7 +744,7 @@ If you want to translate strings of your plugin (like labels of your registered
{ {
..., ...,
"translations": { "translations": {
"fr-FR": "./languages/fr.json", "fr": "./languages/fr.json",
"pt-BR": "./languages/pt-BR.json" "pt-BR": "./languages/pt-BR.json"
}, },
... ...
@ -752,7 +752,6 @@ If you want to translate strings of your plugin (like labels of your registered
``` ```
The key should be one of the locales defined in [i18n.ts](https://github.com/Chocobozzz/PeerTube/blob/develop/shared/models/i18n/i18n.ts). The key should be one of the locales defined in [i18n.ts](https://github.com/Chocobozzz/PeerTube/blob/develop/shared/models/i18n/i18n.ts).
You **must** use the complete locales (`fr-FR` instead of `fr`).
Translation files are just objects, with the english sentence as the key and the translation as the value. Translation files are just objects, with the english sentence as the key and the translation as the value.
`fr.json` could contain for example: `fr.json` could contain for example: