From 8db4f1058426b56551ea9c67383a9d94c57ba9cb Mon Sep 17 00:00:00 2001 From: John Livingston <38844060+JohnXLivingston@users.noreply.github.com> Date: Tue, 25 Jul 2023 18:00:41 +0200 Subject: [PATCH] Improving Documentation (#220) Documentation improvement (Related to https://github.com/JohnXLivingston/peertube-plugin-livechat/issues/117) * new introduction and homepage * Fix livechat_label shortcode: no line breaks * refactoring/rewriting user documentation * troubleshooting section * Updating documentation po files * ... --- support/documentation/content/en/_index.md | 15 +- .../en/contributing/document/_index.md | 6 + .../en/documentation/installation/_index.md | 2 +- .../installation/cpu_compatibility.md | 2 +- .../installation/troubleshooting.md | 41 + .../content/en/documentation/user/_index.md | 2 +- .../en/documentation/user/moderation.md | 38 +- .../content/en/documentation/user/obs.md | 28 +- .../en/documentation/user/streamers.md | 89 ++ .../content/en/documentation/user/viewers.md | 81 ++ .../en/documentation/user/xmpp_clients.md | 2 +- .../content/en/images/chat_anonymous.png | Bin 0 -> 12358 bytes .../content/en/images/chat_with_anonymous.png | Bin 0 -> 16666 bytes .../content/en/images/configure.png | Bin 0 -> 75892 bytes .../content/en/images/diagnostic.png | Bin 0 -> 237694 bytes .../en/images/embed_chat_in_livestream.png | Bin 0 -> 389806 bytes .../content/en/images/embed_chat_in_obs.png | Bin 0 -> 121293 bytes .../content/en/images/installation.png | Bin 0 -> 69604 bytes .../content/en/images/launch_diagnostic.png | Bin 0 -> 76251 bytes .../content/en/images/new_live.png | Bin 0 -> 75113 bytes .../en/images/new_live_activate_chat.png | Bin 0 -> 54657 bytes .../en/images/open_participants_list.png | Bin 0 -> 22841 bytes .../content/en/images/share_readonly.png | Bin 0 -> 154064 bytes .../content/en/images/top_menu.png | Bin 0 -> 27970 bytes .../documentation/content/en/intro/_index.md | 75 +- .../layouts/shortcodes/livechat_label.html | 4 +- support/documentation/po/livechat.ar.po | 694 ++++++++++++- support/documentation/po/livechat.ca.po | 694 ++++++++++++- support/documentation/po/livechat.cs.po | 694 ++++++++++++- support/documentation/po/livechat.de.po | 803 ++++++++++++++- support/documentation/po/livechat.el.po | 694 ++++++++++++- support/documentation/po/livechat.en.pot | 789 +++++++++++++- support/documentation/po/livechat.eo.po | 694 ++++++++++++- support/documentation/po/livechat.es.po | 695 ++++++++++++- support/documentation/po/livechat.eu.po | 694 ++++++++++++- support/documentation/po/livechat.fa.po | 694 ++++++++++++- support/documentation/po/livechat.fi.po | 694 ++++++++++++- support/documentation/po/livechat.fr.po | 961 ++++++++++++++---- support/documentation/po/livechat.gd.po | 694 ++++++++++++- support/documentation/po/livechat.gl.po | 694 ++++++++++++- support/documentation/po/livechat.hr.po | 694 ++++++++++++- support/documentation/po/livechat.hu.po | 694 ++++++++++++- support/documentation/po/livechat.is.po | 694 ++++++++++++- support/documentation/po/livechat.it.po | 694 ++++++++++++- support/documentation/po/livechat.ja.po | 746 +++++++++++++- support/documentation/po/livechat.kab.po | 694 ++++++++++++- support/documentation/po/livechat.nb.po | 694 ++++++++++++- support/documentation/po/livechat.nl.po | 694 ++++++++++++- support/documentation/po/livechat.nn.po | 694 ++++++++++++- support/documentation/po/livechat.oc.po | 694 ++++++++++++- support/documentation/po/livechat.pl.po | 694 ++++++++++++- support/documentation/po/livechat.pt.po | 694 ++++++++++++- support/documentation/po/livechat.ru.po | 694 ++++++++++++- support/documentation/po/livechat.sq.po | 694 ++++++++++++- support/documentation/po/livechat.sv.po | 694 ++++++++++++- support/documentation/po/livechat.th.po | 694 ++++++++++++- support/documentation/po/livechat.tok.po | 694 ++++++++++++- support/documentation/po/livechat.uk.po | 694 ++++++++++++- support/documentation/po/livechat.vi.po | 694 ++++++++++++- support/documentation/po/livechat.zh-Hans.po | 694 ++++++++++++- support/documentation/po/livechat.zh-Hant.po | 694 ++++++++++++- 61 files changed, 24341 insertions(+), 858 deletions(-) create mode 100644 support/documentation/content/en/documentation/installation/troubleshooting.md create mode 100644 support/documentation/content/en/documentation/user/streamers.md create mode 100644 support/documentation/content/en/documentation/user/viewers.md create mode 100644 support/documentation/content/en/images/chat_anonymous.png create mode 100644 support/documentation/content/en/images/chat_with_anonymous.png create mode 100644 support/documentation/content/en/images/configure.png create mode 100644 support/documentation/content/en/images/diagnostic.png create mode 100644 support/documentation/content/en/images/embed_chat_in_livestream.png create mode 100644 support/documentation/content/en/images/embed_chat_in_obs.png create mode 100644 support/documentation/content/en/images/installation.png create mode 100644 support/documentation/content/en/images/launch_diagnostic.png create mode 100644 support/documentation/content/en/images/new_live.png create mode 100644 support/documentation/content/en/images/new_live_activate_chat.png create mode 100644 support/documentation/content/en/images/open_participants_list.png create mode 100644 support/documentation/content/en/images/share_readonly.png create mode 100644 support/documentation/content/en/images/top_menu.png diff --git a/support/documentation/content/en/_index.md b/support/documentation/content/en/_index.md index f5cf9d81..6d762580 100644 --- a/support/documentation/content/en/_index.md +++ b/support/documentation/content/en/_index.md @@ -5,8 +5,21 @@ You can use the language selector in the left menu to view this documentation in Some translations are missing or incomplete. In this case, you'll see the English version of the text. {{% /notice %}} +![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px) + +Welcome the **Peertube Livechat Plugin** documentation. + +[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. +The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers. + +To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation. + +{{% notice tip %}} +You can use the searchbox in the left menu to quickly find specific documentation parts. +{{% /notice %}} + {{% notice info %}} Before updating to a major release, please read the release notes and breaking changes list : [CHANGELOG](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md). {{% /notice %}} -{{% children style="li" depth="3" description="true" %}} +{{% children style="li" depth="4" description="true" %}} diff --git a/support/documentation/content/en/contributing/document/_index.md b/support/documentation/content/en/contributing/document/_index.md index 982edd17..69cb336a 100644 --- a/support/documentation/content/en/contributing/document/_index.md +++ b/support/documentation/content/en/contributing/document/_index.md @@ -89,6 +89,12 @@ To facilitate translators work, avoid making too long paragraphs. For now, it is not possible to use Markdown tables: the translation tools will break them. +{{% notice warning %}} +There may be links to documentation elsewhere on the web. +Try not to change the urls of the documentation pages. +Or at the very least, put links to the new location on the previous url. +{{% /notice %}} + ### What if I can't use hugo and/or po4a? Just edit english markdown files, and specify that you can't build translations when you make your Pull Request. diff --git a/support/documentation/content/en/documentation/installation/_index.md b/support/documentation/content/en/documentation/installation/_index.md index 6432ed27..58a7ba9a 100644 --- a/support/documentation/content/en/documentation/installation/_index.md +++ b/support/documentation/content/en/documentation/installation/_index.md @@ -1,7 +1,7 @@ --- title: "Installation guide" description: "Plugin peertube-plugin-livechat installation guide" -weight: 10 +weight: 20 chapter: false --- diff --git a/support/documentation/content/en/documentation/installation/cpu_compatibility.md b/support/documentation/content/en/documentation/installation/cpu_compatibility.md index d4f56024..109cf7a2 100644 --- a/support/documentation/content/en/documentation/installation/cpu_compatibility.md +++ b/support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -1,7 +1,7 @@ --- title: "Known issues: CPU Compatibility" description: "For now, the plugin only works out of the box for x86_64 and arm64 CPU architecture. Here are some instructions for other CPU architectures." -weight: 10 +weight: 20 chapter: false --- diff --git a/support/documentation/content/en/documentation/installation/troubleshooting.md b/support/documentation/content/en/documentation/installation/troubleshooting.md new file mode 100644 index 00000000..531d6d7d --- /dev/null +++ b/support/documentation/content/en/documentation/installation/troubleshooting.md @@ -0,0 +1,41 @@ +--- +title: "Troubleshooting" +description: "Some classic mistakes and workarounds." +weight: 10 +chapter: false +--- + +## I just installed/upgraded the plugin, but nothing happens + +If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page. + +## Diagnostic tool + +If the chat does not work, there is a diagnostic tool in the plugin's settings pages. + +Open the plugin settings, and click on the "launch diagnostic" button. + +![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px) + +If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response. + +![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px) + +## Chat does not load + +### Internal API calls + +In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called "API Prosody -> Peertube is KO". + +In such case, try changing the "{{% livechat_label prosody_peertube_uri_label %}}" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know). + +### Websocket + +If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. +Since Peertube version 5.0.0, there are some additional configuration to do on the server side. +Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500). + +You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection. + +If you can't fix this immediatly, you can disable Websocket by unchecking "{{% livechat_label disable_websocket_label %}}" in the plugin setting page. +In such case, you should also check "{{% livechat_label federation_dont_publish_remotely_label %}}", as chat federation won't work without Websocket. diff --git a/support/documentation/content/en/documentation/user/_index.md b/support/documentation/content/en/documentation/user/_index.md index b199cefc..df2f9f65 100644 --- a/support/documentation/content/en/documentation/user/_index.md +++ b/support/documentation/content/en/documentation/user/_index.md @@ -1,7 +1,7 @@ --- title: "User documentation" description: "Plugin peertube-plugin-livechat user documentation" -weight: 40 +weight: 10 chapter: false --- diff --git a/support/documentation/content/en/documentation/user/moderation.md b/support/documentation/content/en/documentation/user/moderation.md index b4ca7da6..0da6d78d 100644 --- a/support/documentation/content/en/documentation/user/moderation.md +++ b/support/documentation/content/en/documentation/user/moderation.md @@ -1,21 +1,45 @@ --- title: "Moderation" description: "Plugin peertube-plugin-livechat moderation" -weight: 10 +weight: 30 chapter: false --- +{{% notice warning %}} +This section is still incomplete. +{{% /notice %}} + +## Accessing moderation tools + You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right. -You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms». - -You can delete old rooms: join the room, and use the menu on the top to destroy the room. - -## Notes +![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px) +{{% notice tip %}} All instance moderators and admins will be owner of created chat rooms. -If the video is local (not from a remote Peertube), the video owner will be admin in the chat room. +The video owner will be admin in the chat room. +{{% /notice %}} You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right. + +## Roles and affiliations + +There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ... + +{{% notice warning %}} +This section is still incomplete. +{{% /notice %}} + +You can promote users as moderators, if you need some help. + +## Delete room content + +You can delete old rooms: join the room, and use the menu on the top to destroy the room. + +## Instance moderation + +As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly. + +You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms». diff --git a/support/documentation/content/en/documentation/user/obs.md b/support/documentation/content/en/documentation/user/obs.md index 29106016..0ba795c1 100644 --- a/support/documentation/content/en/documentation/user/obs.md +++ b/support/documentation/content/en/documentation/user/obs.md @@ -1,21 +1,31 @@ --- title: "OBS" description: "Documentation to stream the chat content using OBS." -weight: 10 +weight: 40 chapter: false --- +[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. +In the current page, you will find some adviced to handle your live chats using OBS. + ## OBS Overlay -If you are using OBS for streaming, you can easily include the chat in your stream. +You can easily include the chat in your stream. -You can use the «share chat link» feature to generate an URL to your chat. -The button should be near the chat if you are the video owner (unless it was desactivated by your server admins). +![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px) -Check the «readonly» checkbox in the modal. -Then use this link as a «web browser source» in OBS. +You can use the "{{% livechat_label share_chat_link %}}" feature to generate an URL to your chat. +This button should be near the chat if you are the video owner (unless it was desactivated by your server admins). -You can use the «Transparent background» to have a transparent background in OBS. +Check the "{{% livechat_label read_only %}}" checkbox in the modal. + +![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px) + +Then use this link as a "web browser source" in OBS. + +![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px) + +You can use the "{{% livechat_label transparent_background %}}" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings: ```css @@ -24,7 +34,9 @@ If you want to customize the background transparency, you can add this CSS in yo } ``` -Note: you can customize colors. This is undocumented yet, but you can try this: +In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values. + +Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded. diff --git a/support/documentation/content/en/documentation/user/streamers.md b/support/documentation/content/en/documentation/user/streamers.md new file mode 100644 index 00000000..473cb711 --- /dev/null +++ b/support/documentation/content/en/documentation/user/streamers.md @@ -0,0 +1,89 @@ +--- +title: "For streamers" +description: "How to setup the chat for your live stream" +weight: 20 +chapter: false +--- + +## Enabling the chat for you live streams + +{{% notice warning %}} +Instance administrators can choose to disable or enable chat in specific cases. +Information in this section are only true in the default case. +{{% /notice %}} + +When you create or modify a Peertube live, there is a "plugin settings" tab: + +![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px) + +In the "plugin settings" tab, there is a "{{% livechat_label use_chat %}}" checkbox. +Just check or uncheck it to enable or disable the chat associated to your video. + +![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px) + +{{% notice tip %}} +There can be other settings in this tab, depending on plugins installed on your Peertube instance. +{{% /notice %}} + +### Per channel chat + +On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. +Please contact your instance's administrators for more information on how they configure the livechat plugin. + +## Share the chat + +On top of the chat, there is a "{{% livechat_label share_chat_link %}}" button. + +This button opens a popup, where you can obtain an url to join the chat. +This url can be shared. + +![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px) + +You can customize some options: + +* {{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)). +* {{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set. +* {{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat. + +The "{{% livechat_label share_chat_link %}}" popup can also contain a "{{% livechat_label connect_using_xmpp %}}" tab. +This will only be available if your instance's administators have enabled an correctly configured this option. +Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). +Using such softwares can for example facilitate moderation actions. + +## Moderation + +Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation). + +## Include the chat in your video stream + +Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs). + +## Chat persistence + +By default, the chat is persistent. +This means that the room content will be kept for a while. +User joining will see messages posted before their arrival. + +You can change the persistence behaviour. +[Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on "Configure". + +![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px) + +There are several option that can be changed. + +![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px) + +You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message. + +You can also uncheck "enable archiving": if unchecked, the message will be pruned in the server restarts. + +By unchecking "Persistent", the room will be cleared if there is no more participant. + +## Delete the chat content + +If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on "Destroy". +A popup will open, asking a confirmation. +To avoid errors, the popup will ask you the "XMPP address" of the chat room. +This address can be obtain using the "Details" menu in the top menu. + +The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the "{{% livechat_label use_chat %}}" feature activated. diff --git a/support/documentation/content/en/documentation/user/viewers.md b/support/documentation/content/en/documentation/user/viewers.md new file mode 100644 index 00000000..6c353606 --- /dev/null +++ b/support/documentation/content/en/documentation/user/viewers.md @@ -0,0 +1,81 @@ +--- +title: "For viewers" +description: "How to chat for stream viewers" +weight: 10 +chapter: false +--- + +## Joining chat rooms + +When you are watching a Peertube video that has the chat activated, you will see the chat next to the video: + +![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px) + +There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. +See bellow for more informations. + +### If you haven't a Peertube account + +{{% notice warning %}} +This feature can be disabled by the instance's adminitrators. +{{% /notice %}} + +If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. +You will be assigned a random nickname (something like "Anonymous 12345"). + +![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px) + +Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window. + +![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px) + +### If you have a Peertube account + +If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar. + +{{% notice tip %}} +If you are watching a live on an instance on which you have no account, but you have an account on another instance: +if the plugin is installed on both instances, it is possible to join the chat using your account. +To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance). +{{% /notice %}} + +## Chatting + +To send messages, just type them in the "message" field on the bottom of the screen. +You can send them by pressing the enter key on your keyboard, or by clicking on the "send" button. + +If you want to add line breaks in your messages, you can use the "shift+enter" key combinaison. + +You can add emojis to your messages. +You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`. + +You can mention other participants. +To do so, you can type the first nickname letters, then press the tab key. +You can also type `@`: this will directly open the menu. +You can also click on a nickname in the participants list to insert it in the message field. + +## Participants list + +To see the list of participants, just open the right menu: + +![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px) + +You can see that some participants have special rights (moderator, owner, ...). + +## Opening full screen + +On top of the chat, there is a button to open the chat in fullscreen. +This will open a new browser tab with the following content: + +![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px) + +It can be easier to chat using a full browser tab. + +This fullscreen view also adds a top menu with advances features. +This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation). + +## Changing nickname + +You can change your nickname by typing `/nickname your_new_nickname` in the message field. + +You can also change your nickname using the top menu when you are in fullscreen mode. diff --git a/support/documentation/content/en/documentation/user/xmpp_clients.md b/support/documentation/content/en/documentation/user/xmpp_clients.md index 3d8f7dcd..b04c6382 100644 --- a/support/documentation/content/en/documentation/user/xmpp_clients.md +++ b/support/documentation/content/en/documentation/user/xmpp_clients.md @@ -1,7 +1,7 @@ --- title: "XMPP Clients" description: "Connect to chat using a XMPP client" -weight: 40 +weight: 60 chapter: false --- diff --git a/support/documentation/content/en/images/chat_anonymous.png b/support/documentation/content/en/images/chat_anonymous.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f1f4204f232286b7679a7efd5740260b617792 GIT binary patch literal 12358 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/chat_with_anonymous.png b/support/documentation/content/en/images/chat_with_anonymous.png new file mode 100644 index 0000000000000000000000000000000000000000..53970c47c6a57bb34d20342cd12caf74c0fadf40 GIT binary patch literal 16666 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 ybsiap+_~GfK2(gqfvMO;@Fxo2i zwH|J&l7_xQVekFA{hNPF{I%ikYSXpg({lu;#cJe5^GAU6VWs){d_1~Q>w)C+C?pGj z+LP4u{RI_sR;DK{=a@_U;YW2xQ#qAWK1O_`a75*=VeIs7uaK-hA0 z>eZAIStMJd_ZJtNm%?rCm%sL_XX~^WW#W4m48NLeFRS02FC?31`^D9m6X$SgmK%)R zs}`~Cu2e477&DBebD2JbrUStBE=@Gi;`X!PG8urMoo0ZEjdN3PpIB^GYW-P+-xAJ? zz8V8y*jYsnNR&)TU0wa@=J5A<^Pkl{|FoL@iwoBzhc?r$mqNM5zt%^Y zCJHOHC?>0PD_wOIOL|)HyxYnhu~l7~%Pb5MZmG*Lj~WwB1jl*PzM;wnAP=b9_^nuS znkxWmd%V+RF=*Zy6>-`tTlVWDtGlB>ndMeyJBlwDaZavqoV4d2gdX=!;Bx^JL#Ja1n-U-DMG z+@z~GXCXgvnWY~dqdB69s#>YnbQIri14gWKX+hz^__6Y}tVni~f!`a_jjD3Xs08`D>cXaVn2Bbzj8O^=k;`!_l!l z_~OM4(24-qT)@Gd@-wdsyVw2cehImvYK5M*l^R-$@mhsG|K;w&Mr?e1IKaIEoe$MW z630u(dFJVB-Ie{`*kk7G@xtNiDcjx2+Q`%Pz&nW#i%c+Fw&dht)rpw_fRVjUc@KLd zZ&PKKn7&|JYJl%Gza8FfY-w4mI`4R6L+Z0LKQ6qrsMA3u7LL>?9lFdqU8+e2=!55% zmn-iMOpFS2LPF^|kUB)D-A1&C+1TD@mjs}FPt~s3zmjQdet2*czZwXfE=zpc>$<=-vzNJX^ex9vVtOKbRYt+$0 zoaQY%K3sf+NP4S_?~fvwVy}jQ063Qb{Ep}0q;g%$IrgjQmjx>qy{5E50BJ`k)kwTZ z<8o>>|M3GCkLMMtzx{SEs-$(*xJt|YwIKO$r3E*UUIT)RmF#Cy9Mi#c9xe!kfrU31 znO$h6>-X9%Dadn`%6Lc-j8^cr?X%eA#q)Ge`p!ivdai|Q0g2{}EgbQWBQJMQ#DX`% zMRVlsk*xf}KN$siYO10BL`q`1Ik;SwrO1zY1DF~ud~_vAeE|F2z+uJ+Z6%kQl&$T;NgT}E(2${L!#W0L$R;Cl9nd@Fp! zQw%mMD=UHaqj*sYYKr{f^Tqa!;GrwSdz!o_LXcJA^(sf!f8|Nh^3fFxfc(p#Q|l?T zI6b9q`_t`qZ&9UUbE|N-KvN3SpoO}mWXOUO11CKb-JTehg|KDf7evP(?A38i2zPSU#c4u-4J-~8!M~X4N{qITfl}d zIIPc)dG~zIy4sco5ZT1slggZD#jsrry?RVf*)?3RBIPNoKN$ThVurn0yxgv}oC`iO;u* zUWodx>qHkRGno)H7Y=gjQL1F1XRk))j=*ly7>THC6`%WS1)%7n@pRjj5-u$L?M?*{ zC@R8{T?G&B-1bYuwR9U*&Qp*{%sQRbeMtDiHt^R@Ri(vJx2%xia2I0@zX2Wn$#PqI z!N_Z_Q&9@halp115ixe(HA_^E>#0sqaMGX?X(yX$t;Yz?y!``Q%i8!v$7?X%+ULAr zln=##WCG>w8H%?)w8EffT-)tBsXT+v2}fQ1^8Q+)XeMXIER#)9UOs>0H&j@-)rcxo z7O+Rnm^)oreLyERmo{b0%!Zo*1Tx}IuhJ?1*@NE7`-lzfJ$iVaK>#?3QL~zv(D@Sm z^f~K!$Fo%rpv41-pzhmRPI?X6a~lz3{z~cl3TDrOfîM3G{LOB&jcE571p#aGU z%jx3p?PsR2Mq@yXQ#4_uNxo9-8e0plP%~ADCKaXECv2GJQZCb=)Q*r+uhM30#77o< zyRs0*dtxq{$jWn6f^c8h>@2wY84lX>Nwe7M?o&f6m8vOJ(3^%6T*?Mm{C^LZm~Lg2 zQx+-gV8V6JeSP1IR}O%5_I_CB1rW6?Yhq95^I;(9f_L)JuFCvi{~uDz5y-?KwTj+% zQj3|S<7Mx-_3<%%G)*WO*afw}4A}`#>+9~;jGCC3msdCW@3#rYFVk+w@>9(ExAD6u z<@sd{{7ei93nO(lbq}1Kt~o5VB*ePXAXWbdR1)9hG;x!&R;M2${azHp`AV@|Krz!%&-#n$|m4EJw zEOhc!AAw)ME*$gs-za!D?EIO8o^7asT_}MDG4`V9nJW$CN-e*8aKqzbk5FWIqW=nM z0m2@j^qgU%*1-$-6#TB*_KyQ^Wh}w`3I`4UOvITR&!eWAX_q21$ifJh>>5cD4+=?i zS!k8z85U)Cg`u3=itaX1N4SQOpdyAdk~7j2ip_skz{IBRzi}quwD~d=pCg~0^uql` zY>OP|A(XzEkl@QOTUM8SDv^TpR_W}4@@Wn-(rmI*P3;iy7e)yPo3+&PTEdL#|2coy z3`v>!`G*8Oy(?-z3>3e~Q1r_O4p@@2GosaoQeaQRDr{A{3>mEhrLztaf4MO(`rzUz zJ9hzI@-*a9%PFI7LmxR|t;MOUCl{^%*I;@QDS`*Ws^zku;Q`^fpg~Y31P@aDSVZ2B zE)(9r$5VL@UUU!kj(lO>VJKR zqE|{rQz!%KlNRZr?3%hK;lqu&XL?G z(v@Dhb3YsAqm#w9ZVHStI`%>sdy)-@ccvHuL>;8xJ2k|h^kWzhh-^eh_%RQ4#BfQf z=i)Sj|0LL+4W-Y!oYs|)Ks!)_A;-#jk&+2?$RAG`NKek7p_458Ia+-&@jybmjaatS z;n@)(QiG@cRi}FfQ-w)tk4Sgq>|q;X7OA59&&4Y7D+ausSAF%SLvge^u$hJ;+nMERWLsBX#WA4q?7uVOKi6&U;;z>3s>V`OW#eEcsMsyng zKDC2j)$1Kkj953t7AjCBE>@3Ncz-a>mvm)~&@7_2#2il9WA&q;3vPzWO8Bh;eIlNd z_fN{m;MX4@4^QQF2JDu;&dUh@pP$1pSf3UNa3x~9!mO)C`P166iTyXfzHjfwBI7S7 zMza@i0a0JLAJ53IV0SGu+*;23Gi3A^d-km28DX9`tKo{DS#D-jJRe_f9M0D@J&Er< zA?8}bGmIgai#m}l>r$P0{2u2s={cP7^#V$blVFk9&#U317c*&xA2H6eIr_|JU~_~~ z4IqO|l-U1r;c5e)MdAwSJ=18!^*f<#fAkmk!EKyOb%0czk?Pu#jiUK(SgF=1ceH+q zX!97MQ*)5U9IKbLQyC75KEd-y)-|?cL16OuHp#uph2j79$0)1g*JyX!XncS%u1*Sy zK;5^D&;K;!N=a${*#rT*g+7N~hv*pfPJWt5%ogXwt}9?o0U`v+q=onhM$_zk_e2`b zC6HmG1r_nNCKQmm{}FXS@jfS*U5~2(v4`u2tX1@xE%2h|F4Yx>M+OB13H?T1qLWL) zGSQak_w4P9VC8M4Nc5I7oBGu3En!5@*-Q%D_W(Ko;QbM8oRii6I{uR?`CMCWV>LCu z7(_wV9d-N*Nj=L)!$>NGC)LFn1+dkC+`ib_=5RMU{1u?}FAOCDzC0k|{d)nvGoi0; z+UaRMJrw5`uBWB3i4PukXzfi&YM9`ws1TW>KnDbfzoQy3otTOy$!Xx6EHKoP$bo&P z*)WNu|9&>^xkEsJP%4;tn>D{H+-gdg;HAB`Tjr t$!4jtmyjX#0Z>~pySs$OJ-9<~C-|)XzPU41 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/diagnostic.png b/support/documentation/content/en/images/diagnostic.png new file mode 100644 index 0000000000000000000000000000000000000000..217e80078675f67012e942950a549e40c74ae6d6 GIT binary patch literal 237694 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/embed_chat_in_livestream.png b/support/documentation/content/en/images/embed_chat_in_livestream.png new file mode 100644 index 0000000000000000000000000000000000000000..238994b3d3ad43e2ecaba39fbf0cf555b166057d GIT binary patch literal 389806 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 z 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⪙EUEZxqAqZ>9=sf(|j8tN0m9O#2zFw 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 z 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�zU(N64mUI^F_B)*7I4C`v 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 z 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/installation.png b/support/documentation/content/en/images/installation.png new file mode 100644 index 0000000000000000000000000000000000000000..791db329f9bdd20f80a62328a2516d54352761f1 GIT binary patch literal 69604 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/launch_diagnostic.png b/support/documentation/content/en/images/launch_diagnostic.png new file mode 100644 index 0000000000000000000000000000000000000000..8bfe1b344862caaed04f8a0de1e242f8485343cf GIT binary patch literal 76251 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�+?^vH3qd}&rpMx`_UNMm4h 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/new_live.png b/support/documentation/content/en/images/new_live.png new file mode 100644 index 0000000000000000000000000000000000000000..965b393663500b4c4ffa73e34bc28b87d56a637d GIT binary patch literal 75113 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/new_live_activate_chat.png b/support/documentation/content/en/images/new_live_activate_chat.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5dc15026233fd96bda3cc97dd9b5d62c0e9bca GIT binary patch literal 54657 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�W0S<;hH?YyV*tT$O)+!E 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 `R!Qa)zw)U9#(h+uhnM;IZrC%xA;H>>GpiHnfnq zhTOSIebaHxZszr)N~eX9)HA`$E2(o@^?WvI4@1Y$>7%&Dy=je~#3&}cnJbelb00x> z&vZDC6UF={UaEE^_i*QOyh=CC5!#ai>_J#1Lr#A7YdK2<*7>}B|71@&#!WTF7pxKe zr-BkB=U&0z2wNx7k8ia*_URux6vja_)6>s-ha#FNU8O8*~An$E=Z>bXq-mToVsk`5-ZK6?NN3*dZr>RlT>hWjjpk= zq_fcJxoZ#tRzAj0^(J3^{v0~lfWdzTxs{HdUR7;xEni7|h-|e`_l@uyvroo*fs6mF zQd0wV;^rnTa0lwV78j4-_1%^Kl9JN&?DR8KmRq(g=th}d1X69S$4JmuQSdf#xzi3-QP$FyYL>0W5U?{AW*R@@ibL8==p=(G#1B1ap*Q`W0w%kXqL zir=ZPY^ADt95-0JyIW0C zB);VQqHx_C7Is{ij~rHO0?W$`mIp1bXq+hhK4Uz?-0NkA!Ho_*Dl#mH-cyz1n5U%$rWR-mq>n&y2^tc>8Bu-@eUusxA1T*4 zepL>0Q3<1q^?vo6o09FidU|@UO@o_+jNDGEx4=jy(Q(J9Cq**~L_hki;gb1jimkGj zOXU#gHz5HzlI9x&?@LqDkJfrfUf~%Ze+HN6KFvYZsa3PV0Eu7*%gtA}WP%x|Hqiv} zO>p)YO=stMfSE*N<<3G5p${fh%b&lznm3|Ba8ZzScW+c`UcEVdL}} zH5R**(?m>~@`fd0z@E04S=w^cSScxk^i|7s=Q6UnbDFB2x(}Eg2}A=00u^kZ^pb z02YjPZ$v)yofmtzDrc{$q~5~JZ$`%z?>tT%ih9rC@%isiDJ&n zl&kTmrTKuRT5#!AOSCcornPm*s$5X^*oAmFgshWvHY;9d@m+nxB=CKqP*wwG^=a}f}iA>d99;|RVf8I^- zNxa8pd*@#kL`*78vrK9mC~IOWa)&Tf<#ECyrgfr32Vl@W0&i)>1lqQyqKgy5 z(v)`eM+R7(4@c4WRLib&DJw_YJD>IAd;TNL1w}rZ`bzopjTo0UH@7{1hPJjmBO5MA zzGwGnDp^1KB}>nFqbgo%V_e^?_V{%g*14 zvnxtUO3ueK2B47gf|hDF+}hn}K|hGao7JUj&~J`c;{l4il@r_E;o*3+xBRCU-{C}; zO}xiXybx>jy$dKvmf1Znk-r+_G+5>1G#U8SjkzH`C3?A;TVkJ!n-EQFUVe;6MM3)5 zyOKa>Vc~}JUS~a0D%|K6xF78Qg>ckQuyuB)a7=$V3CG%M^||`3sM0sdFWnFBX5KuLoLymLaXSbJEO;LGlb>X%L+kK*>lz(T4P|6#an%diG zS9ETA`W-z659)`!yaW_6kKSxQhCDiT3$4mUNlnePLb>m-zdTTkd;YwW$rsKe%ViRS z-vowZW#J+;?pSTqGy$QZ^|HBh9TggChz}3U7|8L83g1hYGhLo*qu!ib=)R|#6U1XT zTD!kBx9>3K454SClRvMlhTy9IMNz5`Pt2%54e%vvR=Kua89aiOjOHIE)6s z|D$AlJLtB5x=JqRH<&J#0vmiZQqVxMM326Eb756|`R8H?=+mO?#tz>~M;2b8ht)z!}}#hHxvw-c+UbE{|-6mjGjL|sMLHiJ>uQV#7ZSp?iL(Sb%0qY2_l7G`wZi`if2b5N&*{=^-Z29XI_Pc|YvbI*- z+`h|Jz7r{sbv|Z_cH5WzX!l- zXQ`bzg86%Tip3s7j~2m25&95#kU?{d8k!8)kARzT3ZY^`HzE$W86v)du1EH(rE3C+ zZuSwl2TEo#Qx*nFHr{q`CVPcB5O|^1=6ltuQ*8j7h7zgv(Q=7?}nA%F^%6dX4W2QnmKsd z=w9-O%u4&KGy zfpLPKpyhPKRiL0L-JOM*69wj>pdf`z(M~VTr( zRui326&yxH4c5$GXyNQmx)*LHFoQ;TCj@SCnm(@oYWBorYdFnB@KU^sP=3ob*1|WI>u?ked(xLY?vQ+yFIoN=_ zl%|yF1=uz;ife(I^t2d29ioH61f;}uYv{wPQ{?%Li zF`8c}b!iR13i>0PE#2`819v|08uv`hY%pKReo1xXM)*hH?E5-r#C(sc^JGu_uy>X^ z^Tc%lB@A<@>@=J%HLpm34x@$;4?#y9cO}LZhpq_i!n305xQkQU-XCfZ;}8MI1mRKa zpNa4Ml%G$iq=db^yzKRb;UD59{cBk0@872q08{Ti+fedD*cuVPWY}&kK(?x8WCyh; z*hVrV{~?w_%J-C^l`C+vr;8Zd0Z9^0kkA8iut-z+RvRz03|L{S0Y2rzU@k4p9-#QX zWFb+ip?~-<7a&C?m*&|Kj}TDee#6_hSBCq`@cbJpHFmx18dXnxx#^$FH{OO7v5AR} zuqi$|;>++kCq9i(7h^hQ*$f-bNZFfStC#&o_lcf2GOWfE!E?`!jC#B+9lp|)f8N2t z;coI>Vjj&m+ox_mFnJ5O|AyrYl}Qkgx~}~G{S#=`tte*oqN=+eKLeLSM4&$}E5A?x)MNZi6CTl#$ts;T;m;_WfBo;JqWHoa?e28!b!Atll zoJt4!qWheEK#ylZw!HFk2k>o%+@5zIAcuywHtY$Y(u9OrrhAOM;V&H|x&vH8hFV)V_-z@QIi76V<8O&Z zc-fT&MttScZ@{Ie^J>I-|Gf(2<1{$WSg|u5D*LQ5^`noMk6ohAt9rK&ISKAQGy47O zv)jSY+e)u= z?zpH!X;H9-VYfcu$W+Pyd18*VhBwLmAaE!wAlm4EWUtQWmsx3O^WV`R;;Km7zln_C;_?uoZ_j8DVB#KfdE zESM%=E1jKfd9W~XN95$qGv>>r(R21uJkdP%^Iu&BY}F0g>o5yWr;+RI7ruSAYEu1D z);S6~A(H2Y6qVuoGjm2=za(|XU6q+HlOaACOy9V~2pLH3iYK`Vq)3JaY!48~rfJlB zQj5d!zDfZ-?S&`-5_ELM#js51>>K?SJGaKFRN?G^yl$&#kT-z1r`Yd(&qk)~U)=s05qE4IP zOAh;lDsk~EG4U-#4@|p?o=!cKsK;B`K^b5_4e-6?Bd^QMEdFuaFJ4a0sB0ko*HX)k z($`aQQ=nfC+omYPagJ%v=^=N2Xd)%K-EP$L zK$wizRS4E0-NCts zkGg4mdIuPJJG`0*cdy$D#=*_K9!dCf^&3oQg-UlnELES6;Q1ame!RgwXS>%R*IThx zL5VJQvMVAl!k|l9^>`IeeYvPTNm@!`6uy&vH``dsveUc9j}6plNS zZVl(v8o#%%l%;O~^O`p@+D;&yO%P_zeK*3fe-i4WE>iB}vU&yqpOI2wu zaNJ0IxoZto{r2EocW;&gvCUeqa<_qV;-HoRnpBUod1}n*0T_Juq-ls9JIz}F zveF8VQP*_pew{1E{j+M`!xsVDTiH`-!#_UD)cqP*8xKmw1P7JhrDJ976p)!3UwyoK z=&yzdR1zg$SLM3*l-W4Jr?!v^phjT7I}ki(&Nu3pW3PxvTrEFn($AfFZM`z|Ksx+D z%VxDpTBC$N?Z*o5vaWLK@1(gS%^vqw)z|uuCN3Wyx7WuQ4iRfD4(l;)FMqGz&zebm zS+lc)nVoea;zlShz&8#RGKyWfdQX?Um)*0@XylUfboCn$mY2F?*%CriU_zU$TF?a+=So z!c4K4qq=hX8KtkNNMpL3FwAPh^{w{Q=c)2Td9FSlW$T9&%fM>9x!J{1K7lU#X=mDf zEFEbi(qI>mgW1Elw(^uua6KI^H0!~4Lerm&aEo`%bsIpvSA)EN_AIvH>e0vD!H2Md z4rY4j%UPSWcxyNr@2`I0G`}1e#Lr7(u-iBQ(+w)@p&JD%YZd%TF|zG={I)A&@qU8) zQkX->kOC9+Wd2D(bvx{jp7rGiXm95E)Du7B;|N8^JTWdZA2vn-0Zrie_hgwyDwaDw zSQ*@^v8jI$$;5MwFwx`kqA>=)^v!IGicbuSxK`_)kdy6)*BC#++2N&n!;H9QdisC_ z>hb%EupDjnH}%B33ME6Aw9Z8L4d!kzXl0e1Z1}kitjV_ROjl48!+B5i0w>>QTkty4 z2qhmF+kU;4*|#Ksx&^F=9$aA$qhE}|gca72K+2z1O_i@ud5P?@b8RvGbscN@&W$<_ z4~z^cc%ci|Er@xZt1r{vHN$8&uolK8ma0?hbzrtH&lC~EWx)~2bg)tX>2!?9dZA># zb-!7r23cJ1o#vhK_9XED)dIsTaBo=xOg7>u29p+JuC@PW1(`_pFd~qT%Tu_nSM;G& zsPX-r9=z;&m6)8&XwvQ2iWe4JIOZw~r0-^h;qz;i>7tiO4PhW}Zq3qB)6gtB3%!@A zJ3{^t$9%ED&T)iIf93-*FtKy&jOb*j*Y5`(v}o=a5k4-Q(k_wKlYI|KORQ z|J#&ev@XTPnz#j%Y7pJQ?ZTsEH@btbnDK&DHu9r)r5q4*dW#j#i_1eYl5aQeDn59) zD;2R`ag!s3S)4&3DUYGF1i2C-m)s|jeJHuwi-gZREj4KiRO(kw+ou1JYtbyXq8q|^Fipg5+a7V9zmFFF@)hW2}_8 z$8j`2DN2Hnk*EmYcTlI(n|W`>i3lEbH*vSYVkx0yuA48z^RLE<641F(to0)7O}3Nu z!C1rrp`XKbg!i1l+(=v;M7ll_@vaR5+B`kuu%Dcn%5dW6OmB)m!}E;qurF!~rmy|x?8I%~xYHTT6k)HT&eSN>%v3G-nk_*n4l6H5US2`5 zTs41uca=NDU@dxY&w8;Z)*Xpt5F7wbj3sg-$cUHI-*H{G6qi>Dkp@9kPil9v&8|rq zPoBAfAja@{5H>%0*#@;U-$}QB*|F_}yUC=}y8WcWvS9EQ6H3%4kCP*>$}(}e-0vtF zQ|{NQRsivL-g^N|OJO3UjO)5=eOXefl{RRL?mh5{>?yXU)hKn8hTj>^Bq=)X7D^{D zg%}>5Jl2=Yb7}uRf~G2raT7>_{c0FZ2&Wx%?QdNuDP0`>2%)JjbNoA|HG1c;{1e-- zLGtuKv2h`f&Ac}LdpKVbK*C^ph1o(!rrmJi{v~un=TENcf+v`a>UR7bw>AeN2r9qZ zqXNghF$EOB&k3#8{(AR#ibB+M>{`+&Z^4iO7m{BTIq&CyQgwRL5|yy5qQ5d+pa?o8 zYP~gjJ?Xrr-rfi84q|a}%emGG%eOa9k}B6mUlqLQ0TLEzUqrl8YXlFen-Uxdp#+K9 z^ZZ2(uTMwfmtCEr0bp%Fms-=)Bk2&h>eroi<22v>FQF%VrMad>-`gcb!VEIB2rh#H zfL>ze4g*kQ-I=Rt{^@Iw=R|$^ELStGPfrMEvnbH& zy2`m9RGM?#(&HQ+m#~EZ07qFYjX4=#=P_&JZz3}SywX&&l2gktK#j1FK|;DbPOn+n z=;z_u>p`#Jk}!L@^OTei9J)R%tKREe{5`slE^!@Zra>P!FrmqX1M*%@(TtAgeNIy< zPw$uuRulU9kq^DzF-f(!JG}huRw%PpNaqXc@nSiB?{We9xnif$ALGl18Wy)-ajIQ( zCW64Boa-s2TJXxU!Wxf)I}H+u-tu88q^z>pT2P&^Zqu+^)n=lm77>l_JmEg_EZ^MD z$ShsUia?jqMR9a=8yZ-Is>WtWs00q#1Gh=a);&rmaTVJX+v9OE zV&YICH_plkLVJaN$k^ZVQaIt9vM5SdMlC{1a#t`q7tPX0f%CwrA>pfHdNAa*U|g~g zswJaWh^a9iv&K}rnfu)2xpFlX)aEeAoxl8&jw&!;1}T>kC6PT4@({;Xw;+!)mKSvl ziq{EuoalNp28D<69CBgeQR}r!`6qx7mTopw0n)zj2??)!$PazNu_O`pkp-~vi4d4d zckZ`X=%OApQGq2A(5l~^C@C%>TbZ`ln>J`%(pmIbDV>dteP!-xmvEBX5PA+wfZ~An z7iPZ9pg3}!lsFkm$=)oN7&v&cFXM8ru8R{=;a842dAra^+cI%G?OearB@*81^?6?e z5}$+pIo$}B*IsqLu2UuLjD=2XnX%=EyNob%-aWQ{bDNTFJZZ$IyzF{`sV8haK@kyY zF?i$$$J}#i^bGy3V*N{8u<3zDgkij{*R2dy93$d>u(REqs<5lvKmoM?Fff5S(MPH~ z*40B#kqWy;zH_aF_DXjNxvqRm7 zJ_RJQ!-vhTG=u$-@I=D2WKyB^@Uibe3}Rhs?>I^k@ZXim@WG?QwJ{1eJ4h*O$%_bg za~;Z!!?!9Oh6*wD&Ni?KPqaNjs_=WAotqgN!xb&Rbm;9H2fh-Yhf_TyO?e&D3)cvE z?Du{gAC0h!Wmy|7l!Zo`QE$#iXNskGGrwJ>P%}TH{iZA8@;*0LZ*r__Eq3OjJSu0I z;iHz{{qm2OJ6PUY*nb}mW-gLZJa3*Qds1}f%rI_w-kcp5_W4-{NuEQSKWGQ*jBA_L zdXiiWkU}JiH|G1F21KdtT4$i_cHmt_7Lx6nF&D>!)RTamaXdm|QrK9QBm&Zu(~~k^ z4sVV6jX?ReRFkFUss;4j~||OSY}0fI7{c_aLB*2(y!%HezOtEo~@OY z?tJe;VBaSCjtMyC6{38}1kEUT?XDOW9GzHOl)F0d4+&e(F+Z<7ksThVQ|@qSJ-!EG z+?|aeKMs>$Pm#PFPIpQT2xMOJVb$G<8{bOPLS>cl+V#Bq^i%^dn{n&5Oh{lPo<99* z*T0(cM69_~K`j6Es5}{uo&Pv4^TJADU5dsq=l-f9hL*g)xkl7*WbXn}HptZ1rJ0e* zLJ*&#eSTP>3MrM;yL`=xZvm*vL!;iV&EPvX54x@#+J(#;I%yx&k4Jfy^Nz0@Y&rJl zY?dmX!w!b|P{dyRG-vdOA}g5mNk~c_cAH`uY}be56uE%mKZkuovuc^PSp}Cq(zK|G z%6eje0}MAGGF~N`zy;a-Q*VdqVNVj)bQLl8b&O&``Vv)I@}JEZ$S5dKK*8KU(68)! z2m;)8%fQCFT3X}F%6IDPLtnkdvgn4jS#hvweaP5>eE0+^=~w8N;?mOQ_I6op_s8If zvHOh9j)Viclc(=|$GUgp47>{Ky5}|g4+%%HU+@0BJwfxgnd0SMbLNhno!z0awY9a4 zO>pBY`Ea(u^gj5z*KgcNh4Y2xj7bRy;={s7#6m6{QUB*{!e?T?>1o&A;p0<}jg77C zB3@S(`KK8}hle-%yab>_7!(CV!;}mq<9DX;V5w89!XF2`;GHyKFQOxf|Gh zzX_kY<6ezW2%OCc7#ZMLim%^mv{?)R%Ym+D1gN-C(4(ENK2OmDj#+tn%|yp=#zn0F z&7b#IttiEzqAI(~cKX!Pv??pe?I%uwj9)we5I7Wg+|3W=8}HiQ>;9+bTfed@bnOwlRNG3)g6RbR>V+1tr-@m^*1^7WPU{-qhs=;AlDeVG> zQi&4BuEv>4>ENTC1>$>pR#rLi8E^z4`bxbtO(2-(?zFp|Am^il7_1Kj%sqhJ@Y#UP zrXh&RORQ$RfPj(#Kpc^yDQM;|UcRhoWtD@B7JyS}LLV;{zKQwgrpCRyv4y~X!_TNM zBQ*-7yFXR{=8g9xcYKOm7JzdcI=^uC_x7F!fYxOjz*XbM0BWQ0igJLu;y_$E4>ka8 z-H0b(CJaIf#1=SeC<6Nb^zogBf~$**X#f`)HhjGUX?Yq_O28>qKV8e9BMNDHFesLL zQ{2%UIN8z<_N=|OJ3)i%6s=rh9od7 z%)X`oM4)}(-3EX~EI7lE3A&C5IMwUtE&#})`0UwNI7KH8dX>iTh!_Heu^);B!0K7XLzXA_W&H0vvaGm61gM zuu_cN;Rzy^{h<%1x?Cn%_ROkkPhLTmZvm<;=uA>>_=&3_aP+= z7S>4w3}iqKdIsD9dg0-0!$7COY5--J!jmT-qFr_eBNq`bLS$r-l>#&aLpW|?b7zNX zR~0;{QDDVk1pknxkn9VSG7U8OjoK_v1G3bMDFIW5gdKwn4B@R?8Q?ku(4aK97l(8j z_IxIw^(w#r=OWhor+VH!gW1SqyPUFCaVP_hL*O!2x(z`5B2Z*HL5ysk=7;70`sY@Z)Le4wMDNwU9q<|Hoc&Yu|#`}5@w|Est!kEXhP-`&mgBpMYJC8W&r z5Ft?^B!#39l6jt*XCgw849O6Zkhw|7JSSsho{~A!xt_iCe$QF!_s2PFz32C{*1J~k zX7BxcKA-2ghwHxY>!Q%_r-A5F7UtbYU(k$P;JSYYJ0~lq{98c$|HX$z6!vYZtf&}@ zsMCtoz(waWP#qqn`TP;SwLDuMV23>_GvX|FFi1Rw%J%B$<CI%o7~UYy5v7r8SZE!`D{K=U1Ui0gs>}$V*ai4*SX`qxF zYuX!A6%7ua+H4cBrQ^(AUW0DYX^Vz2CTT1dP#VWLy&$G_48C$FONrBv?m+B;9my?@`*-;MNtVUcI@2 z-5F+7kzc^!eFf!UNbC9Y=h^u9_>MDI!YbmXo#K2vzXSrO8ANI!6Ep*$g?R*-J^1P? zVwXtdK+N3!%wcb^K7?XOwg;>$1di!*xxZEL*zB0w>`T0&OS}qNAbKY`A2155LSjG# zHVhp|Z=qMFo#|M0(2n*zg~E7J(%tJFhdVGQ z*`{zbNOuu?A=u=+O92|8svt1wy##8JS5SpiguGihLI73;@Kcm2?#~QIZ&4SB6dfV` zI0E7m3|^>vzgZ9p@{=x5lB&asw)OXO;W5DKaEOa*L!`m{mo{xX7Pou&??Bwd56()u zRo7TRmSBTj4G$kcRsyfXuw^Mq;TV@YqLoc}F2#SnUqE6j5Q4>FaI_QdiXdnR!hrtT z@SD|ZGH_^A5{l@+6of@drnRcx!})uHBLNlN_3)@pAIOS!R7C@{=44s~oD*o*S0LzvY z=Z+l*XQw(OS=*X!e>X_1EqQS7-idn~_7TF9>89D~U=T6`)pNXvwy+diFWTk1nadZh zO$#^xHrS#a`tdrMT3{bj#7~lGbfs8ElXoA7{cIC__Be8=Uy&&0Cx+L`38qgQZf7TZfyrJ#ASANJ{gRZ%4BG!jNcb9>Fg1*aJR;*lE34SIb zUaU4HhvNLGo=FMIHS6Ogg$eD!Kg=j{FP2Hc# z$rw=4YP~h`f|(cwdkqKl505{^5>95%{E2CFn{_Dy_bxggv|gXRGCdA58y^I$uuoB- zzXUbQL-2LGP7TT{l*23YJN!PsPxG}D&b(Hdb(91=U`w_+bvey%&#=^*ee2%f;OK~! z*^=!G=Z#yQ z{`Kiq(>JN_qL{m^*5-Nq$%yZ(5#NR`#+WMOV7-ORTNS@hf1ML@2>vVQ8qG*6GahN^ zr#V52@|%CV6iofX|3-KApCYx7#V`ed6rRu7#HqJ}d}$x)BK>(Wru+vtje+9vL(hK?v@W#v+vl99nd6^PWqk<7mAnfuzJABtaQ-c=T0-5{bU`_%Xr zdP^jXV%N=r|H$CO_CkCl3kH~MgwKp3qi8?GKHe=WFW>Y!7L1QFCNv{m{OQM)(jYEg z-ioa3GN5#P=FKEgID^5QO0Y$3lNd#kW`5#Qj9OGnDS=UuD-Jd9(|0rf{ZoNl7$V!f zzs9evk%&ZJSU1uUp#2yaFtHwMuv7E~1LRvomSTNqTYW{aFoNxl)TP98Zn&2<-m(Ig z?jq6~I67~_%mt1lBH9Fg|0HW@5Ga(xltkecun7oMZ)apM0BIRAq(S+K<lNmJqX9^QFf@n|hf*Ct7W@`=TkxN;fp~aYQY&?kCd$Sn zJV1o63V%!jjTef3jcWTK9dq(Hgqr-xz1XLlbp{Q$4j-8njwmRU!RwC{ zqGt#6{8}0I7GB-?sF?uOXlrc^!{N&u{chqN4yP84S(5c>0B7mx=~-}fNNBKM;t#jd z&Ra+8FY)V2yB`sA5pOGqaQgRe_TLfZDJB86IHPK@TKvBIb#*W|PkeB&go}^2cPN6A zi%4xIikB^2s;sH$|Ml^{7+gzRm!dbW^aa6eI-qH642Ov=`n0~jz7kEj`%b+%p% z4YZe%2$b>fvC@5ZkLBsECF3zAYttBr+%_m6LoS%};IQ8J0>FQ}4YT_)k?A8+L z;&7lm1R?{6D~Q^SqqNg)Q_@+civ9uQDlW5Y2V&#D0DC;JK$G|G^YB5`jpII_+Ek@? zliC^eTR5izToI7=jxsg(V~;KuoO+g5X&-N$OIX2N2VQfb5|tNObIRi4EyQHGvWRJvMd{ z_z1~xpj4m?%c~0K{prgzFY3EtMNb8L5Q7T3kU`^wVOqRCv;7FmTEMUAT}9!FN2t z+7pBQ(wP)sexJc3ynrehIflUbRgjbR<;qA)^TEVIS=vd&<p@S{aQ9!}wTZIC0~~j8tL~iR}TUK9p9~&{nMu&#zF+>k0#= zh8zP1=P*X6t6{Tz4ZoBD#*D&zSOJ1)cye{viJ=F&A<~NoZit5DY7z+nV?sP|1n(^U zKRx}8VuLh@enA_Mi#!i7$SUJ8Li#llCYC_H$tehT0*O7u3z6_m*wcRG#-S0KSO;6m3Z>w(NVft8lY5-xQ>r|hn!2pT?}mCae*REQP*|i1@ZUT81$*Z z5JDCosXQTK-s}$b!5HEs5lB=Z3}Zw5i1v(AKn)-z5(-wGSOjKAyfMS@3aCUER2j+9te0`G`y3LPtF zR7ZJ;7m>ptHU^wd2_%IC0RAhe8(7 z1U>b#-MdgDEa|{bQt$>Q{v6eUOz^g9y)zHN!yeAt<@v3S94mBJssIBCap@RVuXF_c zUfkkUTk3~}amZ_cnEt+g%xSb&MN8`mLXC^FT)TGdDsh0{9TmTepoJj7T?i$g2wO$K zSg8K|PPJz4tqs*uhrd310YdNR&@(uvOQ%7PFDk=;Oei*uF{l;2&0G>Y1I2AD4O$7? zJ2^C%s~bi;J9etWsIABMhiM=qcXPBdeOk2pY0+at&*xWvGG?QchL-q9h!(`)*T@J; z0e%jIGOVWV4aWZDCDN*+hPJ>3yBYx$~ble*$v0LO>^k#BHKm| z<5>w69E9;Q!EQ6D*s3pK&!EDmqw6x_OOR?bCH4Hc#iViM$X(p4mw22U02@$$c$AWo zf`WcH$Zca#F_X=DMhZHJ#fgQ$kk|+Wm`%`rKH3wh9`l$0fSo*V5Di756YdGGp$8(! zNMPMY@B~^Y8XVn!dMkVqviBFb5(42ES42D@?9xByk|z(Fx&=FsM}n4nVsg??a}&#j z%L}JVW!CHkG^6V_odiVc1qd~}$vuPA=57UKo?CEoz)u{D=co?iHJO_$^J~bhBBmU# z?K|^M89bq7h|oCqIwcp*C2pi>0q*QdeNXWSm|tXG(U_=!XhX_lF70UiCK3+|1s7a2 zrp-(+j71_ra?Ak6eDiCL)y>v{h({@I9x(X!`G&&8f&(TYAiquX`*}cAl@Ps`;o)CS zyGbB>Se**Qh&D)wQq$6mLE9~xwSl@9n>D$-858e3c%!><03#Wl7C;;jnjx3oI?8X? zUr(ofZ1f~307-z4*QZedLG&c#A2u3D&9H_1dMz>$*J~BOfUOVLj7op zFk{;JLgS>brUJ8FuJCZnuG3z>dq>9aejBKb5KE+3$5k1#uAJ}s$(xEUNm;OYp#yo4 znbxCDf2(fhF%5R2_;AvYdCLFK_IBzD|CLzmAGAd&pibKzol{8kSoWgd6zN+^>Q3qx zxo4-;(Jcjme$vGXIRF}RVcaDNh;)zwbMWx|w)I&|{j*;w2*xzL7o`1D%JwGkLQEAq zDji{E{)WlQ;Iu|PS>f@L`ZCjGy158>>Zq>~vybRX0(}@68D+7aLvRR?@S&fdA3?|= zX~4E{Y7SNbR%CkO;u9W-tY6_Y$@U;MvV$!4{tFY=G?Rf z4wg8P5@_8#QQ=Z+V6o3r#;`|`YY0iJsVJka)2G6sWKmDf=};C(Ddf)v}HN(eHQ*cDb(@HVxV zd(&^&uv-D?mZi}p!8bVktC%FFBED;YOzcAy^<9)HVOF}O2=@zslbH%^>`MAAy!BX9 zzf>N=Pryc_CI4l)7{xEJAZ-bURHq8Y98kdbW`PqX6>KOn)gVnKw!gd4X&`CLkS74? zHY-}9l)%sqYY=@pB@V(xRe(>$lAIAsB7EWW>Y+VCx8qn(TZRg!ghWncFK;b6ZM_MlqiIfj-$O%cuMU8XZWeNXFQ#)HLuvk z#bu~>wzaQs-{s4f3EqWi&DN>p=31C;U9s(|eRtlaOEj&dZsfPe-8ZL`4E?UYRbFhuIpRsg@i&L3W*<8<_7 z+?ld4Pl;$qXj}w7ont#qd)yO3);E<8A3mJ5DtyKAYXr;19!DA2!O5x4kX|9XWTmB= zG7WC<>1aaTKF-Ml00o4;o+H{bMgj}q%sJ!|N*i(THcpuPLDT;qc$rGvF|kWzMzdoG zMjCAhBT%7H^d{g4gpLVdGQva4oO>Cw&U4zasVTz^3^3rFJV$X0XY@;!p>pvnpt8NM z|B$xS@n1j0X3y#C$2%3{ezkRVMWHxPT3JXq0&BeDl5VN#E`$c?kn8byx_04p%R z?3foPIVlG5n(A-RzLY-n(CFIb%a$d~rawcVMPRS(%(!etZ}gO$CO!ot+z25Z;Oc>z z{Dml*PPS|lGMBYa8!u{WWn zxI;&zy{qe#QF>se9Vunw63|`YTu^NG65%a7z&tn>X!JY+6Aa*r;5g(Jv|pe}E-i{1!4+})31?Q)7O-NY!j0@>1@pjI zfnbL+X;4N3lhLyTuY_W=pN}~2ZXuy}pPNK%_Yh13V(Xy@DeC)G&7W!y^x08Ar~VZR z4lJm)N8)iIFCIP1ChzQ=0nLPg$P4FE6hZw~mEmATJTfxc3REu4>=fP=&H09$AIS@) zQ{ijH60cg0uDyy}LXwmiNaVx^`G-2~)%_IOjFx+gIRX@lpyxlpzVnHT)Fn{rb!dM= zq5MCLaZ%s;@A|oaX~68?TN&dPLX^;nf&5ZbYDtZ2o3P~}^yP$3ze9Y9{2b{mnm6D| z#>V{6;(-R6<$Z!38L$SEcJM(+c;i8!D6F03d&h)CP((Q9Rb+4imb^Dt5+WhU+DWNw z;!plW1`3T%lW6L~YgO^OO*0Kh)Z);TM2-Q;N1(_M4%2nSn-o!DU(n*G0vH{Z!V7*J zT{b(O7HKp~!t^SrqCS`eEg;mIi3OgWC~;FmgU#eS;XYBDZWaaXP-GKGuk=DnXfc2N zDcq%_0X(uyZc_>UnPWPnV1Yat1&fE!P)ZW(1KU*Az}-;zI#TsO`rHOz1T2t1H!!jq zDC^y=4~7ZG@|+7ses0*ZgEv>(a+wM|V4WwhpXv`qUo!+@MTh*&5?ha%%0&x1U7l>Fl)n!n6I- z6YDK6kBJ<6eC$zVRISi<6OnH20+A@q#>mfSeGch~F%HddR5hoQy~o3_PH)B2%o3)z zDWy)&ve>HO2#HFUCE4XB6(!~wR@u3+Rfge9g6TOk`Zc`QjJCz_tLR4s< zzkTZiWEsH{s;n0P9Xg{o4Y%S3gqWd`=6^tMKJv^Yu z{i-!K~}QCwnbSBZu=UO%HQ&ab^`DS80cF)$DY3SpGMW#dKhq4C)>A}}>p z!bni98XbG~MMp>5|MZdvsR%aWJyHrQG~EHJ)CzNbfdnQr3?XlS_=s> z6q`zbvfa6N&#F!3#L>d(C zn~ssO5YST(h2id4`XGFKm|^a&0wAqrN&Qf_;Ct|==kgKv8c=tLwQ(+q?$W2$9i zwt3VJ=$wHY#S5eakTIhOJbi#HOehx=B?}^T(nevHA3b_>t-&mQ$N|wXXaSV9w7#Ov zZk~|qln{>gyffLYaDvz(ZD>~<;&)@B4$-emwSC;y8dX2_?BnyrU(EKtupDyIeC(NB z_M);SK`Iik1O+6nwmcF#XhJPeICN00u+3giZwCc1l=*fT9CQWupGUReB*TGsPSwD8 zQ0Cmj%uHcoV(I`dvpFgcx3OO$o|;A5kowLbC`ha-jtUN$^#OYNdI>z7&f2_%A&Qw7&X!dw88jO)2m{IY`y9ozJ2J5*X+D zZQHavh8UZE0nD=!?(ZMCAn?>-Aajh6j-YMN&zVLlv2KvFr}}%WMEDP*+ipyri=;t0 zvYvtvnk)Cy$B$=r=)Wu|?8t`&x)HH~Ja;hSF?+VlH6Dj>8_pKl2LfT;#oyuySL6k@T83#|; zuAdRT3D!YlDA$pnl8VCTH)D6qxQK07ijY_J)F}nDT0pH$)V;gym|dg89&(-N`>^!@ zR}c}dMS~I{tVtOg8XUA3O-JIgq#5B7rFdH^q!E`cT}nBN$cL*V?mDkd;JD;8DyBzm%+6zOL6+6n!{$W|D3p2(5kt zwS5ERl=K@>(DAoIO;DydFOQH+PeJOKMNp6^>*^(F9#&Gyi2idjRx1ZxK~`msjKEVr zAp}1Kl|*uRq7g8&h>_MpoCytotbX@|8S%sr9H&>3;&g;kz}5WoJ9&8@p~NRNV3=6@ zuI=$@%|wG$lVbyh=y-9)9)d0sz&^Wt32DTr;nC4|@%BW7r4Yn<54Dsds;YFTO(uOQ zdBVQ}G$3W235`GJjMX*!q~$s3GIklF*10i9KR@7-?+%bp2?`c-;DL>9#l8pQ;8pM| zp$(_Yblf=vJEZc3u;o$I|IY)3f?%Q*pcT^nWw`cSO5J8YqqU$9TmahYQDTwMWt?~E zp@p!iz*gM8?4R$P`crQq);)m8(=WDdKZZZL14B;K*bZ$ZjZh{d>QA`!7ng_)t;CA0 zyDRU&>m%nBhmFcXspCELdO)YKTTCnvkqQw$M)JIW;uQdOUex?iRh4^rEQpPRLm%no z#>`Rt)_J&0-fw!2h^+kA#PD{R_ix1)D%D+^eP=W7d0PH`IOqIXt=kTtoijwgG_p>v#~1y;OD6r_P2zs&o=SA6$-1cSQm!>;9KCiI#~fWa)2e!4 ze36Q8@QpUNXSud5x9cnx&oXxmEY4=0%6-vXwL4TtdT**L{a;oxK0OcR+~$pka=uIi zo*w)voBQ3PKiVef|{>&~P81N#m2eywP!|9UcN+_>?Aww2x{ zwSdgZPwF~a?|r(re>B|F(sX$I`o9CY2NyIY}tjZx~nVOuY=D~+_?Tzo;8_bc;-pRd3Ns)&5!7_@Q6+M zqctlUvE-(5!px;t!om7?H{Tg>SE%avF4sI(cVW|$hC>%@>2w5dwN|AC6^uxDPKErL zn%$RcJ9Sz~TwcHXv3uX49UZC$8rhQ{_Gx;5(Q8Pbcg>Rt8{k*}CdIaPStl0l-;ro|k10M=*w_Ve`Ta3EtJ{}a8(Urn8}`sL|Kugjq2kvvv~J8l)9B5e9{VTz<_eFkD?3W6hKGJ1 z=oK)P-2PcKW9ufD!K_%`Z_%&YFAGanYuFsrlXG5j?4$j0w~U!St^=D6EKE)_y4a{U zwxD^kAm!I|+vyHPE{?2WCw}SwY&2&1CguTwpoVAho0nHrNqxsL5)dpXu21muqnur8 zzRDnD{%Ji9ah0*0#)$6HJcAswnCO|*=#PEM*T4!FfBx(*lVdq2ha$BG*~rx=%6Q<%*q+sov7%AJUI5OxAaLuW@5~ zTyh5=-GJ>H)sa4p1Aor_8vLZAqT_PPo?b`rhK1RPiJGbX5+#F`{06MGCBEvj&0Cwr zG}Qg?Ejutiu9ABB(}m3A`Vmrpck7+#!vRAFiT(J)OFmxscgNe2D{+?X#U1o&z^+-KXm#X^6xuOZ0n~m1TdX- zZeBJe=c3d$%D+kU^I0t0bxPT$h*fg_S?u(Xi6Tke%eIX*u78|*StZZi-{d~ven)c+ zj-ick@~zngO?wQQM=smxNorpod^V%`czTKYEjyj+N&el&?E7d2sr*pwF~$&f$rZSj z+J5(P@-Jh7}2>-bIeeAV&v|SCl+HBe3YE^h$U_cvR|ZM zH94z?d9ZUT>b`d!Wr@hr=T7z{!Kmpmw^ykq+>Me8Pk5?)JGSARq}}MDSt38Um76KJQU6z$_|51HrD%`- zFFLMU1_Z|7DL!tdS8p@aJ2e=csPL9gLW^g2`R%_)_MO!}#V^J@hy#5O=TQ5_+b#r`7<)7n}w>e$H zCQR|62;b*y&;MMXW&57lV^1mQ`fXEY7H)I z&cT&`{=3w5>n@)A$6(&(XrWD$ZKJ6Gv`-ZdA6|-xi-nJm-W{Ed zB+5cDFE2m;!?}br1LboUc<9OXp0qw^P0dXJ51}VsBMeN{A4Mxn48^NG$lS_bdSg%!NR3{KGox`}}KJN{l! z&5K(PcdbMxeLEmz7U;pD7P#PHV4#wvB@YF&TD$QQ!k&jME$4tdc2>pIjIgQ9tuQ?Q zmpwDe0qrZVLEcvC;K6wS`cKCpBWBcT=D#QXQQNFiuKDW+>KEpCRK5KA^$4D(ka;tONTXuvVJEVs zrkT+cikiCmAm)qSV0gz&!OkUMMQnUG3`qM}@Eg*q5v{{pZofA?;}ZzJYP%^(SvCrG$k+uCjv8CVH#gcPp2 zIs;GnCLlmgQ<^e{g5F`nm8D~-9rV!CnzyUp4!weLj0&?bfY|rly<_HMi4Y+O#PTyCW!j7OP!;?eB5$7W*#K zdBkbH_QjGN$GfUyw<38mD^b_bAiU6EgM|sx1LAdm3;*&+v!A9ZbqzWl{ei7^@(Vh_ z4!Pao=Q<#In|RJI1@LFRSWF|vciH;gYcWGGRg>l7gqwS2{{ZLQojH0-enCiR=uS$1 z#!#_VZvDtY%llUMQ@?Q^PebR_W+8KC;Heftt(KOS_Wh|H{%B6-^#N!bg2Ihi?!dQ% zYmJ#s>5M%M>4McGryJ~qt8WZii@Q~Z3dnA^Q%6TK#cbz7N3eepqc5IG?WU2 z6Lm%)n}=}}-+@h&sL^vjE!sZump%J;d_mY1)EIXN3vYIZWj3_`(YZ~{Y7cjAiH8-< zSW{q$f_A95^gzFlkQs~G_BP+xsMEaPZDIxXy=9%`(&oexiCr*zKsQx1H4mRX%S@mU zW>(f4Xni?=JQ>|q1?X)l!IMa+HGQR<{S2Fm*LmC=rMz6=AegTb!>Z#7rv3Jv{(@TN zSDZT`blwix10BYTyOi={U|_&&U~Yr#oK0KlJ{ci6!p6l_EL^ci zSU3QN9`mJ&sMK3+jK%QOGx#(36vcnM>!YBcqnN;asYrj3o~t_S2yJ8kJaWcQD$i7) z0{u5|f9~Ckno~r-~@qU4yf+!#J1(*IQ)6l-_SvoDb5KI y%*o?d=E%e=mw5L76Nc9q@&Wj97cV5bH)rpjH6l9MbijzKj^?w0CsQ%sn literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/open_participants_list.png b/support/documentation/content/en/images/open_participants_list.png new file mode 100644 index 0000000000000000000000000000000000000000..34b38e7588f42924f908501f4ae3daa1ff13813e GIT binary patch literal 22841 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/images/share_readonly.png b/support/documentation/content/en/images/share_readonly.png new file mode 100644 index 0000000000000000000000000000000000000000..7481c6ed458232f465a1602e04a07aca9a824b9e GIT binary patch literal 154064 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 !)w@gi$9zTAJe)ntt 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 literal 0 HcmV?d00001 diff --git a/support/documentation/content/en/intro/_index.md b/support/documentation/content/en/intro/_index.md index 8f52a1b3..513ed368 100644 --- a/support/documentation/content/en/intro/_index.md +++ b/support/documentation/content/en/intro/_index.md @@ -5,17 +5,80 @@ weight: 5 chapter: false --- -This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos. +## What is the livechat plugin? -{{% notice tip %}} -You can use the language selector in the left menu to view this documentation in different languages. -Some translations are missing or incomplete. In this case, you'll see the English version of the text. -{{% /notice %}} +This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos. + +By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream. + +On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen): ![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px) +The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those "anonymous" users just have to choose a nickname before they can begin talking in the chat. + +By default, the chat is displayed next to the video. +But you can open it in another browser tab, using the button on top of it : + ![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px) {{% notice tip %}} -See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae). +You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae). {{% /notice %}} + +## Installation + +As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. +Search for "livechat", then click "install": that's it! + +![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px) + +## Livechat capabilities + +The plugin has many advanced features. +As it is using the [XMPP](https://xmpp.org/) standard "under the hood", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). +More information in the relevant sections of this documentation. + +## Federation + +Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them. + +This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. +You will be automatically connected with your current nickname and avatar. + +Of course, for the federation to work, the plugin must be installed on both instances. + +## Moderation + +Some times, you have to protect your community from bad people. +As an instance administrator, you can choose to disallow federation for the livechat plugin. +If remote actors behave badly, streamers, moderators and administrators can ban or mute users. + +## Chat persistence + +When joining a room, you will see previous messages. +Even those sent before you joined the room. + +This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators. + +## Integrate the chat in your live stream + +When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. +This is for example useful for replays. + +In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video: + +![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px) + +In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent): + +![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px) + +## Other usages + +By default, each streamer will be able to activate/deactivate the chat for their live streams. + +But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD). + +You can even activate the chat for specific VOD videos. +This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video. diff --git a/support/documentation/layouts/shortcodes/livechat_label.html b/support/documentation/layouts/shortcodes/livechat_label.html index 8dbc9b8a..c26d04cd 100644 --- a/support/documentation/layouts/shortcodes/livechat_label.html +++ b/support/documentation/layouts/shortcodes/livechat_label.html @@ -1,2 +1,2 @@ -{{ $_hugo_config := `{ "version": 1 }` }} -{{ i18n (.Get 0) | safeHTML }} +{{- $_hugo_config := `{ "version": 1 }` -}} +{{- i18n (.Get 0) | safeHTML -}} diff --git a/support/documentation/po/livechat.ar.po b/support/documentation/po/livechat.ar.po index 41e68f16..b9e3cc27 100644 --- a/support/documentation/po/livechat.ar.po +++ b/support/documentation/po/livechat.ar.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 19:41+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.ca.po b/support/documentation/po/livechat.ca.po index f8098fa0..4bb6d07e 100644 --- a/support/documentation/po/livechat.ca.po +++ b/support/documentation/po/livechat.ca.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Catalan \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 9fcb414c..90c82e4b 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Czech \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index 334fab5a..bbd0c768 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -7,12 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-21 00:49+0000\n" -"Last-Translator: Victor Hampel " -"\n" -"Language-Team: German \n" +"Last-Translator: Victor Hampel \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -190,35 +188,25 @@ msgid "" "git push --set-upstream me my_development\n" "# Then go to your github repository with your web browser to propose the Pull Request (see additional instructions below)\n" msgstr "" -"# Kopieren Sie das Repository. Vergessen Sie nicht die Option --recursive, " -"um Submodule mit zu kopieren.\n" -"git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --" -"recursive\n" +"# Kopieren Sie das Repository. Vergessen Sie nicht die Option --recursive, um Submodule mit zu kopieren.\n" +"git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --recursive\n" "\n" "cd peertube-plugin-livechat\n" "\n" -"# Installieren Sie die NPM-Abhängigkeiten und erstellen Sie das Modul zum " -"ersten Mal:\n" +"# Installieren Sie die NPM-Abhängigkeiten und erstellen Sie das Modul zum ersten Mal:\n" "npm install\n" "\n" "# Erstellen des Plugins nach einer Änderung:\n" "npm run build\n" "\n" -"# Wenn Sie einen Fork aus dem Repository haben, fügen Sie ihn als Remote " -"hinzu (Beispiel):\n" -"git remote add me git@github.com:MY_GITHUB_ACCOUNT/peertube-plugin-livechat." -"git\n" +"# Wenn Sie einen Fork aus dem Repository haben, fügen Sie ihn als Remote hinzu (Beispiel):\n" +"git remote add me git@github.com:MY_GITHUB_ACCOUNT/peertube-plugin-livechat.git\n" "\n" -"# Erstellen Sie einen lokalen Zweig für Ihre Entwicklungen und testen Sie " -"ihn aus (Beispiel):\n" -"git checkout my_development # Hinweis: Wenn ein Github Problem damit " -"verbunden ist, verwenden Sie fix_1234 als Zweigname (wobei 1234 die Nummer " -"des Problems ist).\n" -"# Um Ihre Änderungen vorzuschlagen, schieben Sie Ihren Zweig in Ihr " -"Repository (Beispiel):\n" +"# Erstellen Sie einen lokalen Zweig für Ihre Entwicklungen und testen Sie ihn aus (Beispiel):\n" +"git checkout my_development # Hinweis: Wenn ein Github Problem damit verbunden ist, verwenden Sie fix_1234 als Zweigname (wobei 1234 die Nummer des Problems ist).\n" +"# Um Ihre Änderungen vorzuschlagen, schieben Sie Ihren Zweig in Ihr Repository (Beispiel):\n" "git push --set-upstream me my_development\n" -"# Gehen Sie dann mit Ihrem Webbrowser zu Ihrem Github-Repository, um den " -"Pull Request vorzuschlagen (siehe zusätzliche Anweisungen unten)\n" +"# Gehen Sie dann mit Ihrem Webbrowser zu Ihrem Github-Repository, um den Pull Request vorzuschlagen (siehe zusätzliche Anweisungen unten)\n" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -568,6 +556,11 @@ msgstr "Um den Übersetzern die Arbeit zu erleichtern, sollten Sie zu lange Abs msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "Im Moment ist es nicht möglich, Markdown-Tabellen zu verwenden: Die Übersetzungswerkzeuge würden sie nicht korrekt darstellen." +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1457,8 +1450,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "Fehlerbehebung" @@ -1504,6 +1498,7 @@ msgstr "Wenn Sie auf die Schaltfläche «Räume auflisten» klicken, werden alle #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "Föderation" @@ -1769,6 +1764,102 @@ msgstr "Um das Plugin zu installieren oder zu aktualisieren **einfach das Peertu msgid "Here are some other more specific instructions:" msgstr "Hier sind weitere, spezifischere Anweisungen:" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1820,12 +1911,25 @@ msgstr "Benutzer Dokumentation" msgid "Plugin peertube-plugin-livechat moderation" msgstr "Plugin peertube-plugin-livechat Moderation" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "Moderation" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1833,8 +1937,45 @@ msgstr "Sie können auf die Raumeinstellungen und Moderationswerkzeuge zugreifen #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." -msgstr "Sie können alle bestehenden Chaträume auflisten: in den Einstellungen des Plugins gibt es eine Schaltfläche «Räume auflisten»." +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#, fuzzy +#| msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "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." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "Sie können [ConverseJS Moderationsbefehle] (https://conversejs.org/docs/html/features.html#moderating-chatrooms) verwenden, um den Raum zu moderieren. Wenn Sie den Chat-Raum im Vollbildmodus öffnen, finden Sie oben rechts ein Menü mit speziellen Befehlen." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" +msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md @@ -1843,19 +1984,20 @@ msgstr "Sie können alte Räume löschen: Treten Sie dem Raum bei, und verwenden #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md -#, no-wrap -msgid "Notes" -msgstr "Hinweise" +#, fuzzy, no-wrap +#| msgid "Moderation" +msgid "Instance moderation" +msgstr "Moderation" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." -msgstr "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." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." +msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." -msgstr "Sie können [ConverseJS Moderationsbefehle] (https://conversejs.org/docs/html/features.html#moderating-chatrooms) verwenden, um den Raum zu moderieren. Wenn Sie den Chat-Raum im Vollbildmodus öffnen, finden Sie oben rechts ein Menü mit speziellen Befehlen." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +msgstr "Sie können alle bestehenden Chaträume auflisten: in den Einstellungen des Plugins gibt es eine Schaltfläche «Räume auflisten»." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/obs.md @@ -1869,6 +2011,11 @@ msgstr "Dokumentation zum Streamen des Chat-Inhalts mit OBS." msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1877,22 +2024,59 @@ msgstr "OBS Overlay" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +#, fuzzy +#| msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "Wenn Sie OBS zum Streaming verwenden, können Sie den Chat ganz einfach in Ihren Stream integrieren." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "Sie können die Funktion \"Chat-Link teilen\" verwenden, um eine URL 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 den Administratoren Ihres Servers deaktiviert)." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Share button](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "![Share button](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "Then use this link as a \"web browser source\" in OBS." msgstr "Aktivieren Sie das Kontrollkästchen \"schreibgeschützt\" in dem Fenster. Verwenden Sie dann diesen Link als \"Webbrowser-Quelle\" im OBS." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "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 dieses CSS in den Einstellungen Ihrer OBS-Browserquelle hinzufügen:" #. type: Fenced code block (css) @@ -1906,7 +2090,14 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "Hinweis: Sie können die Farben anpassen. Dies ist noch nicht dokumentiert, aber Sie können dies versuchen: Aktivieren Sie im Fenster die Option \"Aktuelle Themenfarben verwenden\", und versuchen Sie dann, die Farbwerte in der URL manuell zu ändern. Sie müssen gültige CSS-Farbwerte verwenden, und diese müssen in der URL korrekt kodiert sein." #. type: Title ## @@ -1920,6 +2111,376 @@ msgstr "Mischen mehrerer Chats in Ihrem Live-Stream" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "Sie können die [social_stream Browsererweiterung](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 einzubinden. Die Kompatibilität mit diesem Plugin wurde in den letzten Versionen hinzugefügt." +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "How to setup the chat for your live stream" +msgstr "Mischen mehrerer Chats in Ihrem Live-Stream" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "Enabling the chat for you live streams" +msgstr "Mischen mehrerer Chats in Ihrem Live-Stream" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "For the user documentation associated with these features, please refer to the [user documentation page](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "Die Benutzerdokumentation zu diesen Funktionen finden Sie auf der Seite [Benutzerdokumentation](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "Include the chat in your video stream" +msgstr "Mischen mehrerer Chats in Ihrem Live-Stream" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "For the user documentation associated with these features, please refer to the [user documentation page](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "Die Benutzerdokumentation zu diesen Funktionen finden Sie auf der Seite [Benutzerdokumentation](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy, no-wrap +#| msgid "Login to your Peertube account" +msgid "If you haven't a Peertube account" +msgstr "Melden Sie sich bei Ihrem Peertube-Konto an" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy, no-wrap +#| msgid "Login to your Peertube account" +msgid "If you have a Peertube account" +msgstr "Melden Sie sich bei Ihrem Peertube-Konto an" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy, no-wrap +#| msgid "Settings" +msgid "Chatting" +msgstr "Einstellungen" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "For the user documentation associated with these features, please refer to the [user documentation page](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "Die Benutzerdokumentation zu diesen Funktionen finden Sie auf der Seite [Benutzerdokumentation](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1985,36 +2546,180 @@ msgstr "PeerTube plugin livechat" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "Sie können die Sprachauswahl im linken Menü verwenden, um diese Dokumentation in verschiedenen Sprachen anzuzeigen. Einige Übersetzungen fehlen oder sind unvollständig. In diesem Fall sehen Sie die englische Version des Textes." +#. type: Plain text +#: support/documentation/content/en/_index.md +#, fuzzy +#| msgid "Plugin Peertube Livechat administration" +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "Plugin Peertube Livechat Administation" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "Einführung" +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "What is the livechat plugin?" +msgstr "" + #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, fuzzy +#| msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "Dieses [Peertube](https://joinpeertube.org/) Plugin ist dafür gedacht, ein Chatsystem für Peertube-Videos bereitzustellen." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" -msgstr "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." +msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" -msgstr "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." msgstr "Siehe eine [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, fuzzy, no-wrap +#| msgid "Installation guide" +msgid "Installation" +msgstr "Installationsanleitung" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Share button](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "![Share button](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "Integrate the chat in your live stream" +msgstr "Mischen mehrerer Chats in Ihrem Live-Stream" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/issues/_index.md #, no-wrap @@ -2052,6 +2757,10 @@ msgstr "[Meilensteine auf Github](https://github.com/JohnXLivingston/peertube-pl msgid "If you are a webdesigner or a ConverseJS/Prosody/XMPP expert, and want to help improve this plugin, you are welcome." msgstr "Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind und helfen wollen, dieses Plugin zu verbessern, sind Sie gerne willkommen." +#, no-wrap +#~ msgid "Notes" +#~ msgstr "Hinweise" + #, fuzzy #~| msgid "" #~| "| | |\n" diff --git a/support/documentation/po/livechat.el.po b/support/documentation/po/livechat.el.po index b3220997..094ab004 100644 --- a/support/documentation/po/livechat.el.po +++ b/support/documentation/po/livechat.el.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Greek \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.en.pot b/support/documentation/po/livechat.en.pot index 574a8b15..04d0ff85 100644 --- a/support/documentation/po/livechat.en.pot +++ b/support/documentation/po/livechat.en.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -595,6 +595,12 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +#, markdown-text +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, markdown-text, no-wrap @@ -1562,8 +1568,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, markdown-text, no-wrap msgid "Troubleshooting" msgstr "" @@ -1612,6 +1619,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, markdown-text, no-wrap msgid "Federation" msgstr "" @@ -1904,6 +1912,108 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, markdown-text +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1958,12 +2068,26 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md -#, no-wrap +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, markdown-text, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md #, markdown-text @@ -1972,8 +2096,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md #, markdown-text -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, markdown-text, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1985,19 +2146,19 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, markdown-text, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md #, markdown-text -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md #, markdown-text -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -2012,6 +2173,12 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, markdown-text +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, markdown-text, no-wrap @@ -2021,25 +2188,52 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #, markdown-text -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #, markdown-text -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #, markdown-text -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #, markdown-text -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, markdown-text +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -2054,7 +2248,13 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #, markdown-text -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, markdown-text +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -2069,6 +2269,400 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, markdown-text, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, markdown-text +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, markdown-text +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -2143,39 +2737,194 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md #, markdown-text msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +#, markdown-text +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +#, markdown-text +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +#, markdown-text +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +#, markdown-text +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -#, markdown-text -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, markdown-text, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md #, markdown-text -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md #, markdown-text -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md #, markdown-text -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, markdown-text, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, markdown-text, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, markdown-text, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, markdown-text, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, markdown-text +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.eo.po b/support/documentation/po/livechat.eo.po index 19e13cc2..8714e26e 100644 --- a/support/documentation/po/livechat.eo.po +++ b/support/documentation/po/livechat.eo.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Esperanto \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.es.po b/support/documentation/po/livechat.es.po index 59f8a40f..2dd4f117 100644 --- a/support/documentation/po/livechat.es.po +++ b/support/documentation/po/livechat.es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-18 19:57+0000\n" "Last-Translator: Tony Simoes \n" "Language-Team: Spanish \n" @@ -536,6 +536,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1401,8 +1406,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1448,6 +1454,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1708,6 +1715,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1759,12 +1858,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1772,7 +1884,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1783,17 +1928,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1808,6 +1953,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1816,22 +1966,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1845,7 +2018,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1859,6 +2037,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1924,34 +2448,169 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, fuzzy, no-wrap +#| msgid "Translations" +msgid "Installation" +msgstr "Traducciones" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.eu.po b/support/documentation/po/livechat.eu.po index 1e593235..4f4e800c 100644 --- a/support/documentation/po/livechat.eu.po +++ b/support/documentation/po/livechat.eu.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Basque \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.fa.po b/support/documentation/po/livechat.fa.po index 6c9ee7b6..70e1cd50 100644 --- a/support/documentation/po/livechat.fa.po +++ b/support/documentation/po/livechat.fa.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Persian \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.fi.po b/support/documentation/po/livechat.fi.po index 07fedd47..c6372d0f 100644 --- a/support/documentation/po/livechat.fi.po +++ b/support/documentation/po/livechat.fi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Finnish \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.fr.po b/support/documentation/po/livechat.fr.po index 1ad1ee59..ed2741c8 100644 --- a/support/documentation/po/livechat.fr.po +++ b/support/documentation/po/livechat.fr.po @@ -7,11 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-19 07:08+0000\n" "Last-Translator: John Livingston \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -189,33 +188,25 @@ msgid "" "git push --set-upstream me my_development\n" "# Then go to your github repository with your web browser to propose the Pull Request (see additional instructions below)\n" msgstr "" -"# Cloner le dépot. N'oubliez pas le --recursive, pour clôner les sous-" -"modules.\n" -"git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --" -"recursive\n" +"# Cloner le dépot. N'oubliez pas le --recursive, pour clôner les sous-modules.\n" +"git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --recursive\n" "\n" "cd peertube-plugin-livechat\n" "\n" -"# Installer les dépendances NPM et compiler le plugin pour la première fois :" -"\n" +"# Installer les dépendances NPM et compiler le plugin pour la première fois :\n" "npm install\n" "\n" "# Compiler le plugin après une modification :\n" "npm run build\n" "\n" "# Si vous avez un fork du dépot, ajoutez le en remote (exemple) :\n" -"git remote add me git@github.com:MON_COMPTE_GITHUB/peertube-plugin-livechat." -"git\n" +"git remote add me git@github.com:MON_COMPTE_GITHUB/peertube-plugin-livechat.git\n" "\n" -"# Créez une branche locale pour vos développements et placez vous dessus " -"(exemple) :\n" -"git checkout mon_developpement # NB: si un ticket y est associé, utilisé le " -"nom fix_1234 (où 1234 est le numéro du ticket)\n" -"# Pour proposer vos modifications, poussez votre branche sur votre dépot " -"(exemple) :\n" +"# Créez une branche locale pour vos développements et placez vous dessus (exemple) :\n" +"git checkout mon_developpement # NB: si un ticket y est associé, utilisé le nom fix_1234 (où 1234 est le numéro du ticket)\n" +"# Pour proposer vos modifications, poussez votre branche sur votre dépot (exemple) :\n" "git push --set-upstream me mon_developpement\n" -"# Rendez-vous ensuite sur votre dépot github avec votre navigateur web pour " -"proposer la Pull Request (voir les instructions complémentaires ci-dessous)\n" +"# Rendez-vous ensuite sur votre dépot github avec votre navigateur web pour proposer la Pull Request (voir les instructions complémentaires ci-dessous)\n" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -273,18 +264,12 @@ msgstr "Pour activer ce mode, il suffit de créer un fichier `/var/www/peertube/ #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "The simple existence of this file is sufficient to trigger the debug mode. To make sure it's taken into account, you can restart your Peertube instance." -msgstr "" -"La simple existance de ce fichier suffit à déclencher le mode debug. Pour " -"être sûr qu'il est pris en compte, vous pouvez redémarrer votre instance " -"Peertube." +msgstr "La simple existance de ce fichier suffit à déclencher le mode debug. Pour être sûr qu'il est pris en compte, vous pouvez redémarrer votre instance Peertube." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "This file can contain some JSON to enable more advanced options. To have a list of existing parameters, check `server/lib/debug.ts`. Restart Peertube after each content modification." -msgstr "" -"Ce fichier peut également contenir du JSON qui pourra activer d'autres " -"options. Pour en avoir la liste, vous pouvez regarder le code de `server/lib/" -"debug.ts`. Redémarrez Peertube après chaque modification de son contenu." +msgstr "Ce fichier peut également contenir du JSON qui pourra activer d'autres options. Pour en avoir la liste, vous pouvez regarder le code de `server/lib/debug.ts`. Redémarrez Peertube après chaque modification de son contenu." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -300,12 +285,7 @@ msgstr "Redémarrer Prosody" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "When debug mode is enabled, you can restart Prosody using this API call: `http://your_instance.tld/plugins/livechat/router/api/restart_prosody`. This call don't need any authentificaiton. It can be done from a command line, for example using `curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody`." -msgstr "" -"Pour redémarrer Prosody quand le mode debug est activé, vous pouvez appeler " -"l'API `http://votre_instance.tld/plugins/livechat/router/api/restart_prosody`" -". Cet appel n'a pas besoin d'authentification. Il peut se faire depuis une " -"ligne de commande, par exemple avec `curl http://votre_instance.tld/plugins/" -"livechat/router/api/restart_prosody." +msgstr "Pour redémarrer Prosody quand le mode debug est activé, vous pouvez appeler l'API `http://votre_instance.tld/plugins/livechat/router/api/restart_prosody`. Cet appel n'a pas besoin d'authentification. Il peut se faire depuis une ligne de commande, par exemple avec `curl http://votre_instance.tld/plugins/livechat/router/api/restart_prosody." #. type: Title ### #: support/documentation/content/en/contributing/develop/_index.md @@ -362,14 +342,8 @@ msgstr "Lancer votre serveur de debug." #: support/documentation/content/en/contributing/develop/_index.md msgid "For Prosody to connect to the debugger, call the API `http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true`. This call does not need any authentication. It can be done from a command line, for example with `curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true`. You can even configure your debug server to launch this request automatically." msgstr "" -"Pour que Prosody se connecte au debugger, appelez l'API " -"`http://votre_instance.tld/plugins/livechat/router/api/" -"restart_prosody?debugger=true`. Cet appel n'a pas besoin d'authentification." -"\n" -"Il peut se faire depuis une ligne de commande, par exemple avec `curl " -"http://votre_instance.tld/plugins/livechat/router/api/" -"restart_prosody?debugger=true`. Vous pouvez même configurer votre serveur de " -"debuggage pour lancer cette commande automatiquement." +"Pour que Prosody se connecte au debugger, appelez l'API `http://votre_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true`. Cet appel n'a pas besoin d'authentification.\n" +"Il peut se faire depuis une ligne de commande, par exemple avec `curl http://votre_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true`. Vous pouvez même configurer votre serveur de debuggage pour lancer cette commande automatiquement." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -444,11 +418,7 @@ msgstr "Le thème utilisé est [hugo-theme-learn](https://learn.netlify.app/). I #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md msgid "When a new plugin version is released, or when documentation is updated, plugin maintainers will merge the `main` branch to the `documentation` branch. This will trigger github and gitlab pipelines, and update published documentation." -msgstr "" -"Quand une version du plugin est publiée, ou quand la documentation est mise " -"à jour, les mainteneur⋅euses du plugin fusionnerons la branche `main` dans " -"la branche `documentation`. Ce qui aura pour effet de déclencher les " -"pipelines github et gitlab pour mettre à jour les versions publiées." +msgstr "Quand une version du plugin est publiée, ou quand la documentation est mise à jour, les mainteneur⋅euses du plugin fusionnerons la branche `main` dans la branche `documentation`. Ce qui aura pour effet de déclencher les pipelines github et gitlab pour mettre à jour les versions publiées." #. type: Title ## #: support/documentation/content/en/contributing/document/_index.md @@ -588,6 +558,11 @@ msgstr "Pour faciliter le travail des traducteur⋅rices, évitez de faire des p msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "Pour l'instant il n'est pas possible d'utiliser des tableaux Markdown : les outils de translation ne savent pas les gérer." +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -678,9 +653,7 @@ msgstr "Choisissez votre mot de passe, et configurez votre compte" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md msgid "Go to the plugin project page: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/" -msgstr "" -"Allez sur le projet du plugin de tchat : https://weblate.framasoft.org/" -"projects/peertube-livechat/peertube-plugin-livechat/" +msgstr "Allez sur le projet du plugin de tchat : https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md @@ -790,16 +763,12 @@ msgstr "En théorie, les seules parties du code qui ont besoin de traductions so #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md msgid "Note: you should never need another language translation from backend code. Localization must be done on front-end." -msgstr "" -"Note : vous ne devriez jamais avoir besoin d'autres langues que l'anglais " -"pour le code backend. Les traductions doivent se faire coté front-end." +msgstr "Note : vous ne devriez jamais avoir besoin d'autres langues que l'anglais pour le code backend. Les traductions doivent se faire coté front-end." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md msgid "There is a `lib/loc.ts` module providing a `loc()` function. Just pass it the key to have the english string: `loc('diagnostic')`'." -msgstr "" -"Il y a un module `lib/loc.ts` qui fourni une function `loc()`. Passez juste " -"la clé pour récupérer la phrase anglaise : `loc('diagnostic')`." +msgstr "Il y a un module `lib/loc.ts` qui fourni une function `loc()`. Passez juste la clé pour récupérer la phrase anglaise : `loc('diagnostic')`." #. type: Title ## #: support/documentation/content/en/contributing/translate/_index.md @@ -942,10 +911,7 @@ msgstr "Utiliser Matterbridge" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md msgid "Here is a tutorial to use Matterbridge with the plugin: " -msgstr "" -"Voici un tutoriel sur comment utiliser Matterbridge avec ce plugin : " -"" +msgstr "Voici un tutoriel sur comment utiliser Matterbridge avec ce plugin : " #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1008,11 +974,7 @@ msgstr "Paramètres du plugin" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Start by going to the livechat plugin settings of your instance, then enable the setting \"Enable connection to room using external XMPP accounts\". By checking this settings, new settings appear below." -msgstr "" -"Commencez par aller dans les paramètres du plugin livechat de votre " -"instance, puis activez le paramètre «Autoriser les connexions aux salons via " -"des comptes XMPP externes». En cochant celui-ci, de nouveaux champs " -"apparaissent en dessous." +msgstr "Commencez par aller dans les paramètres du plugin livechat de votre instance, puis activez le paramètre «Autoriser les connexions aux salons via des comptes XMPP externes». En cochant celui-ci, de nouveaux champs apparaissent en dessous." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1028,14 +990,8 @@ msgstr "Ensuite, le champs «Interfaces réseau pour les connexions serveur vers #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "For the \"Certificate folder\" setting, you can leave it empty. In this case, the plugin will automatically generate self-signed certificates. Some XMPP servers may refuse to connect, depending on their configuration. In this case, you can indicate here a path on the server, in which you must place certificates to be used by the module. It is up to you to generate and renew them. See bellow for more information." msgstr "" -"Pour le champs «Dossiers des certificats», vous pouvez le laisser vide. Dans " -"ce cas là, le plugin va générer automatiquement des certificats auto-signés. " -"Il se pourrait que certains serveurs XMPP refusent de se connecter, cela " -"dépendant de leur paramétrage. Dans ce cas, vous pouvez indiquer ici un " -"chemin sur le serveur, dans lequel vous placerez des certificats à utiliser " -"par le module.\n" -"Charge à vous de les générer et de les renouveller. Voir plus loin pour une " -"explication plus détaillée." +"Pour le champs «Dossiers des certificats», vous pouvez le laisser vide. Dans ce cas là, le plugin va générer automatiquement des certificats auto-signés. Il se pourrait que certains serveurs XMPP refusent de se connecter, cela dépendant de leur paramétrage. Dans ce cas, vous pouvez indiquer ici un chemin sur le serveur, dans lequel vous placerez des certificats à utiliser par le module.\n" +"Charge à vous de les générer et de les renouveller. Voir plus loin pour une explication plus détaillée." #. type: Title ### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1117,9 +1073,7 @@ msgstr "Attention à bien conserver le point après «votre_instance.tld»." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Using the `dig` command to check your record, you should get a result similar to this:" -msgstr "" -"En utilisant la commande `dig` pour vérifier votre enregistrement, vous " -"devriez obtenir un résultat similaire à celui-ci :" +msgstr "En utilisant la commande `dig` pour vérifier votre enregistrement, vous devriez obtenir un résultat similaire à celui-ci :" #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1134,12 +1088,7 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "If you are **not using the standard `5269` port**, you must also add a SRV record for `_xmpp-server._tcp.your_instance.tld.` (same as above, just without the `room.` prefix). Of course, you can also add this record if you use the standard port. It will also work." -msgstr "" -"Si vous **n'utilisez pas le port standard `5269`**, vous devez ajouter un " -"autre enregistrement SRV pour `_xmpp-server._tcp.votre_instance.tld.` (" -"pareil que précédemment, mais en enlevant le préfixe `room.`). Bien sûr, " -"vous pouvez l'ajouter même si vous utilisez le port standard. Cela " -"fonctionnera également." +msgstr "Si vous **n'utilisez pas le port standard `5269`**, vous devez ajouter un autre enregistrement SRV pour `_xmpp-server._tcp.votre_instance.tld.` (pareil que précédemment, mais en enlevant le préfixe `room.`). Bien sûr, vous pouvez l'ajouter même si vous utilisez le port standard. Cela fonctionnera également." #. type: Title ### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1150,24 +1099,12 @@ msgstr "Utilisation de certificats de confiance" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "The self-signed certificates that this plugin uses by default can be rejected by some XMPP servers, for security reasons." -msgstr "" -"Les certificats auto-signés que le plugin utilise par défaut peuvent ne pas " -"convenir à tous les serveurs distants. En effet, ceux-ci peuvent les refuser " -"pour raison de sécurité." +msgstr "Les certificats auto-signés que le plugin utilise par défaut peuvent ne pas convenir à tous les serveurs distants. En effet, ceux-ci peuvent les refuser pour raison de sécurité." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "It is possible to use certificates validated by a certification authority. However, this requires advanced system administration knowledge. Indeed, due to the multitude of possible use cases, it is impossible to document all situations here. This documentation will therefore only explain the goal to be reached, and give an example which will only be suitable for a \"basic\" situation (manual installation of Peertube, using letsencrypt). If you are in another situation (Docker installation, certificates signed by another authority, etc...), you will have to adapt this approach by yourself." -msgstr "" -"Il est possible d'utiliser des certificats validés par une autorité de " -"certification. Cependant cela demande des connaissances d'administration " -"système avancées. En effet, devant la multitude de cas possibles, il est " -"impossible de documenter ici toutes les situations. La présente " -"documentation va donc se contenter de vous expliquer le but à atteindre, et " -"donner un example qui ne conviendra qu'à une situation «basique» (" -"installation manuelle de Peertube, avec utilisation de letsencrypt). Si vous " -"êtes dans une autre situation (installation Docker, certificats signés par " -"une autre autorité, etc...), il vous faudra adapter la démarche." +msgstr "Il est possible d'utiliser des certificats validés par une autorité de certification. Cependant cela demande des connaissances d'administration système avancées. En effet, devant la multitude de cas possibles, il est impossible de documenter ici toutes les situations. La présente documentation va donc se contenter de vous expliquer le but à atteindre, et donner un example qui ne conviendra qu'à une situation «basique» (installation manuelle de Peertube, avec utilisation de letsencrypt). Si vous êtes dans une autre situation (installation Docker, certificats signés par une autre autorité, etc...), il vous faudra adapter la démarche." #. type: Title #### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1188,14 +1125,7 @@ msgstr "Vous devez ensuite placer ces certificats dans un dossier qui sera acces #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "If you want to use the ProsodyCtl utility to import certificates, this utility is available (once Peertube is started) using the following command (adapting the path to your Peertube data folder, and replacing \"xxx\" with the arguments you wish to pass to prosodyctl): `sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl xxx`" -msgstr "" -"Si vous voulez utiliser l'utilitaire ProsodyCtl (pour importer des " -"certificats letsencrypts, générer des certificats, etc...), cet utilitaire " -"est disponible (une fois Peertube démarré) en utilisant la commande qui suit " -"(en adaptant le chemin vers votre dossier data Peertube, et en remplaçant " -"«xxx» par les arguments que vous souhaitez passer à prosodyctl) : `sudo -u " -"peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/" -"prosodyAppImage/squashfs-root/AppRun prosodyctl xxx`" +msgstr "Si vous voulez utiliser l'utilitaire ProsodyCtl (pour importer des certificats letsencrypts, générer des certificats, etc...), cet utilitaire est disponible (une fois Peertube démarré) en utilisant la commande qui suit (en adaptant le chemin vers votre dossier data Peertube, et en remplaçant «xxx» par les arguments que vous souhaitez passer à prosodyctl) : `sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl xxx`" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1221,18 +1151,12 @@ msgstr "Tout d'abord, on va devoir créer un certificat pour le sous-domain `roo #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "So start by setting up a DNS entry for `room.your_instance.tld`, which points to your server. You can use a CNAME entry (or an A entry and a AAAA entry)." -msgstr "" -"Commencez donc par paraméter une entrée DNS pour `room.votre_instance.tld`, " -"qui pointe sur votre serveur. Vous pouvez tout à faire faire une entrée " -"CNAME (ou une entrée A et une entrée AAAA)." +msgstr "Commencez donc par paraméter une entrée DNS pour `room.votre_instance.tld`, qui pointe sur votre serveur. Vous pouvez tout à faire faire une entrée CNAME (ou une entrée A et une entrée AAAA)." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Next, we'll use nginx (already installed for your Peertube) to generate the certbot certificate. We will create a new site. In the file `/etc/nginx/site-available/room.peertube`, add:" -msgstr "" -"Ensuite, nous allons utiliser nginx (déjà installé pour votre Peertube) pour " -"générer le certificat certbot. On va créer un nouveau site. Dans le fichier " -"`/etc/nginx/site-available/room.peertube`, ajoutez :" +msgstr "Ensuite, nous allons utiliser nginx (déjà installé pour votre Peertube) pour générer le certificat certbot. On va créer un nouveau site. Dans le fichier `/etc/nginx/site-available/room.peertube`, ajoutez :" #. type: Fenced code block (nginx) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1280,11 +1204,7 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Then we prepare the folder in which we will later import the certificates. We assume here that you already have the plugin active. We will create the following folder (if it doesn't already exist), with the user `peertube` to make sure there are no permissions issues:" -msgstr "" -"On prépare ensuite le dossier dans lequel on va plus tard importer les " -"certificats. On suppose ici que vous avez déjà le plugin actif. On va créer " -"le dossier suivant (s'il n'existe pas déjà), avec le user `peertube` pour " -"être sûr qu'il n'y a pas de problème de droits :" +msgstr "On prépare ensuite le dossier dans lequel on va plus tard importer les certificats. On suppose ici que vous avez déjà le plugin actif. On va créer le dossier suivant (s'il n'existe pas déjà), avec le user `peertube` pour être sûr qu'il n'y a pas de problème de droits :" #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1305,9 +1225,7 @@ msgstr "On va configurer certbot pour qu'il importe les certificats générés d #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Note: for it to be available, the plugin must have been started at least once." -msgstr "" -"Note : pour qu'il soit disponible, il faut que le plugin ai démarré au moins " -"une fois." +msgstr "Note : pour qu'il soit disponible, il faut que le plugin ai démarré au moins une fois." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1356,9 +1274,7 @@ msgstr "Normalement vous devriez maintenant trouver les certificats dans le doss #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Note: the first time you do this, you will have to reload Prosody. The easiest way to do this is to restart Peertube." -msgstr "" -"Note : la première fois que vous faites tout ça, il va falloir recharger " -"Prosody. Le plus simple pour cela est de redémarrer Peertube." +msgstr "Note : la première fois que vous faites tout ça, il va falloir recharger Prosody. Le plus simple pour cela est de redémarrer Peertube." #. type: Title #### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1558,8 +1474,9 @@ msgstr "" " --config /data/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua \\\n" " check certs\n" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "En cas de problème" @@ -1605,6 +1522,7 @@ msgstr "Lorsque vous appuyez sur le bouton \"Lister les salles\", toutes les sal #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "Fédération" @@ -1643,12 +1561,7 @@ msgstr "Le⋅a propriétaire de la vidéo pourra activer le tchat en ligne." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md msgid "Note: for now this feature simply hide the chat. In a future release, the chat will be replaced by a message saying «please log in to [...]». See [v5.7.0 Release Notes](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md#570) for more information." -msgstr "" -"Note : pour l'instant, c'est fonctionnalité masque simplement le tchat. Dans " -"une future version, le tchat sera remplacé par un message précisant «merci " -"de vous connecter [...]». Voir les notes de publication [de la version 5.7." -"0](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/" -"CHANGELOG.md#570) pour plus d'informations." +msgstr "Note : pour l'instant, c'est fonctionnalité masque simplement le tchat. Dans une future version, le tchat sera remplacé par un message précisant «merci de vous connecter [...]». Voir les notes de publication [de la version 5.7.0](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md#570) pour plus d'informations." #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md @@ -1751,10 +1664,7 @@ msgstr "Pour utiliser le plugin, vous allez devoir installer manuellement Prosod msgid "" "Note: the plugin requires Prosody >= 0.12.0.\n" "If you are using an older version, Chat Federation could be broken, and it could have some unexpected behaviour.\n" -msgstr "" -"Note : la version de Prosody devrait être supérieure ou égale à 0.12.0. Si " -"vous utilisez une version plus ancienne, il pourrait y avoir des bugs sur la " -"fédération du tchat, et d'autres comportements inattendus.\n" +msgstr "Note : la version de Prosody devrait être supérieure ou égale à 0.12.0. Si vous utilisez une version plus ancienne, il pourrait y avoir des bugs sur la fédération du tchat, et d'autres comportements inattendus.\n" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -1864,11 +1774,7 @@ msgstr "Documentation d'installation" #: support/documentation/content/en/documentation/installation/_index.md #: support/documentation/content/en/_index.md msgid "Before updating to a major release, please read the release notes and breaking changes list : [CHANGELOG](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md)." -msgstr "" -"Avant de mettre à jour le plugin vers une nouvelle version majeure, merci de " -"lire les notes de version, et la liste des éventuelles modifications non " -"rétro-compatibles : [CHANGELOG](https://github.com/JohnXLivingston/" -"peertube-plugin-livechat/blob/main/CHANGELOG.md)." +msgstr "Avant de mettre à jour le plugin vers une nouvelle version majeure, merci de lire les notes de version, et la liste des éventuelles modifications non rétro-compatibles : [CHANGELOG](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md)." #. type: Plain text #: support/documentation/content/en/documentation/installation/_index.md @@ -1880,6 +1786,102 @@ msgstr "Pour installer ou mettre à jour ce plugin, **utilisez simplement l'inte msgid "Here are some other more specific instructions:" msgstr "Vous trouverez ci-dessous d'autres instructions :" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1931,24 +1933,71 @@ msgstr "Documentation utilisateur⋅rice" msgid "Plugin peertube-plugin-livechat moderation" msgstr "Modération du plugin peertube-plugin-livechat" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "Modération" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" msgstr "" -"Vous pouvez accéder aux paramètres de la salle et aux outils de modération " -"en ouvrant le tchat dans une nouvelle fenêtre, et en utilisant le menu " -"déroulant en haut à droite." #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." -msgstr "Vous pouvez lister toutes les salles de discussion existantes : dans l'écran des paramètres du plugin, il y a un bouton \"Lister les salles\"." +msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." +msgstr "Vous pouvez accéder aux paramètres de la salle et aux outils de modération en ouvrant le tchat dans une nouvelle fenêtre, et en utilisant le menu déroulant en haut à droite." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +#, fuzzy +#| msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "Tous les modérateur⋅rics et administrateur⋅rices de l'instance seront propriétaires des salons de discussion créés. Si la vidéo est locale (et ne provient pas d'un Peertube distant), le⋅a propriétaire de la vidéo sera l'administrateur⋅rice de l'espace de discussion." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "Vous pouvez utiliser les [commandes de modération ConverseJS](https://conversejs.org/docs/html/features.html#moderating-chatrooms) pour modérer le salon. Lorsque vous ouvrez la salle de discussion en plein écran, un menu avec des commandes dédiées s'affiche en haut à droite." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" +msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md @@ -1957,19 +2006,20 @@ msgstr "Vous pouvez supprimer d'anciennes salles : rejoignez la salle, et utilis #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md -#, no-wrap -msgid "Notes" -msgstr "Remarques" +#, fuzzy, no-wrap +#| msgid "Moderation" +msgid "Instance moderation" +msgstr "Modération" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." -msgstr "Tous les modérateur⋅rics et administrateur⋅rices de l'instance seront propriétaires des salons de discussion créés. Si la vidéo est locale (et ne provient pas d'un Peertube distant), le⋅a propriétaire de la vidéo sera l'administrateur⋅rice de l'espace de discussion." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." +msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." -msgstr "Vous pouvez utiliser les [commandes de modération ConverseJS](https://conversejs.org/docs/html/features.html#moderating-chatrooms) pour modérer le salon. Lorsque vous ouvrez la salle de discussion en plein écran, un menu avec des commandes dédiées s'affiche en haut à droite." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +msgstr "Vous pouvez lister toutes les salles de discussion existantes : dans l'écran des paramètres du plugin, il y a un bouton \"Lister les salles\"." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/obs.md @@ -1983,6 +2033,11 @@ msgstr "Documentation pour diffuser le contenu du tchat à l'aide d'OBS." msgid "OBS" msgstr "OBS" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1991,24 +2046,59 @@ msgstr "Overlay OBS" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +#, fuzzy +#| msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "Si vous utilisez OBS pour la diffusion en direct, vous pouvez facilement inclure le tchat dans votre flux vidéo." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "Vous pouvez utiliser la fonction \"partager le lien du tchat\" pour générer une URL vers votre tchat. Le bouton devrait se trouver près du tchat si vous êtes le⋅a propriétaire de la vidéo (à moins qu'il n'ait été désactivé par les administrateur⋅rices de votre serveur)." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." msgstr "" -"Cochez la case «lecture seule» dans la fenêtre modale. Utilisez ensuite ce " -"lien comme «source navigateur web» dans OBS." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Share button](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "![Partage](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "Cochez la case «lecture seule» dans la fenêtre modale. Utilisez ensuite ce lien comme «source navigateur web» dans OBS." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "Vous pouvez utiliser l'option \"Fond transparent\" pour obtenir un fond transparent dans OBS. Si vous souhaitez personnaliser la transparence de l'arrière-plan, vous pouvez ajouter ce CSS dans les paramètres de la source de votre navigateur OBS :" #. type: Fenced code block (css) @@ -2022,7 +2112,14 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#, fuzzy +#| msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "Remarque : vous pouvez personnaliser les couleurs. Ce n'est pas encore documenté, mais vous pouvez essayer ceci : dans la fenêtre modale, cochez \"utiliser les couleurs actuelles du thème\", puis essayez de modifier manuellement les valeurs de couleur dans l'URL. Vous devez utiliser des valeurs de couleur CSS valides, et elles doivent être correctement encodées dans l'URL." #. type: Title ## @@ -2036,6 +2133,376 @@ msgstr "Mélanger plusieurs tchats dans votre flux en direct" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "Vous pouvez utiliser l'extension [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) pour mélanger plusieurs sources de tchat (Peertube, Twitch, Youtube, Facebook, ...) et inclure leurs contenus dans votre flux en direct. La compatibilité avec ce plugin a été ajoutée dans les versions récentes." +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "How to setup the chat for your live stream" +msgstr "Mélanger plusieurs tchats dans votre flux en direct" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "Enabling the chat for you live streams" +msgstr "Mélanger plusieurs tchats dans votre flux en direct" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "For the user documentation associated with these features, please refer to the [user documentation page](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "Pour la documentation utilisateur⋅rice associé à ces fonctionnalités, veuillez vous référer à la page [de documentation utilisateur⋅rice](/peertube-plugin-livechat/fr/documentation/user/xmpp_clients/)." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "Include the chat in your video stream" +msgstr "Mélanger plusieurs tchats dans votre flux en direct" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "For the user documentation associated with these features, please refer to the [user documentation page](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "Pour la documentation utilisateur⋅rice associé à ces fonctionnalités, veuillez vous référer à la page [de documentation utilisateur⋅rice](/peertube-plugin-livechat/fr/documentation/user/xmpp_clients/)." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy, no-wrap +#| msgid "Login to your Peertube account" +msgid "If you haven't a Peertube account" +msgstr "Connexion à votre compte Peertube" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy, no-wrap +#| msgid "Login to your Peertube account" +msgid "If you have a Peertube account" +msgstr "Connexion à votre compte Peertube" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy, no-wrap +#| msgid "Settings" +msgid "Chatting" +msgstr "Paramètres" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "![Capture d'écran du tchat en plein écran](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "For the user documentation associated with these features, please refer to the [user documentation page](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "Pour la documentation utilisateur⋅rice associé à ces fonctionnalités, veuillez vous référer à la page [de documentation utilisateur⋅rice](/peertube-plugin-livechat/fr/documentation/user/xmpp_clients/)." + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -2051,11 +2518,7 @@ msgstr "Clients XMPP" #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md msgid "This chat plugin relies on the XMPP protocol (also known as Jabber). It is therefore possible to connect to the chats using [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). This can be useful for example to facilitate moderation operations." -msgstr "" -"Ce module de tchat repose sur le protocole XMPP, aussi connu sous le nom de " -"Jabber. Il est donc possible de se connecter aux tchats en utilisant des [" -"logiciels clients XMPP](https://fr.wikipedia.org/wiki/Clients_XMPP). Cela " -"peut par exemple être utile pour faciliter les opérations de modération." +msgstr "Ce module de tchat repose sur le protocole XMPP, aussi connu sous le nom de Jabber. Il est donc possible de se connecter aux tchats en utilisant des [logiciels clients XMPP](https://fr.wikipedia.org/wiki/Clients_XMPP). Cela peut par exemple être utile pour faciliter les opérations de modération." #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md @@ -2070,9 +2533,7 @@ msgstr "Si cette fonctionnalité est activée sur votre instance, vous pouvez vo #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md msgid "To get the address of the room you want to join, you can use the \"share chat\" button that is located above the chat:" -msgstr "" -"Pour obtenir l'adresse du salon à rejoindre, vous pouvez utiliser la fenêtre " -"de «partage» du tchat, dont le bouton est situé au dessus du tchat :" +msgstr "Pour obtenir l'adresse du salon à rejoindre, vous pouvez utiliser la fenêtre de «partage» du tchat, dont le bouton est situé au dessus du tchat :" #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md @@ -2087,9 +2548,7 @@ msgstr "Par défaut, le bouton de partage n'est visible que pour le ou la propri #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md msgid "Then, choose \"Connect using XMPP\":" -msgstr "" -"Ensuite, dans la modale qui s'affiche, choississez «Connexion avec un client " -"XMPP» :" +msgstr "Ensuite, dans la modale qui s'affiche, choississez «Connexion avec un client XMPP» :" #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md @@ -2109,36 +2568,180 @@ msgstr "PeerTube plugin livechat" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "Vous pouvez utiliser le sélecteur de langue dans le menu de gauche pour afficher cette documentation dans différentes langues. Certaines traductions sont manquantes ou incomplètes. Dans ce cas, vous verrez la version anglaise du texte." +#. type: Plain text +#: support/documentation/content/en/_index.md +#, fuzzy +#| msgid "Plugin Peertube Livechat administration" +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "Administration du Plugin Peertube Livechat" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "Introduction" +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "What is the livechat plugin?" +msgstr "" + #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, fuzzy +#| msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "Ce plugin pour [Peertube](https://joinpeertube.org/) permet d'intégrer un système de «chat» (clavardage) à coté des vidéos." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" -msgstr "![Capture d'écran du tchat](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." +msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" -msgstr "![Capture d'écran du tchat en plein écran](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." msgstr "Voir une [démo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, fuzzy, no-wrap +#| msgid "Installation guide" +msgid "Installation" +msgstr "Documentation d'installation" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Share button](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "![Partage](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px)" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, fuzzy, no-wrap +#| msgid "Mixing multiple chats in your live stream" +msgid "Integrate the chat in your live stream" +msgstr "Mélanger plusieurs tchats dans votre flux en direct" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/issues/_index.md #, no-wrap @@ -2176,6 +2779,10 @@ msgstr "les [jalons sur github](https://github.com/JohnXLivingston/peertube-plug msgid "If you are a webdesigner or a ConverseJS/Prosody/XMPP expert, and want to help improve this plugin, you are welcome." msgstr "Si vous êtes webdesigner ou avez une expertise en ConverseJS/Prosody/XMPP et souhaitez participer à l'évolution de ce plugin, n'hésitez pas à me contacter." +#, no-wrap +#~ msgid "Notes" +#~ msgstr "Remarques" + #, fuzzy #~| msgid "" #~| "| | |\n" diff --git a/support/documentation/po/livechat.gd.po b/support/documentation/po/livechat.gd.po index 62544239..0b5d642e 100644 --- a/support/documentation/po/livechat.gd.po +++ b/support/documentation/po/livechat.gd.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Gaelic \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.gl.po b/support/documentation/po/livechat.gl.po index 85ce9c7c..ca46c220 100644 --- a/support/documentation/po/livechat.gl.po +++ b/support/documentation/po/livechat.gl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Galician \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.hr.po b/support/documentation/po/livechat.hr.po index 44e7bbf4..6a013d01 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Croatian \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.hu.po b/support/documentation/po/livechat.hu.po index 72380482..f06c574f 100644 --- a/support/documentation/po/livechat.hu.po +++ b/support/documentation/po/livechat.hu.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Hungarian \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.is.po b/support/documentation/po/livechat.is.po index 46fe4999..19393983 100644 --- a/support/documentation/po/livechat.is.po +++ b/support/documentation/po/livechat.is.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Icelandic \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.it.po b/support/documentation/po/livechat.it.po index abf04ba1..7db994c0 100644 --- a/support/documentation/po/livechat.it.po +++ b/support/documentation/po/livechat.it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 14:21+0000\n" "Last-Translator: John Livingston \n" "Language-Team: Italian \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.ja.po b/support/documentation/po/livechat.ja.po index 8c346c0d..acdbded0 100644 --- a/support/documentation/po/livechat.ja.po +++ b/support/documentation/po/livechat.ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 14:21+0000\n" "Last-Translator: John Livingston \n" "Language-Team: Japanese \n" @@ -530,6 +530,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1405,8 +1410,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1452,6 +1458,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, fuzzy, no-wrap msgid "Federation" msgstr "ドキュメンテーション" @@ -1712,6 +1719,102 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1763,12 +1866,25 @@ msgstr "ドキュメンテーション" msgid "Plugin peertube-plugin-livechat moderation" msgstr "PeerTube ライブチャットプラグイン" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, fuzzy, no-wrap msgid "Moderation" msgstr "ドキュメンテーション" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1776,7 +1892,42 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1786,18 +1937,18 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md -#, no-wrap -msgid "Notes" +#, fuzzy, no-wrap +msgid "Instance moderation" +msgstr "ドキュメンテーション" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." -msgstr "" - -#. type: Plain text -#: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1812,6 +1963,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1820,22 +1976,51 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1849,7 +2034,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1863,6 +2053,365 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "PeerTube ライブチャットプラグイン" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy, no-wrap +msgid "Chatting" +msgstr "クレジット" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1928,37 +2477,178 @@ msgstr "PeerTube ライブチャットプラグイン" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md #, fuzzy msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "左側のメニューにある言語セレクターを使って、このドキュメントをさまざまな言語で表示することができます。" +#. type: Plain text +#: support/documentation/content/en/_index.md +#, fuzzy +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "クレジット" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, fuzzy, no-wrap msgid "Introduction" msgstr "はじめに" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." -msgstr "この[Peertube](https://joinpeertube.org/)プラグインは、お使いのPeerTubeインスタンスの動画に対してチャットシステムを提供します。" - -#. type: Plain text -#: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" -msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +#, fuzzy +#| msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." +msgstr "この[Peertube](https://joinpeertube.org/)プラグインは、お使いのPeerTubeインスタンスの動画に対してチャットシステムを提供します。" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." msgstr "実際の動きを[デモ](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)でご確認頂けます。" +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/issues/_index.md #, fuzzy, no-wrap diff --git a/support/documentation/po/livechat.kab.po b/support/documentation/po/livechat.kab.po index 6d76c93a..bf3f4307 100644 --- a/support/documentation/po/livechat.kab.po +++ b/support/documentation/po/livechat.kab.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kabyle \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.nb.po b/support/documentation/po/livechat.nb.po index f3a4f434..c0a61e1d 100644 --- a/support/documentation/po/livechat.nb.po +++ b/support/documentation/po/livechat.nb.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Bokmål \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.nl.po b/support/documentation/po/livechat.nl.po index b17ea9fc..47a6fb1e 100644 --- a/support/documentation/po/livechat.nl.po +++ b/support/documentation/po/livechat.nl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Dutch \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.nn.po b/support/documentation/po/livechat.nn.po index ad862548..ebda34f4 100644 --- a/support/documentation/po/livechat.nn.po +++ b/support/documentation/po/livechat.nn.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Nynorsk \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.oc.po b/support/documentation/po/livechat.oc.po index 21a6f413..ea8e915c 100644 --- a/support/documentation/po/livechat.oc.po +++ b/support/documentation/po/livechat.oc.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Occitan \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.pl.po b/support/documentation/po/livechat.pl.po index 3792fe3f..5abd10f5 100644 --- a/support/documentation/po/livechat.pl.po +++ b/support/documentation/po/livechat.pl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Polish \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.pt.po b/support/documentation/po/livechat.pt.po index 64cc2cb6..16a899a2 100644 --- a/support/documentation/po/livechat.pt.po +++ b/support/documentation/po/livechat.pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Portuguese \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.ru.po b/support/documentation/po/livechat.ru.po index 803492d8..27a1b7f7 100644 --- a/support/documentation/po/livechat.ru.po +++ b/support/documentation/po/livechat.ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Russian \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.sq.po b/support/documentation/po/livechat.sq.po index 3fc80eee..a3174dba 100644 --- a/support/documentation/po/livechat.sq.po +++ b/support/documentation/po/livechat.sq.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Albanian \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.sv.po b/support/documentation/po/livechat.sv.po index 7b935b09..031165a2 100644 --- a/support/documentation/po/livechat.sv.po +++ b/support/documentation/po/livechat.sv.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Swedish \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.th.po b/support/documentation/po/livechat.th.po index 1f24ff2d..8c44cdce 100644 --- a/support/documentation/po/livechat.th.po +++ b/support/documentation/po/livechat.th.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Thai \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.tok.po b/support/documentation/po/livechat.tok.po index bf4fa4dd..2789e986 100644 --- a/support/documentation/po/livechat.tok.po +++ b/support/documentation/po/livechat.tok.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Toki Pona \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.uk.po b/support/documentation/po/livechat.uk.po index c1024ad2..1a1ec494 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Ukrainian \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.vi.po b/support/documentation/po/livechat.vi.po index 7372f67a..70dc1d7f 100644 --- a/support/documentation/po/livechat.vi.po +++ b/support/documentation/po/livechat.vi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Vietnamese \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.zh-Hans.po b/support/documentation/po/livechat.zh-Hans.po index c56be618..1cf38b5f 100644 --- a/support/documentation/po/livechat.zh-Hans.po +++ b/support/documentation/po/livechat.zh-Hans.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Simplified) \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description diff --git a/support/documentation/po/livechat.zh-Hant.po b/support/documentation/po/livechat.zh-Hant.po index 4c831741..96388298 100644 --- a/support/documentation/po/livechat.zh-Hant.po +++ b/support/documentation/po/livechat.zh-Hant.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2023-07-19 08:49+0200\n" +"POT-Creation-Date: 2023-07-25 17:54+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Traditional) \n" @@ -529,6 +529,11 @@ msgstr "" msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." msgstr "" +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1394,8 +1399,9 @@ msgid "" " check certs\n" msgstr "" -#. type: Title ### +#. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md +#: support/documentation/content/en/documentation/installation/troubleshooting.md #, no-wrap msgid "Troubleshooting" msgstr "" @@ -1441,6 +1447,7 @@ msgstr "" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Federation" msgstr "" @@ -1701,6 +1708,98 @@ msgstr "" msgid "Here are some other more specific instructions:" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Some classic mistakes and workarounds." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "I just installed/upgraded the plugin, but nothing happens" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Diagnostic tool" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Launch diagnostic](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "![Diagnostic result](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Chat does not load" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Internal API calls" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "In some case (like for some Docker Peertube installation), the diagnostic tools displays an error for the test called \"API Prosody -> Peertube is KO\".\n" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/installation/troubleshooting.md +#, no-wrap +msgid "Websocket" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listes in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/installation/troubleshooting.md +msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md #, no-wrap @@ -1752,12 +1851,25 @@ msgstr "" msgid "Plugin peertube-plugin-livechat moderation" msgstr "" -#. type: Yaml Front Matter Hash Value: title +#. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Moderation" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "This section is still incomplete." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Accessing moderation tools" +msgstr "" + #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md msgid "You can access room settings and moderation tools by opening the chat in a new window, and using the dropdown menu at the top right." @@ -1765,7 +1877,40 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Top menu](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Roles and affiliations" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/moderation.md +msgid "You can promote users as moderators, if you need some help." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/moderation.md +#, no-wrap +msgid "Delete room content" msgstr "" #. type: Plain text @@ -1776,17 +1921,17 @@ msgstr "" #. type: Title ## #: support/documentation/content/en/documentation/user/moderation.md #, no-wrap -msgid "Notes" +msgid "Instance moderation" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "All instance moderators and admins will be owner of created chat rooms. If the video is local (not from a remote Peertube), the video owner will be admin in the chat room." +msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." +msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -1801,6 +1946,11 @@ msgstr "" msgid "OBS" msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some adviced to handle your live chats using OBS." +msgstr "" + #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md #, no-wrap @@ -1809,22 +1959,45 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "If you are using OBS for streaming, you can easily include the chat in your stream." +msgid "You can easily include the chat in your stream." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «share chat link» feature to generate an URL to your chat. The button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in a live stream](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px)" msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Check the «readonly» checkbox in the modal. Then use this link as a «web browser source» in OBS." +msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the «Transparent background» to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" +msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Then use this link as a \"web browser source\" in OBS." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +#: support/documentation/content/en/intro/_index.md +msgid "![Embeding the chat in OBS](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" msgstr "" #. type: Fenced code block (css) @@ -1838,7 +2011,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can customize colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." +msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/obs.md +msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." msgstr "" #. type: Title ## @@ -1852,6 +2030,352 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "How to setup the chat for your live stream" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "For streamers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Enabling the chat for you live streams" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![New live](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Activate the chat](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Per channel chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On the instance level, Peertube's adminstrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Share the chat" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can customize some options:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers.md +msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Include the chat in your video stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Chat persistence" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can change the persistence behaviour. [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Configure\"." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "There are several option that can be changed." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "![Configure chat room](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "You can also uncheck \"enable archiving\": if unchecked, the message will be pruned in the server restarts." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/streamers.md +#, no-wrap +msgid "Delete the chat content" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "If you want to delete the chat content, [Open the chat in fullscreen](/peertube-plugin-livechat/documentation/user/viewers), then open the top menu and click on \"Destroy\". A popup will open, asking a confirmation. To avoid errors, the popup will ask you the \"XMPP address\" of the chat room. This address can be obtain using the \"Details\" menu in the top menu." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers.md +msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." +msgstr "" + +#. type: Yaml Front Matter Hash Value: description +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "How to chat for stream viewers" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "For viewers" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Joining chat rooms" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/_index.md +#: support/documentation/content/en/intro/_index.md +msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you haven't a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This feature can be disabled by the instance's adminitrators." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Chat with an anonymous user](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Joining chat when not connected](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ### +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "If you have a Peertube account" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Chatting" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combinaison." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Participants list" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "To see the list of participants, just open the right menu:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "![Participants list](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can see that some participants have special rights (moderator, owner, ...)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Opening full screen" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +#: support/documentation/content/en/intro/_index.md +msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "It can be easier to chat using a full browser tab." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "This fullscreen view also adds a top menu with advances features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/moderation)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/documentation/user/viewers.md +#, no-wrap +msgid "Changing nickname" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can change your nickname by typing `/nickname your_new_nickname` in the message field." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/viewers.md +msgid "You can also change your nickname using the top menu when you are in fullscreen mode." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/xmpp_clients.md #, no-wrap @@ -1917,34 +2441,168 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/_index.md -#: support/documentation/content/en/intro/_index.md msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." msgstr "" +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "Welcome the **Peertube Livechat Plugin** documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/_index.md +msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." +msgstr "" + #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/intro/_index.md #, no-wrap msgid "Introduction" msgstr "" -#. type: Plain text +#. type: Title ## #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos." +#, no-wrap +msgid "What is the livechat plugin?" msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." msgstr "" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Installation" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "![Livechat installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Livechat capabilities" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Of course, for the federation to work, the plugin must be installed on both instances." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Integrate the chat in your live stream" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" +msgstr "" + +#. type: Title ## +#: support/documentation/content/en/intro/_index.md +#, no-wrap +msgid "Other usages" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/intro/_index.md +msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." msgstr "" #. type: Yaml Front Matter Hash Value: description