From 9d18e401a747fa08d642859c1f031101f580e4ce Mon Sep 17 00:00:00 2001 From: John Livingston <38844060+JohnXLivingston@users.noreply.github.com> Date: Wed, 15 Feb 2023 11:54:48 +0100 Subject: [PATCH 01/12] Implements #153: Settings translations (#155) Implementing a new translating system, so we can more easily translate settings strings. Indeed, these strings are difficult to embed in JSON format. We still use JSON files for standard strings, but in addition we have dedicated YAML files to translate settings strings. There is a new build-languages.js script that merge all translations in JSON files. Other modifications: * Eslint: ignoring documentation and build scripts. * french settings translations. --- .eslintrc.json | 7 +- CHANGELOG.md | 4 + build-languages.js | 154 +++++++++++ client/admin-plugin-client-plugin.ts | 13 +- languages/ca.json | 8 +- languages/de.json | 8 +- languages/eo.json | 8 +- languages/es.json | 8 +- languages/eu.json | 8 +- languages/fr.json | 8 +- languages/it.json | 8 +- languages/ja.json | 8 +- languages/oc.json | 8 +- languages/pl.json | 8 +- languages/settings/en.yml | 186 +++++++++++++ languages/settings/fr.yml | 204 ++++++++++++++ package-lock.json | 34 ++- package.json | 24 +- server/lib/settings.ts | 255 ++++++++---------- .../contributing/translate/_index.en.md | 34 +++ .../contributing/translate/_index.fr.md | 44 +++ 21 files changed, 857 insertions(+), 182 deletions(-) create mode 100644 build-languages.js create mode 100644 languages/settings/en.yml create mode 100644 languages/settings/fr.yml diff --git a/.eslintrc.json b/.eslintrc.json index 40ad1516..b6a9a159 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,6 +4,11 @@ "extends": [], "globals": {}, "plugins": [], - "ignorePatterns": ["node_modules/", "dist/", "webpack.config.js", "build/", "vendor/"], + "ignorePatterns": [ + "node_modules/", "dist/", "webpack.config.js", + "build/", + "vendor/", + "support/documentation", + "build-*js"], "rules": {} } diff --git a/CHANGELOG.md b/CHANGELOG.md index d86aa0ab..07460231 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## ??? (Not Released Yet) +### New Features + +* Settings page translations. For now: english and french are available. + ### Minor changes and fixes * Updating a link to the documentation in the settings page. diff --git a/build-languages.js b/build-languages.js new file mode 100644 index 00000000..21991364 --- /dev/null +++ b/build-languages.js @@ -0,0 +1,154 @@ +/** + * This script is used to build the translations files. + * + * Indeed, some strings used in plugin settings are not easy to write + * in JSON format (contains html, double quotes, line breaks, ...). + * So we use YAML files to translates these strings, + * including the english version. + * + * This scripts takes the standard JSON files, the YAML translation files, + * and mixes everything up in dist/languages/xx.json. + */ +const fs = require('fs') +const path = require('path') +const YAML = require('yaml') + +class BuildLanguages { + destinationDir = null + langs = [] + translationsStrings = {} + monoLingualReferences = {} + + constructor () { + this.destinationDir = path.resolve(__dirname, 'dist', 'languages') + } + + async generateFiles () { + await this.loadLangs() + await this.initTranslationStrings() + await this.readJSONTranslations() + await this.readSettingsTranslations() + + await this.ensureDestinationDir() + await this.writeJSONTranslations() + await this.writeMonoLingualReferences() + } + + loadLangs () { + const packagejson = require('./package.json') + const translations = packagejson.translations || {} + this.langs = Object.values(translations).map(filename => { + return filename.match(/^.*\/(\w+)\.json$/)[1] + }) + console.log('Existings languages: ', this.langs) + } + + initTranslationStrings () { + console.log('Initializing translations strings...') + const translationsStrings = {} + for (const l of this.langs) { + translationsStrings[l] = {} + } + this.translationsStrings = translationsStrings + } + + async readJSONTranslations () { + console.log('Reading standard JSON translation strings...') + const translationsStrings = this.translationsStrings + for (const l of this.langs) { + const filePath = path.resolve(__dirname, 'languages', l + '.json') + if (!fs.existsSync(filePath)) { + console.warn(`File ${filePath} missing, ignoring.`) + continue + } + const t = require(filePath) + for (const k in t) { + const v = t[k] + if (k in translationsStrings[l]) { + throw new Error(`Duplicate translation for key ${k} in lang ${l}.`) + } + translationsStrings[l][k] = v + } + } + } + + async readSettingsTranslations () { + console.log('Reading Settings Yaml translation strings...') + + // First we must get the english reference file, + // that will give us the keys to use in final JSON. + + const reference = await this.getYmlFileContent(path.resolve(__dirname, 'languages', 'settings', 'en.yml')) + this.monoLingualReferences['settings'] = reference + + const translationsStrings = this.translationsStrings + for (const l of this.langs) { + const filePath = path.resolve(__dirname, 'languages', 'settings', l + '.yml') + const o = await this.getYmlFileContent(filePath) + + for (const k in o) { + if (!(k in reference)) { + throw new Error(`File ${filePath} contains unknown keys. Key=${k}.`) + } + const newKey = reference[k] + this.translationsStrings[l][newKey] = o[k] + } + } + } + + async getYmlFileContent (filePath) { + if (!fs.existsSync(filePath)) { + console.warn(`File ${filePath} missing, ignoring.`) + return {} + } + + const content = await fs.promises.readFile(filePath, 'utf8') + const o = YAML.parse(content) || {} + for (const k in o) { + let v = o[k] + if (v === null) { + // this value is ok! + continue + } + if ((typeof v) !== 'string') { + throw new Error(`File ${filePath} contains strings that are not strings! Key=${k}`) + } + + // We are normalizing the string, to avoid problems. + // As it is supposed to be html, we will strip newlines and multiple adjacent spaces. + v = v.replace(/\n/g, ' ') + v = v.replace(/\s\s+/g, ' ') + v = v.trim() + o[k] = v + } + return o + } + + async ensureDestinationDir () { + if (!fs.existsSync(this.destinationDir)) { + await fs.promises.mkdir(this.destinationDir) + } + } + + async writeJSONTranslations () { + console.log('Writing JSON files...') + for (const l of this.langs) { + const filePath = path.resolve(this.destinationDir, l + '.json') + await fs.promises.writeFile(filePath, JSON.stringify(this.translationsStrings[l])) + } + } + + async writeMonoLingualReferences () { + console.log('Writing JSON reference files...') + for (const name in this.monoLingualReferences) { + const filePath = path.resolve(this.destinationDir, name + '.reference.json') + await fs.promises.writeFile(filePath, JSON.stringify(this.monoLingualReferences[name])) + } + } +} + +const bl = new BuildLanguages() +bl.generateFiles().then(() => {}, (err) => { + console.error(err) + throw err +}) diff --git a/client/admin-plugin-client-plugin.ts b/client/admin-plugin-client-plugin.ts index e74cc51d..6dcc4bde 100644 --- a/client/admin-plugin-client-plugin.ts +++ b/client/admin-plugin-client-plugin.ts @@ -99,14 +99,13 @@ function register ({ registerHook, registerSettingsScript, peertubeHelpers }: Re const table = document.createElement('table') table.classList.add('peertube-plugin-livechat-prosody-list-rooms') container.append(table) - // TODO: translate labels. const labels: any = { - RoomName: 'Room name', - RoomDescription: 'Room description', - NotFound: 'Not found', - Video: 'Video', - Channel: 'Channel', - LastActivity: 'Last activity' + RoomName: await peertubeHelpers.translate('Room name'), + RoomDescription: await peertubeHelpers.translate('Room description'), + NotFound: await peertubeHelpers.translate('Not found'), + Video: await peertubeHelpers.translate('Video'), + Channel: await peertubeHelpers.translate('Channel'), + LastActivity: await peertubeHelpers.translate('Last activity') } const titleLineEl = document.createElement('tr') diff --git a/languages/ca.json b/languages/ca.json index a27a0379..0e168c55 100644 --- a/languages/ca.json +++ b/languages/ca.json @@ -15,5 +15,11 @@ "Open": false, "Use current theme colors": false, "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/de.json b/languages/de.json index 8d3e5580..f9dd09a2 100644 --- a/languages/de.json +++ b/languages/de.json @@ -15,5 +15,11 @@ "Open": "Öffnen", "Use current theme colors": "Die derzeitigen Themenfarben nutzen", "Generate an iframe to embed the chat in a website": "IFrame-Element erstellen, um den Chat in eine Webseite zu integrieren", - "Chat for live stream": "Chat für den Livestream" + "Chat for live stream": "Chat für den Livestream", + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/eo.json b/languages/eo.json index 98c4c540..50d043d8 100644 --- a/languages/eo.json +++ b/languages/eo.json @@ -15,5 +15,11 @@ "Open": "Malfermi", "Use current theme colors": "Uzi koloroj el la nuna etoso", "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/es.json b/languages/es.json index 9ed3bf5b..a59723fd 100644 --- a/languages/es.json +++ b/languages/es.json @@ -15,5 +15,11 @@ "Open": "Abrir", "Use current theme colors": "Utilizar los colores del tema actual", "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/eu.json b/languages/eu.json index b275b0f6..e1e84e47 100644 --- a/languages/eu.json +++ b/languages/eu.json @@ -15,5 +15,11 @@ "Open": "Ireki", "Use current theme colors": "Erabili uneko itxuraren koloreak", "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/fr.json b/languages/fr.json index af3c565e..99bee396 100644 --- a/languages/fr.json +++ b/languages/fr.json @@ -15,5 +15,11 @@ "Open": "Ouvrir", "Use current theme colors": "Utiliser les couleurs du thème courant", "Generate an iframe to embed the chat in a website": "Générer une iframe pour intégrer le tchat dans un site web", - "Chat for live stream:": "Tchat pour le direct :" + "Chat for live stream:": "Tchat pour le direct :", + "Room name": "Nom du salon", + "Room description": "Description du salon", + "Not found": "Non trouvé", + "Video": "Vidéo", + "Channel": "Chaîne", + "Last activity": "Dernière activité" } diff --git a/languages/it.json b/languages/it.json index 46389476..7e7173bf 100644 --- a/languages/it.json +++ b/languages/it.json @@ -15,5 +15,11 @@ "Open": false, "Use current theme colors": false, "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/ja.json b/languages/ja.json index 785f64ca..cd9edf38 100644 --- a/languages/ja.json +++ b/languages/ja.json @@ -15,5 +15,11 @@ "Open": "開く", "Use current theme colors": "現在のテーマカラーを使用する", "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/oc.json b/languages/oc.json index 206b74a5..e50d2e31 100644 --- a/languages/oc.json +++ b/languages/oc.json @@ -15,5 +15,11 @@ "Open": "Dobrir", "Use current theme colors": "Utilizar las colors del tèma actual" , "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/pl.json b/languages/pl.json index 08f4b369..0261be87 100644 --- a/languages/pl.json +++ b/languages/pl.json @@ -15,5 +15,11 @@ "Open": false, "Use current theme colors": false, "Generate an iframe to embed the chat in a website": false, - "Chat for live stream": false + "Chat for live stream": false, + "Room name": false, + "Room description": false, + "Not found": false, + "Video": false, + "Channel": false, + "Last activity": false } diff --git a/languages/settings/en.yml b/languages/settings/en.yml new file mode 100644 index 00000000..d46c0482 --- /dev/null +++ b/languages/settings/en.yml @@ -0,0 +1,186 @@ +important_note_title: "

Important notes

" +important_note_text: | + You can find the plugin documentation here: + + Peertube Plugin Livechat documentation + . + +diagnostic: | + Before asking for help, please use the diagnostic tool: + Launch diagnostic + (if this button is not opening a new window, please try to refresh the page). + +chat_title: "

Chat

" + +list_rooms_label: "List existing rooms" +list_rooms_description: | + List rooms + +chat_behaviour_description: "

Chat behaviour

" + +room_type_label: "Room type" +room_type_description: "You can choose here to have separate rooms for each video, or to group them by channel." +room_type_option_video: "Each video has its own webchat room" +room_type_option_channel: "Webchat rooms are grouped by channel" + +auto_display_label: "Automatically open the chat" +auto_display_description: "When watching a video, the chatbox will automatically open." + +open_blank_label: "Show the «open in new window» button" +open_blank_description: "There will be a button for opening the web chat in a new window." + +share_url_label: "Show the «share chat link» button" +share_url_description: "There will be a button for sharing a chat url (could be used to intregrated in OBS for example)." +share_url_option_nobody: "Show for nobody" +share_url_option_everyone: "Show for everyone" +share_url_option_owner: "Show for the video owner" +share_url_option_owner_moderators: "Show for the video owner and instance's moderators" + +per_live_video_label: "Users can activate the chat for their lives" +per_live_video_description: "If checked, all live videos will have a checkbox in their properties for enabling the web chat." + +per_live_video_warning_description: | + + You have enabled the setting «Users can activate the chat for their lives». + It is redundant with the «Activate chat for all lives» setting. + + +all_lives_label: "Activate chat for all lives" +all_lives_description: "If checked, the chat will be enabled for all lives." + +all_non_lives_label: "Activate chat for all non-lives" +all_non_lives_description: "If checked, the chat will be enable for all video that are not lives." + +videos_list_label: "Activate chat for these videos" +videos_list_description: | + Videos UUIDs for which we want a web chat. + Can be non-live videos. One per line.
+ You can add comments: everything after the # character will be stripped off, and empty lines ignored.
+ Don't add private videos, the UUIDs will be send to frontend. + +no_anonymous_label: "Hide the chat for anonymous users" +no_anonymous_description: "If checked, anonymous Peertube users won't see the chat." + +theming_advanced_description: "

Theming

" + +converse_theme_label: "ConverseJS theme" +converse_theme_description: "Please choose the converseJS theme you want to use." +converse_theme_option_peertube: "Peertube theme" +converse_theme_option_default: "Default ConverseJS theme" +converse_theme_option_concord: "ConverseJS concord theme" + +autocolors_label: "Automatic color detection" +autocolors_description: | + Try to auto detect colors from user's current theme.
+ When this settings is enabled, the plugin tries to auto-detect colors to apply to the chat theme.
+ If this is not correctly working for some of your Peertube theme, you can disable this option. + You can report the bug on the official + + issue tracker + . Don't forget to specify which theme is not working.` + +chat_style_label: "Webchat iframe style attribute" +chat_style_description: | + Additional styles to be added on the iframe style attribute.
+ Example: height:400px; + +prosody_advanced_description: "

Chat server advanced settings

" + +help_builtin_prosody_label: "Prosody server" +help_builtin_prosody_description: | + This plugin uses the Prosody XMPP server to handle chat rooms.
+ This plugin comes with a Prosody AppImage, that will be used to run the service. + +system_prosody_label: "Use system Prosody" +system_prosody_description: | + Warning: don't check this settings if you are not sure of what you are doing.
+ By checking this settings, your Peertube will use the Prosody server that comes with your system, + and not the embeded AppImage.
+ Only use this if you encounter problems with the embedded Prosody. + +disable_websocket_label: "Disable Websocket" +disable_websocket_description: | + With Peertube >= 5.0.0, this plugin try to use Websocket connection for chatting. + If the user's browser or connection is not compatible, the browser will automatically fallback on the BOSH protocol. +
+ But in rare case, this can fail. For example if you have a reverse proxy in front of Peertube that does not + allow Websocket connection for plugins. + In this case, you can check this settings to disable Websocket connections. + +prosody_port_label: "Prosody port" +prosody_port_description: | + The port that will be used by the Prosody server.
+ Change it if this port is already in use on your server.
+ You can close this port on your firewall, it will not be accessed from the outer world.
+ Note: this might change in a near feature, as it is planned to add feature to activate external connections. + +prosody_peertube_uri_label: "Peertube url for API calls" +prosody_peertube_uri_description: | + Please let this settings empty if you don't know what you are doing.
+ In some rare case, Prosody can't call Peertube's API from its public URI. + You can use this field to customise Peertube's URI for Prosody modules + (for example with «http://localhost:9000» or «http://127.0.0.1:9000»). + +prosody_muc_log_by_default_label: "Log rooms content by default" +prosody_muc_log_by_default_description: | + If checked, room contents will be saved by default. + Any user that join a room will see what was written before he joins.
+ Please note that it is always possible to enable/disable the content + archiving for a specific room, by editing its properties. + +prosody_muc_expiration_label: "Room logs expiration" +prosody_muc_expiration_description: | + You can choose here how long the chatting room's content is kept by the server. The value can be: + + +prosody_c2s_label: "Enable client to server connections" +prosody_c2s_description: | + Enable XMPP clients to connect to the builtin Prosody server.
+ This option alone only allows connections from localhost clients. + +prosody_c2s_port_label: "Prosody client to server port" +prosody_c2s_port_description: | + The port that will be used by the c2s module of the builtin Prosody server.
+ XMPP clients shall use this port to connect.
+ Change it if this port is already in use on your server.
+ You can keep this port closed on your firewall for now, it will not be accessed from the outer world.
+ Note: this might change in a near feature, as it is planned to add feature to activate external connections. + +prosody_components_label: "Enable custom Prosody external components" +prosody_components_description: | + Enable the use of external XMPP components.
+ This option alone only allows connections from localhost.
+ This feature can for example be used to connect some bots to the chatting rooms. + +prosody_components_port_label: "Prosody external components port" +prosody_components_port_description: | + The port that will be used by XMPP components to connect to the Prosody server.
+ Change it if this port is already in use on your server.
+ You can keep this port closed on your firewall for now, it will not be accessed from the outer world.
+ Note: this might change in a near feature, as it is planned to add feature to activate external connections. + +prosody_components_list_label: "External components" +prosody_components_list_description: | + The external components to declare: + diff --git a/languages/settings/fr.yml b/languages/settings/fr.yml new file mode 100644 index 00000000..9979cbc1 --- /dev/null +++ b/languages/settings/fr.yml @@ -0,0 +1,204 @@ +important_note_title: "

Note importante

" +important_note_text: | + Vous pouvez trouver la documentation du plugin ici: + + Documentation du Plugin Peertube Livechat + . + +diagnostic: | + Avant de demander de l'aide, merci d'utiliser l'outils de diagnostic: + Lancer le diagnostique + (si ce bouton n'ouvre pas une nouvelle fenêtre, merci d'essayer de raffraichir la page). + +chat_title: "

Tchat

" + +list_rooms_label: "Lister les salons de tchat existants" +list_rooms_description: | + Lister les salons + +chat_behaviour_description: "

Comportement du tchat

" + +room_type_label: "Type de salon" +room_type_description: "Vous pouvez choisir d'avoir des salons séparés pour chaque vidéo, ou de les grouper par chaîne." +room_type_option_video: "Chaque video a son propre salon de discussion" +room_type_option_channel: "Les salons sont regroupés par chaîne" + +auto_display_label: "Ouvrir automatiquement le tchat" +auto_display_description: "Quand on regarde une vidéo, le tchat va s'ouvrir automatiquement." + +open_blank_label: "Montrer le bouton «ouvrir dans une nouvelle fenêtre»" +open_blank_description: "Il y aura un bouton pour ouvrir le tchat dans une nouvelle fenêtre." + +share_url_label: "Montrer le bouton «partager le lien du salon»" +share_url_description: "Il y aura un bouton permettant de partager le lien vers le tchat (peut par exemple être utilisé pour l'intégration dans OBS)." +share_url_option_nobody: "Ne pas le montrer" +share_url_option_everyone: "Le montrer à tout le monde" +share_url_option_owner: "Le montrer au proriétaire de la vidéo" +share_url_option_owner_moderators: "Le montrer au propriétaire de la vidéo, et aux modérateur⋅rices de l'instance" + +per_live_video_label: "Les utilisateur⋅rices peuvent activer le tchat pour leurs directs" +per_live_video_description: "Si coché, il y aura pour tous les directs une case à cocher dans les propriétés qui permettra d'activer/désactiver le tchat." + +per_live_video_warning_description: | + + Vous avez activé le paramètre «Les utilisateur⋅rices peuvent activer le tchat pour leurs directs». + C'est redondant avec «Activer le tchat pour tous les directs». + + +all_lives_label: "Activer le tchat pour tous les directs" +all_lives_description: "Si coché, il y aura un tchat pour tous les directs." + +all_non_lives_label: "Activer le tchat pour toutes les vidéos «non-direct»" +all_non_lives_description: "Si coché, il y aura un tchat pour toutes les vidéos qui ne sont pas des directs." + +videos_list_label: "Activer le tchat pour ces vidéos" +videos_list_description: | + Mettez ici les UUIDs des vidéos pour lequelles vous voulez forcer l'activation + du tchat. + Cela peut être des directs, ou non. + Un UUID par ligne.
+ Vous pouvez ajouter des commentaires: tout ce qui se trouve après le caractère # + sera retiré, et les lignes vides ignorées.
+ N'ajoutez pas de vidéos privées, les UUIDs fuiteraient. + +no_anonymous_label: "Masque les tchats pour les utilisateur⋅rices anonymes" +no_anonymous_description: "Si coché, les utilisteur⋅rices non connecté⋅es ne verront pas les tchats." + +theming_advanced_description: "

Personnalisation des thèmes

" + +converse_theme_label: "Thème ConverseJS" +converse_theme_description: "Merci de choisir le thème ConverseJS que vous voulez utiliser." +converse_theme_option_peertube: "Thème Peertube" +converse_theme_option_default: "Thème par défaut de ConverseJS" +converse_theme_option_concord: "Thème concord de ConverseJS" + +autocolors_label: "Détection automatique des couleurs" +autocolors_description: | + Essaie de détecter automatiquement les couleurs du thème courant de l'utilisateur⋅rice. +
+ Quand ce paramètre est activé, le plugin essaie de détecter automatiquement les + couleurs à appliquer au thème du tchat. +
+ Si cela ne fonctionne pas correctement pour certains de vos thèmes Peertube, + vous pouvez désactiver cette option. + Vous pouvez rapporter les bugs sur le + gestionnaire de ticket + . N'oubliez pas de préciser pour quel thème cela ne fonctionne pas. + +chat_style_label: "Attribut de style de l'iframe du tchat" +chat_style_description: | + Styles additionnels à appliquer sur l'iframe du tchat.
+ Exemple: height:400px; + +prosody_advanced_description: "

Paramètres avancés du serveur de tchat

" + +help_builtin_prosody_label: "Serveur Prosody" +help_builtin_prosody_description: | + Ce plugin utilise le serveur XMPP Prosody pour gérer les salons de discussion.
+ Ce plugin inclu une AppImage de Prosody, qui va être utilisée pour faire tourner le service. + +system_prosody_label: "Utiliser le serveur Prosody installé sur le système" +system_prosody_description: | + Attention: ne cocher pas ce paramètre si vous n'êtes pas sûr de ce que vous faites.
+ En cochant ce paramètre, Peertube va utiliser l'exécutable Prosody fourni + par le système, et non l'AppImage intégrée.
+ N'utiliser cette option que si vous rencontrez des problèmes pour utiliser l'AppImage intégrée. + +disable_websocket_label: "Désactiver Websocket" +disable_websocket_description: | + Avec Peertube >= 5.0.0, ce plugin va essayer d'utiliser Websocket pour les connections au tchat. + Si le navigateur de l'utilisateur⋅rice ou sa connection n'est pas compatible, le navigateur va + automatiquement passer au protocole BOSH. +
+ Mais dans de rare cas, ça pourrait échouer. Par exemple si vous avez un reverse proxy devant votre Peertube + qui ne permettrait pas les connection Websocket. + Dans ce cas, vous pouvez cocher cette option pour désactiver les connections Websocket. + +prosody_port_label: "Port Prosody" +prosody_port_description: | + Le port qui va être utilisé par le serveur Prosody.
+ Changer le si ce port est déjà utilisé sur votre serveur.
+ Vous pouvez fermer ce port sur votre pare-feu, il ne sera pas accéder par le monde extérieur.
+ Note: cela pourrait changer dans un futur proche, car il est prévu d'ajouter des paramètres pour autoriser les connections externes. + +prosody_peertube_uri_label: "Url Peertube pour les appels d'API" +prosody_peertube_uri_description: | + Merci de ne pas toucher à ce paramètre si vous ne savez pas ce que vous faites.
+ Dans de rare cas, le serveur Prosody ne peut appeler l'API de Peertube en utilisant l'url publique. + Vous pouvez utiliser ce paramètre pour personnaliser l'url que les modules Prosody utiliseront pour + les API Peertube (par exemple en mettant «http://localhost:9000» ou «http://127.0.0.1:9000»). + +prosody_muc_log_by_default_label: "Enregistrer les salons par défaut" +prosody_muc_log_by_default_description: | + Si coché, le contenu des salons sera enregistré par défaut. + Quand un⋅e utilisateur⋅rice rejoint un salon, iel pourra voir ce qui a été dit avant. +
+ À noter qu'il est toujours possible d'activer/désactiver cette fonctionnalité + pour un salon spécifique, en changeant ses paramètres. + + +prosody_muc_expiration_label: "Expiration des journaux de salon" +prosody_muc_expiration_description: | + Vous pouvez choisir combien de temps le contenu des salons est gardé sur le serveur. + La valeur peut être: + + +prosody_c2s_label: "Activer les connections client vers serveur" +prosody_c2s_description: | + Autoriser les clients XMPP à se connecter au serveur Prosody.
+ Cette option seule n'autorise que les connections de clients sur le localhost. + +prosody_c2s_port_label: "Port Prosody client vers serveur" +prosody_c2s_port_description: | + Le port à utiliser pour les connections XMPP c2s (client to server).
+ Les clients XMPP devront utiliser ce port pour se connecter.
+ Changez ce port si le port est déjà utilisé sur votre serveur.
+ Pour l'instant, vous pouvez garder ce port fermé sur votre pare-feu, + il ne sera pas accessible du monde extérieur (Prosody n'écoute que sur localhost).
+ Note: cela pourrait changer dans un futur proche, car il est prévu d'ajouter des paramètres pour autoriser les connections externes. + +prosody_components_label: "Activer les composants externe personnalisés Prosody" +prosody_components_description: | + Active l'utilisation des «External XMPP components».
+ Cette option seule n'autorise que les connections depuis localhost.
+ Cette fonctionnalité peut par exemple être utilisée pour connecter des bots aux salons. + +prosody_components_port_label: "Port pour les composants externe Prosody" +prosody_components_port_description: | + Le port à utiliser pour les XMPP components.
+ Changez ce port s'il est déjà utilisé sur votre serveur.
+ Pour l'instant, vous pouvez garder ce port fermé sur votre pare-feu, + il ne sera pas accessible du monde extérieur (Prosody n'écoute que sur localhost).
+ Note: cela pourrait changer dans un futur proche, car il est prévu d'ajouter des paramètres pour autoriser les connections externes. + +prosody_components_list_label: "Composants externes" +prosody_components_list_description: | + Les composants externes à déclarer : + diff --git a/package-lock.json b/package-lock.json index c56c2bd4..e11823bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,8 @@ "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", "svgo": "^2.8.0", - "typescript": "^4.3.5" + "typescript": "^4.3.5", + "yaml": "^2.2.1" }, "engines": { "npm": ">=7" @@ -4690,6 +4691,15 @@ "node": ">=10" } }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/cron-parser": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.7.0.tgz", @@ -11504,12 +11514,12 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 14" } } }, @@ -15332,6 +15342,14 @@ "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" + }, + "dependencies": { + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } } }, "cron-parser": { @@ -20483,9 +20501,9 @@ "dev": true }, "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true } } diff --git a/package.json b/package.json index 42fd8b36..8d7095b0 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,8 @@ "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", "svgo": "^2.8.0", - "typescript": "^4.3.5" + "typescript": "^4.3.5", + "yaml": "^2.2.1" }, "engine": { "peertube": ">=4.2.0" @@ -94,7 +95,8 @@ "build:serverconverse": "mkdir -p dist/server/conversejs && cp conversejs/index.html dist/server/conversejs/", "build:prosodymodules": "mkdir -p dist/server/prosody-modules && cp -r prosody-modules/* dist/server/prosody-modules/", "build:styles": "sass assets/styles:dist/assets/styles", - "build": "npm-run-all -s clean:light check:client:tsc -p build:converse build:prosody build:images build:avatars build:client build:server build:serverconverse build:prosodymodules build:styles", + "build:languages": "node ./build-languages.js", + "build": "npm-run-all -s clean:light check:client:tsc -p build:converse build:prosody build:images build:avatars build:client build:server build:languages build:serverconverse build:prosodymodules build:styles", "lint": "npm-run-all -s lint:script lint:styles", "lint:script": "npx eslint --ext .js --ext .ts .", "lint:styles": "stylelint 'conversejs/**/*.scss' 'assets/styles/**/*.css'", @@ -108,14 +110,14 @@ "settings": "dist/client/settings" }, "translations": { - "ca-ES": "./languages/ca.json", - "fr-FR": "./languages/fr.json", - "eo": "./languages/eo.json", - "eu-ES": "./languages/eu.json", - "oc": "./languages/oc.json", - "pl-PL": "./languages/pl.json", - "de-DE": "./languages/de.json", - "it-IT": "./languages/it.json", - "ja-JP": "./languages/ja.json" + "ca-ES": "./dist/languages/ca.json", + "fr-FR": "./dist/languages/fr.json", + "eo": "./dist/languages/eo.json", + "eu-ES": "./dist/languages/eu.json", + "oc": "./dist/languages/oc.json", + "pl-PL": "./dist/languages/pl.json", + "de-DE": "./dist/languages/de.json", + "it-IT": "./dist/languages/it.json", + "ja-JP": "./dist/languages/ja.json" } } diff --git a/server/lib/settings.ts b/server/lib/settings.ts index 72615a28..0620be40 100644 --- a/server/lib/settings.ts +++ b/server/lib/settings.ts @@ -1,30 +1,65 @@ import type { RegisterServerOptions } from '@peertube/peertube-types' import { ensureProsodyRunning } from './prosody/ctl' import type { ConverseJSTheme } from '../../shared/lib/types' +import { existsSync, promises as fsPromises } from 'fs' +import { resolve } from 'path' -function initSettings (options: RegisterServerOptions): void { +const locContent: Map = new Map() + +/** + * Currently, the Peertube plugin system assumes that settings strings + * are localized in english, and will be translated on front-end. + * This system make it hard to have complex strings (with html, newlines, ...). + * See https://github.com/Chocobozzz/PeerTube/issues/4523 + * + * Waiting for a better solution, we implemented a custom solution: + * - We are using keys to identify setting strings + * - the `loc` function gets the english segment for the key + * - the build-languages.js script builds all needed files. + * @param key The key to translate + */ +function loc (key: string): string { + return locContent.get(key) ?? key +} + +async function loadLoc (): Promise { + const filePath = resolve(__dirname, '..', '..', 'languages', 'settings.reference.json') + if (!existsSync(filePath)) { + throw new Error(`File ${filePath} missing, can't load plugin settings`) + } + const content = await fsPromises.readFile(filePath, 'utf8') + const json = JSON.parse(content ?? '{}') + if (typeof json !== 'object') { + throw new Error(`File ${filePath} invalid, can't load plugin settings`) + } + for (const k in json) { + const v = json[k] + if (typeof v === 'string') { + locContent.set(k, v) + } + } +} + +async function initSettings (options: RegisterServerOptions): Promise { const { peertubeHelpers, registerSetting, settingsManager } = options + await loadLoc() + // ********** IMPORTANT NOTES registerSetting({ type: 'html', private: true, - descriptionHTML: '

Important notes

' + descriptionHTML: loc('important_note_title') }) registerSetting({ type: 'html', private: true, - descriptionHTML: `You can find the plugin documentation here: - - Peertube Plugin Livechat documentation -.` + descriptionHTML: loc('important_note_text') }) registerSetting({ type: 'html', private: true, - descriptionHTML: `Before asking for help, please use the diagnostic tool: -Launch diagnostic -(if this button is not opening a new window, please try to refresh the page).` + descriptionHTML: loc('diagnostic') }) if (process.arch !== 'x64' && process.arch !== 'x86_64') { @@ -32,6 +67,8 @@ function initSettings (options: RegisterServerOptions): void { name: 'prosody-arch-warning', type: 'html', private: true, + // Note: the following text as a variable in it. + // Not translating it: it should be very rare. descriptionHTML: ` It seems that your are using a ${process.arch} CPU, which is not compatible with the plugin. @@ -50,13 +87,13 @@ Please read registerSetting({ type: 'html', private: true, - descriptionHTML: '

Chat

' + descriptionHTML: loc('chat_title') }) registerSetting({ name: 'prosody-list-rooms', - label: 'List existing rooms', + label: loc('list_rooms_label'), type: 'html', - descriptionHTML: 'List rooms', + descriptionHTML: loc('list_rooms_description'), private: true }) @@ -64,102 +101,94 @@ Please read registerSetting({ type: 'html', private: true, - descriptionHTML: '

Chat behaviour

' + descriptionHTML: loc('chat_behaviour_description') }) registerSetting({ name: 'prosody-room-type', - label: 'Room type', + label: loc('room_type_label'), type: 'select', - descriptionHTML: 'You can choose here to have separate rooms for each video, or to group them by channel.', + descriptionHTML: loc('room_type_description'), private: false, default: 'video', options: [ - { value: 'video', label: 'Each video has its own webchat room' }, - { value: 'channel', label: 'Webchat rooms are grouped by channel' } + { value: 'video', label: loc('room_type_option_video') }, + { value: 'channel', label: loc('room_type_option_channel') } ] }) registerSetting({ name: 'chat-auto-display', - label: 'Automatically open the chat', - descriptionHTML: 'When watching a video, the chatbox will automatically open', + label: loc('auto_display_label'), + descriptionHTML: loc('auto_display_description'), type: 'input-checkbox', default: true, private: false }) registerSetting({ name: 'chat-open-blank', - label: 'Show the «open in new window» button', - descriptionHTML: 'There will be a button for opening the web chat in a new window.', + label: loc('open_blank_label'), + descriptionHTML: loc('open_blank_description'), private: false, type: 'input-checkbox', default: true }) registerSetting({ name: 'chat-share-url', - label: 'Show the «share chat link» button', - descriptionHTML: 'There will be a button for sharing a chat url (could be used to intregrated in OBS for example).', + label: loc('share_url_label'), + descriptionHTML: loc('share_url_description'), private: false, type: 'select', default: 'owner', options: [ - { label: 'Show for nobody', value: 'nobody' }, - { label: 'Show for everyone', value: 'everyone' }, - { label: 'Show for the video owner', value: 'owner' }, - { label: 'Show for the video owner and instance\'s moderators', value: 'owner+moderators' } + { value: 'nobody', label: loc('share_url_option_nobody') }, + { value: 'everyone', label: loc('share_url_option_everyone') }, + { value: 'owner', label: loc('share_url_option_owner') }, + { value: 'owner+moderators', label: loc('share_url_option_owner_moderators') } ] }) registerSetting({ name: 'chat-per-live-video', - label: 'Users can activate the chat for their lives', + label: loc('per_live_video_label'), type: 'input-checkbox', default: true, - descriptionHTML: 'If checked, all live videos will have a checkbox in their properties for enabling the web chat.', + descriptionHTML: loc('per_live_video_description'), private: false }) registerSetting({ name: 'chat-per-live-video-warning', type: 'html', private: true, - descriptionHTML: -` - You have enabled the setting «Users can activate the chat for their lives». - It is redundant with the «Activate chat for all lives» setting. -` + descriptionHTML: loc('per_live_video_warning_description') }) registerSetting({ name: 'chat-all-lives', - label: 'Activate chat for all lives', + label: loc('all_lives_label'), type: 'input-checkbox', default: false, - descriptionHTML: 'If checked, the chat will be enabled for all lives.', + descriptionHTML: loc('all_lives_description'), private: false }) registerSetting({ name: 'chat-all-non-lives', - label: 'Activate chat for all non-lives', + label: loc('all_non_lives_label'), type: 'input-checkbox', default: false, - descriptionHTML: 'If checked, the chat will be enable for all video that are not lives.', + descriptionHTML: loc('all_non_lives_description'), private: false }) registerSetting({ name: 'chat-videos-list', - label: 'Activate chat for these videos', + label: loc('videos_list_label'), type: 'input-textarea', default: '', - descriptionHTML: -`Videos UUIDs for which we want a web chat. -Can be non-live videos. One per line.
-You can add comments: everything after the # character will be stripped off, and empty lines ignored.
-Don't add private videos, the UUIDs will be send to frontend.`, + descriptionHTML: loc('videos_list_description'), private: false }) registerSetting({ name: 'chat-no-anonymous', - label: 'Hide the chat for anonymous users', + label: loc('no_anonymous_label'), type: 'input-checkbox', default: false, - descriptionHTML: 'If checked, anonymous Peertube users won\'t see the chat.', + descriptionHTML: loc('no_anonymous_description'), private: false }) @@ -168,47 +197,38 @@ Don't add private videos, the UUIDs will be send to frontend.`, name: 'theming-advanced', type: 'html', private: true, - descriptionHTML: '

Theming

' + descriptionHTML: loc('theming_advanced_description') }) registerSetting({ name: 'converse-theme', - label: 'ConverseJS theme', + label: loc('converse_theme_label'), type: 'select', default: 'peertube' as ConverseJSTheme, private: false, options: [ - { value: 'peertube', label: 'Peertube theme' }, - { value: 'default', label: 'Default ConverseJS theme' }, - { value: 'concord', label: 'ConverseJS concord theme' } + { value: 'peertube', label: loc('peertube') }, + { value: 'default', label: loc('default') }, + { value: 'concord', label: loc('concord') } ] as Array<{value: ConverseJSTheme, label: string}>, - descriptionHTML: 'Please choose the converseJS theme you want to use.' + descriptionHTML: loc('converse_theme_description') }) registerSetting({ name: 'converse-autocolors', - label: 'Automatic color detection', + label: loc('autocolors_label'), type: 'input-checkbox', default: true, private: false, - descriptionHTML: -`Try to auto detect colors from user's current theme.
-When this settings is enabled, the plugin tries to auto-detect colors to apply to the chat theme.
-If this is not correctly working for some of your Peertube theme, you can disable this option. -You can report the bug on the official - - issue tracker -. Don't forget to specify which theme is not working.` + descriptionHTML: loc('autocolors_description') }) registerSetting({ name: 'chat-style', - label: 'Webchat iframe style attribute', + label: loc('chat_style_label'), type: 'input-textarea', default: '', - descriptionHTML: -`Additional styles to be added on the iframe style attribute.
-Example: height:400px;`, + descriptionHTML: loc('chat_style_description'), private: false }) @@ -217,26 +237,22 @@ Example: height:400px;`, name: 'prosody-advanced', type: 'html', private: true, - descriptionHTML: '

Chat server advanced settings

' + descriptionHTML: loc('prosody_advanced_description') }) registerSetting({ name: 'chat-help-builtin-prosody', type: 'html', - label: 'Prosody server', - descriptionHTML: `This plugin uses the Prosody XMPP server to handle chat rooms.
-This plugin comes with a Prosody AppImage, that will be used to run the service.`, + label: loc('help_builtin_prosody_label'), + descriptionHTML: loc('help_builtin_prosody_description'), private: true }) registerSetting({ name: 'use-system-prosody', type: 'input-checkbox', - label: 'Use system Prosody', - descriptionHTML: `Warning: don't check this settings if you are not sure of what you are doing.
-By checking this settings, your Peertube will use the Prosody server that comes with your system, -and not the embeded AppImage.
-Only use this if you encounter problems with the embedded Prosody.`, + label: loc('system_prosody_label'), + descriptionHTML: loc('system_prosody_description'), private: true, default: false }) @@ -244,142 +260,91 @@ Only use this if you encounter problems with the embedded Prosody.`, registerSetting({ name: 'disable-websocket', type: 'input-checkbox', - label: 'Disable Websocket', - descriptionHTML: `With Peertube >= 5.0.0, this plugin try to use Websocket connection for chatting. -If the user's browser or connection is not compatible, the browser will automatically fallback on the BOSH protocol. -
-But in rare case, this can fail. For example if you have a reverse proxy in front of Peertube that does not -allow Websocket connection for plugins. -In this case, you can check this settings to disable Websocket connections.`, + label: loc('disable_websocket_label'), + descriptionHTML: loc('disable_websocket_description'), private: true, default: false }) registerSetting({ name: 'prosody-port', - label: 'Prosody port', + label: loc('prosody_port_label'), type: 'input', default: '52800', private: true, - descriptionHTML: -`The port that will be used by the builtin Prosody server.
-Change it if this port is already in use on your server.
-You can close this port on your firewall, it will not be accessed from the outer world.` + descriptionHTML: loc('prosody_port_description') }) registerSetting({ name: 'prosody-peertube-uri', - label: 'Peertube url for API calls', + label: loc('prosody_peertube_uri_label'), type: 'input', default: '', private: true, - descriptionHTML: -`Please let this settings empty if you don't know what you are doing.
-In some rare case, Prosody can't call Peertube's API from its public URI. -You can use this field to customise Peertube's URI for Prosody modules -(for example with «http://localhost:9000» or «http://127.0.0.1:9000»).` + descriptionHTML: loc('prosody_peertube_uri_description') }) registerSetting({ name: 'prosody-muc-log-by-default', - label: 'Log rooms content by default', + label: loc('prosody_muc_log_by_default_label'), type: 'input-checkbox', default: true, private: true, - descriptionHTML: -`If checked, room contents will be saved by default. -Any user that join a room will see what was written before he joins.
-Please note that it is always possible to enable/disable the content -archiving for a specific room, by editing its properties. -` + descriptionHTML: loc('prosody_muc_log_by_default_description') }) registerSetting({ name: 'prosody-muc-expiration', - label: 'Room logs expiration', + label: loc('prosody_muc_expiration_label'), type: 'input', default: '1w', private: true, - descriptionHTML: -`You can choose here how long the chatting room's content is kept by the server. The value can be: -
    -
  • 60: the content will be saved for 60 seconds. You can replace 60 by any integer value.
  • -
  • 1d: the content will be saved for 1 day. You can replace 1 by any integer value.
  • -
  • 1w: the content will be saved for 1 week. You can replace 1 by any integer value.
  • -
  • 1m: the content will be saved for 1 month. You can replace 1 by any integer value.
  • -
  • 1y: the content will be saved for 1 year. You can replace 1 by any integer value.
  • -
  • never: the content will never expire, and will be kept forever.
  • -
` + descriptionHTML: loc('prosody_muc_expiration_description') }) registerSetting({ name: 'prosody-c2s', - label: 'Enable client to server connections', + label: loc('prosody_c2s_label'), type: 'input-checkbox', default: false, private: true, - descriptionHTML: -`Enable XMPP clients to connect to the builtin Prosody server.
-This option alone only allows connections from localhost clients.` + descriptionHTML: loc('prosody_c2s_description') }) registerSetting({ name: 'prosody-c2s-port', - label: 'Prosody client to server port', + label: loc('prosody_c2s_port_label'), type: 'input', default: '52822', private: true, - descriptionHTML: -`The port that will be used by the c2s module of the builtin Prosody server.
-XMPP clients shall use this port to connect.
-Change it if this port is already in use on your server.
-You can keep this port closed on your firewall for now, it will not be accessed from the outer world.` + descriptionHTML: loc('prosody_c2s_port_description') }) registerSetting({ name: 'prosody-components', - label: 'Enable custom Prosody external components', + label: loc('prosody_components_label'), type: 'input-checkbox', default: false, private: true, - descriptionHTML: -`Enable the use of external XMPP components.
-This option alone only allows connections from localhost.
-This feature can for example be used to connect some bots to the chatting rooms.` + descriptionHTML: loc('prosody_components_description') }) registerSetting({ name: 'prosody-components-port', - label: 'Prosody external components port', + label: loc('prosody_components_port_label'), type: 'input', default: '53470', private: true, - descriptionHTML: -`The port that will be used by XMPP components to connect to the Prosody server.
-Change it if this port is already in use on your server.
-You can keep this port closed on your firewall for now, it will not be accessed from the outer world.` + descriptionHTML: loc('prosody_components_port_description') }) registerSetting({ name: 'prosody-components-list', - label: 'External components', + label: loc('prosody_components_list_label'), type: 'input-textarea', default: '', private: true, - descriptionHTML: -`The external components to create: -
    -
  • One per line.
  • -
  • Use the format «component_name:component_secret» (spaces will be trimmed)
  • -
  • You can add comments: everything after the # character will be stripped off, and empty lines ignored
  • -
  • The name can only contain alphanumeric characters and dots
  • -
  • - If the name contains only alphanumeric characters, it will be suffixed with the XMPP domain. - For exemple «bridge» will become «bridge.your_domain.tld». - You can also specify a full domain name, but you have to make sure to configure your DNS correctly. -
  • -
  • Only use alphanumeric characters in the secret passphrase (use at least 15 characters).
  • -
` + descriptionHTML: loc('prosody_components_list_description') }) // ********** settings changes management diff --git a/support/documentation/content/contributing/translate/_index.en.md b/support/documentation/content/contributing/translate/_index.en.md index b45acb80..8b75acce 100644 --- a/support/documentation/content/contributing/translate/_index.en.md +++ b/support/documentation/content/contributing/translate/_index.en.md @@ -7,7 +7,15 @@ chapter=false You can help us to translate this PeerTube plugin by creating or modifying translation files in the `languages` folder. +{{% notice info %}} +For now, translation is done in the git repository. Later in 2023, online translation tools will be set (probably [Weblate](https://weblate.org)). This will make the translation process easier. +{{% /notice %}} + +{{% notice tip %}} Please work on the `develop` branch, and do your commits and pull request on this branch. +{{% /notice %}} + +## Standard application strings If the language you are interesting in does not exist yet, create a file `code.json` in the `languages` folder, where `code` is the language code. The language code must be the same as the Peertube's langage code (see [Peertube documentation](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md)). @@ -19,3 +27,29 @@ Translation strings are set in the language file as follow: - the JSON key is the english string (see existing keys in the [french translation file](languages/fr.json)). - the JSON value is the translating string - NB: there is no english translation file (this is how translation works for peertube's plugins) + +## Settings translations + +In the plugin settings page, there are more complex strings. +They can be HTML code, with newlines, HTML tags, ... +This is not suitable for the JSON format. + +That's why the process is a little bit different for settings strings. + +Settings strings are defined in [YAML files](https://en.wikipedia.org/wiki/YAML). +They don't use the english text as key, but a codified key, like `list_rooms_label`. + +On the contrary of the standards application strings, there is also a configuration file for the english language. + +These files are in the folder `languages/settings`. If the file for the language that you are interested in does not exist, just create a new file +named `code.yml`, where `code` is the language code (see above). + +Then, you can copy YAML keys from the reference file `languages/settings/en.yml`, and translate strings. + +If you don't want to translate a string, you can ignore it, or use `null` or `~` as value. + +{{% notice warning %}} +There might be some «very technical» strings. If you are not 100% sure of +the meaning, or of your translation, you better not translate it, +so it will display in english. +{{% /notice %}} diff --git a/support/documentation/content/contributing/translate/_index.fr.md b/support/documentation/content/contributing/translate/_index.fr.md index dabc6776..afef1a4c 100644 --- a/support/documentation/content/contributing/translate/_index.fr.md +++ b/support/documentation/content/contributing/translate/_index.fr.md @@ -7,7 +7,18 @@ chapter=false Vous pouvez nous aider à traduire ce plugin Peertube en créant ou modifiant des fichiers de traduction dans le dossier `languages`. +{{% notice info %}} +Pour le moment, les traductions se font directement dans le dépôt git. +Plus tard en 2023, des outils de traduction en ligne seront mis en place +(probablement [Weblate](https://weblate.org)). +Le processus de traduction en sera plus simple. +{{% /notice %}} + +{{% notice tip %}} Merci de travailler sur la branche `develop`, et de faire vos _pull request_ sur cette branche. +{{% /notice %}} + +## Chaîne applicatives standard Si la langue dans laquelle vous souhaitez traduire n'existe pas encore, créez un fichier `code.json` dans le dossier `languages`, où `code` est le code langue. Le code langue doit être dans le même format que les codes langues de Peertube (voir la [documentation Peertube](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md)). @@ -19,3 +30,36 @@ Les traductions sont sous la forme suivante dans le fichier de langue : - les clés JSON sont le texte en anglais (voir les clés existantes dans [le fichier de traduction français](languages/fr.json), qui fait référence) - la valeur JSON est la traduction - NB: il n'y a pas de fichier de traduction pour l'anglais (c'est la façon de fonctionner de Peertube) + +## Traduction des paramètres du plugin + +Dans la page des paramètres du plugin, il y a des chaînes de texte plus compliquées. +Elles peuvent contenir du code HTML, des retours à la ligne, ... +Il est donc compliqué de les maintenir dans des fichiers JSON. + +C'est pourquoi le processus de traduction est différent pour les traductions de paramètres. + +Les traductions des paramètres sont définies dans des fichiers [YAML](https://fr.wikipedia.org/wiki/YAML). +Elles n'utilisent pas l'anglais comme clé, mais des clés standardisées, +comme par exemple `list_rooms_label`. + +Au contraire des chaînes applicatives standard, il y a aussi un fichier de +configuration pour l'anglais. + +Ces fichiers sont dans le dossier `languages/settings`. +Si le fichier de la langue qui vous intéresse n'existe pas, vous +n'avez qu'à créer un fichier nommé `code.yml` où `code` est le code +de la langue (voir plus haut). + +Ensuite, vous pouvez copier les clés du fichier HTML de référence +`languages/settings/en.yml`, et traduire les chaînes de texte. + +Si vous ne voulez pas traduire une chaîne, vous pouvez l'ignorer, +ou utiliser `null` ou `~` comme valeur. + +{{% notice warning %}} +Il peut y avoir des chaînes «assez techniques». +Si vous n'êtes pas sûr⋅e à 100% du sens, ou de la traduction, +il vaut mieux ne pas la traduire du tout ; +ainsi la version anglaise s'affichera. +{{% /notice %}} From b17dceff96426ff3a472733847c1eeee986c64ec Mon Sep 17 00:00:00 2001 From: Gamemap <71942164+Gamemap@users.noreply.github.com> Date: Wed, 15 Feb 2023 14:31:46 +0100 Subject: [PATCH 02/12] update German translation for the new docs site (#154) Added missing sites Added note that setting names aren't translated removed typo "Deutsche" -> "Deutsch" removed typo "General informatiosn" --- support/documentation/config.toml | 2 +- .../content/contributing/_index.de.md | 2 +- .../contributing/codeofconduct/_index.de.md | 117 ++++++++++++- .../content/contributing/develop/_index.de.md | 62 ++++++- .../contributing/document/_index.de.md | 60 ++++++- .../contributing/document/_index.en.md | 2 +- .../contributing/feedback/_index.de.md | 11 +- .../contributing/translate/_index.de.md | 21 ++- .../content/credits/_index.de.md | 24 ++- .../content/documentation/admin/_index.de.md | 4 +- .../documentation/admin/advanced/_index.de.md | 8 +- .../admin/advanced/matterbridge.de.md | 8 +- .../documentation/admin/settings.de.md | 158 +++++++++++++++++- .../documentation/installation/_index.de.md | 4 +- .../installation/cpu_compatibility.de.md | 57 ++++++- .../installation/upgrade_before_6.0.0.de.md | 14 +- .../content/documentation/user/_index.de.md | 4 +- .../documentation/user/moderation.de.md | 18 +- .../content/documentation/user/obs.de.md | 30 +++- .../documentation/content/issues/_index.de.md | 6 +- 20 files changed, 540 insertions(+), 72 deletions(-) diff --git a/support/documentation/config.toml b/support/documentation/config.toml index d0a08ec0..b6feb8d3 100644 --- a/support/documentation/config.toml +++ b/support/documentation/config.toml @@ -41,7 +41,7 @@ weight = 20 [Languages.de] title = "Peertube Plugin Livechat Dokumentation" - languageName = "Deutsche" + languageName = "Deutsch" landingPageName = " Home" landingPageURL = "/peertube-plugin-livechat/de/" diff --git a/support/documentation/content/contributing/_index.de.md b/support/documentation/content/contributing/_index.de.md index 1b6b223a..dcacfcab 100644 --- a/support/documentation/content/contributing/_index.de.md +++ b/support/documentation/content/contributing/_index.de.md @@ -5,6 +5,6 @@ weight=60 chapter=false +++ -Interested in contributing? Awesome! +Interessiert beizutragen? Super! {{% children style="li" depth="3" description="true" %}} diff --git a/support/documentation/content/contributing/codeofconduct/_index.de.md b/support/documentation/content/contributing/codeofconduct/_index.de.md index a839c936..df0ebde2 100644 --- a/support/documentation/content/contributing/codeofconduct/_index.de.md +++ b/support/documentation/content/contributing/codeofconduct/_index.de.md @@ -1,10 +1,117 @@ +++ -title="Code of Conduct" -description="Contributor Covenant Code of Conduct" +title="Verhaltenskodex" +description="Verhaltenskodex für Mitwirkende" weight=10 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +## Unser Versprechen + +Wir als Mitglieder, Mitwirkende und Führungskräfte verpflichten uns, die Teilnahme an unserer +Gemeinschaft zu einer belästigungsfreien Erfahrung für alle zu machen, unabhängig von Alter, Körpergröße +Körpergröße, sichtbarer oder unsichtbarer Behinderung, ethnischer Zugehörigkeit, Geschlechtsmerkmalen, +Geschlechtsidentität und -ausdruck, Erfahrungsstand, Bildung, sozioökonomischem Status, Nationalität +Nationalität, persönlichem Aussehen, Rasse, Kaste, Hautfarbe, Religion oder sexueller Identität +und Orientierung. + +Wir verpflichten uns, in einer Weise zu handeln und zu interagieren, die zu einer offenen, einladenden, +vielfältigen, integrativen und gesunden Gemeinschaft beitragen. + +## Unsere Standards + +Beispiele für Verhaltensweisen, die zu einem positiven Umfeld für unsere Gemeinschaft beitragen: + +* Einfühlungsvermögen und Freundlichkeit gegenüber anderen Menschen zeigen +* Respekt vor unterschiedlichen Meinungen, Standpunkten und Erfahrungen +* Konstruktives Feedback zu geben und anstandslos anzunehmen +* Verantwortung zu übernehmen und sich bei denjenigen zu entschuldigen, die von unseren Fehlern betroffen sind, und aus den Erfahrungen lernen +* Sich auf das konzentrieren, was nicht nur für uns als Einzelpersonen, sondern für die gesamte Gemeinschaft am besten ist + +Beispiele für inakzeptables Verhalten sind: + +* Die Verwendung von sexualisierter Sprache oder Bildern sowie sexuelle Aufmerksamkeit oder Annäherungsversuche jeglicher Art +* Trollen, beleidigende oder herabsetzende Kommentare und persönliche oder politische Angriffe +* Öffentliche oder private Belästigung +* Veröffentlichung privater Informationen anderer, wie z. B. einer physischen oder E-Mail Adresse, ohne deren ausdrückliche Erlaubnis +* Anderes Verhalten, das in einem beruflichen Umfeld als unangemessen angesehen werden könnte + +## Zuständigkeiten bei der Durchsetzung + +Die Community Leiter sind für die Klärung und Durchsetzung unserer Standards für +akzeptablen Verhaltens und werden angemessene und faire Korrekturmaßnahmen ergreifen +Verhalten, das sie für unangemessen, bedrohlich, beleidigend oder schädlich halten, +oder schädlich erachten, zuständig. + +Die Community Leiter haben das Recht und die Verantwortung, Kommentare, Commits, Code, Wiki-Edits, Issues und andere Beiträge zu entfernen, zu bearbeiten oder abzulehnen, die +die nicht mit diesem Verhaltenskodex übereinstimmen, zu entfernen oder abzulehnen und werden die Gründe für +Entscheidungen mitteilen, wenn dies angebracht ist. + +## Umfang + +Dieser Verhaltenskodex gilt in allen Gemeinschaftsräumen und auch dann, wenn +eine Person die Gemeinschaft offiziell im öffentlichen Raum vertritt. +Beispiele für die Vertretung unserer Gemeinschaft sind die Verwendung einer offiziellen E-Mail-Adresse, +Postings über ein offizielles Social-Media-Konto oder das Auftreten als ernannter +Vertreter bei einer Online- oder Offline-Veranstaltung. + +## Durchsetzung + +Fälle von beleidigendem, belästigendem oder anderweitig inakzeptablem Verhalten können +an die für die Durchsetzung verantwortlichen Community Leiter per E-Mail an +git.[at].john-livingston.fr gemeldet werden. +Alle Beschwerden werden umgehend und auf faire Weise geprüft und untersucht. + +Alle Community Leiter sind verpflichtet, die Privatsphäre und Sicherheit des Meldenden zu respektieren. + +## Durchsetzungsrichtlinien + +Die Community Leiter befolgen diese Richtlinien für die Auswirkungen auf die Gemeinschaft bei der Festlegung +die Konsequenzen für Handlungen, die sie als Verstoß gegen diesen Verhaltenskodex ansehen: + +### 1. Korrektur + +**Problem**: Verwendung unangemessener Sprache oder anderes Verhalten, das +unprofessionell oder in der Gemeinschaft unerwünscht ist. + +**Folge**: Eine private, schriftliche Verwarnung durch die Community Leiter, die Klarheit über die Art des Verstoßes und eine Erklärung, warum das Verhalten unangemessen war. Eine öffentliche Entschuldigung kann verlangt werden. + +### 2. Warnung + +**Problem**: Ein Verstoß durch einen einzelnen Vorfall oder eine Reihe von Handlungen. + +**Folge**: Eine Warnung mit Konsequenzen für weiteres Verhalten. Keine Interaktion mit den betroffenen Personen, einschließlich unaufgeforderter Interaktion mit denjenigen, die den Verhaltenskodex durchsetzen, für einen bestimmten Zeitraum. Diese +Dazu gehört auch die Vermeidung von Interaktionen in Gemeinschaftsräumen sowie in externen Kanälen +wie soziale Medien. Ein Verstoß gegen diese Bedingungen kann zu einem vorübergehenden oder +permanenten Ausschluss führen. + +### 3. Vorübergehendes Verbot + +**Problem**: Ein schwerer Verstoß gegen die Gemeinschaftsstandards, einschließlich Anhaltendes unangemessenes Verhalten. + +**Folge**: Ein vorübergehendes Verbot jeder Art von Interaktion oder öffentlicher Kommunikation mit der Gemeinschaft während eines bestimmten Zeitraums. Keine öffentliche oder private Interaktion mit den betroffenen Personen, einschließlich unaufgeforderter Interaktion mit denjenigen, die den Verhaltenskodex durchsetzen, ist während dieses Zeitraums erlaubt. +Ein Verstoß gegen diese Bedingungen kann zu einem permanenten Verbot führen. + +### 4. Dauerhaftes Verbot + +**Problem**: Nachweis eines Verstoßes gegen die Gemeinschaftsstandards, einschließlich anhaltend unangemessenen Verhaltens, Belästigung einer Person oder Aggression gegen oder Herabsetzung von Gruppen von Personen. + +**Folge**: Ein dauerhaftes Verbot jeder Art von öffentlicher Interaktion innerhalb der Gemeinschaft. + +## Zuordnung + +Dieser Verhaltenskodex ist der [Contributor Covenant][homepage] entnommen, +Version 2.1, verfügbar unter +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Die Leitlinien für die Auswirkungen auf die Gemeinschaft wurden inspiriert durch +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +Antworten auf häufig gestellte Fragen zu diesem Verhaltenskodex finden Sie in den FAQ unter +[https://www.contributor-covenant.org/faq][FAQ]. Die Übersetzungen sind verfügbar +unter [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/support/documentation/content/contributing/develop/_index.de.md b/support/documentation/content/contributing/develop/_index.de.md index 48862eb5..ce360baa 100644 --- a/support/documentation/content/contributing/develop/_index.de.md +++ b/support/documentation/content/contributing/develop/_index.de.md @@ -1,10 +1,62 @@ +++ -title="Develop" -description="Develop" +title="Entwickeln" +description="Entwickeln" weight=40 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +Sprechen Sie immer über die Funktionen, die Sie entwickeln wollen, indem Sie das Issue, das Ihr Problem behandelt, erstellen/finden und kommentieren bevor Sie mit der Arbeit daran beginnen und informieren Sie die Gemeinschaft darüber, dass Sie mit der Programmierung beginnen, indem Sie das Thema für sich beanspruchen. + +Bitte benutzen Sie den `develop` Zweig. Der `main`-Zweig ist für veröffentlichte Versionen des Plugins reserviert, so dass die Dokumentation immer mit der veröffentlichten Version des Plugins synchronisiert ist. + +Voraussetzung für die Erstellung dieses Plugins: + +- Sie müssen `npm` installiert haben +- Sie müssen python venv installiert haben (z.B. das Paket `python3-venv` auf Debian) + +Um das Repository zu klonen: + +```bash +# Clone the repository +git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git +# Checkout the develop branch +git checkout develop +# Initialize the submodules. This command must be run again if any submodules' version changes. +git submodule update --init --recursive + +# Install NPM dependencies and build the module for the first time: +npm install + +# Build the plugin after a modification: +npm run build + +# If you have a fork from the repository, add it as remote (example): +git remote add me git@github.com:MY_GITHUB_ACCOUNT/peertube-plugin-livechat.git + +# Create a local branch for you developments, and checkout it (example): +git checkout my_development # Note: if an issue is associated, use fix_1234 as your branch name (where 1234 is the issue's number) +# To propose your modifications, push your branch to your repository (example): +git push --set-upstream me my_development +# Then go to your github repository with your web browser to propose the Pull Request (see additional instructions below) +``` + +Sobald Sie bereit sind, Ihren Code zu zeigen und um Feedback zu bitten, reichen Sie einen *Entwurf* für einen Pull Request ein. +Sobald Sie bereit für eine Codeüberprüfung vor der Zusammenführung sind, reichen Sie einen Pull Request ein. In jedem Fall sollten Sie Ihren PR mit dem Problem, die er behebt, verlinken, indem Sie die GitHub-Syntax verwenden: "fixes #issue_number". + +Der Front-End-Code befindet sich im Ordner `client`, der Back-End-Code im Ordner `server`. Es gibt einige gemeinsam genutzte Codes im `shared` Ordner. + +Für allgemeine Anweisungen (Entwicklung von Plugins, Erstellung, Installation, ...), lesen Sie bitte die [Peertube Dokumentation] (https://docs.joinpeertube.org/contribute-plugins?id=write-a-plugintheme). + +Sie können das Plugin mit zusätzlichen Debug-Funktionen bauen, indem Sie es einfach benutzen: + +```bash +NODE_ENV=dev npm run build +``` + +## ESBuild vs Typescript + +Dieses Plugin verwendet ESBuild für die Generierung von Frontend-Code, wie das offizielle `peertube-plugin-quickstart` Plugin. +ESBuild kann mit Typescript umgehen, prüft aber keine Typen +(siehe [ESBuild-Dokumentation](https://esbuild.github.io/content-types/#typescript)). +Deshalb kompilieren wir Typescript zuerst mit der Option `-noEmit`, nur um die Typen zu überprüfen (`check:client:ts` in der package.json Datei). +Dann, wenn alles in Ordnung ist, führen wir ESBuild aus, um das kompilierte Javascript zu erzeugen. diff --git a/support/documentation/content/contributing/document/_index.de.md b/support/documentation/content/contributing/document/_index.de.md index 349b1848..94332e80 100644 --- a/support/documentation/content/contributing/document/_index.de.md +++ b/support/documentation/content/contributing/document/_index.de.md @@ -1,10 +1,60 @@ +++ -title="Document" -description="Documenter the plugin, or translate the documentation." +title="Dokumentation" +description="Dokumentieren Sie das Plugin, oder übersetzen Sie die Dokumentation." weight=50 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +## Allgemeine Informationen + +Informieren Sie die Community immer vor der Arbeit (indem Sie ein neues Problem erstellen oder ein bestehendes kommentieren). Damit soll vermieden werden, dass zwei Personen +an der gleichen Sache arbeiten, und Konflikte zu verhindern. + +Bitte benutzen Sie den `develop`-Zweig. Der `main`-Zweig ist für veröffentlichte Versionen des Plugins reserviert, so dass die Dokumentation immer mit der veröffentlichten Version des Plugins synchronisiert ist. + +Der Quellcode der Dokumentation befindet sich im Ordner `support/documentation/content`. + +Die Dokumentation wird mit [Hugo](https://gohugo.io/) erstellt. +Sie müssen es auf Ihrem Computer installieren, wenn Sie eine Vorschau Ihrer Arbeit sehen wollen. + +Das verwendete Thema ist [hugo-theme-learn](https://learn.netlify.app/). +Sie sollten dessen Dokumentation lesen, bevor Sie mit der Bearbeitung der Dokumentation beginnen. + +## Übersätzungen + +Die Hauptsprache ist Englisch (Code `en`). + +Die verschiedenen Übersetzungen der gleichen Datei stehen nebeneinander im Verzeichnis und sind durch einen Sprachcode in der Dateinamenerweiterung gekennzeichnet. +Beispiel: `_index.fr.md` ist die französische Übersetzung von `_index.en.md`. + +Bitte beachten Sie, dass eine fehlende Übersetzungsdatei nicht in den Menüs der generierten Website erscheint. + +**Stellen Sie sicher, dass Sie immer alle Dateien für die Sprachen erstellen**, auch wenn die Übersetzung noch nicht verfügbar ist. + +Dafür gibt es ein Skript `doc-generate-missing-translations.sh` im Stammverzeichnis des Projektes. Wenn Sie eine neue Datei hinzufügen, müssen Sie nur die englische Version erstellen und dann dieses Skript ausführen. Es erstellt alle fehlenden Übersetzungen und fügt eine Beispielmeldung hinzu, die den Benutzer auffordert, die englische Version zu lesen. + +## Eine neue Sprache hinzufügen + +Kopieren und ändern Sie den Abschnitt `[Languages.fr]` in der Datei `support/documentation/config.toml`. + +Führen Sie dann das Skript `doc-generate-missing-translations.sh` aus. +Es wird alle fehlenden Dateien erstellen. + +Dann können Sie sie eine Datei nach der anderen übersetzen. +Wenn die Übersetzungen nicht vollständig sind, macht das nichts, die generierten Dateien zeigen eine Meldung an, die vorschlägt, die Sprache zu ändern. + +## Vorschau + +Um eine Vorschau Ihrer Änderungen zu sehen, führen Sie einfach diesen Befehl aus: + +```bash +hugo serve -s support/documentation/ +``` + +Öffnen Sie dann Ihren Browser und gehen Sie auf die Adresse +[http://localhost:1313/peertube-plugin-livechat/](http://localhost:1313/peertube-plugin-livechat/). +Diese Seite wird bei jeder Änderung automatisch aktualisiert. + +## Veröffentlichung + +Die Veröffentlichung der Dokumentation erfolgt automatisch, sobald die Änderungen in den `main` Zweig eingefügt wurden. diff --git a/support/documentation/content/contributing/document/_index.en.md b/support/documentation/content/contributing/document/_index.en.md index 0e1b07fe..a2addf34 100644 --- a/support/documentation/content/contributing/document/_index.en.md +++ b/support/documentation/content/contributing/document/_index.en.md @@ -5,7 +5,7 @@ weight=50 chapter=false +++ -## General informatiosn +## General information Always inform the community before working (by creating a new issue, or commenting an existing one). This is to avoid that two persons are working on the same thing, and prevent conflicts. diff --git a/support/documentation/content/contributing/feedback/_index.de.md b/support/documentation/content/contributing/feedback/_index.de.md index 537e3ba6..abf86cd7 100644 --- a/support/documentation/content/contributing/feedback/_index.de.md +++ b/support/documentation/content/contributing/feedback/_index.de.md @@ -1,10 +1,11 @@ +++ -title="Give your feedback" -description="Give your feedback" +title="Feedback" +description="Gib dein Feedback" weight=30 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +Sie müssen keine Programmierkenntnisse haben, um zu diesem Plugin beizutragen! Andere +Beiträge sind auch sehr wertvoll, darunter: +Sie können die Software testen und Fehler melden, Sie können Feedback geben, Funktionen die Sie +interessieren, Benutzeroberfläche, Design, ... diff --git a/support/documentation/content/contributing/translate/_index.de.md b/support/documentation/content/contributing/translate/_index.de.md index 31e6e68f..3e3d5c94 100644 --- a/support/documentation/content/contributing/translate/_index.de.md +++ b/support/documentation/content/contributing/translate/_index.de.md @@ -1,10 +1,21 @@ +++ -title="Translate" -description="Translate the plugin" +title="Übersätzen" +description="Das Plugin übersätzen" weight=20 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +Sie können uns helfen, dieses PeerTube-Plugin zu übersetzen, indem Sie Übersetzungsdateien im Ordner `languages` erstellen oder ändern. + +Bitte arbeiten Sie auf dem `develop` Zweig, und machen Sie Ihre Änderungen und Pull Requests auf diesem Zweig. + +Wenn die Sprache, für die Sie sich interessieren, noch nicht existiert, erstellen Sie eine Datei `code.json` im Ordner `languages`, wobei `code` der Code der Sprache ist. +Der Sprachcode muss derselbe sein wie der Sprachcode von Peertube (siehe [Peertube-Dokumentation](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md)). +Fügen Sie dann die Sprachdatei in der Datei `package.json` unter dem Schlüssel `translations` hinzu. + +Die Übersetzungen werden wie folgt in der Sprachdatei festgelegt: + +- die Dateien sind im [JSON Format](https://www.json.org) +- der JSON Schlüssel ist der englische Text (Siehe die bestehenden Schlüssel in der [französischen Übersätzungsdatei](languages/fr.json)). +- der JSON Wert ist der übersätzte Text +- Hinweis: Es gibt keine englische Übersätzungsdatei (So funktionieren Übersätzungen für Peertube Plugins) \ No newline at end of file diff --git a/support/documentation/content/credits/_index.de.md b/support/documentation/content/credits/_index.de.md index 2881ce74..08b14049 100644 --- a/support/documentation/content/credits/_index.de.md +++ b/support/documentation/content/credits/_index.de.md @@ -1,10 +1,24 @@ +++ -title="Credits" -description="Plugin Credits" +title="Impressum" +description="Impressum des Plugins" weight=90 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +[package.json](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/package.json), +[COPYRIGHT](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/COPYRIGHT.md) +and [LICENSE](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/LICENSE) +Dateien beinhalten die Lizenzinformationen für dieses Programm und seiner Abhängigkeiten. + +Das Plugin wird von [John Livingston](https://www.john-livingston.fr/) betrieben. + +Dank an David Revoy für seine Arbeit an dem Peertube Maskottchen, [Sepia](https://www.davidrevoy.com/index.php?tag/peertube). +Das Charakterdesign steht unter CC-By-Lizenz, und die SVG-Dateien, die zur Erstellung einiger Logos und Avatare in diesem Plugin verwendet werden, sind GPLv3.0. + +Vielen Dank an [Framasoft](https://framasoft.org)für die Ermöglichung von [Peertube](https://joinpeertube.org/) und für die finanzielle Unterstützung. + +Vielen Dank an [ritimo](https://www.ritimo.org/) für die finanzielle Unterstützung. + +Vielen Dank an [Code Lutin](https://www.codelutin.com/) und [Rétribution Copie Publique](https://copiepublique.fr/) für die finanzielle Unterstützung. + +Vielen Dank an [NlNet](https://nlnet.nl/) und die [NGI0 Entrust fund](https://nlnet.nl/entrust/) für die finanzielle Unterstützung. \ No newline at end of file diff --git a/support/documentation/content/documentation/admin/_index.de.md b/support/documentation/content/documentation/admin/_index.de.md index c21e904a..7246cfe7 100644 --- a/support/documentation/content/documentation/admin/_index.de.md +++ b/support/documentation/content/documentation/admin/_index.de.md @@ -1,6 +1,6 @@ +++ -title="Admin documentation" -description="Plugin Peertube Livechat administration" +title="Admin Dokumentation" +description="Plugin Peertube Livechat Administration" weight=30 chapter=false +++ diff --git a/support/documentation/content/documentation/admin/advanced/_index.de.md b/support/documentation/content/documentation/admin/advanced/_index.de.md index b0658bd8..8dad74a3 100644 --- a/support/documentation/content/documentation/admin/advanced/_index.de.md +++ b/support/documentation/content/documentation/admin/advanced/_index.de.md @@ -1,10 +1,8 @@ +++ -title="Advanced usage" -description="Some advanced features" +title="Fortgeschrittene Nutzung" +description="Einige erweiterte Funktionen" weight=20 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +{{% children depth="3" style="li" description="true" %}} diff --git a/support/documentation/content/documentation/admin/advanced/matterbridge.de.md b/support/documentation/content/documentation/admin/advanced/matterbridge.de.md index 9868ef9e..1e93f762 100644 --- a/support/documentation/content/documentation/admin/advanced/matterbridge.de.md +++ b/support/documentation/content/documentation/admin/advanced/matterbridge.de.md @@ -1,10 +1,8 @@ +++ -title="Using Matterbridge" -description="Using Matterbridge to bridge with other chats" +title="Matterbridge benutzen" +description="Matterbridge als Brücke zu anderen Chats nutzen" weight=50 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +Hier ist ein Tutorial um Matterbridge mit diesem Plugin zu benutzen (nur auf englisch): diff --git a/support/documentation/content/documentation/admin/settings.de.md b/support/documentation/content/documentation/admin/settings.de.md index aa2c45a1..fc888851 100644 --- a/support/documentation/content/documentation/admin/settings.de.md +++ b/support/documentation/content/documentation/admin/settings.de.md @@ -1,10 +1,162 @@ +++ -title="Settings" +title="Einstellungen" description="Plugin Peertube Livechat settings" weight=10 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. +{{% notice note %}} +Die Einstellungsseite des Plugins kann momentan nicht übersätzt werden und ist daher nur auf englisch verfügbar. Deswegen wird hier die englische Bezeichnung der Knöpfe, Abschnitte, etc. verwendet. Für weitere Informationen bitte [dieses Problem](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues/115) kontrollieren. {{% /notice %}} + +Dieser Abschnitt beschreibt die Einstellungsseite des Plugins. + +## List existing rooms (Bestehende Räume auflisten) + +Wenn der «List rooms» Knopf gedrückt wird, werden alle bestehenden Chaträume aufgelistet. +Sie können die Chaträume damit finden und moderieren. + +## Chat behaviour (Chatverhalten) + +### Room type (Raumtyp) + +Sie können hier auswählen, ob seperate Räume für jedes Video oder nach Kanal gruppiert erstellt werden. + +### Automatically open the chat (Chat automatisch öffnen) + +Wenn ausgewählt wird der Chat geladen, sobald Sie auf der Videoseite sind. + +### Show the «open in new window» button (Zeige den «open in new window» Knopf) + +Wenn Ihr Webchat-Tool in einem eigenen Fenster geöffnet werden kann, können Sie einen Knopf hinzufügen um dies zu tun. + +Wenn Sie ein externes Web-Chat-Tool verwenden (siehe den Chat-Modus «Use an external web chat tool»), funktioniert es möglicherweise nicht im Vollbildmodus (z. B. wenn es auf das übergeordnete Fenster zugreifen muss, um Videoinformationen zu erhalten). Sie können diese Schaltfläche deaktivieren, indem Sie das Häkchen bei dieser Einstellung entfernen. + +### Show the «share chat link» button (Zeige den Chat Link teilen Knopf) + +Diese Funktion aktiviert das Dialogfenster «Chat-Link teilen». Mit diesem Fenster können Sie URLs generieren, um dem Chat beizutreten. +Der Chat kann angepasst werden (schreibgeschützter Modus, Verwendung des aktuellen Themas, ...). + +Sie können zum Beispiel einen schreibgeschützten Link generieren und diesen in OBS verwenden, um den Chat in Ihren Live-Stream zu integrieren! + +Diese Einstellung ermöglicht es Ihnen, festzulegen, wer auf dieses Fenster zugreifen kann. + +### Chats are only available for local videos (Chats sind nur für lokale Videos verfügbar) + +Peertube ist ein gemeinschaftlicher Dienst. Plugins sind nur auf dem Server verfügbar, auf dem Sie sich gerade befinden. +Wenn Sie also ein externes Video ansehen, steht der Webchat nur Ihnen zur Verfügung, nicht aber den Nutzern der anderen Instanzen. +Daher ist diese Option standardmäßig aktiviert und verhindert die Anzeige eines Webchats für entfernte Videos. + +### Users can activate the chat for their lives (Nutzer können den Chat für ihre Live-Videos aktivieren) + +Wenn diese Option aktiviert ist, haben alle Live-Videos in ihren Eigenschaften ein Feld zur Aktivierung des Webchats. +Der Videoeigentümer kann Webchats aktivieren. + +### Activate chat for all lives (Den Chat für alle Live-Videos aktivieren) + +Der Chat wird für alle Peertube-Live-Videos auf Ihrer Instanz verfügbar sein. + +### Activate chat for all non-lives (Aktiviere den Chat für alle Nicht-Live-Videos) + +Der Chat wird für alle Peertube-Videos verfügbar sein, die nicht live sind. + +### Activate chat for these videos (Aktivieren Sie den Chat für diese Videos) + +Sie können einige UUIDs auswählen, für die der Chat verfügbar sein soll. +Wenn Sie die Funktion für alle Videos nicht aktivieren möchten, können Sie dieses Feld verwenden, um die UUIDs der Videos aufzulisten. +Sie können Kommentare hinzufügen: alles, was dem Zeichen # entspricht, wird entfernt, ebenso wie leere Zeilen. + +### Hide the chat for anonymous users (Den Chat für anonyme Benutzer ausblenden) + +Wenn diese Option aktiviert ist, können anonyme Peertube-Nutzer den Chat nicht sehen. + +Hinweis: Im Moment blendet diese Funktion einfach den Chat aus. +In einer zukünftigen Version wird der Chat durch eine Meldung ersetzt, die besagt "Bitte melden Sie sich an, um [...]". +Siehe [v5.7.0 Release Notes](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md#570) für weitere Informationen. + +## Theming + +### ConverseJS theme (ConverseJS Thema) + +Sie können wählen, welches Thema Sie für ConverseJS verwenden möchten: + +- Peertube-Theme: Dies ist ein spezielles Thema, das speziell für die Integration von Peertube erstellt wurde. +- Standard-ConverseJS-Theme: Dies ist das Standard-Thema von ConverseJS. +- ConverseJS-concord-Theme: Dies ist ein Thema, das von ConverseJS bereitgestellt wird. + +### Automatic color detection (Automatische Farberkennung) + +Versucht, die Farben aus dem aktuellen Thema des Benutzers automatisch zu erkennen. +Wenn diese Einstellung aktiviert ist, versucht das Plugin, die Farben für das Chat-Thema automatisch zu erkennen. +Wenn dies für einige Ihrer Peertube-Themen nicht korrekt funktioniert, können Sie diese Option deaktivieren. + +### Webchat iframe style attribute (Webchat Iframe Stil-Attribute) + +Sie können einige benutzerdefinierte Stile hinzufügen, die dem Iframe hinzugefügt werden. +Zum Beispiel eine benutzerdefinierte Breite: + +```width:400px;``` + +## Chat server advanced settings (Erweiterte Einstellungen des Chatservers) + +### Use system Prosody (System Prosody benutzen) + +Das Plugin wird mit einem AppImage geliefert, das zum Ausführen des [Prosody XMPP-Servers] (https://prosody.im) verwendet wird. +Wenn dieses AppImage nicht funktioniert, können Sie auf das Prosody-Paket zurückgreifen, das für Ihren Server erstellt wurde. Installieren Sie einfach das Paket `prosody`. + +Diese Einstellung sollte nur verwendet werden, wenn das Plugin defekt ist und auf einen Patch wartet. + +### Disable Websocket (Websocket deaktivieren) + +Mit Peertube >= 5.0.0 versucht dieses Plugin, eine Websocket-Verbindung zum Chatten zu verwenden. +Wenn der Browser oder die Verbindung des Benutzers nicht kompatibel ist, wird der Browser automatisch auf das BOSH-Protokoll zurückgreifen. + +Aber in seltenen Fällen kann dies fehlschlagen. Zum Beispiel, wenn Sie einen Reverse Proxy vor Peertube haben, der keine +Websocket-Verbindung für Plugins erlaubt. +In diesem Fall können Sie diese Einstellungen überprüfen, um Websocket-Verbindungen zu deaktivieren. + +### Prosody port + +Dies ist der Port, den der Prosody-Server verwenden wird. Standardmäßig ist er auf 52800 eingestellt. Wenn Sie einen anderen Port verwenden möchten, ändern Sie einfach den Wert hier. + +### Peertube URL for API calls (Peertube-URL für API-Aufrufe) + +In einigen seltenen Fällen kann Prosody die API von Peertube nicht über seine öffentliche Adresse (URI) aufrufen. +Wenn Sie solche Probleme haben (siehe das Ergebnis des Diagnosetools), können Sie versuchen, den Wert +dieser Einstellung auf `http://localhost:9000` oder `http://127.0.0.1:9000` zu setzen +zu setzen (unter der Annahme, dass Ihr Peertube auf Port `9000` hört). Überprüfen Sie das in Ihrer Peertube `config/production.yaml` Datei). + +### Log rooms content by default (Standardmäßig Inhalte von Räumen protokollieren) + +Wenn diese Option aktiviert ist, wird der Rauminhalt standardmäßig auf dem Server archiviert. +Das bedeutet, dass Benutzer, die dem Chat beitreten, Nachrichten sehen, die vor ihrem Beitritt gesendet wurden. + +Bitte beachten Sie, dass es immer möglich ist, die Inhaltsprotokollierung für einen bestimmten Raum zu aktivieren/deaktivieren, +indem Sie seine Eigenschaften bearbeiten. + +### Room logs expiration (Ablaufzeit von Raumprotokollen) + +Hier können Sie die Ablaufzeit für Raumprotokolle einstellen. +Siehe die Online-Hilfe für akzeptierte Werte. + +### Enable client to server connections (Aktivieren von Client-Server-Verbindungen) + +Diese Einstellung ermöglicht es XMPP-Clients, sich mit dem eingebauten Prosody-Server zu verbinden. +Im Moment erlaubt diese Option **nur Verbindungen von localhost-Clients**. + +Zum Beispiel kann diese Option einer Instanz von Matterbridge (sobald sie einen anonymen Login verwenden kann) *auf demselben Rechner* erlauben, Ihren Chat mit einem anderen Dienst wie einem Matrix-Raum zu verbinden. + +#### Prosody client to server port (Prosody Client-Server-Verbindungsport) + +Der Port, der vom c2s-Modul des eingebauten Prosody-Servers verwendet wird. +XMPP-Clients sollen diesen Port für die Verbindung verwenden. +Ändern Sie ihn, wenn dieser Port bereits auf Ihrem Server verwendet wird. + +### Enable external XMPP components (Aktivieren externer XMPP-Komponenten) + +Diese Einstellung ermöglicht es externen XMPP-Komponenten, sich mit dem Server zu verbinden. +Im Moment erlaubt diese Option **nur Verbindungen von localhost-Komponenten**. + +Diese Funktion könnte genutzt werden, um Bridges oder Bots zu verbinden. + +Weitere Informationen über externe Prosody-Komponenten [hier](https://prosody.im/doc/components). \ No newline at end of file diff --git a/support/documentation/content/documentation/installation/_index.de.md b/support/documentation/content/documentation/installation/_index.de.md index 43e05345..caf1e39b 100644 --- a/support/documentation/content/documentation/installation/_index.de.md +++ b/support/documentation/content/documentation/installation/_index.de.md @@ -10,9 +10,9 @@ Bevor Sie auf eine Hauptversion aktualisieren, lesen Sie bitte die Versionshinwe {{% /notice %}} {{% notice tip %}} -To install or update the plugin, **just use the Peertube web admin interface**. +Um das Plugin zu installieren oder zu aktualisieren **einfach das Peertube Web-Admin-Interface benutzen**. {{% /notice %}} -Here are some other more specific instructions: +Hier sind weitere, spezifischere Anweisungen: {{% children style="li" depth="3" description="true" %}} diff --git a/support/documentation/content/documentation/installation/cpu_compatibility.de.md b/support/documentation/content/documentation/installation/cpu_compatibility.de.md index 80764739..47c31be8 100644 --- a/support/documentation/content/documentation/installation/cpu_compatibility.de.md +++ b/support/documentation/content/documentation/installation/cpu_compatibility.de.md @@ -1,10 +1,57 @@ +++ -title="Known issues: CPU Compatibility" -description="For now, the plugin only works out of the box for x86_64 CPU architecture. Here are some instructions for other CPU architectures." +title="Bekannte Probleme: CPU Kompatibilität" +description="Derzeit funktioniert das Plugin standartmäßig nur für x86_64 CPU Architekturen. Hier sind einige Anleitungen für andere CPU Architekturen." weight=10 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +Das im Plugin enthaltene Prosody AppImage funktioniert nur mit x86_64 CPU Architekturen. +Es ist nicht kompatibel mit arm64 und anderen CPU-Architekturen. +Im Moment ist es mir noch nicht gelungen, es für andere CPU-Architekturen zum Laufen zu bringen. Wenn Sie benachrichtigt werden wollen, sobald es möglich ist, können Sie [dieses Problem](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues/124) abonnieren und kommentieren. + +Um das Plugin zu verwenden, müssen Sie Prosody manuell auf Ihrem Server installieren +(siehe unten). + +Sobald dies geschehen ist, müssen Sie in den Plugin-Einstellungen das Häkchen bei `Use system Prosody` setzen. + +## Nicht-Docker Peertube installation + +Für die Standardinstallation müssen Sie nur das offizielle `prosody`-Paket für Ihre Linux-Distribution installieren. + +Zum Beispiel, auf Debian/Ubuntu: + +```bash +sudo apt install prosody +``` + +Sie können dann den Dienst deaktivieren, der automatisch startet, wenn Sie Prosody installieren (das Plugin startet einen Prosody-Prozess, der Dienst muss nicht dauerhaft laufen). +Zum Beispiel unter Debian/Ubuntu (und anderen Systemd-basierten Linux-Distributionen): + +```bash +sudo systemctl disable prosody && sudo systemctl stop prosody +``` + +Achtung: Deaktivieren Sie Prosody nicht, wenn es für einen anderen Dienst auf Ihrem Server verwendet wird, wie zum Beispiel Jitsi. + +## Docker + +Sie müssen ein Peertube-Image generieren, das Prosody in demselben +Container enthält, der auch Peertube beinhaltet. +Ich weiß, dass dies nicht der Standardweg ist, um dies mit Docker zu tun, aber bedenken Sie, dass eine vorübergehende Lösung ist. + +Um ein solches Image zu erzeugen und zu verwenden, lesen Sie bitte die Docker-Dokumentation. +Die Docker-Datei, um das Paket zu erzeugen, sollte wie folgt sein: + +```Docker +FROM chocobozzz/peertube:production-bullseye + +RUN apt -y update && apt install -y prosody && apt -y clean +``` + +## Yunohost + +Sie müssen `metronome` (der von Yunohost bereitgestellte XMPP-Server) deaktivieren, und `prosody` installieren. + +Dies wird bereits von der Yunohost Peertube Anwendung gemacht, da es für das Plugin vor v6.0.0 erforderlich war. +Es kann aber sein, dass es in naher Zukunft entfernt wird (um die Nachteile dieser Methode zu vermeiden). +Ich muss mit dem Yunohost Team diskutieren, um zu entscheiden, wie wir die Nachteile minimieren können, und die Kompatibilität zu maximieren. \ No newline at end of file diff --git a/support/documentation/content/documentation/installation/upgrade_before_6.0.0.de.md b/support/documentation/content/documentation/installation/upgrade_before_6.0.0.de.md index 2bfc0e2d..63b01411 100644 --- a/support/documentation/content/documentation/installation/upgrade_before_6.0.0.de.md +++ b/support/documentation/content/documentation/installation/upgrade_before_6.0.0.de.md @@ -1,10 +1,14 @@ +++ -title="Upgrade from version older than 6.0.0" -description="Important notes when upgrading for an older version." +title="Aktualisieren von Versionen vor 6.0.0" +description="Wichtige Hinweise zum aktualisieren von älteren Versionen." weight=50 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +## WICHTIGER HINWEIS + +Seit Version v6.0.0 benötigt dieses Plugin keine andere Prosody-Installation. + +Falls Sie dieses Plugin vor dieser Version benutzt haben und Sie Prosody manuell installiert haben, können Sie Prosody sicher deinstallieren. + +Falls Sie ein eigenes Peertube Docker Paket genutzt haben, welches Prosody eingebettet hatte, können Sie zu den offiziellen Peertube Paketen zurück wechseln. diff --git a/support/documentation/content/documentation/user/_index.de.md b/support/documentation/content/documentation/user/_index.de.md index 9e60bba5..ca238fe3 100644 --- a/support/documentation/content/documentation/user/_index.de.md +++ b/support/documentation/content/documentation/user/_index.de.md @@ -1,6 +1,6 @@ +++ -title="User documentation" -description="Plugin peertube-plugin-livechat user documentation" +title="Benutzer Dokumentation" +description="Plugin peertube-plugin-livechat Benutzer Dokumentation" weight=40 chapter=false +++ diff --git a/support/documentation/content/documentation/user/moderation.de.md b/support/documentation/content/documentation/user/moderation.de.md index f3ac34f4..07451e15 100644 --- a/support/documentation/content/documentation/user/moderation.de.md +++ b/support/documentation/content/documentation/user/moderation.de.md @@ -1,10 +1,20 @@ +++ title="Moderation" -description="Plugin peertube-plugin-livechat moderation" +description="Plugin peertube-plugin-livechat Moderation" weight=10 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +Sie können auf die Raumeinstellungen und Moderationswerkzeuge zugreifen, indem Sie den Chat in einem neuen Fenster öffnen, und das Dropdown-Menü oben rechts verwenden. + +Sie können alle bestehenden Chaträume auflisten: in den Einstellungen des Plugins gibt es einen Knopf «Räume auflisten». + +Sie können alte Räume löschen: Treten Sie dem Raum bei, und verwenden Sie das Menü oben, um den Raum zu löschen. + +## Hinweise + +Alle Instanzmoderatoren und Admins sind Eigentümer der erstellten Chaträume. +Wenn das Video lokal ist (nicht von einem entfernten Peertube), ist der Eigentümer des Videos der Administrator des Chatraums. + +Sie können [ConverseJS-Moderationsbefehle](https://conversejs.org/docs/html/features.html#moderating-chatrooms) verwenden, um den Raum zu moderieren. +Wenn Sie den Chatraum im Vollbildmodus öffnen, finden Sie oben rechts ein Menü mit den entsprechenden Befehlen. \ No newline at end of file diff --git a/support/documentation/content/documentation/user/obs.de.md b/support/documentation/content/documentation/user/obs.de.md index af145560..36b3ce56 100644 --- a/support/documentation/content/documentation/user/obs.de.md +++ b/support/documentation/content/documentation/user/obs.de.md @@ -5,6 +5,30 @@ weight=10 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +## OBS Overlay + +Falls Sie OBS zum Streaming verwenden, können Sie den Chat ganz einfach in Ihren Stream integrieren. + +Sie können die Funktion «Chat Link teilen» verwenden, um einen Link zu Ihrem Chat zu erstellen. +Die Schaltfläche sollte sich in der Nähe des Chats befinden, wenn Sie der Eigentümer des Videos sind (es sei denn, sie wurde von der Server-Administration deaktiviert). + +Aktivieren Sie das Feld «schreibgeschützt» in dem Dialogfenster. +Verwenden Sie dann diesen Link als «Browser Quelle» in OBS. + +Sie können die Option «Transparenter Hintergrund» verwenden, um einen transparenten Hintergrund in OBS zu erhalten. +Wenn Sie die Hintergrundtransparenz anpassen möchten, können Sie diesen CSS-Code in den Einstellungen Ihrer OBS-Browserquelle hinzufügen: + +```css +:root { + --livechat-transparent: rgba(255 255 255 / 90%) !important; +} +``` + +Hinweis: Sie können die Farben anpassen. Dies ist noch nicht dokumentiert, aber Sie können dies versuchen: +Aktivieren Sie im Dialogfenster die Option «Aktuelle Themenfarben verwenden», und versuchen Sie dann, die Farbwerte in dem Link manuell zu ändern. +Sie müssen gültige CSS-Farbwerte verwenden, und diese müssen in dem Link korrekt kodiert sein. + +## Mehrere Chats in Ihrem Live-Stream kombinieren + +Sie können die [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) verwenden, um mehrere Chat-Quellen (von Peertube, Twitch, Youtube, Facebook, ...) zu mischen und deren Inhalte in Ihren Live-Stream zu integrieren. +Die Kompatibilität mit diesem Plugin wurde in den letzten Versionen hinzugefügt. \ No newline at end of file diff --git a/support/documentation/content/issues/_index.de.md b/support/documentation/content/issues/_index.de.md index fe7c6944..fb3ae52c 100644 --- a/support/documentation/content/issues/_index.de.md +++ b/support/documentation/content/issues/_index.de.md @@ -7,9 +7,9 @@ chapter=false Wenn Sie neue Funktionswünsche, Fehler (Bugs) oder Schwierigkeiten bei der Einrichtung des Plugins haben, können Sie den [Github issue tracker](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues) verwenden. -To have a glimpse to the roadmap for upcoming features, please refer to: +Einen Einblick in die Roadmap für kommende Funktionen finden Sie hier: -- this [github project](https://github.com/users/JohnXLivingston/projects/1). -- the [milestones on github](https://github.com/JohnXLivingston/peertube-plugin-livechat/milestones). +- [github project](https://github.com/users/JohnXLivingston/projects/1). +- [milestones on github](https://github.com/JohnXLivingston/peertube-plugin-livechat/milestones). Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind und helfen wollen, dieses Plugin zu verbessern, sind Sie gerne willkommen. From 4863ce289bc27aad3cc99fabcbe1933e5594e54f Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 15 Feb 2023 14:32:47 +0100 Subject: [PATCH 03/12] Doc translation. --- .../content/documentation/admin/advanced/_index.en.md | 1 - .../content/documentation/admin/advanced/_index.fr.md | 4 +--- .../content/documentation/admin/advanced/_index.ja.md | 4 +--- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/support/documentation/content/documentation/admin/advanced/_index.en.md b/support/documentation/content/documentation/admin/advanced/_index.en.md index d8f9e658..c16a2312 100644 --- a/support/documentation/content/documentation/admin/advanced/_index.en.md +++ b/support/documentation/content/documentation/admin/advanced/_index.en.md @@ -6,4 +6,3 @@ chapter=false +++ {{% children depth="3" style="li" description="true" %}} - diff --git a/support/documentation/content/documentation/admin/advanced/_index.fr.md b/support/documentation/content/documentation/admin/advanced/_index.fr.md index b0658bd8..c16a2312 100644 --- a/support/documentation/content/documentation/admin/advanced/_index.fr.md +++ b/support/documentation/content/documentation/admin/advanced/_index.fr.md @@ -5,6 +5,4 @@ weight=20 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +{{% children depth="3" style="li" description="true" %}} diff --git a/support/documentation/content/documentation/admin/advanced/_index.ja.md b/support/documentation/content/documentation/admin/advanced/_index.ja.md index b0658bd8..c16a2312 100644 --- a/support/documentation/content/documentation/admin/advanced/_index.ja.md +++ b/support/documentation/content/documentation/admin/advanced/_index.ja.md @@ -5,6 +5,4 @@ weight=20 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +{{% children depth="3" style="li" description="true" %}} From 6681f34a2453c3da1d6ca2572994130464e49aa1 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 15 Feb 2023 14:38:55 +0100 Subject: [PATCH 04/12] Official code of conduct german translation. --- .../contributing/codeofconduct/_index.de.md | 173 ++++++++++-------- 1 file changed, 101 insertions(+), 72 deletions(-) diff --git a/support/documentation/content/contributing/codeofconduct/_index.de.md b/support/documentation/content/contributing/codeofconduct/_index.de.md index df0ebde2..24dab3da 100644 --- a/support/documentation/content/contributing/codeofconduct/_index.de.md +++ b/support/documentation/content/contributing/codeofconduct/_index.de.md @@ -1,117 +1,146 @@ +++ title="Verhaltenskodex" -description="Verhaltenskodex für Mitwirkende" +description="Vereinbarung über Verhaltenskodex für Mitwirkende" weight=10 chapter=false +++ -## Unser Versprechen +## Unsere Verpflichtung -Wir als Mitglieder, Mitwirkende und Führungskräfte verpflichten uns, die Teilnahme an unserer -Gemeinschaft zu einer belästigungsfreien Erfahrung für alle zu machen, unabhängig von Alter, Körpergröße -Körpergröße, sichtbarer oder unsichtbarer Behinderung, ethnischer Zugehörigkeit, Geschlechtsmerkmalen, -Geschlechtsidentität und -ausdruck, Erfahrungsstand, Bildung, sozioökonomischem Status, Nationalität -Nationalität, persönlichem Aussehen, Rasse, Kaste, Hautfarbe, Religion oder sexueller Identität -und Orientierung. +Wir als Mitglieder, Teilnehmende und Verantwortliche unserer Gemeinschaft +verpflichten uns, allen Teilnehmenden an dem Projekt und unserer Gemeinschaft +eine belästigungsfreie Beteiligung, unabhängig von Alter, Körpergröße, +Behinderung, ethnischer Zuordnung, Geschlechtermerkmalen, -identität und -ausdruck, +Grad der Erfahrung, Bildung, sozialem Status, Nationalität, persönlicher +Erscheinung, Rasse, Religion oder sexueller Identität und Orientierung +zu ermöglichen. -Wir verpflichten uns, in einer Weise zu handeln und zu interagieren, die zu einer offenen, einladenden, -vielfältigen, integrativen und gesunden Gemeinschaft beitragen. +Wir verpflichten uns, in einer Weise zu handeln und zu interagieren, die zu +einer offenen, einladenden, vielfältigen, inklusiven und gesunden Gemeinschaft +beiträgt. ## Unsere Standards -Beispiele für Verhaltensweisen, die zu einem positiven Umfeld für unsere Gemeinschaft beitragen: +Beispiele für Verhaltensweisen, die zu einem positiven Umfeld für unsere +Gemeinschaft beitragen, sind: -* Einfühlungsvermögen und Freundlichkeit gegenüber anderen Menschen zeigen -* Respekt vor unterschiedlichen Meinungen, Standpunkten und Erfahrungen -* Konstruktives Feedback zu geben und anstandslos anzunehmen -* Verantwortung zu übernehmen und sich bei denjenigen zu entschuldigen, die von unseren Fehlern betroffen sind, und aus den Erfahrungen lernen -* Sich auf das konzentrieren, was nicht nur für uns als Einzelpersonen, sondern für die gesamte Gemeinschaft am besten ist +- Einfühlungsvermögen und Freundlichkeit gegenüber anderen Menschen zeigen +- Unterschiedliche Meinungen, Standpunkte und Erfahrungen respektieren +- Konstruktives Feedback geben und würdevoll annehmen +- Verantwortung übernehmen und uns bei denjenigen entschuldigen, die von unseren + Fehlern betroffen sind, und aus den Erfahrungen lernen +- Konzentration auf das, was nicht nur für uns als Individuen, sondern für die + gesamte Gemeinschaft das Beste ist Beispiele für inakzeptables Verhalten sind: -* Die Verwendung von sexualisierter Sprache oder Bildern sowie sexuelle Aufmerksamkeit oder Annäherungsversuche jeglicher Art -* Trollen, beleidigende oder herabsetzende Kommentare und persönliche oder politische Angriffe -* Öffentliche oder private Belästigung -* Veröffentlichung privater Informationen anderer, wie z. B. einer physischen oder E-Mail Adresse, ohne deren ausdrückliche Erlaubnis -* Anderes Verhalten, das in einem beruflichen Umfeld als unangemessen angesehen werden könnte +- Die Verwendung sexualisierter Sprache, Bilder oder Symbolik sowie unerwünschte + Versuche sexueller Annäherung +- Beleidigende oder abwertende Kommentare, persönliche oder politische Angriffe + und Trollen +- Öffentliche oder private Belästigungen +- Das Veröffentlichen von privaten Informationen Anderer, wie zum Beispiel + physische oder elektronische Adressen, ohne deren ausdrückliche Erlaubnis +- Anderes Verhalten, welches in einem professionellen Umfeld begründet als + unangemessen betrachtet werden kann -## Zuständigkeiten bei der Durchsetzung +## Verantwortlichkeiten bei der Durchsetzung -Die Community Leiter sind für die Klärung und Durchsetzung unserer Standards für -akzeptablen Verhaltens und werden angemessene und faire Korrekturmaßnahmen ergreifen -Verhalten, das sie für unangemessen, bedrohlich, beleidigend oder schädlich halten, -oder schädlich erachten, zuständig. +Die Gemeinschaftsleitung ist verantwortlich dafür, unsere Standards für ein +akzeptables Verhalten klarzustellen und wird angemessen und fair +korrigierende Maßnahmen ergreifen um auf jegliches Verhalten, das sie für +unangemessen, bedrohlich oder beleidigend hält, zu reagieren. -Die Community Leiter haben das Recht und die Verantwortung, Kommentare, Commits, Code, Wiki-Edits, Issues und andere Beiträge zu entfernen, zu bearbeiten oder abzulehnen, die -die nicht mit diesem Verhaltenskodex übereinstimmen, zu entfernen oder abzulehnen und werden die Gründe für -Entscheidungen mitteilen, wenn dies angebracht ist. +Die Gemeinschaftsleitung hat das Recht und die Verantwortung, Kommentare, +Commits, Code, Wiki-Bearbeitungen, Support-Tickets und andere Beiträge, die +nicht mit diesem Verhaltenskodex vereinbar sind, zu entfernen, zu bearbeiten +oder abzulehnen, und wird die Gründe für eine Mäßigung mitteilen, wenn es +angebracht ist. -## Umfang +## Geltungsbereich -Dieser Verhaltenskodex gilt in allen Gemeinschaftsräumen und auch dann, wenn -eine Person die Gemeinschaft offiziell im öffentlichen Raum vertritt. -Beispiele für die Vertretung unserer Gemeinschaft sind die Verwendung einer offiziellen E-Mail-Adresse, -Postings über ein offizielles Social-Media-Konto oder das Auftreten als ernannter -Vertreter bei einer Online- oder Offline-Veranstaltung. +Dieser Verhaltenskodex gilt für alle Gemeinschaftsbereiche und gilt auch, wenn +eine Einzelperson die Gemeinschaft offiziell in öffentlichen Bereichen vertritt. +Beispiele für die Repräsentation unserer Gemeinschaft sind die Verwendung einer +offiziellen E-Mail-Adresse, das Posten über ein offizielles Social-Media-Konto +oder das Auftreten als ernannte Vertretung bei einer Online- oder +Offline-Veranstaltung. ## Durchsetzung -Fälle von beleidigendem, belästigendem oder anderweitig inakzeptablem Verhalten können -an die für die Durchsetzung verantwortlichen Community Leiter per E-Mail an -git.[at].john-livingston.fr gemeldet werden. -Alle Beschwerden werden umgehend und auf faire Weise geprüft und untersucht. +Fälle von missbräuchlichem, belästigendem oder anderweitig inakzeptablem +Verhalten können unter git.[at].john-livingston.fr der für die Durchsetzung +zuständigen Gemeinschaftsleitung gemeldet werden. Alle Beschwerden werden +zeitnah und fair geprüft und ermittelt. -Alle Community Leiter sind verpflichtet, die Privatsphäre und Sicherheit des Meldenden zu respektieren. +Die gesamte Gemeinschaftsleitung ist verpflichtet, die Privatsphäre und die +Sicherheit derjenigen, die einen Vorfall gemeldet haben, zu respektieren. ## Durchsetzungsrichtlinien -Die Community Leiter befolgen diese Richtlinien für die Auswirkungen auf die Gemeinschaft bei der Festlegung -die Konsequenzen für Handlungen, die sie als Verstoß gegen diesen Verhaltenskodex ansehen: +Die Gemeinschaftsleitung wird sich bei der Bestimmung der Konsequenzen für +jede Handlung, die ihrer Ansicht nach gegen diesen Verhaltenskodex verstößt, an +diese Richtlinien über die Auswirkungen in der Gemeinschaft halten: -### 1. Korrektur +### 1. Berichtigung -**Problem**: Verwendung unangemessener Sprache oder anderes Verhalten, das -unprofessionell oder in der Gemeinschaft unerwünscht ist. +**Auswirkungen in der Gemeinschaft**: Verwendung unangemessener Sprache oder +anderes Verhalten, das in der Gemeinschaft als unprofessionell oder unwillkommen +gilt. -**Folge**: Eine private, schriftliche Verwarnung durch die Community Leiter, die Klarheit über die Art des Verstoßes und eine Erklärung, warum das Verhalten unangemessen war. Eine öffentliche Entschuldigung kann verlangt werden. +**Folge**: Eine private, schriftliche Verwarnung der Gemeinschaftsleitung, +die Klarheit über die Art des Verstoßes und eine Erklärung dafür bietet, warum +das Verhalten unangemessen war. Eine öffentliche Entschuldigung kann verlangt +werden. -### 2. Warnung +### 2. Verwarnung -**Problem**: Ein Verstoß durch einen einzelnen Vorfall oder eine Reihe von Handlungen. +**Auswirkungen in der Gemeinschaft**: Eine Verletzung durch einen einzelnen +Vorfall oder eine Reihe von Handlungen. -**Folge**: Eine Warnung mit Konsequenzen für weiteres Verhalten. Keine Interaktion mit den betroffenen Personen, einschließlich unaufgeforderter Interaktion mit denjenigen, die den Verhaltenskodex durchsetzen, für einen bestimmten Zeitraum. Diese -Dazu gehört auch die Vermeidung von Interaktionen in Gemeinschaftsräumen sowie in externen Kanälen -wie soziale Medien. Ein Verstoß gegen diese Bedingungen kann zu einem vorübergehenden oder -permanenten Ausschluss führen. +**Folge**: Eine Warnung mit Konsequenzen bei wiederholtem Fehlverhalten. Keine +Interaktion mit den beteiligten Personen, einschließlich unaufgeforderter +Interaktion mit denjenigen, die den Verhaltenskodex durchsetzen, für einen +bestimmten Zeitraum. Dazu gehört die Vermeidung von Interaktionen in +Gemeinschaftsräumen sowie in externen Kanälen wie sozialen Medien. Ein Verstoß +gegen diese Bedingungen kann zu einem vorübergehenden oder dauerhaften Verbot +führen. -### 3. Vorübergehendes Verbot +### 3. Vorübergehender Ausschluss -**Problem**: Ein schwerer Verstoß gegen die Gemeinschaftsstandards, einschließlich Anhaltendes unangemessenes Verhalten. +**Auswirkungen in der Gemeinschaft**: Eine schwerwiegende Verletzung von +Gemeinschaftsstandards, einschließlich anhaltend unangemessenen Verhaltens. -**Folge**: Ein vorübergehendes Verbot jeder Art von Interaktion oder öffentlicher Kommunikation mit der Gemeinschaft während eines bestimmten Zeitraums. Keine öffentliche oder private Interaktion mit den betroffenen Personen, einschließlich unaufgeforderter Interaktion mit denjenigen, die den Verhaltenskodex durchsetzen, ist während dieses Zeitraums erlaubt. -Ein Verstoß gegen diese Bedingungen kann zu einem permanenten Verbot führen. +**Folge**: Ein zeitlich begrenztes Verbot jeglicher Art von Interaktion oder +öffentlicher Kommunikation mit der Gemeinschaft. Während dieses Zeitraums ist +keine öffentliche oder private Interaktion mit den beteiligten Personen erlaubt. +Auch keine unaufgeforderte Interaktion mit denjenigen, die den Verhaltenskodex +durchsetzen. Ein Verstoß gegen diese Bedingungen kann zu einem dauerhaften +Verbot führen. -### 4. Dauerhaftes Verbot +### 4. Dauerhafter Ausschluss -**Problem**: Nachweis eines Verstoßes gegen die Gemeinschaftsstandards, einschließlich anhaltend unangemessenen Verhaltens, Belästigung einer Person oder Aggression gegen oder Herabsetzung von Gruppen von Personen. +**Auswirkungen in der Gemeinschaft**: Aufzeigen eines Musters von Verletzungen +der Gemeinschaftsstandards, einschließlich anhaltend unangemessenen Verhaltens, +Belästigung einer Person oder Aggression gegen oder Herabsetzung von Gruppen von +Personen. -**Folge**: Ein dauerhaftes Verbot jeder Art von öffentlicher Interaktion innerhalb der Gemeinschaft. +**Folge**: Ein dauerhaftes Verbot jeglicher Art von öffentlicher Interaktion +innerhalb der Gemeinschaft. -## Zuordnung +## Bezug -Dieser Verhaltenskodex ist der [Contributor Covenant][homepage] entnommen, -Version 2.1, verfügbar unter -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. +Dieser Verhaltenskodex basiert auf dem [Contributor Covenant][homepage], +Version 2.0, verfügbar unter + -Die Leitlinien für die Auswirkungen auf die Gemeinschaft wurden inspiriert durch -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. +Community Impact Guidelines wurden von +[Mozillas Code of Conduct Enforcement Ladder][mozilla] inspiriert. -Antworten auf häufig gestellte Fragen zu diesem Verhaltenskodex finden Sie in den FAQ unter -[https://www.contributor-covenant.org/faq][FAQ]. Die Übersetzungen sind verfügbar -unter [https://www.contributor-covenant.org/translations][translations]. +Antworten auf häufig gestellte Fragen zu diesem Verhaltenskodex finden Sie in +den häufig gestellten Fragen unter +(in Englisch). Andere Übersetzungen sind verfügbar unter +. [homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations +[mozilla]: https://github.com/mozilla/inclusion From 8957312169b4e2551464390d304a1b541143591b Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 15 Feb 2023 14:41:43 +0100 Subject: [PATCH 05/12] Official code of conduct japanese translation. --- .../contributing/codeofconduct/_index.ja.md | 91 ++++++++++++++++++- 1 file changed, 86 insertions(+), 5 deletions(-) diff --git a/support/documentation/content/contributing/codeofconduct/_index.ja.md b/support/documentation/content/contributing/codeofconduct/_index.ja.md index a839c936..58350279 100644 --- a/support/documentation/content/contributing/codeofconduct/_index.ja.md +++ b/support/documentation/content/contributing/codeofconduct/_index.ja.md @@ -1,10 +1,91 @@ +++ -title="Code of Conduct" -description="Contributor Covenant Code of Conduct" +title="コントリビューター行動規範" +description="コントリビューター行動規範" weight=10 chapter=false +++ -{{% notice warning %}} -This page is not yet translated in your language, please refer to the english version. You can switch to it by using the language selector in the left menu. -{{% /notice %}} +## 私たちの約束 +メンバー、コントリビューター、およびリーダーとして、年齢、体の大きさ、目に見えるまたは目に見えない障害、民族性、性別、 +性同一性、表現、経験のレベル、教育、社会経済的地位、国籍、人格、人種、宗教、または性的同一性と指向に関係なく、 +コミュニティへの参加をハラスメントのない体験にすることを誓います。 + +私たちは、オープンで親しみやすく、多様で包括的で健全なコミュニティに貢献する方法で行動し、交流することを誓います。 + +## 私たちの標準 + +前向きな環境を作り上げることに貢献する行動の例: + +* 他人への共感と優しさを示す + +* 異なる意見、視点、経験を尊重する + +* 建設的なフィードバックを与え、礼儀正しく受け入れる + +* 私たちの過ちの影響を受けた人々に責任を受け入れ、謝罪し、そしてその経験から学ぶ + +* 個人としてだけでなく、コミュニティ全体にとっても最善であることに焦点を当てる + +許容できない行動の例は次のとおりです。 + +* 性的な言葉や画像の使用、および性的な注意またはその他あらゆる種類の問題行為 + +* トローリング、侮辱的または中傷的なコメント、個人的または政治的攻撃 + +* 公的またはプライベートの嫌がらせ + +* 明示的な許可なしに、住所や電子メールアドレスなど、他者の個人情報を公開する + +* 職業上不適切と合理的に考えられるその他の行為 + +## 執行責任 + +コミュニティリーダーは、許容される行動の基準を明確にし、実施する責任があり、不適切、脅迫的、攻撃的、または有害と見なされる行動に応じて、適切で公正な是正措置を講じます。 + +コミュニティリーダーは、コメント、コミット、コード、wikiの編集、問題、およびこの行動規範に沿っていないその他の貢献を削除、編集、または拒否する権利と責任を持ち、適切な場合はモデレーションの決定の理由を伝えます。 + +## 適用範囲 + +この行動規範は、すべてのコミュニティスペース内で適用され、個人がパブリックスペースでコミュニティを公式に代表している場合にも適用されます。 +私たちのコミュニティを代表する例には、公式の電子メールアドレスの使用、公式のソーシャルメディアアカウントを介した投稿、オンラインまたはオフラインのイベントでの指定代理人としての行動などがあります。 + +## 執行 + +虐待的、嫌がらせ、またはその他の許容できない行動の事例は、執行を担当するコミュニティリーダーに対して git.[at].john-livingston.fr で報告される場合があります。 +すべての苦情は迅速かつ公正にレビューおよび調査されます。 + +すべてのコミュニティリーダーは、問題の報告者のプライバシーとセキュリティを尊重する義務があります。 + +## 執行ガイドライン + +コミュニティリーダーは、この行動規範に違反していると見なした行動への帰結を判断する際に、これらのコミュニティガイドラインに従います。 + +### 1. 更生 + +**コミュニティへの影響**: コミュニティで専門家にふさわしくない、または歓迎されないと思われる不適切な言葉の使用やその他の不適切な行動をすること。 + +**帰結**: コミュニティリーダーからの非公開の書面による警告。違反の理由を明確にし、行動が不適切だった理由を説明します。 公の謝罪が要求される場合があります。 + +### 2. 警告 + +**コミュニティへの影響**: 単一の出来事または一連の動作による違反。 + +**帰結**: 持続的な行動の結果を伴う警告。 指定された期間、行動規範の実施者との一方的な対話を含め、関係者との対話はありません。 これには、コミュニティスペースやソーシャルメディアなどの外部チャネルでの相互作用の回避が含まれます。 これらの条件に違反すると、一時的または永続的に禁止される場合があります。 + +### 3. 一時的な禁止 +**コミュニティへの影響**: 持続的で不適切な行動を含む、コミュニティ標準の重大な違反。 + +**帰結**: 指定された期間のコミュニティとのあらゆる種類の相互関係または公的なコミュニケーションの一時的な禁止。 この期間中、行動規範を実施する人々との一方的な対話を含め、関係する人々との公的または私的な対話は許可されません。 +これらの条件に違反すると、永久的に禁止される場合があります。 +### 4. 永久的な禁止 +**コミュニティへの影響**: 連続的な不適切な行動、個人への嫌がらせ、または個人の集団に対する攻撃または名誉毀損を含む、コミュニティの標準への違反のパターンを示す。 + +**帰結**: コミュニティ内でのあらゆる種類の公的な相互関係の永久的な禁止。 + +## 帰属 +この行動規範は、https://www.contributor-covenant.org/version/2/0/code_of_conduct.html で利用可能な [Contributor Covenant][homepage] バージョン2.0を基に作成されています。 + +コミュニティへの影響ガイドラインは[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity)に適合しています。 + +[homepage]: https://www.contributor-covenant.org +この行動規範に関する一般的な質問への回答については、https://www.contributor-covenant.org/faq のFAQを参照してください。翻訳はhttps://www.contributor-covenant.org/translations で入手できます。 From c97cb5bb183a49abdf36c24fb5680b3c5d07a30b Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 15 Feb 2023 15:02:22 +0100 Subject: [PATCH 06/12] Partial german settings translations. --- CHANGELOG.md | 4 +- languages/settings/de.yml | 104 ++++++++++++++++++ .../documentation/admin/settings.de.md | 2 +- 3 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 languages/settings/de.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 07460231..814224dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,9 @@ ### New Features -* Settings page translations. For now: english and french are available. +* Settings page translations. + * Fully translated: english and french + * Partially translated: german ### Minor changes and fixes diff --git a/languages/settings/de.yml b/languages/settings/de.yml new file mode 100644 index 00000000..544f2d0b --- /dev/null +++ b/languages/settings/de.yml @@ -0,0 +1,104 @@ +important_note_title: ~ +important_note_text: ~ +diagnostic: ~ +chat_title: ~ + +list_rooms_label: "Bestehende Räume auflisten" +list_rooms_description: | + Bestehende Räume auflisten + +chat_behaviour_description: "

Chatverhalten

" + +room_type_label: "Raumtyp" +room_type_description: "Sie können hier auswählen, ob seperate Räume für jedes Video oder nach Kanal gruppiert erstellt werden." +room_type_option_video: ~ +room_type_option_channel: ~ + +auto_display_label: "Chat automatisch öffnen" +auto_display_description: "Wenn ausgewählt wird der Chat geladen, sobald Sie auf der Videoseite sind." + +open_blank_label: "Zeige den «open in new window» Knopf" +open_blank_description: ~ + +share_url_label: ~ +share_url_description: ~ +share_url_option_nobody: ~ +share_url_option_everyone: ~ +share_url_option_owner: ~ +share_url_option_owner_moderators: ~ + +per_live_video_label: "Nutzer können den Chat für ihre Live-Videos aktivieren" +per_live_video_description: | + Wenn diese Option aktiviert ist, haben alle Live-Videos in ihren Eigenschaften ein Feld zur Aktivierung des Webchats. + Der Videoeigentümer kann Webchats aktivieren. + +per_live_video_warning_description: ~ + +all_lives_label: "Den Chat für alle Live-Videos aktivieren" +all_lives_description: ~ + +all_non_lives_label: "Aktiviere den Chat für alle Nicht-Live-Videos" +all_non_lives_description: ~ + +videos_list_label: "Aktivieren Sie den Chat für diese Videos" +videos_list_description: ~ + +no_anonymous_label: "Den Chat für anonyme Benutzer ausblenden" +no_anonymous_description: ~ + +theming_advanced_description: ~ + +converse_theme_label: "ConverseJS Thema" +converse_theme_description: ~ +converse_theme_option_peertube: ~ +converse_theme_option_default: ~ +converse_theme_option_concord: ~ + +autocolors_label: "Automatische Farberkennung" +autocolors_description: ~ + +chat_style_label: "Webchat Iframe Stil-Attribute" +chat_style_description: | + Sie können einige benutzerdefinierte Stile hinzufügen, die dem Iframe hinzugefügt werden. + Zum Beispiel eine benutzerdefinierte Breite: width:400px; + +prosody_advanced_description: "

Erweiterte Einstellungen des Chatservers

" +help_builtin_prosody_label: ~ +help_builtin_prosody_description: ~ + +system_prosody_label: "System Prosody benutzen" +system_prosody_description: ~ + +disable_websocket_label: "Websocket deaktivieren" +disable_websocket_description: | + Mit Peertube >= 5.0.0 versucht dieses Plugin, eine Websocket-Verbindung zum Chatten zu verwenden. + Wenn der Browser oder die Verbindung des Benutzers nicht kompatibel ist, wird der Browser automatisch auf das BOSH-Protokoll zurückgreifen. +
+ Aber in seltenen Fällen kann dies fehlschlagen. Zum Beispiel, wenn Sie einen Reverse Proxy vor Peertube haben, der keine + Websocket-Verbindung für Plugins erlaubt. + In diesem Fall können Sie diese Einstellungen überprüfen, um Websocket-Verbindungen zu deaktivieren. + +prosody_port_label: ~ +prosody_port_description: ~ + +prosody_peertube_uri_label: "Peertube-URL für API-Aufrufe" +prosody_peertube_uri_description: ~ + +prosody_muc_log_by_default_label: "Standardmäßig Inhalte von Räumen protokollieren" +prosody_muc_log_by_default_description: ~ + +prosody_muc_expiration_label: "Ablaufzeit von Raumprotokollen" +prosody_muc_expiration_description: ~ + +prosody_c2s_label: "Aktivieren von Client-Server-Verbindungen" +prosody_c2s_description: ~ + +prosody_c2s_port_label: "Prosody Client-Server-Verbindungsport" +prosody_c2s_port_description: ~ + +prosody_components_label: "Aktivieren externer XMPP-Komponenten" +prosody_components_description: ~ +prosody_components_port_label: ~ +prosody_components_port_description: ~ +prosody_components_list_label: ~ +prosody_components_list_description: ~ diff --git a/support/documentation/content/documentation/admin/settings.de.md b/support/documentation/content/documentation/admin/settings.de.md index fc888851..899106a3 100644 --- a/support/documentation/content/documentation/admin/settings.de.md +++ b/support/documentation/content/documentation/admin/settings.de.md @@ -13,7 +13,7 @@ Dieser Abschnitt beschreibt die Einstellungsseite des Plugins. ## List existing rooms (Bestehende Räume auflisten) -Wenn der «List rooms» Knopf gedrückt wird, werden alle bestehenden Chaträume aufgelistet. +Wenn der «Bestehende Räume auflisten» («List rooms») Knopf gedrückt wird, werden alle bestehenden Chaträume aufgelistet. Sie können die Chaträume damit finden und moderieren. ## Chat behaviour (Chatverhalten) From f31d6f8c82cd9c534eb7aeaa7535f0af01dd1147 Mon Sep 17 00:00:00 2001 From: Gamemap <71942164+Gamemap@users.noreply.github.com> Date: Thu, 16 Feb 2023 06:57:09 +0100 Subject: [PATCH 07/12] Updated german translation (#156) Completed german translation for the plugin settings Translated the description of the settings documentation Used a nicer sentence for the room type description Translated the Github-Links for the Roadmap --- languages/settings/de.yml | 169 +++++++++++++----- .../documentation/admin/settings.de.md | 4 +- .../documentation/content/issues/_index.de.md | 4 +- 3 files changed, 127 insertions(+), 50 deletions(-) diff --git a/languages/settings/de.yml b/languages/settings/de.yml index 544f2d0b..ab829a75 100644 --- a/languages/settings/de.yml +++ b/languages/settings/de.yml @@ -1,7 +1,16 @@ -important_note_title: ~ -important_note_text: ~ -diagnostic: ~ -chat_title: ~ +important_note_title: "

Wichtige Hinweise

" +important_note_text: | + Sie können die Dokumentation hier finden: + + Peertube Plugin Livechat Dokumentation + . + +diagnostic: | + Bevor Sie um Hilfe bitten, verwenden Sie bitte das Diagnosetool: + Diagnose starten + (wenn dieser Knopf kein neues Fenster öffnet, versuchen Sie bitte, die Seite zu aktualisieren). + +chat_title: "

Chat

" list_rooms_label: "Bestehende Räume auflisten" list_rooms_description: | @@ -10,64 +19,86 @@ list_rooms_description: | chat_behaviour_description: "

Chatverhalten

" room_type_label: "Raumtyp" -room_type_description: "Sie können hier auswählen, ob seperate Räume für jedes Video oder nach Kanal gruppiert erstellt werden." -room_type_option_video: ~ -room_type_option_channel: ~ +room_type_description: "Sie können hier wählen, ob Sie für jedes Video einen eigenen Raum haben möchten oder ob Sie sie nach Kanälen gruppieren möchten." +room_type_option_video: "Jedes Video hat seinen eigenen Webchat-Raum" +room_type_option_channel: "Webchat-Räume sind nach Kanal gruppiert" auto_display_label: "Chat automatisch öffnen" auto_display_description: "Wenn ausgewählt wird der Chat geladen, sobald Sie auf der Videoseite sind." -open_blank_label: "Zeige den «open in new window» Knopf" -open_blank_description: ~ +open_blank_label: "Zeige den «Chat in neuem Fenster öffnen» Knopf" +open_blank_description: "Es wird einen Knopf zum Öffnen des Webchats in einem neuen Fenster geben." -share_url_label: ~ -share_url_description: ~ -share_url_option_nobody: ~ -share_url_option_everyone: ~ -share_url_option_owner: ~ -share_url_option_owner_moderators: ~ +share_url_label: "Zeige den «Chat Link teilen» Knopf" +share_url_description: "Es wird einen Knopf für das Teilen des Chat Links geben (könnte z.B. für die Integration in OBS verwendet werden)." +share_url_option_nobody: "Niemandem zeigen" +share_url_option_everyone: "Jedem zeigen" +share_url_option_owner: "Videobesitzer zeigen" +share_url_option_owner_moderators: "Viedeobesitzer und Instanzmoderatoren zeigen" per_live_video_label: "Nutzer können den Chat für ihre Live-Videos aktivieren" per_live_video_description: | Wenn diese Option aktiviert ist, haben alle Live-Videos in ihren Eigenschaften ein Feld zur Aktivierung des Webchats. Der Videoeigentümer kann Webchats aktivieren. -per_live_video_warning_description: ~ +per_live_video_warning_description: | + + Sie haben die Einstellung «Nutzer können den Chat für ihre Livestreams aktivieren» aktiviert. + Die Einstellung ist von der «Chats für alle Livestreams aktivieren» Einstellung abhängig. + -all_lives_label: "Den Chat für alle Live-Videos aktivieren" -all_lives_description: ~ +all_lives_label: "Chat für alle Live-Videos aktivieren" +all_lives_description: "Wenn diese Option markiert ist, wird der Chat für alle Live-Videos aktiviert." -all_non_lives_label: "Aktiviere den Chat für alle Nicht-Live-Videos" -all_non_lives_description: ~ +all_non_lives_label: "Chat für alle Nicht-Live-Videos aktivieren" +all_non_lives_description: "Wenn diese Option aktiviert ist, wird der Chat für alle Videos aktiviert, die keine Live-Videos sind." -videos_list_label: "Aktivieren Sie den Chat für diese Videos" -videos_list_description: ~ +videos_list_label: "Chat für diese Videos aktivieren" +videos_list_description: | + Videos UUIDs, für die wir einen Webchat wollen. + Es können auch Nicht-Livestream-Videos sein. Ein Video pro Zeile.
+ Sie können Kommentare hinzufügen: alles nach dem #-Zeichen wird entfernt, und leere Zeilen werden ignoriert.
+ Fügen Sie keine privaten Videos hinzu, die UUIDs werden an das Frontend gesendet. -no_anonymous_label: "Den Chat für anonyme Benutzer ausblenden" -no_anonymous_description: ~ +no_anonymous_label: "Chat für anonyme Benutzer ausblenden" +no_anonymous_description: "Wenn die Option aktiviert ist, können anonyme Peertube-Nutzer den Chat nicht sehen." -theming_advanced_description: ~ +theming_advanced_description: "

Themen

" converse_theme_label: "ConverseJS Thema" -converse_theme_description: ~ -converse_theme_option_peertube: ~ -converse_theme_option_default: ~ -converse_theme_option_concord: ~ +converse_theme_description: "Bitte wählen Sie, welches ConverseJS Thema Sie nutzen möchten." +converse_theme_option_peertube: "Peertube Thema" +converse_theme_option_default: "Default ConverseJS Thema" +converse_theme_option_concord: "ConverseJS Concord Thema" autocolors_label: "Automatische Farberkennung" -autocolors_description: ~ +autocolors_description: | + Versucht, die Farben des aktuellen Themas des Benutzers automatisch zu erkennen.
+ Wenn diese Einstellung aktiviert ist, versucht das Plugin, die Farben für das Chat-Thema automatisch zu erkennen.
+ Wenn dies für einige Ihrer Peertube-Themen nicht korrekt funktioniert, können Sie diese Option deaktivieren. + Sie können den Fehler im offiziellen + + Issue Tracker + melden. Vergessen Sie nicht anzugeben, welches Thema nicht funktioniert.` -chat_style_label: "Webchat Iframe Stil-Attribute" +chat_style_label: "Webchat Iframe Stil-Attribut" chat_style_description: | Sie können einige benutzerdefinierte Stile hinzufügen, die dem Iframe hinzugefügt werden. Zum Beispiel eine benutzerdefinierte Breite: width:400px; prosody_advanced_description: "

Erweiterte Einstellungen des Chatservers

" -help_builtin_prosody_label: ~ -help_builtin_prosody_description: ~ + +help_builtin_prosody_label: "Prosody Server" +help_builtin_prosody_description: | + Dieses Plugin verwendet den Prosody XMPP-Server zur Verwaltung von Chaträumen.
+ Dieses Plugin wird mit einem Prosody AppImage geliefert, das zur Ausführung des Dienstes verwendet wird. system_prosody_label: "System Prosody benutzen" -system_prosody_description: ~ +system_prosody_description: | + Warnung: Aktivieren Sie diese Einstellungen nicht, wenn Sie nicht sicher sind, was Sie tun.
+ Wenn Sie diese Einstellungen aktivieren, wird Ihr Peertube den Prosody-Server verwenden, der mit Ihrem System geliefert wird, + und nicht das eingebettete AppImage.
+ Nutzen Sie diese Einstellung nur, wenn Sie Probleme mit dem eingebetteten Prosody haben. disable_websocket_label: "Websocket deaktivieren" disable_websocket_description: | @@ -78,27 +109,73 @@ disable_websocket_description: | Websocket-Verbindung für Plugins erlaubt. In diesem Fall können Sie diese Einstellungen überprüfen, um Websocket-Verbindungen zu deaktivieren. -prosody_port_label: ~ -prosody_port_description: ~ +prosody_port_label: "Prosody port" +prosody_port_description: | + Der Port, der vom integrierten Prosody-Server verwendet wird.
+ Ändern Sie ihn, wenn dieser Port bereits auf Ihrem Server verwendet wird.
+ Sie können diesen Port auf Ihrer Firewall schließen, es wird nicht von der Außenwelt darauf zugegriffen. prosody_peertube_uri_label: "Peertube-URL für API-Aufrufe" -prosody_peertube_uri_description: ~ +prosody_peertube_uri_description: | + Bitte lassen Sie diese Einstellungen leer, wenn Sie nicht wissen, was Sie tun.
+ In einigen seltenen Fällen kann Prosody die API von Peertube nicht von seiner öffentlichen URI aufrufen. + Sie können dieses Feld verwenden, um die URI von Peertube für Prosody-Module anzupassen + (z.B. mit «http://localhost:9000» oder «http://127.0.0.1:9000»). prosody_muc_log_by_default_label: "Standardmäßig Inhalte von Räumen protokollieren" -prosody_muc_log_by_default_description: ~ +prosody_muc_log_by_default_description: | + Wenn diese Option aktiviert ist, werden die Rauminhalte standardmäßig gespeichert. + Jeder Benutzer, der einem Raum beitritt, sieht, was bereits geschrieben wurde, bevor er dem Chat beitrat.
+ Bitte beachten Sie, dass es immer möglich ist, die Inhaltsarchivierung für einen bestimmten Raum zu aktivieren/deaktivieren, indem Sie seine Eigenschaften bearbeiten. prosody_muc_expiration_label: "Ablaufzeit von Raumprotokollen" -prosody_muc_expiration_description: ~ +prosody_muc_expiration_description: | + Sie können hier auswählen, wie lange der Inhalt des Chatrooms vom Server aufbewahrt wird. Der Wert kann sein: +
    +
  • 60: Der Inhalt wird 60 Sekunden gespeichert. Sie können 60 durch einen beliebigen ganzzahligen Wert ersetzen.
  • +
  • 1d: Der Inhalt wird für 1 Tag gespeichert. Sie können 1 durch einen beliebigen ganzzahligen Wert ersetzen.
  • +
  • 1w: Der Inhalt wird für 1 Woche gespeichert. Sie können 1 durch einen beliebigen ganzzahligen Wert ersetzen.
  • +
  • 1m: Der Inhalt wird für 1 Monat gespeichert. Sie können 1 durch einen beliebigen ganzzahligen Wert ersetzen.
  • +
  • 1y: Der Inhalt wird für 1 Jahr gespeichert. Sie können 1 durch einen beliebigen ganzzahligen Wert ersetzen.
  • +
  • nie: Der Inhalt läuft nie ab und wird für immer aufbewahrt.
  • +
prosody_c2s_label: "Aktivieren von Client-Server-Verbindungen" -prosody_c2s_description: ~ +prosody_c2s_description: | + Ermöglichen Sie XMPP-Clients die Verbindung zum integrierten Prosody-Server.
+ Diese Option allein lässt nur Verbindungen von localhost-Clients zu. prosody_c2s_port_label: "Prosody Client-Server-Verbindungsport" -prosody_c2s_port_description: ~ +prosody_c2s_port_description: | + Der Port, der vom c2s-Modul des integrierten Prosody-Servers verwendet wird.
+ XMPP-Clients müssen diesen Port zum Verbinden verwenden.
+ Ändern Sie ihn, wenn dieser Port bereits auf Ihrem Server verwendet wird.
+ Sie können diesen Port auf Ihrer Firewall vorerst geschlossen halten, es wird nicht von der Außenwelt darauf zugegriffen. prosody_components_label: "Aktivieren externer XMPP-Komponenten" -prosody_components_description: ~ -prosody_components_port_label: ~ -prosody_components_port_description: ~ -prosody_components_list_label: ~ -prosody_components_list_description: ~ +prosody_components_description: | + Aktivieren Sie die Verwendung externer XMPP-Komponenten.
+ Diese Option allein erlaubt nur Verbindungen von localhost.
+ Diese Funktion kann beispielsweise verwendet werden, um einige Bots mit den Chatrooms zu verbinden. + +prosody_components_port_label: "Port für externe Komponenten zur Verbindung mit Prosody" +prosody_components_port_description: | + Der Port, der von XMPP-Komponenten verwendet wird, um sich mit dem Prosody-Server zu verbinden.
+ Ändern Sie ihn, wenn dieser Port bereits auf Ihrem Server verwendet wird.
+ Sie können diesen Port auf Ihrer Firewall vorerst geschlossen halten, es wird nicht von Außerhelb darauf zugegriffen. + +prosody_components_list_label: "Externe Komponenten" +prosody_components_list_description: | + Die zu erstellenden externen Komponenten: +
    +
  • Eine pro Zeile.
  • +
  • Verwenden Sie das Format «Komponentenname:Komponenten_Geheimnis» (Leerzeichen werden entfernt)
  • +
  • Sie können Kommentare hinzufügen: alles nach dem #-Zeichen wird entfernt und leere Zeilen werden ignoriert
  • +
  • Der Name darf nur alphanumerische Zeichen und Punkte enthalten
  • +
  • + Wenn der Name nur alphanumerische Zeichen enthält, wird ihm die XMPP-Domäne angehängt. + Aus «bridge» wird zum Beispiel «bridge.your_domain.tld». + Sie können auch einen vollständigen Domänennamen angeben, müssen jedoch sicherstellen, dass Ihr DNS korrekt konfiguriert ist. +
  • +
  • Verwenden Sie nur alphanumerische Zeichen in der geheimen Passphrase (verwenden Sie mindestens 15 Zeichen).
  • +
diff --git a/support/documentation/content/documentation/admin/settings.de.md b/support/documentation/content/documentation/admin/settings.de.md index 899106a3..07539e27 100644 --- a/support/documentation/content/documentation/admin/settings.de.md +++ b/support/documentation/content/documentation/admin/settings.de.md @@ -1,6 +1,6 @@ +++ title="Einstellungen" -description="Plugin Peertube Livechat settings" +description="Plugin Peertube Livechat Einstellungen" weight=10 chapter=false +++ @@ -20,7 +20,7 @@ Sie können die Chaträume damit finden und moderieren. ### Room type (Raumtyp) -Sie können hier auswählen, ob seperate Räume für jedes Video oder nach Kanal gruppiert erstellt werden. +Sie können hier wählen, ob Sie für jedes Video einen eigenen Raum haben möchten oder ob Sie sie nach Kanälen gruppieren möchten. ### Automatically open the chat (Chat automatisch öffnen) diff --git a/support/documentation/content/issues/_index.de.md b/support/documentation/content/issues/_index.de.md index fb3ae52c..6ec3ff9e 100644 --- a/support/documentation/content/issues/_index.de.md +++ b/support/documentation/content/issues/_index.de.md @@ -9,7 +9,7 @@ Wenn Sie neue Funktionswünsche, Fehler (Bugs) oder Schwierigkeiten bei der Einr Einen Einblick in die Roadmap für kommende Funktionen finden Sie hier: -- [github project](https://github.com/users/JohnXLivingston/projects/1). -- [milestones on github](https://github.com/JohnXLivingston/peertube-plugin-livechat/milestones). +- [Github Project](https://github.com/users/JohnXLivingston/projects/1). +- [Meilensteine auf Github](https://github.com/JohnXLivingston/peertube-plugin-livechat/milestones). Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind und helfen wollen, dieses Plugin zu verbessern, sind Sie gerne willkommen. From 13fd1a84c9fd2fda6e24a1b879a4d43e064c8801 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 16 Feb 2023 06:58:28 +0100 Subject: [PATCH 08/12] Fix typo. --- build-languages.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-languages.js b/build-languages.js index 21991364..53a9d3b7 100644 --- a/build-languages.js +++ b/build-languages.js @@ -40,7 +40,7 @@ class BuildLanguages { this.langs = Object.values(translations).map(filename => { return filename.match(/^.*\/(\w+)\.json$/)[1] }) - console.log('Existings languages: ', this.langs) + console.log('Existing languages: ', this.langs) } initTranslationStrings () { From 20a95309929279f7dbf84feee4a07357d0cf8f4a Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 16 Feb 2023 07:00:41 +0100 Subject: [PATCH 09/12] update changelog --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 814224dd..b88f7ba0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,7 @@ ### New Features -* Settings page translations. - * Fully translated: english and french - * Partially translated: german +* Settings page translations. For now, english, french and german are available. ### Minor changes and fixes From 47631f433f6844d70d811128271b291b33444ce4 Mon Sep 17 00:00:00 2001 From: Gamemap <71942164+Gamemap@users.noreply.github.com> Date: Thu, 16 Feb 2023 16:08:36 +0100 Subject: [PATCH 10/12] German Translation shortened Shortened translations to don't get truncated. --- languages/settings/de.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/languages/settings/de.yml b/languages/settings/de.yml index ab829a75..1a15e8d9 100644 --- a/languages/settings/de.yml +++ b/languages/settings/de.yml @@ -14,14 +14,14 @@ chat_title: "

Chat

" list_rooms_label: "Bestehende Räume auflisten" list_rooms_description: | - Bestehende Räume auflisten + Räume auflisten chat_behaviour_description: "

Chatverhalten

" room_type_label: "Raumtyp" room_type_description: "Sie können hier wählen, ob Sie für jedes Video einen eigenen Raum haben möchten oder ob Sie sie nach Kanälen gruppieren möchten." -room_type_option_video: "Jedes Video hat seinen eigenen Webchat-Raum" -room_type_option_channel: "Webchat-Räume sind nach Kanal gruppiert" +room_type_option_video: "Eigenen Webchat-Raum für jedes Video" +room_type_option_channel: "Webchat-Räume nach Kanal gruppieren" auto_display_label: "Chat automatisch öffnen" auto_display_description: "Wenn ausgewählt wird der Chat geladen, sobald Sie auf der Videoseite sind." @@ -34,7 +34,7 @@ share_url_description: "Es wird einen Knopf für das Teilen des Chat Links geben share_url_option_nobody: "Niemandem zeigen" share_url_option_everyone: "Jedem zeigen" share_url_option_owner: "Videobesitzer zeigen" -share_url_option_owner_moderators: "Viedeobesitzer und Instanzmoderatoren zeigen" +share_url_option_owner_moderators: "Videobesitzern, Instanzmoderatoren zeigen" per_live_video_label: "Nutzer können den Chat für ihre Live-Videos aktivieren" per_live_video_description: | @@ -79,7 +79,7 @@ autocolors_description: | Sie können den Fehler im offiziellen Issue Tracker - melden. Vergessen Sie nicht anzugeben, welches Thema nicht funktioniert.` + melden. Vergessen Sie nicht anzugeben, welches Thema nicht funktioniert. chat_style_label: "Webchat Iframe Stil-Attribut" chat_style_description: | From 183b21322d7bb8ef98cdd94c1c8f060813256063 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 17 Feb 2023 09:43:01 +0100 Subject: [PATCH 11/12] Fix typo. --- languages/settings/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/settings/en.yml b/languages/settings/en.yml index d46c0482..44502252 100644 --- a/languages/settings/en.yml +++ b/languages/settings/en.yml @@ -77,7 +77,7 @@ autocolors_description: | You can report the bug on the official issue tracker - . Don't forget to specify which theme is not working.` + . Don't forget to specify which theme is not working. chat_style_label: "Webchat iframe style attribute" chat_style_description: | From d964a96654835e508187c981cdf8473df382a7ce Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 17 Feb 2023 09:47:21 +0100 Subject: [PATCH 12/12] Credits. --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b88f7ba0..b2ea2fbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,10 @@ ### New Features -* Settings page translations. For now, english, french and german are available. +* Settings page translations: + * english, + * french, + * german (thanks [Gamemap](https://github.com/Gamemap)) ### Minor changes and fixes