1
0
Fork 0
mirror of https://github.com/processone/ejabberd synced 2025-10-06 12:00:15 +02:00

Compare commits

...

867 commits

Author SHA1 Message Date
Jérôme Sautret
060992bafa Improve roster API commands documentation 2025-09-30 16:38:23 +02:00
Pawel Chmielowski
c0c69394b9 Make mod_muc_sql properly handle new hats data (#4380) 2025-09-30 10:00:11 +02:00
Badlop
2b7285e0b2 Update implementation of XEP-0317 Hats to version 0.3.1 (#4380) 2025-09-30 10:00:05 +02:00
Badlop
c3a24ffdf8 Revert "mod_muc_room.hrl: Work around old Dialyzer bug"
This reverts commit c4f6c9dfe7.
2025-09-30 09:58:14 +02:00
Pawel Chmielowski
48fb446f8c Properly pass send_timeout option to listener sockets 2025-09-26 10:44:38 +02:00
Pawel Chmielowski
0283a501fa Add archive_muc_as_mucsub option in mod_mam
This option can be used to enable archiving of
incoming groupchat messages as mucsub events
if user is subscribed to a room.
2025-09-25 10:06:26 +02:00
Badlop
fb572bf901 ejabberdctl: When ping returns pang, return also status code 1 (#4327) 2025-09-24 13:27:04 +02:00
Badlop
7eb09295a3 mod_block_strangers: Clarify access and catpcha documentation (#4221) 2025-09-24 13:27:02 +02:00
Badlop
e0eae52eae mod_muc_room: Don't require password if user is owner of room 2025-09-24 13:27:00 +02:00
Badlop
dd270f99fc container.md: Update versions used in ecs container image 2025-09-24 13:26:59 +02:00
Badlop
1472caab50 make-binaries: Bump OpenSSL 3.5.3 and Expat 2.7.2 2025-09-24 13:26:57 +02:00
Badlop
ef2e62a01c Bump Erlang/OTP version to 27.3.4.3 in installers and container 2025-09-24 13:26:55 +02:00
Badlop
4e909fc50d make-binaries: Bump crosstool to 1.28.0 2025-09-24 13:26:53 +02:00
Pawel Chmielowski
19b7106124 Remove EX_RULE and EX_STACK macros
As we no longer targer R19, we no longer need to carry those.
2025-09-23 11:25:17 +02:00
Badlop
4dea2f1eb6 Fix some Elvis reports 2025-09-03 12:20:42 +02:00
Badlop
1d5b9bba15 Get yconf that fixes problem introduced in recent commit (#4444) 2025-08-29 17:18:06 +02:00
Badlop
2951281115 mod_http_upload: Encode URL before parsing, as done before bba1a1e3c (#4450) 2025-08-29 17:17:39 +02:00
Badlop
fd8aba6d41 ext_mod: Print module status message after installation 2025-08-29 17:17:37 +02:00
Badlop
066e0a8101 No need to test intermediate XML, and delete after conversion 2025-08-29 17:17:35 +02:00
Badlop
bf262a6051 Fix markdown link to a command 2025-08-29 17:17:33 +02:00
badlop
7840924b17
Merge pull request #4443 from guusdk/xmpp-interop-testing-v1.6.1
CI: bump XMPP-Interop-Testing/xmpp-interop-tests-action
2025-08-26 17:21:46 +02:00
Guus der Kinderen
60bdab4e52 CI: bump XMPP-Interop-Testing/xmpp-interop-tests-action
Updates this GitHub Action that's used to execute XMPP-based interop tests from v1.6.0 to v1.6.1.

This is a bugfix release that should increase the stability / predictability of test execution.

A notable change is that the file structure in which XMPP stanzas are generated (which is provided as debug output) has changed. They are still stored in the directory denoted by the logDir argument, but the file structure in that directory has changed somewhat.
2025-08-25 10:43:31 +02:00
Alexey Shchepin
3a36a722c5 Fix a bug in mod_matrix_gw_room:check_event_power_level/3 2025-08-22 14:46:59 +03:00
Badlop
00c75c3dc9 Set version to 25.08 2025-08-22 11:15:33 +02:00
Badlop
cae7850a70 CHANGELOG.md: Update to 25.08 2025-08-22 10:56:06 +02:00
Badlop
ce668bef14 Container: Apply some improvements from ejabberd source code
Applied:
- ejabberd.yml.example: Use HOST_URL_ENCODE to handle case when vhost is non-latin1
- ejabberdctl: Improve explanation how to stop ejabberd in live mode
- ejabberdctl: New "mnesia_change" command, a frontend to mnesia_change_nodename
2025-08-22 10:56:03 +02:00
Badlop
3887b6d930 Update man page to 25.08 2025-08-21 17:12:55 +02:00
Badlop
b7bd0e196d Update rebar.lock too 2025-08-21 17:12:09 +02:00
Badlop
6d63842ad3 Fix typo in hu.msg string 2025-08-21 16:24:58 +02:00
Badlop
2f3b9015e9 Update module and options version notes 2025-08-21 16:24:55 +02:00
Badlop
6ae48eb991 Result of running "make options" 2025-08-21 16:24:50 +02:00
dependabot[bot]
c508795ad4 build(deps): bump golang in /.github/container
Bumps golang from 1.24-alpine to 1.25-alpine.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 16:24:48 +02:00
Badlop
4a053807e0 build(deps-dev): bump dialyxir from 1.4.5 to 1.4.6
Bumps [dialyxir](https://github.com/jeremyjh/dialyxir) from 1.4.5 to 1.4.6.
- [Release notes](https://github.com/jeremyjh/dialyxir/releases)
- [Changelog](https://github.com/jeremyjh/dialyxir/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jeremyjh/dialyxir/compare/1.4.5...1.4.6)

---
updated-dependencies:
- dependency-name: dialyxir
  dependency-version: 1.4.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 16:24:46 +02:00
dependabot[bot]
dd5bbda2dc build(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 16:24:44 +02:00
Badlop
98469678a0 ejabberd_listener: Add secret in temporary unix domain socket path (#4422) 2025-08-21 16:24:42 +02:00
Badlop
b8550e087e mod_conversejs: Ensure plugins URL is separated with / (#4413) 2025-08-21 16:24:39 +02:00
Holger Weiss
644d468b4f Update registration test
Adjust test case for commit 654d4b81b1.
2025-08-21 09:51:24 +02:00
Pawel Chmielowski
74c810eeaa Tag dependencies 2025-08-20 13:46:55 +02:00
Holger Weiss
a46325166a mod_register: Don't duplicate welcome subject
Don't include the configured welcome message subject with the body.  If
that's desired, the admin can simply configure it that way.  But if it's
undesired, there would be no way to avoid the subject duplication.
2025-08-19 20:09:17 +02:00
Holger Weiss
654d4b81b1 mod_register: Don't duplicate welcome message
Originally, the welcome message was sent as type 'normal'.  Apparently,
some clients don't display 'normal' messages as expected (see #4246).
To address that issue, commit 9a0ff13cc2
duplicated the welcome message as type 'chat'.  However, we shouldn't
send both formats.  The 'normal' message is either ignored by the
client, in which case it serves no purpose, or displayed, in which case
the user would see the message twice.
2025-08-19 20:03:01 +02:00
Holger Weiss
ff3d33dde4 Bump xmpp version
Allow for adding HTTP File Upload purposes support to ejabberd.
2025-08-18 16:23:33 +02:00
Badlop
3183e2f733 Fix dialyzer warnings in recent commit 2025-08-15 16:33:05 +02:00
Badlop
e1dc686ae7 mod_conversejs: Ensure assets_path ends in / as required by Converse (#4414) 2025-08-15 15:20:35 +02:00
Badlop
38b203feb1 ejabberd_listener: Use init_fail for errors as recommended by init_ack
That is recommended since OTP 26, see
 https://www.erlang.org/doc/apps/stdlib/proc_lib.html#init_ack/2
 Warning
 Do not use this function to return an error indicating that the process
 start failed. When doing so the start function can return before the
 failing process has exited, which may block VM resources required for a
 new start attempt to succeed. Use init_fail/2,3 for that purpose.
2025-08-15 15:20:33 +02:00
Alexey Shchepin
8b61cf0742 Don't send empty direct Matrix messages (thanks to snoopcatt) (#4420) 2025-08-15 04:52:07 +03:00
Alexey Shchepin
a02c75aa08 Add support for null values in is_canonical_json (thanks to snoopcatt) (#4421) 2025-08-15 04:52:07 +03:00
Alexey Shchepin
51af393baa Add leave_timeout mod_matrix_gw option (#4386) 2025-08-15 04:52:07 +03:00
Badlop
41318e45a5 mod_conversejs: Add option conversejs_plugins (#4413) 2025-08-14 19:05:12 +02:00
badlop
a94f227103
Merge pull request #4425 from guusdk/xmpp-interop-testing-v1.6.0
CI: bump XMPP-Interop-Testing/xmpp-interop-tests-action
2025-08-14 11:37:51 +02:00
Badlop
517776acd4 COMPILE.md: Mention dependencies and add link to Docs (#4431) 2025-08-13 18:17:26 +02:00
dependabot[bot]
212a5ded6e build(deps): bump actions/download-artifact from 4 to 5
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 18:17:05 +02:00
Badlop
fd9c929e37 Bump OpenSSL version to 3.5.2 2025-08-13 16:50:18 +02:00
Badlop
ce828163af Bump Erlang/OTP version to 27.3.4.2 2025-08-13 16:50:14 +02:00
Badlop
97e1b419a0 mod_providers: New module to serve easily XMPP Providers files 2025-08-13 16:49:42 +02:00
Badlop
d70ac7f7c5 ejabberd_logger: Print log lines colorized in console when using rebar3 2025-08-13 16:49:42 +02:00
Badlop
7065cb69f1 ejabberdctl: New "mnesia_change" command, a frontend to mnesia_change_nodename 2025-08-13 16:49:42 +02:00
Badlop
7815463ba0 ejabberd.yml.example: Use HOST_URL_ENCODE to handle case when vhost is non-latin1 2025-08-13 16:49:42 +02:00
Badlop
48e6631751 mod_muc_room: Fix warning about unused variable 2025-08-13 16:49:37 +02:00
Badlop
903e6b70b4 mod_matrix_gw: Document what room versions are supported since when 2025-08-13 16:48:01 +02:00
Alexey Shchepin
5edba59b24 Fix dialyzer errors 2025-08-11 20:24:59 +03:00
Alexey Shchepin
31cb4b06e4 Matrix gateway updates
- Partially rewritten state resolution
- Support for Hydra rooms
- Use double colon for separating a matrix server from a room ID in JID
  with Hydra rooms
- Partially rewritten mod_matrix_gw_s2s
- Add notary_servers option
2025-08-11 19:44:50 +03:00
Pawel Chmielowski
10f6723f00 Prevent loops in xml_compress:decode with corrupted data 2025-08-07 13:49:10 +02:00
Pawel Chmielowski
f594620c68 Only offer upgrades to methods that aren't already stored 2025-08-05 11:06:17 +02:00
Pawel Chmielowski
dacfad61d8 Fix format of passwords updates triggered by mod_scram_upgrade 2025-08-05 11:02:33 +02:00
badlop
7c1da7e0cf
Merge pull request #4412 from marc0s/issue-4410
fix: unsubscribe users from members-only rooms when expelled
2025-08-01 12:38:37 +02:00
marc0s
e709f99b47 fix: unsubscribe users from members-only rooms when expelled
Fixes #4410
2025-07-31 08:05:32 +02:00
Guus der Kinderen
f150419891 CI: bump XMPP-Interop-Testing/xmpp-interop-tests-action
Updates this GitHub Action that's used to execute XMPP-based interop tests from v1.5.0 to v1.6.0.

In this update, 524 new tests were added (more than doubling the amount of tests that previously existed).
2025-07-30 22:44:54 +02:00
Badlop
053fd26994 econf: If a host in configuration is encoded IDNA, decode it (#3519)
For example:

hosts:
  - localhost
  - locälhost3
  - xn--loclhost4-x2a

all them are converted to utf8:

ejabberd_option:hosts().
[<<"localhost">>,
 <<"locälhost3"/utf8>>,
 <<"locälhost4"/utf8>>]
2025-07-26 00:43:25 +02:00
Badlop
bba1a1e3ca mod_http_upload: Encode URLs into IDNA when showing to XMPP client (#3519) 2025-07-25 19:54:28 +02:00
Badlop
e5da1efea4 misc: Move uri_parse/1 to yconf and merge with yconf:parse_uri/1 2025-07-25 19:54:26 +02:00
Badlop
fbfd41c16e misc: uri_decode/1 moved here from ejabberd_http and prosody2ejabberd 2025-07-25 19:54:25 +02:00
Badlop
4391921727 ejabberd_config: New predefined keyword HOST_URL_ENCODE 2025-07-25 19:54:23 +02:00
Badlop
4cd3c657e2 ejabberd_listener: Try to create provisional socket in final directory (#4422)
and if that path is too long, then try HOME directory,
if that's too long too, throw error explaining the problem.

By the way, cutting the base64 string to 107 is a bad idea,
as it encodes the final path, which would get lost and crash.
2025-07-25 11:15:37 +02:00
Badlop
7647b77225 Runtime: Raise the minimum Erlang tested to Erlang/OTP 24
The Erlang containers from versions 20-23 use Debian Buster,
and require the debian repositories to install some development libraries.
The Debian Buster repositories are no longer available,
which means that we can no longer perform any test with Erlang 20-23.
2025-07-25 11:15:34 +02:00
Pawel Chmielowski
fe8710fe00 Rename auth_password_types_hidden_in_scram1 option to auth_password_types_hidden_in_sasl1
Also add migration code from old name
2025-07-25 09:39:21 +02:00
Pawel Chmielowski
1a9b147baf Report db failures in mod_muc_mnesia:restore_room 2025-07-23 20:27:19 +02:00
Pawel Chmielowski
6214e0385d Report db failures from mod_muc:restore_room 2025-07-23 19:59:32 +02:00
Badlop
f7002c31f0 Fix some typos in previous commit (#4422) 2025-07-22 13:30:54 +02:00
Badlop
99b75396ad ejabberd_listener: Log error when cannot set definitive unix socket (#4422) 2025-07-22 10:48:17 +02:00
Badlop
b1c3baa7bd Bump p1_acme to fix 'AttributePKCS-10' and OTP 28 (processone/p1_acme#4) 2025-07-22 10:47:38 +02:00
Badlop
355eb5dfde Improve documentation of toplevel options default_db and default_ram_db 2025-07-22 10:47:36 +02:00
Badlop
d269e32c3a ejabberd_config: Improve warning message about unsupported ram_db type 2025-07-22 10:47:33 +02:00
Badlop
214b76f763 ejabberd_doc: Document commands tags for modules 2025-07-22 10:47:30 +02:00
Holger Weiss
73a8fbdfb5 make-binaries: Re-add executable bit 2025-07-21 13:42:07 +02:00
Holger Weiss
9b6f0aeb3c make-binaries: Disable Linux-PAM's logind support
Make sure Linux-PAM doesn't attempt to include logind support.  This
avoids a build failure in case the host system has systemd's
development headers installed.
2025-07-21 13:38:11 +02:00
Badlop
45a6aed57f mod_admin_extra: Run sm_kick_user event when kicking account (#4415)
This is important when running the ban_account command and mod_auth_fast
is enabled, as the client may store auth tokens that bypass
the banning stored in private storage and enforced by ejabberd_auth.
2025-07-16 18:09:14 +02:00
Badlop
9d17a160b6 mod_admin_extra: No need to change password in ban_account (#4415)
When ban details are stored in private storage,
ejabberd_auth reads them and prevents user login,
so there's no need to modify the account password.
2025-07-16 13:33:40 +02:00
Badlop
850d097660 ejabberd_auth: Handle case running check_password when account is banned 2025-07-16 13:33:36 +02:00
Badlop
8ce8f67c06 misc: Add workaround for Json library not able to handle empty list 2025-07-16 13:33:33 +02:00
Pawel Chmielowski
a17c2c166d Fix issue with filtering duplicates in auth_mnesia:get_users()
Previous version was only correct when data to process
was sorted, which was not always the case.

This add common implementation of lists:uniq in misc that works
also on <R25, and switches get_users to use it.
2025-07-16 12:43:25 +02:00
Badlop
a64aa9e280 Set version to 25.07 2025-07-11 13:15:26 +02:00
Badlop
3834a47a39 CHANGELOG.md: Update to 25.07 2025-07-11 13:15:26 +02:00
Badlop
9f6ff515ff Fix documentation for commands implemented in modules with several behaviours 2025-07-11 13:10:08 +02:00
Pawel Chmielowski
64a210842e Use tagged dependencies 2025-07-11 12:55:25 +02:00
Badlop
c0de52c967 Update man page to 25.07 2025-07-11 12:10:58 +02:00
Badlop
67c3df05b3 ext_mod: Add temporary workaround for zip including absolute path 2025-07-11 12:10:57 +02:00
Badlop
4a66616756 mod_antispam: Mention usage of CONFIG_PATH predefined keyword 2025-07-11 12:10:54 +02:00
Pawel Chmielowski
e4d424bf56 Add auth_password_types_hidden_in_scram1 option
This option allows disabling some auth mechanisms
to be offered in SASL1 features. This makes adding
new password types easier, by ensuring that new
password use will be offered only to clients that
have new type stored (SASL2 clients that send us
user info before features need to be sent), but
not to clients where we don't know if they have
new passwords.
2025-07-10 16:52:13 +02:00
Badlop
c0fc6091b1 Annotate ejabberd version of new modules, options, commands 2025-07-10 10:58:17 +02:00
Badlop
ef35d19ff1 Update Ukrainian translation (thanks to Максим Горпиніч) 2025-07-10 10:58:15 +02:00
Badlop
cfa787c4b6 Update Tamil translation (thanks to TamilNeram) 2025-07-10 10:58:14 +02:00
Badlop
611ebce0d2 Update Greek translation (thanks to GiannosOB) 2025-07-10 10:58:13 +02:00
Badlop
1e0b8cb547 Bump Erlang/OTP 27.3.4.1 for container image too 2025-07-10 10:58:10 +02:00
Pawel Chmielowski
99d323b1dd Update fast_tls with updated deps 2025-07-09 17:13:17 +02:00
Pawel Chmielowski
72bc9b6c7f Allow s2s connections to accept client certificates that have only server purpose
Due to Google Chrome certification requirements we can expect
that in near future there will be no certificate authority
that will issue certifcates that have both server and client auth
purposes.

This change makes s2s listeners ignore cert purposes, and should
allow servers that have those new certificate to use it, to
authenticate new s2s connections.

This fixes issue #4392
2025-07-09 14:16:02 +02:00
Pawel Chmielowski
4694a482f4 Update doap with info about xep-0486 2025-07-08 20:13:56 +02:00
Badlop
443f39bfdb Result of running "make format doap options" 2025-07-08 12:43:43 +02:00
Badlop
b118dd8fc6 Update reference to XEP-0485 support 2025-07-08 12:43:43 +02:00
Badlop
bf39da7b8b mod_pubsub_serverinfo: Rephrase documentation and improve markdown 2025-07-08 12:42:52 +02:00
Badlop
ad3eee059e mod_antispam: Annotate ejabberd version of the new commands 2025-07-08 12:42:50 +02:00
Badlop
e94ccabcf0 mod_antispam: Move commands to a new "spam" API tag 2025-07-08 12:42:48 +02:00
Badlop
427a29c74e Bump Erlang/OTP 27.3.4.1, Elixir 1.18.4, libexpat 2.7.1, OpenSSL 3.5.1
Notice:
- installers use OTP 27.3.4.1, the latest available right now
- containers use OTP 27.3.4, because container for 27.3.4.1 was not published,
  see https://hub.docker.com/_/erlang
2025-07-08 12:42:44 +02:00
badlop
1d79edbae0
Merge pull request #4408 from sstrigler/mod_pubsub_serverinfo
mod_pubsub_serverinfo
2025-07-08 10:55:14 +02:00
badlop
9e4a6d09df
Merge pull request #4373 from sstrigler/mod_antispam
mod_antispam: port from ejabberd-contrib/mod_spam_filter
2025-07-08 10:19:34 +02:00
Stefan Strigler
7b08289799
Merge pull request #6 from badlop/antispam_services
Replace options rtbl_host and rtbl_domains_node with rtbl_services
2025-07-08 08:23:22 +02:00
Paweł Chmielowski
bc937546ec
Merge pull request #4409 from Britaliope/patch-1
missing comma in postgres schema
2025-07-07 19:03:10 +02:00
Stefan Strigler
3b972fe4a3 update p1/xmpp to latest 2025-07-07 17:58:56 +02:00
Badlop
5e93725044 Replace options rtbl_host and rtbl_domains_node with rtbl_services 2025-07-07 17:42:05 +02:00
Stefan Strigler
500af47b79 mod_pubsub_serverinfo: codec spec moved to p1/xmpp 2025-07-07 17:40:34 +02:00
Stefan Strigler
d862e04186
Merge pull request #5 from badlop/antispam_options
Fix crashes, improve options, complete documentation
2025-07-07 15:29:06 +02:00
Badlop
5f293cb1e0 Document more options 2025-07-07 14:28:14 +02:00
Bruno MATEU
c93ea2c22f
missing comma in postgres schema 2025-07-07 08:28:23 +02:00
Stefan Strigler
c567005241 mod_pubsub_serverinfo: get pubsub host from server state 2025-07-05 14:54:11 +02:00
Stefan Strigler
a6823d157c mod_pubsub_serverinfo: add documentation 2025-07-05 14:38:55 +02:00
Stefan Strigler
bf54cc59e1 mod_pubsub_serverinfo: apply make format 2025-07-05 14:23:03 +02:00
Stefan Strigler
740b0c7dd7 mod_pubsub_serverinfo: initial import as found on ejabberd-contrib 2025-07-05 14:19:20 +02:00
Badlop
c3f5083f15 Use the new gen_mod:prep_stop/1 feature
This fixes the problem when stopping the module with multiple vhosts:
unsubscribing from a local pubsub requires mod_pubsub in that vhost running,
but ejabberd stops mod_pubsub from a vhost before stopping mod_antispam
in other vhost.
2025-06-30 18:21:19 +02:00
Badlop
b65c11daf6 New predefined keyword: CONFIG_PATH 2025-06-30 18:21:19 +02:00
Badlop
263e1f59f7 Fix problem calling get_log_path when ejabberd is stopping
When ejabberd is being stopped
and some module calls ejabberd_logger:get_log_path(),
application:load/1 crashes with error:

** Reason for termination ==
** {terminating,
       [{application_controller,call,2,
            [{file,"application_controller.erl"},{line,511}]},
        {application,load1,2,[{file,"application.erl"},{line,274}]},
        {ejabberd_config,env_binary_to_list,2,
            [{file,"/home/git/ejabberd/src/ejabberd_config.erl"},
             {line,343}]},
        {ejabberd_logger,get_log_path,0,
            [{file,"/home/git/ejabberd/src/ejabberd_logger.erl"},
             {line,55}]},
2025-06-30 18:21:19 +02:00
Badlop
3d89c9199c gen_mod: Add support to prepare module stopping before actually stopping any module
Follows the reasoning of application:prep_stop, but applied to gen_mod:
  https://www.erlang.org/docs/28/apps/kernel/application.html#c:prep_stop/1
2025-06-30 18:21:19 +02:00
Stefan Strigler
4a51bf90ab
Merge pull request #3 from badlop/antispam_files
Move spam file management to a submodule
2025-06-25 15:45:15 +02:00
Badlop
a77c7e36b0 Move spam files parsing to a submodule 2025-06-23 09:44:33 +02:00
Badlop
88ae3fddf3 mod_antispam: Sort and document files options 2025-06-23 09:44:33 +02:00
Badlop
bddcf0624e mod_antispam: Move some definitions to a header file 2025-06-23 09:44:33 +02:00
Badlop
6b47d3eb0d mod_auth_fast: Clear tokens on kick, change pass and unregister (#4397)(#4398)(#4399) 2025-06-20 16:55:59 +02:00
Badlop
a0c97b33e0 CONTAINER.md: Move ejabberd-contrib content from Docs website 2025-06-20 12:45:35 +02:00
Badlop
5def9cef9f ext_mod: When upgrading module, clean also the compiled directories 2025-06-20 12:45:31 +02:00
Badlop
c20d745028 New option hosts_alias and function resolve_host_alias/1 (4400) 2025-06-19 12:40:16 +02:00
Badlop
e099435cd6 ejabberd_http: Remove unused default_host option and state element
The option 'default_host' for ejabberd_http was added years ago
in commit 7d623d5. However it was problematic and the usage was
removed in commit 83c291c. It's time to remove its last forgotten bits.
2025-06-19 12:40:15 +02:00
Badlop
d6a00f5151 mod_conversejs: Add link in WebAdmin to local Converse if configured 2025-06-19 12:40:14 +02:00
Badlop
653413e912 Run new webadmin hooks to add items to system menu 2025-06-19 12:40:12 +02:00
Badlop
288eecc23d Use misc:encode_pid/1 in ejabberd_sm_sql 2025-06-19 12:40:10 +02:00
Stefan Strigler
b55b6f3d26
Merge pull request #2 from badlop/antispam_filter
Move filtering actual implementation to a submodule
2025-06-18 14:15:39 +02:00
Badlop
d00561b58c Move filtering implementation to a submodule 2025-06-18 11:52:28 +02:00
Badlop
432810db89 Fix minor typos 2025-06-18 11:52:28 +02:00
Badlop
f3b1b5d419 Result of running "make format" 2025-06-18 11:52:28 +02:00
Stefan Strigler
d9a7b67f0e mod_antispam: increase timeout when waiting for dump file 2025-06-17 17:21:58 +02:00
Badlop
85f05192c8 Move spam_dump_file implementation to a submodule 2025-06-17 13:20:43 +02:00
Badlop
149b715b4f New predefined keyword: LOG_PATH 2025-06-17 13:20:43 +02:00
Stefan Strigler
bae345b92b mod_antispam: test dump file 2025-06-17 13:18:13 +02:00
Stefan Strigler
10ec128b94 mod_antispam: test whitelisted domain 2025-06-17 13:18:13 +02:00
Stefan Strigler
7a6e409879 mod_antispam: use message/3 in test 2025-06-17 13:18:13 +02:00
Stefan Strigler
ea19e4bc7f mod_antispam: remove unnecessary check in test
this was left over from debugging issues with fixtures
2025-06-17 13:18:13 +02:00
Stefan Strigler
6122a525d2 mod_antispam: fix config types 2025-06-17 13:18:13 +02:00
Badlop
b607d95a93 Refactorize each individual test case in individual functions 2025-06-17 13:18:13 +02:00
Stefan Strigler
ee46333def add make target test-<group>
Eg. invoke common test for specific test group only like

$ CT_BACKEND=mnesia,redis make test-antispam_single
2025-06-17 13:18:13 +02:00
Stefan Strigler
34b40aec66 mod_antispam: add format instructions 2025-06-17 13:18:13 +02:00
Stefan Strigler
639147be41 fix pubsub retract items being a list of ids 2025-06-17 13:18:11 +02:00
Stefan Strigler
c48aa38c39 mod_antispam: add test suite 2025-06-17 13:10:27 +02:00
Stefan Strigler
70bec7b714 tests: update readme and compose to work with current sw versions 2025-06-17 13:10:27 +02:00
Stefan Strigler
a7c15eaccf mod_antispam: initial import from ejabberd-contrib/mod_spam_filter 2025-06-17 13:10:27 +02:00
Badlop
c78e99dd54 Use auxiliary function to get HOME, use Mnesia directory when not set (#4402) 2025-06-17 13:02:01 +02:00
dependabot[bot]
3196779308 build(deps-dev): bump ex_doc from 0.37.3 to 0.38.2
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.37.3 to 0.38.2.
- [Release notes](https://github.com/elixir-lang/ex_doc/releases)
- [Changelog](https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-lang/ex_doc/compare/v0.37.3...v0.38.2)

---
updated-dependencies:
- dependency-name: ex_doc
  dependency-version: 0.38.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 13:02:01 +02:00
Badlop
064b005ec5 Define some example glossary terms 2025-06-17 13:02:01 +02:00
Badlop
2d2b98e525 Update Elvis to 4.1.1, fix some warnings and enable their tests 2025-06-16 16:59:43 +02:00
Badlop
71f623ddbf Fix previous commits 2025-06-16 13:14:07 +02:00
Badlop
f03b5f4c44 Support list of IDs in pubsub-items-retract (processone/xmpp#100) 2025-06-16 13:09:52 +02:00
Badlop
aff8b47b6c Add dialyzer spec to try to dix warnings 2025-06-16 12:48:34 +02:00
Badlop
6c1452435d Bump xmpp to get: Add Unified Push support (via Conversations/up) (processone/xmpp#101) 2025-06-16 12:24:06 +02:00
Badlop
38f365ffeb Move ecPrivkeyVer1 workaround for Jose from ejabberd to p1_acme
Revert "Add workaround for Jose 1.11.10 not supporting OTP 28 ecPrivkeyVer1 (#4393)"
This reverts commit 363351b18c.
2025-06-16 12:24:01 +02:00
Badlop
ed846c4a88 ext_mod: Recommend to write README.md instead txt (processone/ejabberd-contrib#363) 2025-06-09 18:02:40 +02:00
Badlop
8855a304cc ext_mod: Support library path installed from Debian (processone/ejabberd-contrib#363) 2025-06-09 17:53:25 +02:00
Paweł Chmielowski
95a083a6f4 Replace csplit with perl in rebar3-format.sh
Bsd csplit doesn't offer some options that we require, so let's use perl
that should work everywhere
2025-06-06 16:52:28 +02:00
Jérôme Sautret
0bb99bb371 Fix supported version of XEP-0485 2025-06-06 11:57:27 +02:00
Badlop
38cc3ccb1e Avoid using the "else" conditional compilation macro directive
Even if "-else." is a valid directive:
  https://www.erlang.org/docs/28/system/macros.html#conditional-compilation
there is a bug in rebar3_format that annoyingly rewrites it as "- else ."
  https://github.com/AdRoll/rebar3_format/issues/337
as a quick workaround, rewrite directives to not use "-else."
2025-06-05 17:02:41 +02:00
Jérôme Sautret
c51b044b3f Fix macro used in string options when defined in env var
Configuration macro defined as EJABBERD_MACRO_* environment variable
couldn't be used inside string options, like this:

captcha_cmd: "tools/@SCRIPT@"
2025-06-05 14:20:11 +02:00
Badlop
363351b18c Add workaround for Jose 1.11.10 not supporting OTP 28 ecPrivkeyVer1 (#4393) 2025-06-04 11:00:00 +02:00
Paweł Chmielowski
167bbc768a Remove unused function 2025-06-02 18:39:51 +02:00
Paweł Chmielowski
591e15f0f6 Fix mnesia to sql exporter after changes to auth tables
Conversion functions used by ej2sql module was not updated after change
that did allow storing multiple passwords per user, which made us skip
passwords that were updated to new format, this fixes this problem.

This fixes issue #4391
2025-06-02 18:19:03 +02:00
Badlop
b4a917db09 Runtime: Fix step name 2025-05-30 17:17:32 +02:00
Badlop
7755fcc846 Bump fast_xml and xmpp for improved Erlang/OTP 28 support 2025-05-30 17:17:32 +02:00
Badlop
250af8f06a Fix "make options" in Erlang/OTP 28 (thanks to Alexey Shchepin)(#4352) 2025-05-30 17:17:32 +02:00
Alexey Shchepin
9569e407b5 Don't send empty messages in Matrix rooms (#4385) 2025-05-30 17:27:30 +03:00
Alexey Shchepin
573d5525ec Fix key validation in mod_matrix_gw_s2s:check_signature 2025-05-30 17:27:30 +03:00
Badlop
f1de7b008b Use xmpp and p1_acme patched with Erlang/OTP 28 support 2025-05-28 17:36:39 +02:00
Badlop
c10e6ded78 Runtime: Use --with-min-erlang to bypass Erlang 25 soft requirement 2025-05-28 17:36:39 +02:00
Badlop
9bc991cb7d CI and Runtime: Add Erlang/OTP 28 to the versions matrix 2025-05-28 17:36:39 +02:00
Badlop
ffa7c32d80 Rebar/Rebar3: Update binaries to work with Erlang/OTP 25-28 (#4354)
They are compiled from their git repositories, main branches,
using erlang:25-slim docker image.

To compile ejabberd using rebar/rebar3 and Erlang 20.0 up to 23.3,
you can download the old binaries from ejabberd 21.12, available at:
  https://github.com/processone/ejabberd/raw/21.12/rebar
  https://github.com/processone/ejabberd/raw/21.12/rebar3

To compile ejabberd using rebar/rebar3 and Erlang 24.0 up to 24.3,
you can download the old binaries from ejabberd 24.12, available at:
  https://github.com/processone/ejabberd/raw/24.12/rebar
  https://github.com/processone/ejabberd/raw/24.12/rebar3
2025-05-28 17:36:07 +02:00
Alexey Shchepin
038491d2ec Support older Matrix rooms versions starting from version 4 2025-05-28 13:30:00 +03:00
Paweł Chmielowski
9d1d57cd82 Fix typo in last commit 2025-05-21 15:53:13 +02:00
Paweł Chmielowski
c38b2bfc21 Add options that allow to configure proxy used by rest module 2025-05-21 15:37:49 +02:00
Paweł Chmielowski
18e7805ef5 Present mam full text search in xep-431 compatible way
Also offer those fields only on mysql, where full text search is available
2025-05-16 13:33:24 +02:00
Badlop
010eab6e30 When encoding JSON, handle term that is key-value list (#4379) 2025-05-13 12:37:26 +02:00
Badlop
30c8088d73 Fix crash in "rebar3 cover" with Erlang/OTP 28 (#4353) 2025-05-13 12:37:26 +02:00
Badlop
354009033a CI: Don't run "make options" with Erlang/OTP 28 yet because it crashes (#4352) 2025-05-13 12:37:26 +02:00
Badlop
bf3f904fe9 Runtime: Don't test rebar2 + OTP 28 because "make rel" fails
When running "make rel":

./rebar  generate
==> rel (generate)
ERROR: generate failed while processing /__w/ejabberd/ejabberd/rel:
{'EXIT',{{badmatch,{error,"Application et is used in release \"ejabberd\" and cannot be excluded"}},
         [{rebar_reltool,generate,2,
                         [{file,"src/rebar_reltool.erl"},{line,53}]},
          {rebar_core,run_modules,4,[{file,"src/rebar_core.erl"},{line,493}]},
          {rebar_core,execute,6,[{file,"src/rebar_core.erl"},{line,418}]},
          {rebar_core,maybe_execute,8,
                      [{file,"src/rebar_core.erl"},{line,302}]},
          {rebar_core,process_dir1,7,[{file,"src/rebar_core.erl"},{line,261}]},
          {rebar_core,process_each,5,[{file,"src/rebar_core.erl"},{line,351}]},
          {rebar_core,process_dir1,7,[{file,"src/rebar_core.erl"},{line,253}]},
          {rebar_core,process_commands,2,
                      [{file,"src/rebar_core.erl"},{line,93}]}]}}
make: *** [Makefile:570: prod] Error 1
2025-05-13 12:37:14 +02:00
Paweł Chmielowski
d65cafae64 Update code for switching to new schema type to users table changes 2025-05-12 18:47:18 +02:00
Paweł Chmielowski
128103b7b2 Typo 2025-04-30 14:44:19 +02:00
Paweł Chmielowski
cbb88638d2 Add mssql specific implementation of delete_old_mam_messages 2025-04-30 14:31:05 +02:00
Paweł Chmielowski
f046aeeaa2 Fix dialyzer warning in last commit 2025-04-29 12:20:13 +02:00
Paweł Chmielowski
bd5f9537c5 Normalize username when determining if user want to change pass in mod_register
Should fix issue #4377
2025-04-29 11:43:17 +02:00
Paweł Chmielowski
838bbd70ef Strip query data when returning errors in mod_register 2025-04-29 10:33:17 +02:00
Paweł Chmielowski
e7997244af Allow to specify minimal erlang version using --with-min-erlang in configure 2025-04-28 13:58:40 +02:00
Paweł Chmielowski
3874e71971 Better lists:uniq substitute in ejabberd_config
Original version didn't keep original order of modules, which could break
ability to override of options by external modules.
2025-04-28 12:59:17 +02:00
Paweł Chmielowski
67cc0c5286 Handle objects that don't need conversion in mod_mam_mnesia:transform()
This should fix issue #4374
2025-04-22 12:31:08 +02:00
Badlop
826123db56 Bump Erlang/OTP version to 27.3.3 2025-04-22 12:27:10 +02:00
Badlop
05b0037462 Raise the minimum Elixir tested version to 1.14.0 (#4281)
Cannot test with Elixir 1.13.4 because its container image includes
Erlang/OTP 24.3 that ejabberd does not support anymore.
2025-04-22 12:27:10 +02:00
Badlop
54796f888e Raise Erlang/OTP minimum requirement to 25.0 (#4281) 2025-04-22 12:27:10 +02:00
Badlop
82ec0a4837 Remove unused MyNick variables 2025-04-22 12:27:09 +02:00
Badlop
7167df7979 mysql.sql: Fix typo in commit 7862c6a when creating users table 2025-04-22 12:25:04 +02:00
Paweł Chmielowski
45e7d8426d Make delete_old_mam_messages_batch work with sqlite 2025-04-17 14:21:25 +02:00
Badlop
ef754939c4 Set version to 25.04 2025-04-16 17:58:37 +02:00
Badlop
ee3a0b8b1a Bump Erlang/OTP version to 27.3.2
27.3.3 was just release, but image is not yet published in
https://hub.docker.com/_/erlang/tags?name=27.3
2025-04-16 17:20:28 +02:00
Badlop
2182cb60ae CHANGELOG: Fix typos 2025-04-16 13:44:13 +02:00
Badlop
4da8278e66 Update other translations 2025-04-16 13:44:13 +02:00
Badlop
629db496b5 Update Chinese (Simplified) translation (thanks to Sketch6580) 2025-04-16 13:44:13 +02:00
Badlop
f79b8e166a Update Ukrainian translation (thanks to Максим Горпиніч) 2025-04-16 13:44:13 +02:00
Badlop
fae4ab97fd Update Albanian translation (thanks to Besnik Bleta) 2025-04-16 13:44:13 +02:00
Badlop
da8d04a654 Update Portuguese translation (thanks to Silvério Santos) 2025-04-16 13:44:13 +02:00
Badlop
ce02fc485f Update Portuguese (Brazil) translation (thanks to Wellington Uemura) 2025-04-16 13:44:13 +02:00
Badlop
69695ffe27 Update German translation (thanks to Nautilusx) 2025-04-16 13:44:13 +02:00
Badlop
6fdb467484 Update man page to 25.04 2025-04-16 13:44:13 +02:00
Badlop
d8016a6477 Result of running "make format" 2025-04-16 13:44:13 +02:00
Badlop
e43d864184 CI: Bump ubuntu-24.04, and Erlang 25+ (#4281)
Update postgresql preparation:
- ubuntu-20.04 included PostgreSQL 14.13
- ubuntu-24.04 includes PostgreSQL 16.4
and in the meantime, PostgreSQL 15.0 revoked
"the CREATE permission from all users except a database owner from the public (or default) schema."
See https://www.postgresql.org/about/news/postgresql-15-released-2526/
2025-04-16 13:44:07 +02:00
Badlop
4d3681aba1 Annotate kick_users version 2025-04-16 13:43:13 +02:00
Paweł Chmielowski
d791f6ceaa Update changelog 2025-04-16 12:56:04 +02:00
Paweł Chmielowski
602a42f5ce Add tests for duplicate occupant-id handling 2025-04-16 11:39:30 +02:00
Paweł Chmielowski
c98739d5b5 Replace all occupand_id tags 2025-04-14 16:42:00 +02:00
Paweł Chmielowski
425504454c Allow passing multiple paths in external_beams 2025-04-08 14:21:18 +02:00
Paweł Chmielowski
780031847c Relax limits of shared groups names
We want to normalize it, but we don't need to limit it to what nodeprep
allows (like for example ':' that we see in use)
2025-04-04 11:07:51 +02:00
Paweł Chmielowski
c3af613db1 Catch errors from mod_shared_roster:create_group in srg_* commands 2025-04-04 11:07:51 +02:00
Badlop
babd01a87f Container: Improve explanation of CTL_ON ignore prefix 2025-04-03 13:43:15 +02:00
Badlop
17b605a32b kick_users command: Move to "Online Users" page, disable auto-execution
kick_users can be considered a "modifier" command with "informative" result
as described in include/ejabberd_commands.hrl

ejabberd_web_admin executes automatically a command if:
- it returns something different than rescode or restuple
- and all its arguments are provided
- and force_execution is set to true or undefined
2025-04-03 13:43:13 +02:00
badlop
fc813acd7b
Merge pull request #4364 from Quobis/ejabberdctl-kick_users-command
ejabberdctl: add new `kick_users host` command
2025-04-03 12:56:53 +02:00
Badlop
d842d6772d CI: Pull Redis image from ECR instead of Docker Hub
Pull images from Amazon ECR (Elastic Container Registry) Public Gallery
instead of Docker Hub to reduce consumption of the pull limits
https://www.docker.com/blog/revisiting-docker-hub-policies-prioritizing-developer-experience/
2025-04-01 16:07:46 +02:00
Badlop
67aaf93157 Runtime: Pull images from ECR instead of Docker Hub
Pull images from Amazon ECR (Elastic Container Registry) Public Gallery
instead of Docker Hub to reduce consumption of the pull limits
https://www.docker.com/blog/revisiting-docker-hub-policies-prioritizing-developer-experience/
2025-04-01 13:42:22 +02:00
Badlop
9154275431 Revert "build(deps): bump stun from 1.2.17 to 1.2.19"
This reverts commit a8a5be7a34.

Don't upgrade to stun 1.2.19 yet, because esip still depends on stun 1.2.17:

Because "the lock" depends on "esip 1.0.57" which depends on "stun 1.2.17", "the lock" requires "stun 1.2.17".
And because "the lock" specifies "stun 1.2.19", no version of "the lock" is allowed.
So, because "your app" depends on "the lock", version solving failed.
** (Mix) Hex dependency resolution failed
2025-04-01 13:42:22 +02:00
Badlop
c343ef7aad Container: Apply recent ejabberdctl backward support code 2025-04-01 13:42:22 +02:00
Badlop
78093735b7 ejabberdctl: Add backward support for mnesia path with nodename (#4366) 2025-04-01 12:35:51 +02:00
dependabot[bot]
ed6a111982 build(deps): bump XMPP-Interop-Testing/xmpp-interop-tests-action
Bumps [XMPP-Interop-Testing/xmpp-interop-tests-action](https://github.com/xmpp-interop-testing/xmpp-interop-tests-action) from 1.4.0 to 1.5.0.
- [Commits](https://github.com/xmpp-interop-testing/xmpp-interop-tests-action/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: XMPP-Interop-Testing/xmpp-interop-tests-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 12:35:47 +02:00
dependabot[bot]
a8a5be7a34 build(deps): bump stun from 1.2.17 to 1.2.19
Bumps [stun](https://github.com/processone/stun) from 1.2.17 to 1.2.19.
- [Changelog](https://github.com/processone/stun/blob/master/CHANGELOG.md)
- [Commits](https://github.com/processone/stun/compare/1.2.17...1.2.19)

---
updated-dependencies:
- dependency-name: stun
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 12:35:44 +02:00
Paweł Chmielowski
5008947e32 Make sqlite update_primary_key when copying data use list of columns and not *
Since * depends on order of columns, if original table have different
column layout we could get resulting columns in wrong order.

This is fix for issue #4365
2025-03-31 11:49:30 +02:00
Marcos de Vera Piquero
0827a5116f ejabberdctl: add new kick_users host command
This new command accepts a host name and will kick all user sessions
found for that given host. The result is the number of kicked
sessions.
2025-03-28 17:45:54 +01:00
Badlop
85d0e93af5 Set version to 25.03 2025-03-28 10:41:53 +01:00
Badlop
f677436437 Update changelog to 25.03 2025-03-28 10:41:45 +01:00
Badlop
05f8992e3e Update man page to 25.03 2025-03-28 10:37:29 +01:00
Badlop
2ed7ce49a2 Update documentation about XEP-0424 support and move to proper file (#3340) 2025-03-28 10:37:26 +01:00
Badlop
9087867631 Container: Document the used Erlang and Elixir versions 2025-03-28 10:37:24 +01:00
Badlop
f58a0cdbfd Add some apps to rebar2 OTP releases 2025-03-27 22:07:04 +01:00
Badlop
91fb02d62e Result of running "make doap" 2025-03-27 22:07:02 +01:00
Badlop
d831fd4789 Result of runing "make translations" 2025-03-27 22:07:01 +01:00
Badlop
322e642f19 Update Chinese (Simplified) translation (thanks to Sketch6580) 2025-03-27 22:07:00 +01:00
Badlop
4967acaec9 Update Ukrainian translation (thanks to Максим Горпиніч) 2025-03-27 22:06:59 +01:00
Badlop
113e5a322e New Tamil translation (thanks to TamilNeram) 2025-03-27 22:06:57 +01:00
Badlop
9c29457ee2 mod_adhoc_api: Fix warning when running "make translations" 2025-03-27 22:06:56 +01:00
Badlop
4fe5ee034c Update version number in documentation to 25.03 2025-03-27 22:06:54 +01:00
Badlop
78650f827e Rephrase auth_stored_password_types documentation 2025-03-27 22:06:52 +01:00
Badlop
a4fc448a52 Container: Bump versions to Erlang/OTP 27.3 and Elixir 1.18.3 2025-03-27 22:06:50 +01:00
Paweł Chmielowski
01a71dc189 Restore odbc in dialyzer apps 2025-03-27 18:29:54 +01:00
Paweł Chmielowski
90a200be25 Tag deps 2025-03-27 16:25:12 +01:00
Paweł Chmielowski
9c92fcc92d Fix last commit 2025-03-26 13:03:41 +01:00
Paweł Chmielowski
6f9f4b3635 Fix issues with ldap authentication 2025-03-26 12:52:03 +01:00
Paweł Chmielowski
968fbc9424 Fix compilation on <R25 2025-03-26 11:29:59 +01:00
Paweł Chmielowski
7862c6a7db Add support for storing multiple passwords formats per user
This adds option 'auth_stored_password_types' that can be used to setup
storage of multiple passwords for each user. When this is set, on each
password set, database will now store password in each format specified.
2025-03-26 11:03:39 +01:00
Alexey Shchepin
ced72f4a89 Sanitize message ID coming from Matrix 2025-03-25 17:42:31 +03:00
Alexey Shchepin
85dbadee5c Merge branch 'matrix' 2025-03-24 21:09:49 +03:00
Alexey Shchepin
cf13abdab6 Preserve XMPP message IDs in Matrix rooms 2025-03-24 20:00:33 +03:00
dependabot[bot]
239d4a5bfb build(deps): bump golang in /.github/container
Bumps golang from 1.23-alpine to 1.24-alpine.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 16:16:12 +01:00
Badlop
51e96433ea Add XEPs that are indirectly supported and required by XEP-0479 2025-03-24 16:16:10 +01:00
Badlop
12274a969a ejabberd_config: Recover support for keywords in atom option that will be converted to binary 2025-03-24 16:16:08 +01:00
Badlop
79a4dd4a26 econf: Recover support for setting hosts as atoms in config file 2025-03-24 16:16:06 +01:00
Badlop
d9e86600dc Register hooks and iq_handler using the gen_mod support for registrations 2025-03-24 16:16:04 +01:00
Badlop
b8cb1bbdcf Register commands using the new gen_mod support 2025-03-24 16:16:02 +01:00
Badlop
c180349fc6 gen_mod: Support registering commands and hook_subscribe in start/2 result 2025-03-24 16:16:00 +01:00
Badlop
a6fec278c3 ejabberd_commands: Fix command unregistration 2025-03-24 16:15:57 +01:00
Badlop
999ede59ce Update a pair more URLs in documentation 2025-03-24 16:15:53 +01:00
Alexey Shchepin
30a7b0ef3b Better Matrix room topic and room roles to MUC conversion, support room aliases in invites 2025-03-20 17:33:53 +03:00
Badlop
16af90648e Update moved or broken URLs in documentation 2025-03-20 12:52:52 +01:00
Badlop
7723951c05 mod_muc_room: New muc_disco_info_extras event, useful for mod_muc_webchat_url (#3041) 2025-03-20 12:52:28 +01:00
Badlop
1668cde93f Update xmpp to get support for webchat_url (#3041) 2025-03-20 12:52:26 +01:00
badlop
418ca34c85
Merge pull request #4357 from badlop/adhoc_api
New mod_adhoc_api and related improvements
2025-03-20 11:10:43 +01:00
Paweł Chmielowski
6d8e588b78 Allows test to be run using ct_run 2025-03-19 10:40:49 +01:00
Badlop
9bf2d6ce5b mod_configure: Document available alternative API commands 2025-03-19 10:40:01 +01:00
Badlop
496daf9220 mod_adhoc_api: New module to execute API Commands using Ad-Hoc Commands 2025-03-19 10:39:53 +01:00
Badlop
573e06cc0c mod_muc_admin: create_room_with_opts command recommends using ; and = separators 2025-03-19 10:38:10 +01:00
Badlop
6d77ace5c9 mod_http_api: Sort list elements in a command result 2025-03-19 10:38:10 +01:00
Badlop
aa78362c7f mod_configure: Add option 'access' to let configure the access name 2025-03-19 10:38:10 +01:00
Badlop
6151674e64 ejabberd_commands: Show warning when registering command with an existing name
In ejabberd modules, only register/unregister commands
if module is not running for any other vhost.
2025-03-19 10:38:10 +01:00
Badlop
1ea0dde417 ejabberd_admin: Allow using mnesia_list_tables and mnesia_table_change_storage 2025-03-19 10:38:10 +01:00
Badlop
53dea7b6d7 Fix email addresses in modules headers 2025-03-18 19:58:47 +01:00
Badlop
c87ba45a86 Result of running "make format" 2025-03-18 19:57:38 +01:00
badlop
6ea25e2272
Merge pull request #4350 from badlop/define_keyword
New define_keyword option
2025-03-18 15:48:58 +01:00
Badlop
888c335c2e Add tests for config features define_macro and define_keyword 2025-03-18 13:40:21 +01:00
Badlop
4dcf97c4c1 Now, when running tests, external may contain duplicate module 2025-03-18 13:40:21 +01:00
Badlop
352ee3a318 Docs: Document define_keyword and simplify define_macro 2025-03-18 13:40:21 +01:00
Badlop
c8abff33c1 Remove some options keyword expansion, as they are now predefined 2025-03-18 13:40:21 +01:00
Badlop
998690f58c Add support to replace keywords in modules options 2025-03-18 13:40:21 +01:00
Badlop
6e68c2ec02 Add support to replace keywords in listener options 2025-03-18 13:40:21 +01:00
Badlop
896b7c7559 Add support to replace keywords in toplevel options 2025-03-18 13:40:21 +01:00
Badlop
69b190775c Implement internal functions get_predefined and replace keywords 2025-03-18 13:40:21 +01:00
Badlop
b769de0690 New option define_keyword 2025-03-18 13:40:21 +01:00
Badlop
19482529ee Inform that define_macro cannot be used inside host_config 2025-03-18 13:40:21 +01:00
Badlop
ad8e325139 Disable commands tests for old Erlang/OTP versions
Since recently, this test fails with Erlang/OTP 22 and lower:
  =result        failed:
    {test_case_failed,
     "Received input:
      [{error,{compilation_failed,
         \"/home/runner/.ejabberd-modules/sources/ejabberd-contrib/mod_example/src/mod_example.erl\"}}]
      don't match expected patterns:ok"},
2025-03-18 12:45:25 +01:00
Badlop
b901a69f5c mix.exs: Keep debug info when building dev release (thanks to Stefan Strigler) 2025-03-17 15:09:12 +01:00
Badlop
62a165e4cf ejabberd_web_admin: Support commands with tuple arguments; fix list indent 2025-03-17 15:09:10 +01:00
badlop
29616dc163
Merge pull request #4340 from badlop/containers-frictionless
CTL_OVER_HTTP and containers frictionless
2025-03-12 19:40:56 +01:00
Badlop
60324d4b7a CONTAINER.md: Include documentation for ecs container image 2025-03-12 18:19:39 +01:00
Badlop
cfa6575b4f CONTAINER.md: Update with all the recent improvements 2025-03-12 18:18:03 +01:00
Badlop
3b01e4e4e0 Container: Fix warning about relative workdir 2025-03-12 18:18:03 +01:00
Badlop
fa4a93c465 Container: Place sockets/ outside database/
The socket file is useless outside the container, and also
database/ may get mounted as volume, and can't handle socket file
2025-03-12 18:18:03 +01:00
Badlop
74d6d53ac6 Container: Add ERL_FLAGS to compile elixir on qemu cross-platform
Without this, compiling Elixir on arm64 using QEMU fails with:
 <<"could not call Module.put_attribute/3 because the module ExUnit.DocTest
 is already compiled">>

Solution found in:
  https://elixirforum.com/t/elixir-docker-image-wont-build-for-linux-arm64-v8-using-github-actions/56383/13
2025-03-12 18:18:03 +01:00
Badlop
8070a656fe Container: Use again direct METHOD, qemu got fixed (3983)(4280)
Partially revert d15cf99:
  Container: Add METHOD to build container using packages (3983)
2025-03-12 18:18:03 +01:00
Badlop
105a0c2029 Container: Enable CTL_OVER_HTTP by default 2025-03-12 18:18:03 +01:00
Badlop
e887546c27 Container: Copy support for CTL_OVER_HTTP 2025-03-12 18:18:03 +01:00
Badlop
9305232f8c Container: Remove runDeps file once it's used 2025-03-12 18:18:03 +01:00
Badlop
7832a6342a Container: Link path to mnesia spool dir for backwards compatibility
The ejabberdctl script in ecs image sets mnesia spool dir as:
: "${SPOOL_DIR:="$HOME_DIR/database/$ERLANG_NODE"}"
2025-03-12 18:18:03 +01:00
Badlop
c924a47188 Container: Improve entrypoint script: register account, or set random
If password variable is set, register that account.
Example kubernetes yaml file in podman:

    env:
    - name: EJABBERD_MACRO_ADMIN
      value: administrator@example.org
    - name: REGISTER_ADMIN_PASSWORD
      value: somePass0rd

If admin and password are not set,
grant admin rights only to a random account name.
Notice that admin rights are granted to that variable in the default
ejabberd.yml, so if the account is not created, somebody else could do.
2025-03-12 18:18:03 +01:00
Badlop
1d42d55064 Container: Compile ejabberdapi during build
Code written originally by sando38 for ecs's Dockerfile.
2025-03-12 18:18:03 +01:00
Badlop
dd7550dbad Container: Listen for webadmin in a port number lower than any other
In the docker-desktop and podman-desktop,
when user clicks their "Open Browser" buttons,
those apps open a browser with / URL and the lowest exposed port number.
2025-03-12 18:18:03 +01:00
Badlop
7df7daa050 Container: Define and use macros in the configuration file 2025-03-12 18:18:03 +01:00
Badlop
090a7e664e Container: Apply customizations directly in the configuration file 2025-03-12 18:18:03 +01:00
Badlop
3d49bed0cf Container: Copy main example configuration file, will be customized 2025-03-12 18:18:03 +01:00
Badlop
9f28098d04 Container: Copy files to stable path, add ecs backwards compatibility
Copy captcha scripts to stable path for referencing in compose files:
  /usr/local/bin/
which is included in $PATH

For backwards compatibility with ecs, link:
  /opt/ -> /home/
  /usr/local/bin/ -> /opt/ejabberd/bin/

Copy sql files to stable path for referencing:
  /opt/ejabberd/sql/
For backwards compatibility with ecs, copy also to
  /opt/ejabberd/database/
ecs image implemented this in ejabberdctl since 2019:
  edb0373fd0ae0b24807a41ba2c3bf04b5b514844
  Keep SQL init scripts in container (#42)
2025-03-12 18:18:03 +01:00
Badlop
e761b22c61 ejabberd_listener: When opening ctl_over_http connection, log in DEBUG 2025-03-12 18:18:03 +01:00
Badlop
4d62f545c5 ejabberd_admin: Separate Status command result with newline
This is useful for CTL_OVER_HTTP
2025-03-12 18:18:03 +01:00
Badlop
f789495c39 ejabberdctl: Improve method to pass command arguments 2025-03-12 18:18:03 +01:00
Badlop
46a64c0f68 New ejabberdctl option CTL_OVER_HTTP
This uses an HTTP connection to execute the command,
which is way faster than starting an erlang node
2025-03-12 18:18:03 +01:00
Badlop
ab8a39e71f ejabberdctl: Improve explanation how to stop ejabberd in live mode 2025-03-12 18:18:03 +01:00
Badlop
630301a7ba ejabberdctl: Document the --auth option
The expected placement of --auth is not arbitrary,
it should be provided immediately before the command+args
2025-03-12 18:18:03 +01:00
Badlop
d4fd987e84 ejabberd_listener: When stopping listener, delete Unix Domain Socket file 2025-03-12 17:21:46 +01:00
Badlop
c5abe5d882 ejabberd_listener: Apparently the sleep 5 seconds isn't needed anymore 2025-03-12 17:09:37 +01:00
Badlop
71dbbc1b5a ejabberd_listener: Use /tmp for temporary socket, as path is restricted to 107 chars 2025-03-12 17:09:37 +01:00
Badlop
c9a9585573 ejabberd_listener: Add support for socket relative path
If the 'port' option is set to "unix:some-filename" without absolute path,
then the file is created in the mnesia spool directory
2025-03-12 17:09:37 +01:00
Badlop
bb2f398fa2 ejabberd_listener: Handle unix socket when logging remote client 2025-03-12 17:09:37 +01:00
Badlop
afc54aeb20 ext_mod: Provide output path when mix unpacks dependency from hex
When installing a module with mix available in the system,
mix downloads and uncompresses the dependency.
By default the output dir is <app>-<version> [1], and
that breaks compilation of the prometheus library:
  .../sources/ejabberd-contrib/mod_prometheus/deps/prometheus-4.11.0/src/metrics/prometheus_quantile_summary.erl:67:14:
  can't find include lib "quantile_estimator/include/quantile_estimator.hrl"
  %   67| -include_lib("quantile_estimator/include/quantile_estimator.hrl").

[1] https://hexdocs.pm/hex/Mix.Tasks.Hex.Package.html#module-command-line-options
2025-03-12 12:42:42 +01:00
badlop
9c142e5509
Merge pull request #4361 from sstrigler/ext_mod-fix-greedy-include-path
Ext mod fix greedy include path cont'd
2025-03-12 10:59:44 +01:00
Stefan Strigler
27f98f50d3 fix typo 2025-03-12 08:11:25 +01:00
Stefan Strigler
0145594adc add $libdir/include to include path 2025-03-12 08:11:07 +01:00
badlop
67ee0de7e3
Merge pull request #4360 from sstrigler/ext_mod-fix-greedy-include-path
fix greedy include path (fixes #4359)
2025-03-11 19:28:52 +01:00
Stefan Strigler
087718c47a fix greedy include path (fixes #4359) 2025-03-11 15:05:54 +01:00
Badlop
6bf5930703 mod_announce: Improve documentation syntax 2025-03-06 22:06:04 +01:00
Badlop
90c4fa2a84 mod_admin_extra: If policy=user, ejabberd adds the user/host args 2025-03-06 22:06:03 +01:00
Badlop
b75c3257bd ejabberd_oauth: Commands description should be plain text
The desc field is displayed in "ejabberdctl help", which has
no markdown processing.

If adding links is important, they can be added in the longdesc field.
2025-03-06 22:05:58 +01:00
Badlop
178b09f5bb ejabberd_admin: Fix crash in list_cluster_detailed when a node is down 2025-03-06 22:05:56 +01:00
Badlop
70980efe39 make-binaries: Bump versions to Erlang/OTP 27.3 and Elixir 1.18.3 2025-03-06 22:05:53 +01:00
dependabot[bot]
c124dbdd6a build(deps-dev): bump ex_doc from 0.37.1 to 0.37.2
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.37.1 to 0.37.2.
- [Release notes](https://github.com/elixir-lang/ex_doc/releases)
- [Changelog](https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-lang/ex_doc/compare/v0.37.1...v0.37.2)

---
updated-dependencies:
- dependency-name: ex_doc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 22:05:49 +01:00
dependabot[bot]
6af2a65e53 build(deps): bump stringprep from 1.0.30 to 1.0.31
Bumps [stringprep](https://github.com/processone/stringprep) from 1.0.30 to 1.0.31.
- [Changelog](https://github.com/processone/stringprep/blob/master/CHANGELOG.md)
- [Commits](https://github.com/processone/stringprep/compare/1.0.30...1.0.31)

---
updated-dependencies:
- dependency-name: stringprep
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 22:05:48 +01:00
Badlop
54f89e7568 Update XEP-0280 supported version to 1.0.1 2025-03-06 22:05:45 +01:00
Paweł Chmielowski
66205cf648
Merge pull request #4356 from pouriya/ref-new-hook-to-customize-resource-binding
Add c2s_handle_bind hook
2025-03-06 14:19:57 +01:00
Paweł Chmielowski
b38d8618b2 Fix crashes when ouath is feed with invalid jid
This should fix issue #4355
2025-02-26 11:17:55 +01:00
p
051093f4f8 ref: c2s_handle_bind hook 2025-02-25 14:11:02 +03:30
Alexey Shchepin
2a85c0a474 Add muc#user element to presences and an initial empty subject 2025-02-24 17:39:57 +03:00
Alexey Shchepin
7018b8b164 Fix gen_iq_handler:remove_iq_handler call in mod_matrix_gw 2025-02-21 12:05:34 +03:00
Alexey Shchepin
41232ccb39 Properly handle IQ requests in mod_matrix_gw 2025-02-21 04:15:08 +03:00
Paweł Chmielowski
6bd4399aee Bubble up db errors in nodetree_tree_sql:set_node 2025-02-20 14:48:45 +01:00
Badlop
45dafbcdcc Result of running "make format" 2025-02-19 11:07:36 +01:00
Badlop
a32bfd1215 Show warning also when deprecated listener option is set as disabled (#4345) 2025-02-19 11:07:36 +01:00
Badlop
78f7a9a244 CI: Fix step name, remove obsolete step reference 2025-02-19 11:07:36 +01:00
dependabot[bot]
44782001e2 mix.lock: bump ex_doc from 0.36.1 to 0.37.1
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.36.1 to 0.37.1.
- [Release notes](https://github.com/elixir-lang/ex_doc/releases)
- [Changelog](https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-lang/ex_doc/compare/v0.36.1...v0.37.1)

---
updated-dependencies:
- dependency-name: ex_doc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-19 11:07:26 +01:00
badlop
c7d7d07ee4
Merge pull request #4348 from mtstickney/fix_privileged_iq_response_detection
Don't rewrite "self-addressed" privileged IQs as results.
2025-02-18 11:03:04 +01:00
badlop
27390c387d
Merge pull request #4341 from mtstickney/route_unprivileged_iqs_from_privileged_component
Accept non-privileged IQs from XEP-0356 privileged components.
2025-02-18 11:02:21 +01:00
Badlop
ceee3d3be1 Fix placement of vcard_xupdate documentation 2025-02-14 17:17:13 +01:00
Badlop
983c016bba Update xmpp to get XEP-0317 Hats namespaces version 0.2.0 2025-02-14 16:58:55 +01:00
Badlop
8a7e955453 Update yconf to support macro inside string 2025-02-14 16:58:50 +01:00
Badlop
376f7b261e mod_mam: Mention in documentation that MAM should use some SQL storage 2025-02-14 16:57:32 +01:00
Alexey Shchepin
80423d7e69 Support Matrix room aliases 2025-02-13 16:21:05 +03:00
Holger Weiss
da61f3dfea make-binaries: Bump OpenSSL version to 3.4.1 2025-02-11 16:46:45 +01:00
Holger Weiss
a49ec4d583 make-binaries: Fix building Termcap and Linux-PAM
Building GNU Termcap and Linux-PAM using the updated toolchain both
failed, since crosstool-NG now uses GCC 14.x, which turns the
"implicit-function-declaration" warning into an error.  See:

https://gcc.gnu.org/gcc-14/porting_to.html#warnings-as-errors

Therefore, specify "CFLAGS=-Wno-error=implicit-function-declaration" to
turn this error back into a warning.
2025-02-07 20:08:26 +01:00
Holger Weiss
5f849bdb3f make-binaries: Bump dependency versions 2025-02-07 15:49:25 +01:00
Holger Weiss
d875e0280c make-binaries: Stick to Linux-PAM 1.6.1
Stick to Linux-PAM version 1.6.1 for the moment.  Newer Linux-PAM
versions are built using Meson instead of Autotools, so we need to add
that to our toolchain before being able to update Linux-PAM.
2025-02-07 15:45:59 +01:00
Holger Weiss
4188c062e7 make-binaries: Bump crosstool-NG version to 1.27.0 2025-02-07 15:27:15 +01:00
Badlop
21ae72d02e Result of running "make doap options" 2025-02-06 11:02:17 +01:00
Badlop
d834a9c1c1 Delete ejabberd.cfg which apparently isn't needed anymore 2025-02-06 11:02:17 +01:00
Badlop
07b102bb80 Docs: Fix markdown of some toplevel options 2025-02-06 11:02:17 +01:00
Badlop
480e2442ee Improve define_macro option validator 2025-02-06 11:02:17 +01:00
Badlop
a9c7bf97ef Add define_macro to globals() because it's useless inside host_config 2025-02-06 10:51:51 +01:00
Badlop
cae40c3f72 mod_http_api: Define the option type that opt_type.sh cannot derive itself 2025-02-06 10:51:49 +01:00
Badlop
4f90d1a0d9 Document that XEP-0474 0.4.0 was recently upgraded
Thanks to https://github.com/processone/xmpp/pull/99
2025-02-06 10:51:46 +01:00
Badlop
22b3d0e49f get_auto_url: Don't build auto URL if port is unix domain socket (#4345) 2025-02-06 10:51:44 +01:00
Badlop
0732603a4e Disable opaque_union dialyzer warnings as workaround for dialyzer with Erlang/OTP 28
See
5dab31e9f9
2025-02-06 10:51:42 +01:00
Badlop
e34b6f4204 Update odbc:connection_reference mention to fix dialyzer with Erlang/OTP 28 2025-02-06 10:51:39 +01:00
Matthew Stickney
64142de4fe Don't rewrite "self-addressed" privileged IQs as results.
process_privilege_iq is meant to rewrite the result of a privileged IQ into
the forwarded form required by XEP-0356 so it can be routed back to the
original privileged requester. It checks whether the impersonated JID
(`ReplacedJid`) of the original request matches the recipient of the IQ
being processed to determine if this is a response to a a privileged IQ
(assuming it has privileged-IQ metadata attached).

Unfortunately, it doesn't check the packet type, and this check will also
match a privileged-IQ _request_ that is being sent to the same user that's
being impersonated. This results in the request itself being rewritten and
forwarded back to the sending component, instead of being processed and
having the result send back.

Instead, just check for IQ results (either a regular result or an error),
and as long as it is marked as being a response to a privileged-IQ, always
rewrite it and forward it to the sending component. There's no circumstance
under which we _shouldn't_ forward a privileged-IQ response, so we don't
need to be tricky about checking whether impersonated-user and recipient
match.
2025-02-01 13:20:10 -05:00
Matthew Stickney
a4062f6ac0 mod_privilege: Accept non-privileged IQs from privileged components.
mod_privilege current drops any non-privileged IQ received from a component
with an error about it not being properly wrapped. While this might
represent a mistake on the part of the component, it means that well-
behaved components can no longer send non-privileged IQs (something they
normally can do if mod_privilege isn't enabled).

Since mod_privilege is intended to grant additional permissions, and not
remove existing ones, route non-privileged IQs received from the component
normally.

This also removes the special-case for roster-query IQ stanzas, since
those are also non-privileged and will be routed along with any other
non-privileged IQ packet. This mirrors the privileged-IQ/everything-else
structure of the XEP, which defined the handling of privileged IQ
stanzas and leaves all other IQ stanzas as defined in their own specs.

To make this clearer, the predicate function now returns distinct
results indicating privileged IQs, non-privileged IQs, and error
conditions, rather than treating non-privilege IQs as an error that gets
handled by routing the packet normally.
2025-02-01 13:18:10 -05:00
Holger Weiss
76baf58d5d mod_private: Improve exception handling
Properly isolate the code that should be subject to exception handling.
2025-01-31 14:23:45 +01:00
Holger Weiss
e134d7f0b4 mod_private: Don't warn on conversion errors
Clients publish invalid bookmark elements in practice (e.g., bookmarks
with an empty <nick/> element).  The server admin can't address that
issue, so don't spam the log with warnings.
2025-01-31 13:51:37 +01:00
Holger Weiss
20a0051578 mod_private: Handle invalid PEP-native bookmarks
Don't crash while attempting to convert invalid XEP-0402 conference
bookmark elements.
2025-01-31 13:49:22 +01:00
Holger Weiss
eca3204e82 mod_private: Don't crash on invalid bookmarks
Catch failures while decoding the conference bookmark element.
2025-01-28 19:37:49 +01:00
Holger Weiss
a19ab9f4e3 Update xmpp to bring SSDP to XEP version 0.4 2025-01-25 22:21:43 +01:00
Paweł Chmielowski
133d52d040 Stop processing other handlers in mod_s2s_bidi:s2s_in_handle_info
This should fix issue reported in #4344
2025-01-22 14:12:32 +01:00
Badlop
20a77cb9c7 acl: Fixed bug matching the acl "shared_group: NAME"
This config triggered a crash at client login:

acl:
  tech:
    shared_group: techteam
access_rules:
  announce:
    allow: tech
  configure:
    allow: tech
2025-01-21 13:45:35 +01:00
Badlop
cab96d2156 mod_shared_roster: Remove unnecesary double call to split_grouphost
which was added in 5b0f0d8
2025-01-21 13:45:33 +01:00
Badlop
9be76cce9e Fix support for compiling in VSCode 2025-01-21 13:45:28 +01:00
Alexey Shchepin
e7035f3235 Fix handling of 3PI events in mod_matrix_gw_room 2025-01-20 09:10:57 +03:00
Badlop
6e4ac0c501 Fix recent commit to work with Erlang/OTP 20 2025-01-16 20:38:43 +01:00
Badlop
aa612463cc mod_muc: Document MUC room option vcard_xupdate 2025-01-15 20:33:42 +01:00
Badlop
9827ad43e4 mod_muc_admin: Verify room option value before setting it (#4337) 2025-01-15 20:33:40 +01:00
Badlop
e0bb900651 mod_muc_admin: Add forgotten support to set enable_hats room option 2025-01-15 20:33:39 +01:00
Badlop
ad1b577ca9 mix.exs: The ex_doc dependency is only relevant for the edoc Mix environment 2025-01-15 20:33:36 +01:00
Badlop
f72cfa9a13 Test: Uninstall mod_example when the tests has finished 2025-01-15 20:33:33 +01:00
Paweł Chmielowski
056635119c Fix json version of json_encode_with_kv_list for nested kv lists
This should fix error reported in issue #4338
2025-01-14 10:03:31 +01:00
Badlop
2e754a5557 mod_admin_update_sql: Fix mysql support 2025-01-13 16:34:09 +01:00
Badlop
6959447c2c mod_admin_update_sql: Fix update_sql when using tables created by ejabberd internally 2025-01-13 16:34:07 +01:00
Badlop
4a363b6e76 Test: Fixes to handle re-running test after update_sql
Enable some modules so ejabberd creates their SQL tables
and later those tables can be updated without errors by mod_admin_update_sql
when ci.yml calls "make test" to check update_sql.

However, mod_shared_roster should be stopped before running the actual tests,
as it introduces undesired IQ queries

On the other hand, a few SQL tables are global RAM, and cannot be created
in SQL just for a vhost that is not the first one defined.
2025-01-13 16:34:05 +01:00
Badlop
862cacabcb ejabberdctl.template: Handle erts versions 9 o lower 2025-01-13 16:34:04 +01:00
Badlop
29e6204bde Docs: Reword explanation about ACL names and definitions 2025-01-13 16:34:03 +01:00
Badlop
bc6c868c8a Docs: Don't use backtick quotes for ejabberd name
This change improves sentences legibility.
In the Introduction page, use **strong** instead.

Notice backtick quotes are for raw code in markdown, for example:
- `ejabberd` container image
- `ejabberd` script generated by OTP Release
- `ejabberd` username in system, for example for MySQL or container host
2025-01-13 16:34:01 +01:00
Badlop
9d87193d80 mix.lock: Update to recent versions 2025-01-13 16:33:59 +01:00
Badlop
85b660fb4b rebar.config: Bump provider_asn1 version to 0.4.1 2025-01-13 16:33:58 +01:00
Holger Weiss
5a6e46c32a Merge remote-tracking branch 'processone/pr/4297'
* processone/pr/4297:
  mix_pam: Remove 'Channels' roster group of mix channels
2025-01-08 21:23:23 +01:00
Badlop
457d8fc6cc Container: Bump versions to Erlang/OTP 27.2 and Elixir 1.18.1 2025-01-03 11:50:07 +01:00
Badlop
8ebbb45a19 Update copyright year to 2025 (#4139) 2025-01-03 11:49:37 +01:00
Badlop
13dae75d01 Partially revert "Workflows: Bump ubuntu from 22.04 to 24.04 when possible (#4281)"
ubuntu-24.04 includes texinfo 7.1, which has a problematic bug.
Let's revert to ubuntu-22.04 until 24.04 includes a fixed texinfo.

URL to keep an eye:
https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md

This partially reverts commit d3baacd78e.
2025-01-03 11:49:37 +01:00
Badlop
172847bc76 Update path to ejabberd-contrib section in Docs site 2025-01-03 11:49:37 +01:00
Holger Weiss
2b2551bc50 make-binaries: Bump Erlang/OTP version to 27.2 2025-01-02 18:25:24 +01:00
Holger Weiss
aa8957f137 make-binaries: Bump dependency versions 2025-01-02 18:24:30 +01:00
badlop
ba9a7916db
Merge pull request #4333 from di72nn/fix_typos_in_docs
Fix a couple of typos in documentation
2024-12-30 19:45:49 +01:00
Dmitriy Bogdanov
5945dba412
Fix a couple of typos in documentation 2024-12-26 14:55:31 +01:00
Paweł Chmielowski
7d5413ce95 Update xmpp to bring fix for ssdp hash calculation 2024-12-21 20:03:18 +01:00
Holger Weiss
364ee0f8ed ejabberd.yml.example: Enable mod_muc_occupantid
Add mod_muc_occupantid to the list of modules enabled in the sample
configuration.  It's not necessarily obvious that it's required for
using certain modern features in group chat, and there's no downside in
activating this module.
2024-12-21 11:04:08 +01:00
Paweł Chmielowski
213a513f54 Fix name option in documentation 2024-12-20 10:32:21 +01:00
Paweł Chmielowski
aa65e626f4 Fix values allowed in db_type of mod_auth_fast documentation 2024-12-20 09:38:03 +01:00
Paweł Chmielowski
5b3b29565c Remove overide on fast_xml 2024-12-19 16:27:16 +01:00
Paweł Chmielowski
f38f81159d Fix issue with wrong namespace in mod_s2s_bidi 2024-12-19 14:04:56 +01:00
Badlop
7511307868 Set version to 24.12 2024-12-19 11:50:21 +01:00
Badlop
1cadc6b1dc CI: Revert old feature that published failed CT logs to website
Nowadays the CT logs can be downloaded from each action run in:
  https://github.com/processone/ejabberd/actions/workflows/ci.yml

This partially reverts commit 8ccad7f
  Publish CT logs and Cover on failure to an external GH Pages repo
2024-12-19 11:21:25 +01:00
Badlop
405437b086 mix.lock, rebar.lock: Update to recent versions 2024-12-19 10:56:30 +01:00
Badlop
51f4382b9f CHANGELOG.md: Update 2024-12-19 10:45:19 +01:00
Holger Weiss
e967a409d3 stundisco_tests: Fix TURNS credentials syntax 2024-12-18 22:24:53 +01:00
Holger Weiss
eaebfc795e rebar.config: Depend on current xmpp version
We now hard-depend on xmpp 1.9.1.
2024-12-18 21:31:55 +01:00
Holger Weiss
3bc66a7054 stundisco_tests: Check correct credentials syntax 2024-12-18 21:17:07 +01:00
Holger Weiss
8cfcc69100 mod_stun_disco: Fix syntax of credentials response
As per XEP-0215 (#3.3), the response to a credentials request must use
the <credentials/> element rather than <services/>.

Thanks to Thilo Molitor for spotting the issue.
2024-12-18 20:43:03 +01:00
Badlop
ce3bc85d32 CHANGELOG.md: Update to 24.12, fix some newlines 2024-12-18 19:23:47 +01:00
Badlop
1fe9e3aa67 CONTAINER.md: Fix some typos 2024-12-18 19:23:45 +01:00
Badlop
d93a8e341f mod_http_api: Annotate that default_version was added in new release 2024-12-18 19:23:41 +01:00
Paweł Chmielowski
1107cefdb6 Use tagged deps 2024-12-18 17:29:37 +01:00
Jérôme Sautret
92b2bb7532 Merge branch 'master' of github.com:processone/ejabberd 2024-12-18 16:24:12 +01:00
Jérôme Sautret
9a2a9187cd Revert "Experimental support for joining Matrix rooms as MUC rooms"
This reverts commit eb6f242d99.
2024-12-18 16:23:29 +01:00
Jérôme Sautret
50b57ada7c Revert "Fix dialyzer errors"
This reverts commit e589265921.
2024-12-18 16:22:21 +01:00
Paweł Chmielowski
a8649767f2 Pull updated xmpp 2024-12-18 16:03:13 +01:00
Metalhearf
2eb605873c Add security policy and reporting guidelines 2024-12-18 15:51:08 +01:00
Paweł Chmielowski
26e8679359 Make rsm handling in disco items mod_muc, correctly count skipped rooms 2024-12-18 15:07:13 +01:00
Paweł Chmielowski
2aa673e780 Update xmpp dep once more 2024-12-17 15:11:33 +01:00
Paweł Chmielowski
06303ae7ab Relax checks for channels bindings for connections using external encryption
This should fix issue #4322
2024-12-17 13:49:05 +01:00
Paweł Chmielowski
2b3d588f10 Typo 2024-12-17 13:30:04 +01:00
Paweł Chmielowski
3dd7febb98 Fix expiration date calculation in mod_auth_fast 2024-12-17 13:28:54 +01:00
Badlop
beb5bfea36 Update man page to 24.12 2024-12-17 12:31:59 +01:00
Badlop
628f286eb6 Update Spanish and Catalan translations 2024-12-17 12:31:57 +01:00
Badlop
9e14c7a803 Update Chinese (Simplified) translation (thanks to Sketch6580) 2024-12-17 12:31:56 +01:00
Badlop
863f2e019c Update Albanian translation (thanks to Besnik Bleta) 2024-12-17 12:31:55 +01:00
Badlop
4334ce9c29 Update Portuguese (Brazil) translation (thanks to Wellington Uemura) 2024-12-17 12:31:54 +01:00
Badlop
7008e49675 Update Italian translation (thanks to Ermete Melchiorre) 2024-12-17 12:31:53 +01:00
Badlop
b84596be57 Update French translation (thanks to ButterflyOfFire) 2024-12-17 12:31:52 +01:00
Badlop
4fd26306fe Update German translation (thanks to Nautilusx) 2024-12-17 12:31:51 +01:00
Badlop
8e9ea2d98c Update Bulgarian translation (thanks to MrEddX) 2024-12-17 12:31:49 +01:00
Badlop
1024cbe5b3 Result of running "make doap" 2024-12-17 12:31:48 +01:00
Badlop
a16ef68a49 Result of running "make format" 2024-12-17 12:31:47 +01:00
Badlop
7726904f79 Fix comment about file names 2024-12-17 12:31:45 +01:00
Badlop
1481734f47 Update version number to 24.12 2024-12-17 12:31:42 +01:00
Paweł Chmielowski
01955b867d Fix dialyzer warning 2024-12-17 11:13:56 +01:00
Paweł Chmielowski
549a2b0790 Remove message left from debugging 2024-12-17 11:01:11 +01:00
Paweł Chmielowski
2caaa09c99 Add support for XEP-0484: Fast Authentication Streamlining Tokens 2024-12-17 10:56:11 +01:00
Badlop
da06a50072 WebAdmin: Use lowercase username and server authentication credentials 2024-12-17 10:13:00 +01:00
Badlop
2b02af13ba CONTAINER.md: Add kubernetes yaml examples to use with podman 2024-12-17 10:12:57 +01:00
Badlop
ae238bc984 mod_http_api: Fix crash when module not enabled (for example, in CT tests) 2024-12-17 10:12:55 +01:00
Badlop
3d2036db61 mod_http_api: New option default_version
The server administrator can define default API version
for a vhost using the new module option:

modules:
  mod_http_api:
    default_version: 1

The server administrator can define default API version
for a port using the path:

listen:
  -
    request_handlers:
      /api/v2: mod_http_api

The client can use a specific API version,
regardless of what the admin has set,
by appending it in the URL:

http://localhost:5280/api/v2/get_loglevel/v3
2024-12-17 10:12:53 +01:00
Badlop
b8360cae08 Rename argument "name" to "room" for consistency
And thanks to args_rename, both argument names can be used,
either "name" or "room". So, this doesn't involve an API
version change.
2024-12-17 10:12:51 +01:00
Badlop
790cb104cd Change arguments and result to consistent names (API v3)
Commands accept as argument: user, host, room, service
and return as result JIDs

Commands that change in API v3:
get_room_affiliations
muc_register_nick
muc_unregister_nick
set_room_affiliation
status_list
status_list_host
subscribe_room
subscribe_room_many
unsubscribe_room
2024-12-17 10:12:48 +01:00
Badlop
f3c935d2e1 Fix some documentation syntax, add links to toplevel, modules and API 2024-12-09 17:25:27 +01:00
Alexey Shchepin
e589265921 Fix dialyzer errors 2024-12-06 21:56:02 +03:00
Alexey Shchepin
eb6f242d99 Experimental support for joining Matrix rooms as MUC rooms 2024-12-06 20:20:12 +03:00
Badlop
ce6d5aa6a0 Redis: Disable some dialyzer warnings when using old Erlang 20 2024-12-05 13:03:43 +01:00
Badlop
f269d5b613 Redis: Add support for unix domain socket (#4318) 2024-12-05 13:01:40 +01:00
Badlop
a84c492130 Redis: Use the recommended eredis:start_link/1 function 2024-12-05 13:01:38 +01:00
Badlop
3ae636b454 Redis: Use eredis 1.7.1 from Nordix when using mix/rebar3 and Erlang 21+ 2024-12-05 13:01:37 +01:00
Badlop
06e3f9f0a4 Runtime: Disable edoc when using old problematic Elixir versions 2024-12-05 13:01:35 +01:00
dependabot[bot]
1669303a40 Bump ex_doc from 0.34.2 to 0.35.1
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.34.2 to 0.35.1.
- [Release notes](https://github.com/elixir-lang/ex_doc/releases)
- [Changelog](https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-lang/ex_doc/compare/v0.34.2...v0.35.1)

---
updated-dependencies:
- dependency-name: ex_doc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-05 13:01:33 +01:00
Badlop
39e37b6175 Add support to define macros as environment variables
Define and macro by setting as environment variable:
  EJABBERD_MACRO_ + macro name

For example, if you configure in ejabberd.yml:
  define_macro:
    LOGLEVEL: 4
  loglevel: LOGLEVEL

You can define (and overwrite) that macro definition when starting ejabberd:
  EJABBERD_MACRO_LOGLEVEL=5 make relive
2024-12-05 13:01:31 +01:00
Badlop
c72ba1f188 mod_scram_upgrade: Update XEP-0480 supported version (processone/xmpp#80) 2024-12-05 13:01:30 +01:00
Badlop
4d625e5574 Erlang/OTP 27 finally exports re:mp/0 2024-12-05 13:01:28 +01:00
Badlop
803f95050f WebAdmin: Fix calculation of node's uptime days 2024-12-05 13:01:26 +01:00
Badlop
c021cf34be Explain that join_cluster returns immediately (since 5a34020, 24.06) 2024-12-05 13:01:23 +01:00
Holger Weiss
7fce7d1049 Merge remote-tracking branch 'processone/pr/4323'
* processone/pr/4323:
  Enable allow_unencrypted_sasl2 on websockets
2024-12-03 18:58:25 +01:00
Mark Zealey
bd36895afe Enable allow_unencrypted_sasl2 on websockets
47232838 added the
allow_unencrypted_sasl2 option, but this was not added to websockets.
2024-12-03 17:39:58 +00:00
Holger Weiss
b90c48f837 mod_scram_upgrade: Don't abort the upgrade
Fix a matching mistake that made the SASL mechanism upgrade fail.
2024-12-01 20:23:52 +01:00
Holger Weiss
344775aa8e mod_pubsub: Send notifications on PEP item retract 2024-11-30 20:38:33 +01:00
Badlop
7d0c20e133 mod_shared_roster: The name of a new group is lowercased
Until now it was possible to create a shared roster group with name
"Group1", and it was a different group that "group1".

From now on, new group names will be stored lowercase,
just like the username in a Jabber ID.

This only affects commands srg_add and srg_create.
All the other commands are still case sensitive, to allow admins of
existing databases with case-sensitive groups manage them.
2024-11-27 16:20:53 +01:00
Badlop
ab5a2e8d10 mod_shared_roster: Get back support for groupid@vhost in displayed
Feature first implemented by 262157c in ejabberd 2.1.10
Bug introduced with cache improvements by 5b0f0d8 in ejabberd 21.07
2024-11-27 13:54:02 +01:00
Badlop
e34c1ebcba WebAdmin: Fix link to displayed group when it is from another vhost 2024-11-27 13:54:00 +01:00
Badlop
73dbc01c2e WebAdmin: Shared group names are case sensitive, use original case instead of lowercase 2024-11-27 13:53:58 +01:00
Badlop
f0773c4ab8 mix:exs: When development tools is enabled, add debugger and wx 2024-11-25 17:23:32 +01:00
Badlop
cc5c9f6008 Fix problems introduced in two recent commits 2024-11-25 17:23:28 +01:00
Badlop
da9c591eed Improve create_rooms_file command to support vhosts with different config
Until now it created all the rooms in the storage of the first vhost
listed in the ejabberd configuration file. Similarly, it used only
the default room options defined for the first vhost.
2024-11-25 16:20:30 +01:00
Badlop
6790ab01e8 Improve example Elixir modules 2024-11-25 16:20:19 +01:00
Badlop
f9cecca362 Rename mod_presence_demo.ex to mod_example.ex 2024-11-25 16:20:16 +01:00
badlop
f4009939a6
Merge pull request #4315 from Quobis/support-loading-elixir-modules-for-auth
feat: support loading Elixir modules for auth
2024-11-25 16:08:54 +01:00
Marcos de Vera Piquero
17b5b34e3c feat: support loading Elixir modules for auth
Allow to specify an Elixir module name in `auth_method`.

If the referenced module, `M`,  cannot be loaded as `ejabberd_auth_M`,
try to load it as `Elixir.M`.
2024-11-25 15:31:27 +01:00
Badlop
c291c20a3b Fix problem starting ejabberd when first host uses SQL, other one mnesia
The problem appeared when there are several vhosts,
the first vhost uses SQL for persistent data (and RAM for volatile),
and another vhost wants to use Mnesia

Example config to trigger the problem:

  hosts:
    - mysql.localhost
    - localhost
  host_config:
    mysql.localhost:
      default_db: sql

In that case, ejabberd crashed at start with an error like:
[critical] Internal error of module mod_muc has occurred during start:
...
** exception exit: {aborted,
                     {no_exists,
                         [muc_room,
                          [{{muc_room,{'_',<<"conference.localhost">>},'_'},
                            [],
                            ['$_']}]]}}
2024-11-22 19:25:52 +01:00
Badlop
22e7ce37d4 Fix typos in previous commit 2024-11-22 19:25:49 +01:00
Badlop
2137602a6a Makefile: Add support to run "make format" when compiling with mix 2024-11-22 10:53:43 +01:00
dependabot[bot]
c7b29b5a9a Bump dialyxir from 1.4.4 to 1.4.5
Bumps [dialyxir](https://github.com/jeremyjh/dialyxir) from 1.4.4 to 1.4.5.
- [Release notes](https://github.com/jeremyjh/dialyxir/releases)
- [Changelog](https://github.com/jeremyjh/dialyxir/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jeremyjh/dialyxir/compare/1.4.4...1.4.5)

---
updated-dependencies:
- dependency-name: dialyxir
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-22 10:53:04 +01:00
Badlop
715b5b64c6 Runtime: Test Dialyzer in Rebars jobs (#4281)
The CI workflow uses ubuntu-24.04 and setup-beam action,
so it can test only Erlang/OTP 24 and higher.

To ensure Dialyzer is also ran with older Erlang versions,
let's add Dialyzer testing to the Runtime workflow,
which uses the erlang container, and that allows
to run Erlang/OTP 20 in ubuntu-24.04.
2024-11-14 13:58:14 +01:00
Badlop
c20ed8c7b3 Runtime: Try using elixir container for Rebar3+Elixir and Mix jobs (#4281) 2024-11-14 13:58:11 +01:00
Badlop
d3baacd78e Workflows: Bump ubuntu from 22.04 to 24.04 when possible (#4281) 2024-11-14 13:58:07 +01:00
Badlop
07e20784cb New evacuate_kindly command: kick users and prevent login (#4309) 2024-11-14 13:57:47 +01:00
Badlop
9eb8bb6c40 mod_matrix_gw_s2s probably works correctly only in Erlang/OTP >= 25
In Erlang/OTP 25, the function inet_res:getbyname/3
returns {ok, Hostent} where the last tuple element of Hostent
may be h_addr_list = [inet:ip_address()]}
or H_addr_list :: [dns_data()]}

However, in Erlang/OTP 24.1 and older, that element was only of type
h_addr_list = [inet:ip_address()]}

https://erlang.org/documentation/doc-13.0-rc3/lib/kernel-8.4/doc/html/inet_res.html#getbyname-3
https://erlang.org/documentation/doc-12.1/lib/kernel-8.1/doc/html/inet_res.html#getbyname-3
2024-11-14 13:57:47 +01:00
Badlop
e10c0f3120 Bump Expat to 2.6.4 2024-11-14 13:57:47 +01:00
Badlop
6f7efebb56 Only delete offline msgs when user has MAM enabled (#4287) 2024-11-14 13:57:43 +01:00
Badlop
a657778065 Result of running "make doap" 2024-11-14 13:57:43 +01:00
Badlop
3650d94bb5 Remove XEPs that are only a client thing 2024-11-14 13:57:43 +01:00
Badlop
6a428f3d02 Add ejabberd version and implementation status for many XEPs 2024-11-14 13:57:43 +01:00
Badlop
abe1d96c58 Announce support for XEP-0384 OMEMO Encryption (#4305)
The last required piece to support XEP-0384 was
supporting max_items=max, which was added for ejabberd 21.12 in commit
8f8de0403b
2024-11-14 13:57:39 +01:00
Badlop
29a59cfe48 Add "XMPP Date and Time Profiles" implemented by xmpp and used everywhere 2024-11-14 13:49:41 +01:00
Holger Weiss
18c54f4e9e ejabberd.yml.example: Use non-standard STUN port
STUN via UDP can easily be abused for reflection/amplification DDoS
attacks.  Suggest a non-standard port to make it harder for attackers to
discover the service.

Modern XMPP clients discover the port via XEP-0215, so there's no
advantage in sticking to the standard port.
2024-11-14 12:21:58 +01:00
Paweł Chmielowski
c7d967a2b5 Fix dialyzer issue 2024-11-05 17:10:09 +01:00
Paweł Chmielowski
b50ea7ef1f Make mod_privilge properly handle roster iq 2024-11-05 16:57:52 +01:00
Holger Weiss
4843cd432f Disable the systemd watchdog by default
Some users reported ejabberd being restarted by systemd due to missing
watchdog pings despite the actual service operating just fine.  So far,
we weren't able to track down the issue, so we'll no longer enable the
watchdog in our example service unit.

Closes #4054.
2024-11-05 15:37:21 +01:00
Paweł Chmielowski
d56eae809d Catch extra case in check for s2s bidi element 2024-11-05 13:26:42 +01:00
Metalhearf
af97211ecc Update URLs in docs/conf files for consistency. 2024-10-31 17:30:20 +01:00
Badlop
601fcba4cb Set version to 24.10 2024-10-28 17:02:10 +01:00
Badlop
cc3a9f7722 Update Changelog to 24.10 2024-10-28 16:34:25 +01:00
Badlop
296ef8287f Remove mod_tombstone from man, it's in ejabberd-contrib (thanks to Licaon_Kter) 2024-10-28 16:34:22 +01:00
Paweł Chmielowski
b5dab24679 Update dependencies 2024-10-28 16:21:44 +01:00
Badlop
319414b985 Update man page to 24.10 2024-10-28 13:50:02 +01:00
Badlop
6b0058c89c Add two more version notes 2024-10-28 13:50:02 +01:00
Badlop
855c828d1f Update Spanish and Catalan translations 2024-10-28 13:35:49 +01:00
Badlop
c72ef537ee Update Chinese (Simplified) translation (thanks to Sketch6580) 2024-10-28 13:35:47 +01:00
Badlop
11e86811a0 Update Portuguese (Brazil) translation (thanks to Wellington Uemura) 2024-10-28 13:35:46 +01:00
Badlop
2183f60917 Update Italian translation (thanks to Ermete Melchiorre) 2024-10-28 13:35:45 +01:00
Badlop
05f0fbf195 Update Bulgarian translation (thanks to MrEddX) 2024-10-28 13:35:43 +01:00
Badlop
853da159de ejabberd.yml.example: Enable mod_s2s_bidi in default configuration 2024-10-28 12:06:56 +01:00
Badlop
643ae7e5f9 Result of running "make doap options" 2024-10-28 12:06:55 +01:00
Badlop
322e25d18e CI: Get again continue-on-error for XMPP Interop Tests
See explanations following the comment
https://github.com/processone/ejabberd/pull/4285#issuecomment-2397047355

This partially reverts commit 94c2a115d5.
2024-10-28 12:06:53 +01:00
Badlop
bdd8ba115e Document ejabberd version of the new modules 2024-10-28 12:06:51 +01:00
Badlop
71ad7c368d Minor improvements to support mod_tombstones
New check_register_user hook in ejabberd_auth.erl
to allow blocking account registration when a tombstone exists.

Modified room_destroyed hook in mod_muc_room.erl
Until now the hook passed as arguments: LServer, Room, Host.
Now it passes: LServer, Room, Host, Persistent
That new Persistent argument passes the room persistent option,
required by mod_tombstones because only persistent rooms should generate
a tombstone, temporary ones should not.
And the persistent option should not be completely overwritten, as we must
still known its real value even when room is being destroyed.

mod_tombstones is available in experimental mode in ejabberd-contrib git.

Initial feature request: #2546
2024-10-28 12:06:48 +01:00
Paweł Chmielowski
8be0f8a0b0 Revert some unrelated changes 2024-10-28 09:44:05 +01:00
Paweł Chmielowski
e9e678a994 Add support for scram upgrade tasks 2024-10-28 09:26:04 +01:00
Paweł Chmielowski
a89152a3d7 Add support for s2s bidi 2024-10-28 09:25:56 +01:00
Linus Jahn
73f5d950e5 mix_pam: Remove 'Channels' roster group of mix channels
This isn't specified and was probably only meant for debugging. In real
clients having this (forced) 'Channels' group is undesireable in most
cases.
2024-10-26 12:57:15 +02:00
Badlop
46d5ab369f Update xmpp dependency 2024-10-21 17:23:59 +02:00
Badlop
81906b74ed Support "IQ permission" from XEP-0356 0.4.1 (#3889) 2024-10-21 17:23:59 +02:00
Badlop
74b0f64645 mod_block_strangers: Add feature announcement to disco-info (#4039) 2024-10-21 17:23:59 +02:00
Badlop
50948d1619 mod_mam: Advertise XEP-0424 feature in server disco-info (#3340) 2024-10-21 17:23:49 +02:00
Holger Weiss
38f1132192 ejabberd_stun: Omit 'auth_realm' log message
These days, TURN authentication is usually performed using ephemeral
credentials handed out by mod_stun_disco.  In that case, the TURN realm
is irrelevant.  Therefore, omit the misleading log message that warned
about a missing realm configuration.

(Commit 6eb2f07274 reduced the log level
of that message already.)
2024-10-15 22:50:30 +02:00
Badlop
50ef49d190 mod_vcard: Return explicit error stanza when user attempts to modify other's vcard 2024-10-11 11:54:18 +02:00
Badlop
3669ac8aed ejabberd_app: At server start, log Erlang and Elixir versions 2024-10-11 11:54:16 +02:00
Badlop
7f8519c0af ejabberdctl: If ERLANG_NODE lacks host, add hostname (#4288) 2024-10-11 11:49:34 +02:00
dependabot[bot]
859ba3e0c2 Bump dialyxir from 1.4.3 to 1.4.4
Bumps [dialyxir](https://github.com/jeremyjh/dialyxir) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/jeremyjh/dialyxir/releases)
- [Changelog](https://github.com/jeremyjh/dialyxir/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jeremyjh/dialyxir/compare/1.4.3...1.4.4)

---
updated-dependencies:
- dependency-name: dialyxir
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-11 11:49:30 +02:00
Badlop
94c2a115d5 CI: Disable XMPP Interop specifications that are known to fail 2024-10-11 11:49:28 +02:00
badlop
634b646711
Merge pull request #4285 from guusdk/xmpp-interop-testing
CI: Add XMPP Interop tests
2024-10-11 11:03:26 +02:00
Holger Weiss
2a9dc2c7b2 make-binaries: Bump Erlang/OTP version to 26.2.5.4 2024-10-09 15:37:47 +02:00
Holger Weiss
ef93a5359b Bump 'xmpp' dependency tag
This fixes announcing SASL2 over non-TLS connections if
'allow_unencrypted_sasl2' is configured.
2024-10-08 17:38:11 +02:00
Badlop
efb1fc9b3f mod_register: Document behavior when access is set to none (#4078) 2024-10-01 15:57:19 +02:00
Badlop
aa5faf1f36 mod_privilege: Replace try...catch with a clean alternative 2024-10-01 15:57:15 +02:00
Holger Weiss
4723283896 ejabberd_c2s: Optionally allow unencrypted SASL2
XEP-0388 says: "SASL2 MUST only be used by Clients or offered by Servers
after TLS negotiation".  Therefore, we reject SASL2 negotiations over
unencrypted transports by default.  However, TLS might be terminated
outside of ejabberd.  Add the 'allow_unencrypted_sasl2' option to
support this use case.
2024-09-29 20:40:01 +02:00
Holger Weiss
36187e07d0 mod_pubsub: Fall back to default plugin options
If the plugin handling a node creation request isn't enabled, fall back
to applying the default plugin (currently node_flat) options.
2024-09-28 17:58:07 +02:00
Holger Weiss
a9583b43c3 mod_pubsub: Fix choice of node config defaults
Ignore node plugin defaults if the plugin handling the request isn't
enabled, rather than ignoring 'default_node_config' options and
applying plugin defaults in that case.
2024-09-28 17:51:28 +02:00
Holger Weiss
ca54f81f58 mod_pubsub: Fix merging of default node options
Use any option specified via 'default_node_config' by default, and take
the remaining defaults from the node plugin handling the request.  This
is the documented behavior.

Before this change, the code applied the plugin defaults only if no
'default_node_config' existed at all.  And even this logic didn't work
as intended, since 'default_node_config' yielded an empty list in case
it wasn't configured, which resulted in plugin defaults never being
applied.
2024-09-28 16:56:46 +02:00
Holger Weiss
b4399291ef mod_pubsub: Fix default node config parsing
Don't merge 'default_node_config' settings with the default options of
the first configured node plugin.  Otherwise, the latter might later
override those of the plugin that should handle a node creation request.
For example, the following configuration would lead to the 'flat'
options being used by default for 'pep' nodes as well:

  mod_pubsub:
    plugins:
      - flat
      - pep
2024-09-28 16:45:59 +02:00
Guus der Kinderen
a8df58f056 CI: Limit execution of XMPP Interop tests
Run the XMPP Interop tests on only one build of the CI-matrix. This prevents redundant testing, as well as logs overwriting each-other.
2024-09-27 09:55:18 +02:00
Guus der Kinderen
54a89b39fb CI: Add XMPP Interop tests
Modifies the CI build to integrate the GitHub Action-based test runner from the [XMPP Interop Testing project](https://xmpp-interop-testing.github.io). This executes additional integration tests that help verify ejabberd's compliance with XMPP specifications.

In this commit, none of the tests are excluded, which likely results in false positives. Therefor, the 'continue-on-error' flag is set. This should ideally be removed in a later commit.
2024-09-26 21:45:51 +02:00
Badlop
4a931b42ab hooks_deps: Hide false-positive warnings about gen_mod 2024-09-24 12:37:06 +02:00
Badlop
15d73b9d20 Support to block IPs in a vhost using append_host_config (#4038) 2024-09-24 12:20:16 +02:00
Badlop
c2d4f73893 Move some modules webadmin pages to their modules 2024-09-16 17:50:47 +02:00
Badlop
31b85351f2 Add new "MAM Archive" page to webadmin 2024-09-16 17:50:46 +02:00
Badlop
c900f0ad83 WebAdmin: Improve pages to handle disabled modules 2024-09-16 17:50:44 +02:00
Badlop
b2e6749fd2 Fix dialyzer: captcha_cmd is a binary for sure 2024-09-16 17:50:43 +02:00
Badlop
2437dc4e06 New command get_mam_count to get number of archived messages for an account 2024-09-16 17:50:42 +02:00
Badlop
115e7d08aa Add links in user page to offline and roster pages 2024-09-16 17:50:40 +02:00
Badlop
d9ddbe0212 Add mam and offline tags to the related purge commands 2024-09-16 17:50:39 +02:00
Badlop
512285e48d Result of running "make options" 2024-09-16 17:50:38 +02:00
Badlop
642e7ecc29 mod_matrix_gw: Remove useless option "persist" 2024-09-16 17:50:37 +02:00
Badlop
ce5a8acaf7 Define the types of options that opt_type.sh cannot derive automatically 2024-09-16 17:50:33 +02:00
Holger Weiss
3d9a5a1635 Fix 'update' command output
So far, ejabberd_update:update/0 returned the return value of
release_handler_1:eval_script/1.  That function returns the list of
updated but unpurged modules, i.e., modules where one or more processes
are still running an old version of the code.  Since commit
5a34020d23, the ejabberd 'update' command
assumes that value to be the list of updated modules instead.  As
that seems more useful, modify ejabberd_update:update/0 accordingly.
This fixes the 'update' command output.
2024-09-14 21:54:01 +02:00
Holger Weiss
3469a51f58 mod_pubsub: Don't blindly echo PEP notification
Since commit 514c25caef, whenever a PEP
item was published, a notification was blindly sent back to the owner.
However, this should only be done subject to +notify filtering, as per
XEP-0163:

| the PEP service shall send notifications to all of the account owner's
| available resources (subject to notification filtering).

The motivation for the mentioned commit was that +notify subscriptions
initially didn't work for PEP node owners (#2108).  However, that issue
was fixed by commit 5968bc9318 (#2112).
As a result, the owner's client was actually notified twice if the
client was subscribed to the node (e.g., via +notify).

Therefore, just omit the additional, blind notification.

Thanks to W. Martin Borgert and Daniel Gultsch for reporting the issue.
2024-09-13 20:50:00 +02:00
Paweł Chmielowski
d4b30957a3 Skip non-delivery errors for local pubsub generated notifications
Those are ignored by pubsub service anyway, so we can skip those, and
reduce number of messages processed by pubsub process.
2024-09-11 13:20:53 +02:00
Badlop
cc377bbebf Update lock files 2024-09-11 11:39:39 +02:00
Badlop
eec836239f Improve documentation of ldap_servers and ldap_backups options (#3977) 2024-09-11 11:39:34 +02:00
Badlop
941d51a6e7 Handle call by gen_event:swap_handler (#4233) 2024-09-11 11:39:30 +02:00
Holger Weiss
e3243fa35b make-binaries: Update OpenSSL URLs 2024-09-06 19:18:32 +02:00
Holger Weiss
70512c7116 make-binaries: Bump dependency versions 2024-09-06 19:05:12 +02:00
Paweł Chmielowski
3c896d1c6a Better handling of malformed jids in send_direct_invitation command 2024-09-02 12:49:39 +02:00
Paweł Chmielowski
b455d93c69 Fix dialyzer warnings 2024-09-02 12:42:55 +02:00
Paweł Chmielowski
017b2feac1 Make set_presence command return error when session not found
Should fix issue #4274
2024-09-02 12:01:56 +02:00
Paweł Chmielowski
5f47860ee1 Remove support for old websocket connection protocol
This removes handling of pre-rfc7395 encapsulation of xmpp in websocket
(where data send in websocket was using just raw data as send in regular
socket). This didn't work correctly for last 5 years, and as we didn't
see complains about this, we can assume it's not used anymore.
2024-09-02 11:55:46 +02:00
Badlop
795498fa45 Runtime: Cache hex.pm archive from rebar3 and mix 2024-08-26 15:50:25 +02:00
Badlop
aa1717ee77 CI: Add Elvis tests 2024-08-26 15:50:25 +02:00
Badlop
db6d3e63f2 Fix Elvis report: Fix dollar space syntax
https://github.com/inaka/elvis_core/blob/main/doc_rules/elvis_style/no_dollar_space.md
2024-08-26 15:50:25 +02:00
Badlop
0304428d95 Fix Elvis report: Remove spaces in weird places
https://github.com/inaka/elvis_core/blob/main/doc_rules/elvis_style/no_space.md
2024-08-26 15:50:25 +02:00
Badlop
74b80bfe08 Fix Elvis report: Don't use ignored variables
https://github.com/inaka/elvis_core/blob/main/doc_rules/elvis_style/used_ignored_variable.md
2024-08-26 15:48:32 +02:00
Badlop
90ce65e4dc Fix Elvis report: Remove trailing whitespace characters
https://github.com/inaka/elvis_core/blob/main/doc_rules/elvis_text_style/no_trailing_whitespace.md
2024-08-26 15:48:32 +02:00
Badlop
d4d9771a71 Makefile: Add support for "make elvis" when using rebar3 2024-08-26 15:48:32 +02:00
Badlop
70ee294079 elvis.config: Fix file syntax, set vim mode, disable many tests
Let's disable the tests that would require major changes in existing
ejabberd source code, and fixing them would produce a curtain of changes
that would difficult using git blame and git log, but provide minimal
benefits.

Don't check erlang header files by now.

Don't check rebar.config because it has customizations that must be
parsed by rebar.config.script to have suitable syntax.
2024-08-26 15:48:32 +02:00
Badlop
5f4d17621f Fix Erlang LS warning about unused macro definitions
Macro name + commit when it was added - commit when usage was removed:

* BATCH_SIZE + f6db8428 - 71c44bff8
* INVALID_SETTING_MSG - 6b126171d - 381065397
* POLICY_ACCESS + 7c1e7e5b - 56d273477
* PROCNAME + 068db1a2 - 6876a37e6
* SALT_LENGTH + e575c87e - 633b68db1
* SERVER + 068db1a2 - but was never used!
* SERVER + f44e23b8c - but was never used!
* STORAGE_TYPES + 92db9ff1 - 9a93acc62
* TCP_SEND_TIMEOUT + f0af10e6 - 6e900d6a8
* TDTD + c3280e9 - 5a34020
* TVFIELD + dcc05ac8 - da310a517
2024-08-26 15:48:32 +02:00
Badlop
8f4179050b erlang_ls.config: Let it find paths, update to Erlang 26, enable crossref 2024-08-26 15:48:32 +02:00
Badlop
fddacd51a4 .vscode/launch.json: Experimental support for debugging with Neovim 2024-08-26 15:48:32 +02:00
Badlop
e726ba9a8b .vscode/relive.sh: Update to benefit from ejabberd 24.02 behaviour 2024-08-26 15:48:32 +02:00
Badlop
da1673e264 mix.lock: Don't mention Relive deps, otherwise they are always downloaded 2024-08-26 15:48:32 +02:00
Badlop
7cd34d3709 CONTAINER.md: Use same general badges in both container images readme files 2024-08-26 15:48:32 +02:00
Paweł Chmielowski
ec7fd05987 Update xmpp once more 2024-08-24 15:27:58 +02:00
Paweł Chmielowski
34a58863e3 Update xmpp dep 2024-08-24 13:16:03 +02:00
Paweł Chmielowski
3237a955e5 Fix dep spec for rebar2 2024-08-23 20:56:52 +02:00
Paweł Chmielowski
8e7489c2be Remove duplicate dep from mix.exs 2024-08-23 20:52:36 +02:00
Paweł Chmielowski
df5202a2f0 Update deps to bring improved s2s fallback for invalid direct tls connections
This allows connections to server that have both xmpps-server and xmpp-server
srv entries, for which xmpps version doesn't work correctly. Before this
change we would stop on non-working xmpps server, now we will also attempt
to connect further servers on list.
2024-08-23 20:48:53 +02:00
Badlop
db3a5d8915 Start ExSync manually to ensure it's started if (and only if) Relive 2024-08-21 10:51:59 +02:00
Badlop
6110f213de Return error stanza when storage doesn't support vcard update (#4266) 2024-08-21 10:51:56 +02:00
Badlop
e99fe98db4 Remove from extra_applications the apps already defined in deps (#4265) 2024-08-21 10:51:53 +02:00
Michael Slezak
b07e28be2c Fix 'mix release' error: logger being regular and included application (#4265) 2024-08-21 10:51:51 +02:00
Badlop
937d5fe495 Document which SQL servers can really use update_sql_schema 2024-08-21 10:51:49 +02:00
Badlop
01141e5f69 Relax password complexity in test database
This password is not strong enough in MSSQL 2022, relax this restriction
  https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy?view=sql-server-ver16
  https://learn.microsoft.com/en-us/sql/t-sql/statements/create-login-transact-sql?view=sql-server-ver16#check_policy---on--off-
2024-08-21 10:51:46 +02:00
Badlop
15569d0b13 Add links in top-level options documentation to their Docs website sections 2024-08-12 16:25:42 +02:00
Badlop
918806006c Update fast_xml to use use_maps and remove obsolete elixir files 2024-08-09 12:31:37 +02:00
Badlop
d5e030a638 CI: Tell sqlcmd to trust server self-signed certificate
As explained in
3169228

Version 18.0 of the Microsoft ODBC Driver 18 for SQL Server has been released.
BREAKING CHANGE - Default Encrypt to Yes/Mandatory.
2024-08-09 12:31:35 +02:00
Badlop
47f1beca0c CI: Update path to sqlcmd command in the mssql container
As mentioned in
https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker

Starting with SQL Server 2022 (16.x) CU 14 and SQL Server 2019 (15.x)
CU 28, the container images include the new mssql-tools18 package.
The previous directory /opt/mssql-tools/bin is being phased out.
The new directory for Microsoft ODBC 18 tools is /opt/mssql-tools18/bin,
aligning with the latest tools offering.
2024-08-09 12:31:34 +02:00
Badlop
a565b0e4c1 ext_mod: Handle info message when contrib module transfers table ownership 2024-08-09 12:31:29 +02:00
Badlop
10d1704899 mod_muc_rtbl: Fix call to gen_server:stop (#4260) 2024-07-22 13:28:47 +02:00
Badlop
bc7c8e3952 Handle case when elixir support is enabled but not available
This happens when:
./configure --with-rebar=rebar3 --enable-elixir
make
rebar3 ct
2024-07-19 18:08:02 +02:00
Paweł Chmielowski
4e35515a8c Also change mysql.new.sql in similar way 2024-07-18 17:55:37 +02:00
Paweł Chmielowski
d2a3fe3ed2 Fix column type in comment with schema update 2024-07-18 17:13:45 +02:00
Badlop
9bd1b39f9f Set version to 24.07 2024-07-18 11:55:10 +02:00
Badlop
20a01a25e4 Update changelog 2024-07-18 11:55:07 +02:00
Badlop
68e69debff Update man page to 24.07 2024-07-18 11:55:05 +02:00
Badlop
7a333eecbe Update more translations translation 2024-07-18 11:11:55 +02:00
Badlop
e274bcc87d Update Portuguese (Brazil) translation (thanks to Wellington Uemura) 2024-07-18 11:11:54 +02:00
Badlop
c42cb2bbac Update Italian translation (thanks to Ermete Melchiorre) 2024-07-18 11:11:52 +02:00
Badlop
9ee7054823 Update Chinese translation (thanks to Sketch6580) 2024-07-18 11:11:51 +02:00
Badlop
65e16dcac1 make format 2024-07-18 11:11:48 +02:00
Paweł Chmielowski
97c2d6a29d
Merge pull request #4259 from heyanyanchina123/fix_mysql
[fix] fix mysql.sql archive origin_id
2024-07-18 09:40:25 +02:00
haha
93cdee80ed [fix] fix mysql.sql archive origin_id 2024-07-18 15:14:39 +08:00
Holger Weiss
11055f61a6 make-installers: Don't edit too much
The init script and systemd units don't refer to "/opt/ejabberd", and
ejabberdctl doesn't refer to "/opt/ejabberd-$version".

Fixes #4258.
2024-07-17 13:33:46 +02:00
Paweł Chmielowski
af99799e8a Use tagged deps 2024-07-17 11:11:00 +02:00
Paweł Chmielowski
926f60b2ed Output muc#roominfo_avatarhash in room disco info as per updated xep-0486
This should fix issue #4234.
2024-07-16 18:55:02 +02:00
Badlop
0fdbb03f54 Don't add iex to included_applications
- iex is unnecessary for ejabberd in OTP release
- adding iex breaks dialyzer when --enable-elixir
2024-07-16 17:16:35 +02:00
Badlop
bd0332c716 ext_mod: Fix typo in log message 2024-07-16 17:16:33 +02:00
Badlop
45007809f6 CHANGELOG.md: Only include URLs at the end of line for plaintext readability 2024-07-16 17:16:31 +02:00
Badlop
0e0fdb440c CHANGELOG.md: Fix Issues URLs 2024-07-16 17:16:29 +02:00
Paweł Chmielowski
2016cf547f Make dialyzer happy 2024-07-16 15:56:41 +02:00
Paweł Chmielowski
ead87e3727 Add option update_sql_schema_timeout to allow schema update use longer timeouts
This also makes batch of schema updates to single table use transaction,
which should help in not leaving table in inconsistent state if some update
steps fails (unless you use mysql where you can't rollback changes to
table schemas).
2024-07-16 15:42:00 +02:00
Paweł Chmielowski
f56739fd9f Make any uncatched exception inside transaction trigger rollback 2024-07-16 15:42:00 +02:00
Paweł Chmielowski
c5f2b389c3 Allow to configure number of restart in sql_transaction() 2024-07-16 15:42:00 +02:00
dependabot[bot]
4cc95dda42 Bump ex_doc from 0.34.1 to 0.34.2
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.34.1 to 0.34.2.
- [Release notes](https://github.com/elixir-lang/ex_doc/releases)
- [Changelog](https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-lang/ex_doc/compare/v0.34.1...v0.34.2)

---
updated-dependencies:
- dependency-name: ex_doc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-16 11:31:42 +02:00
Badlop
0bfbe3e154 Add ejabberd example config files to the hex package 2024-07-16 11:31:39 +02:00
Badlop
9bd6b11007 Use proper format depending on the formatter (#4256)
This fixes recent commmit 090a8e3
2024-07-16 11:31:35 +02:00
Paweł Chmielowski
c013a59d16 Restore args conversion of {"k":"v"} to tuple lists in mod_http_api
Switching to json compatible output did broke this, which caused issues in
for example create_rooms_with_opts command.
2024-07-15 21:58:41 +02:00
Paweł Chmielowski
aa02c4de1e Move logger app to included_applications
We don't particularly need this to start with ejabberd, and by having
it always started we will change logger to always use elixir formating.
2024-07-15 21:26:16 +02:00
badlop
fb9e2b9603
Merge pull request #4256 from slezakattack/elixir_logger
Fix template error for elixir-enabled applications.
2024-07-15 11:00:07 +02:00
Badlop
a70bdc0776 WebAdmin: Fix number of accounts shown in the online-users page 2024-07-15 10:59:16 +02:00
Badlop
936460212f Fix bug in 8a3344e when Elixir enabled but no need to compile elixir files 2024-07-15 10:59:14 +02:00
Holger Weiss
8ac51e63b5 node_pep: Add missing feature
Publishers may specify item identifiers for PEP nodes as well.

(Greetings to Thilo!)
2024-07-14 17:42:40 +02:00
Michael Slezak
090a8e3c95 Fix template error for elixir-enabled applications. 2024-07-12 14:39:42 -06:00
Badlop
101cce0c1e ext_mod: Fetch dependencies from hex.pm when mix is available
This doesn't work when running an OTP release build using mix,
which means it doesn't work in binary installers or containers;
only when using relive, or compiled with rebar3.

Set the desired hex package version in the module's rebar.config
For example, to fetch hex package recon 2.5.5 when mix is available,
and otherwise download using git: in the file
  ejabberd-contrib/ejabberd_observer_cli/rebar.config
set both the hex version and git details:
{deps, [
        {recon, "2.5.5", {git, "https://github.com/ferd/recon"}}
       ]}.
2024-07-12 15:47:10 +02:00
Badlop
a935302a19 ejabberd.yml.example: Add api_permissions group for webadmin (#4249) 2024-07-12 15:46:01 +02:00
Badlop
9a0ff13cc2 mod_register: Send welcome message as 'chat' too (#4246)
Apparently, some clients don't display 'normal' messages to the user.
2024-07-12 15:45:59 +02:00
Badlop
ef933c07cc WebAdmin: Support groupid with spaces when making shared roster result (#4245) 2024-07-12 15:45:57 +02:00
Badlop
df5291e4bd ext_mod: Improve error result when problem compiling elixir file 2024-07-11 16:35:24 +02:00
Badlop
7a8c0331c1 mix.exs: Include Elixir's Logger in the OTP release, useful for libcluster 2024-07-11 16:35:23 +02:00
Badlop
28e37bcaad ext_mod: files_to_path is deprecated, use compile_to_path
As recommended in
d9cf285d71/lib/elixir/lib/kernel/parallel_compiler.ex (L240)
2024-07-11 16:35:21 +02:00
Badlop
8a3344e78a ext_mod: Compile all Elixir files in a library with one function call
Some Elixir libraries have files with dependencies between them.
Compiler can detect and solve those internal dependency if
we call Compile with a list of all the files
https://hexdocs.pm/elixir/1.17.2/Kernel.ParallelCompiler.html#compile/2

This is useful to compile libcluster
2024-07-11 16:35:18 +02:00
Badlop
ce95f1f25a WebAdmin: Fix crash when viewing SRG created using ejabberd 24.02 (#4245) 2024-07-11 16:35:16 +02:00
Badlop
f1739ce34d mod_register: Add example configuration of welcome_message option 2024-07-11 16:35:12 +02:00
Holger Weiss
1add1de23b ejabberd_options: Add trailing @ to @VERSION@
Thanks to Marc Schink for reporting the issue.
2024-07-05 22:41:18 +02:00
Paweł Chmielowski
e25bdba16d Use error_logger when printing startup failure message 2024-07-05 10:25:59 +02:00
Paweł Chmielowski
7c63cd1000 Print message when starting ejabberd application fails 2024-07-05 09:57:21 +02:00
Badlop
4192190a96 Fix problem parsing tuples when using OTP 27 json library (#4242) 2024-07-04 16:55:28 +02:00
Badlop
a733ba311c New tests for API commands
Only mod_http_api is tested right now; support to test also
ejabberdctl, ejabberd_xmlrpc and web_admin would be great.

This uses mod_example from ejabberd-contrib

How to run only those tests:
  CT_BACKENDS=no_db rebar3 ct --suite=test/ejabberd_SUITE --group=commands_single
2024-07-04 16:55:14 +02:00
Paweł Chmielowski
fe472a63a0 Improve cross version handling of muc retractions 2024-07-04 13:57:25 +02:00
Paweł Chmielowski
25b78b73d0 Add ability to specify custom timeout for sql operations 2024-07-04 11:21:26 +02:00
Paweł Chmielowski
b978a47925 Fix unused variable warning 2024-07-03 15:55:48 +02:00
Paweł Chmielowski
b44b1304b8 Fix typo in last commit 2024-07-03 15:55:29 +02:00
Paweł Chmielowski
a4fd756eae Add misc:json_encode_With_kv_lists and use it in matrix sign function
R27 json module doesn't recognize list of tuples as object specification,
so this creates wrapper that offer this functionality.
2024-07-03 15:20:48 +02:00
Paweł Chmielowski
8d4c1e3617 One more fix for pg91 in test suite 2024-07-03 13:44:48 +02:00
Paweł Chmielowski
54f5db851d Don't use host from url in webadmin, prefer host used for authentication 2024-07-03 13:15:33 +02:00
Paweł Chmielowski
35042ebc6a Make sql query in testsuite compatible with pg9.1 2024-07-03 12:38:48 +02:00
Mickaël Rémond
6c2dfd3d31
Update CODE_OF_CONDUCT.md
Try to limit the number of ping comments in the community. This can get into the way of efficient work and be considered a bit offensive for some users or maintainers.
2024-07-02 15:42:41 +02:00
Badlop
543b874a10 ext_mod: Handle case when contrib module has no *.ex and no *.erl 2024-07-02 13:43:37 +02:00
Badlop
4258d3dc24 Update rebar.lock 2024-07-02 13:43:35 +02:00
Badlop
949649e3a9 Fix typos (thanks to Jerome Sautret) 2024-07-02 13:43:33 +02:00
Pouriya
82d95ac81d feat: Hook subscribers 2024-07-02 12:38:54 +02:00
Alexey Shchepin
3124644315 Fix matrix_id_as_jid option documentation 2024-06-28 05:31:16 +03:00
Badlop
27ba09debf Set version to 24.06 2024-06-27 15:43:26 +02:00
Badlop
686938045b Update changelog 2024-06-27 15:42:19 +02:00
dependabot[bot]
5645858262 Bump docker/build-push-action from 5 to 6
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-27 15:11:46 +02:00
Badlop
410c81a51d Update man page to 24.06 2024-06-27 14:54:41 +02:00
Badlop
d19bac70ce Update version number of new commands, options and protocols to 24.06 2024-06-27 14:54:40 +02:00
Badlop
9b9eb409b2 join_cluster: Handle also atom arguments, useful for mod_libcluster 2024-06-27 14:54:38 +02:00
Badlop
f3ad49ebc4 Fix copy deps *.app file, and strip *.src if present 2024-06-27 14:54:36 +02:00
Badlop
394ba26d1d ext_mod: Support to compile nested *.erl, and include other deps *.hrl
This is useful to compile as a dependency
https://github.com/deadtrickster/prometheus.erl
2024-06-27 14:54:35 +02:00
Badlop
cafe28fdea Update other translations 2024-06-27 14:54:32 +02:00
Badlop
22cefeb2bd Update German translation (thanks to Nautilusx) 2024-06-27 14:54:31 +02:00
Badlop
9e4cccd4db Update Polish translation (thanks to Wojciech Teichert) 2024-06-27 14:54:29 +02:00
Badlop
3ff3bdf812 Update Chinese translation (thanks to Sketch6580) 2024-06-27 14:54:27 +02:00
Paweł Chmielowski
45f0f983b1 Override jose version for <R23 in mix to fix compilation with new p1_acme 2024-06-27 14:51:14 +02:00
Paweł Chmielowski
28e94513db Update deps 2024-06-27 14:26:19 +02:00
Badlop
afe32e2c05 Fix generate-doap.sh to accept x in the version number 2024-06-25 17:05:56 +02:00
Badlop
0b6d40c9df Log messages not only when node joins the cluster, also when leaves it 2024-06-25 17:05:41 +02:00
Badlop
992d84c002 Add JSON EUnit testing 2024-06-25 17:05:31 +02:00
Badlop
9b675fe775 Add support to test also EUnit suite 2024-06-25 17:05:28 +02:00
Badlop
35783d9a2c Format also files in test/ 2024-06-25 17:05:26 +02:00
Badlop
f28e7b37bc Fix call to atom_to_binary/1 for Erlang/OTP older than 23 2024-06-25 17:05:21 +02:00
Badlop
eceb9b729f WebAdmin: New login box in the left menu bar 2024-06-25 10:51:23 +02:00
Badlop
ce348596b7 WebAdmin: Improve CSS of welcome page, docs links, anchor element 2024-06-25 10:51:22 +02:00
Badlop
b85cd9a487 join_cluster_here: New command to join a remote node into our local cluster 2024-06-25 10:51:20 +02:00
Badlop
d170885d8d Run "make doap" (#4237) 2024-06-25 10:51:18 +02:00
Badlop
9a6bd83aa1 Remove obsolete code for Erlang/OTP older than 20.0 2024-06-25 10:51:17 +02:00
Badlop
0d31482647 Use newer rebar3_hex with new Erlang, but Erlang 20 requires 7.0.7 2024-06-25 10:51:13 +02:00
Holger Weiss
40c27b54b0 ejabberd_ctl: Fix output of UTF-8-encoded binaries
Converting binary results to char() lists using binary_to_list/1 yields
incorrect results for characters outside the ISO Latin-1 range.
2024-06-19 19:51:50 +02:00
badlop
0380695bba
Merge pull request #4228 from badlop/webadmin-commands
Use commands in WebAdmin to generate page content
2024-06-19 18:01:35 +02:00
Badlop
899b77cdf4 ejabberd_ctl: Improve parsing of commas in arguments 2024-06-19 17:59:38 +02:00
Badlop
4819baaa07 Test: Update to the new webadmin pages 2024-06-19 17:59:38 +02:00
Badlop
5a34020d23 WebAdmin: Move content to commands; new pages; hook changes; new commands
Also:
- Added support to view user subpages in the menu
- Webadmin hooks now get the full request
- New commands added to be used in webadmin pages
2024-06-19 17:59:38 +02:00
Badlop
2b1d4ff98d Commands with 'internal' tag: don't list and block execution by frontends 2024-06-19 17:59:38 +02:00
Badlop
ed4843b0ed Document 'any' argument and result type, useful for internal commands
Also 'atom' may be used as argument type by some internal commands,
for example the ones that refer to erlang node names.
2024-06-19 17:59:38 +02:00
Badlop
30bd8f1570 WebAdmin: Add make_command functions to produce HTML command element
Support to sort tables using Sortable library from:
  https://github.com/tofsjonas/sortable
2024-06-19 17:59:38 +02:00
Badlop
74d6f0a68d WebAdmin: logo-fill.png is useless since the visual refresh in commit 9eeee67 2024-06-19 17:59:38 +02:00
Badlop
5872ccc992 WebAdmin: Sort alphabetically the menu items, except the most used ones 2024-06-19 17:59:38 +02:00
Badlop
9ee23d3649 WebAdmin: Improve home page
- Update ejabberd WebAdmin logo
- Add hyperlink in disclaimer text
- Add welcome paragraph
2024-06-19 17:59:38 +02:00
Badlop
724f304e48 WebAdmin: Unauthorized response: include some text to direct to the logs 2024-06-19 11:56:16 +02:00
Badlop
a16e5a7055 WebAdmin: Remove webadmin_view for now, as commands allow more fine-grained permissions 2024-06-19 11:56:16 +02:00
Badlop
3bda858225 Add Makefile targets to format and indent source code 2024-06-19 11:56:16 +02:00
Badlop
701d2ce0f6 Define kick_user command version 2, useful for the WebAdmin command usage 2024-06-19 11:56:16 +02:00
Badlop
be847a7e91 rebar.config.script: Require port_compiler 1.15.0 and accept any 1.15.x 2024-06-19 11:51:03 +02:00
Badlop
fff0b5209c Apply previous commit to the container ejabberdctl script 2024-06-19 11:48:33 +02:00
Paweł Chmielowski
2c5a8f0860 Make native dynamic node names work when using fully qualified domain names
This should fix issue reported in 4184
2024-06-13 18:02:13 +02:00
Badlop
103a30df2c Document that XEP-0485 is available in mod_pubsub_serverinfo 2024-06-10 19:03:25 +02:00
Badlop
e4c8dbc2af make-binaries: Bump OpenSSL version to 3.3.1 2024-06-10 19:03:13 +02:00
Badlop
882cd8faf5 ejabberd_access_permissions: Fix debug lines indentation that were hard to read 2024-06-10 19:03:06 +02:00
Holger Weiss
7ba9f2e4e8 mod_private: Cope with bookmark decoding errors
Handle invalid XEP-0048 bookmarks gracefully while attempting to publish
them to an XEP-0402 node.
2024-05-28 21:07:04 +02:00
Badlop
52abe8016b Update lock files 2024-05-28 15:36:39 +02:00
Badlop
b840ab9907 Revert "Disable update_sql_schema by default"
The update_sql_schema feature was published half a year ago,
included in two releases, it is used by the CI tests,
and consequently it's stable enough to be enabled by default.

This reverts commit ec20691188.
2024-05-28 15:36:39 +02:00
Badlop
b977eb7193 Add support for XEP-0425 version 0.3.0, keep supporting 0.2.1 (#4193) 2024-05-28 15:36:39 +02:00
Badlop
a179d5e34b mix:exs: Move xmpp from included_applications to applications
because now p1_pgsql has it in applications to satisfy dialyzer OTP 26,
and we cannot have xmpp both in applications and included_applications.
2024-05-28 15:36:39 +02:00
Badlop
ab274147d8 Runtime: Add final OTP 27 and preliminary Elixir 1.17 to the matrix 2024-05-28 15:36:39 +02:00
Badlop
d81a844e1c make-binaries: Bump versions to Erlang/OTP 26.2.5 and Elixir 1.16.3 2024-05-28 15:21:05 +02:00
Badlop
b288d5c763 make-binaries: Revert temporarily an OTP commit that breaks MSSQL (#4178) 2024-05-28 15:21:01 +02:00
Badlop
1b81af00b2 Update p1_pgsql and mysql to support Unix Domain Socket (#3716) 2024-05-28 15:20:57 +02:00
Badlop
d04f92d44e mod_muc_room: Use ejabberd hooks instead of function calls to mod_muc_log (#4191) 2024-05-28 15:20:53 +02:00
Badlop
80dc95fc03 Remove unnecessary case from recent commit 599cddf 2024-05-28 15:14:08 +02:00
Badlop
a8e36e7b1b CI: Don't load database schema files for mysql and pgsql 2024-05-24 13:21:21 +02:00
Badlop
ec13350b24 Test: Enable update_sql_schema
- Test: Enable update_sql_schema by default
- Update test/README about new option
- enable new_schema in tests
2024-05-24 13:21:19 +02:00
Badlop
1076f8bfc2 Test: Clear tables when ending a group, instead of when starting
Because a group may be started but the tables are not yet created,
as they are created automatically when update_sql_schema is enabled.

This modifies commit e2b79ea
2024-05-24 13:21:18 +02:00
Badlop
599cddfb67 ejabberd_sql_schema: Rewrite recent commit cb49fcf
lists:search is available since OTP 21.0, and ejabberd is said to
support since OTP 20.0.
Also, that code wouldn't work if ejabberd uses different database types
(MySQL, PgSQL, ...), as this would only update the first database.
2024-05-24 13:21:16 +02:00
Badlop
034af6aefd Set process flags when Erlang/OTP 27 to help debugging
https://www.erlang.org/blog/highlights-otp-27/#process-labels
2024-05-24 13:21:15 +02:00
Badlop
5d2a111b9c Update lock files 2024-05-24 13:21:13 +02:00
Badlop
ca9ca7f5af Use the new port_compiler 1.15.0 that supports Erlang/OTP 27.0
Revert "rebar.config.script: Use port_compiler branch that supports OTP 27.0-rc2"

This partially reverts commit e9b9159d23.
2024-05-24 13:21:12 +02:00
Badlop
677d66d818 Revert "mix.exs: Dirty workaround to get port_compiler with OTP 27 support"
This reverts commit c7c3cc10c5.
2024-05-24 13:21:10 +02:00
Badlop
750bf07e13 Runtime: Define Elixir major versions, and let it pick the latest minor one 2024-05-24 13:21:08 +02:00
Badlop
2cd53410bc Runtime: Avoid testing with OTP 27 + rebar2, because Jose has warnings_as_errors
and we can't disable that option in rebar2 using overrides
2024-05-24 13:21:07 +02:00
Badlop
ad7008a545 CI and Runtime: Update Erlang/OTP 27.0-rc3 to 27 2024-05-24 13:21:05 +02:00
Badlop
bedfc2e188 rebar.config: Add temporary workaround to compile Jose with Erlang/OTP 27.0 2024-05-24 13:21:04 +02:00
Badlop
83b1a40f8b Run "make doap" 2024-05-24 13:21:02 +02:00
Badlop
a05dbcc2b2 Add some XEPs support that was forgotten 2024-05-24 13:21:00 +02:00
Badlop
01f2697faf mod_muc_admin: Update module to the new gen_mod API 2024-05-24 13:20:58 +02:00
Badlop
fba915e04e gen_mod: Add support to specify a hook global, not vhost-specific 2024-05-24 13:20:56 +02:00
Badlop
0d1cbc62d4 mod_muc_rtbl: Change this module attribute name to the main one: behaviour
https://erlang.org/documentation/doc-15.0-rc3/doc/system/modules.html#behaviour-module-attribute
2024-05-24 13:20:52 +02:00
Holger Weiss
f72cb1b5c8 .gitignore: Ignore ctags/etags files
Running `make TAGS` generates a `TAGS` file, and "vim-erlang-tags"
produces a `tags` file when :ErlangTags is called.
2024-05-19 18:55:38 +02:00
Alexey Shchepin
cb49fcf459 Fix handling of mqtt_pub table definition from mysql.sql and fix should_update_schema/1 in ejabberd_sql_schema.erl 2024-05-18 05:18:24 +03:00
Badlop
66a08b6f18 Run "make doap" 2024-05-17 11:36:07 +02:00
Badlop
2554b51173 hook_deps: Use precise name: hooks are added and later deleted, not removed 2024-05-17 11:36:00 +02:00
Badlop
d2e7b5ffa0 hook_deps: Fix to handle FileNo as tuple {FileNumber, CharacterPosition} 2024-05-17 11:35:57 +02:00
Badlop
38fd9a3ed2 Update URLs of module documentations 2024-05-10 16:04:28 +02:00
dependabot[bot]
4ec236966a Bump exsync from 0.4.0 to 0.4.1
Bumps [exsync](https://github.com/falood/exsync) from 0.4.0 to 0.4.1.
- [Changelog](https://github.com/falood/exsync/blob/main/CHANGELOG.md)
- [Commits](https://github.com/falood/exsync/compare/v0.4.0...v0.4.1)

---
updated-dependencies:
- dependency-name: exsync
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 11:28:19 +02:00
Badlop
696e42b5b4 Use json module when Erlang/OTP 27, jiffy with older ones 2024-05-07 11:28:17 +02:00
Badlop
0ad1d315e8 Use maps instead of tuple+list+tuple as arguments in jiffy functions 2024-05-07 11:28:16 +02:00
Badlop
4697a9295a Update p1_acme that uses Erlang's json library instead of jiffy when OTP 27 2024-05-07 11:28:14 +02:00
Badlop
9fbc7b96e4 Update pkix dependency with minor fixes for compilation warnings 2024-05-07 11:28:11 +02:00
Badlop
392d7ee30b CI and Runtime: Now ejabberd and dependencies can compile with OTP 27.0-rc3 2024-05-02 17:30:21 +02:00
Badlop
025e2a5760 CI and Runtime: Don't get explicitly dependencies (#4213) 2024-05-02 17:30:04 +02:00
Badlop
f7dc4fa2ac configure.ac: When using rebar3 with old Erlang, unlock some dependencies (#4213) 2024-05-02 17:29:57 +02:00
Badlop
13ebe89fdc Remove unused format_status/2 callback that is deprecated in OTP 27 2024-04-30 18:00:32 +02:00
Badlop
c7c3cc10c5 mix.exs: Dirty workaround to get port_compiler with OTP 27 support 2024-04-30 18:00:29 +02:00
Badlop
e9b9159d23 rebar.config.script: Use port_compiler branch that supports OTP 27.0-rc2
If we provide this plugin in ejabberd, then dependencies will not download
the old pc 1.14.0 which doesn't support OTP 27.0-rc2, and will use this one.
2024-04-30 18:00:27 +02:00
Badlop
f15d5d073e configure.ac: When using rebar3, unlock dependencies that are disabled (#4212) 2024-04-30 18:00:25 +02:00
Badlop
b461657407 Bump idna from 6.0.0 to 6.1.1
Bumps [idna](https://github.com/benoitc/erlang-idna) from 6.0.0 to 6.1.1.
- [Changelog](https://github.com/benoitc/erlang-idna/blob/master/CHANGELOG)
- [Commits](https://github.com/benoitc/erlang-idna/compare/6.0.0...6.1.1)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-30 18:00:23 +02:00
Badlop
0da767f568 ban_account/unban: When mod_private is disabled, return meaningful error (#4201) 2024-04-30 18:00:21 +02:00
Badlop
395a73bbe0 Handle case when mod_private is not enabled (#4201) 2024-04-30 18:00:18 +02:00
Badlop
5870e2e378 Use updated xmpp library with minor improvement in auth (#4201) 2024-04-30 18:00:16 +02:00
Badlop
94a0aa6967 Add support to provide ban detail when account logins (#4201) 2024-04-30 18:00:14 +02:00
Badlop
2bfc4b0f5d Use "jabber:" namespace that clients cannot use (#4201)
As mentioned in:
  Certain namespaces are reserved in Jabber (namespaces beginning with
  'jabber:' or 'http://jabber.org/', as well as 'vcard-temp').
  If a user attempts to get or set jabber:iq:private data in a reserved
  namespace, historically some server implementations have chosen to
  return an error (commonly "Not Acceptable") to the sender.

  https://xmpp.org/extensions/xep-0049.html#example-5
2024-04-30 18:00:12 +02:00
Badlop
374f6b8e7d Improve recent commit so users cannot prevent banning, fixes 44bafa4 (#4201) 2024-04-30 18:00:11 +02:00
Badlop
33c6b3700e Ammend ejabberd_admin:update/0 from adbccbe to be used by Rebar3 Sync 2024-04-30 18:00:08 +02:00
Badlop
eb975268f4 Add ExSync tool to "make relive" with Mix
How to use:
- Compile ejabberd with Mix
- Start ejabberd with "make relive"
- Edit some ejabberd source code file
- Save the file, and ExSync will compile and reload it automatically

ExSync depends on FileSystem library, which requires inotify-tools, see
https://github.com/falood/file_system#system-support

References:
https://hex.pm/packages/exsync
https://github.com/falood/exsync
2024-04-30 18:00:06 +02:00
Badlop
b0afe4946d Add Sync tool to "make relive" with Rebar3
How to use:
- Compile ejabberd with Rebar3
- Start ejabberd with "make relive"
- Edit some ejabberd source code file
- Save the file, and Sync will compile and reload it automatically

I've added src_dirs option so Sync doesn't act on dependencies,
which would produce many garbage log lines.
However, now it only works if the parent directory is named "ejabberd"

Sync requires at least Erlang/OTP 21, which introduced the
new try-catch syntax to retrieve the stacktrace
https://www.erlang.org/patches/otp-21.0

References:
https://hex.pm/packages/sync
https://github.com/rustyio/sync
2024-04-30 17:59:59 +02:00
Badlop
5c6a399f5b Update links to some moved content in docs.ejabberd.im 2024-04-25 02:55:02 +02:00
Badlop
e744665171 Fix links in mix.exs 2024-04-24 13:20:48 +02:00
Badlop
0b16cbddde Remove vcard example config in mod_proxy65, it breaks PDF Docs generation 2024-04-24 13:20:47 +02:00
Badlop
7ea2c6eabf Improve markdown of md files 2024-04-24 13:20:46 +02:00
Badlop
45ca11ecd0 Improve markdown of generated documentation 2024-04-24 13:20:44 +02:00
Badlop
d8cdd82bf8 Rewrite vcard example configuration to not require extended format 2024-04-24 13:20:43 +02:00
Badlop
345af5a535 Remove ... in example configuration: it is assumed and reduces verbosity 2024-04-24 13:20:42 +02:00
Badlop
6e5895ce45 Update some modules doc to use the note field 2024-04-24 13:20:41 +02:00
Badlop
b70a2fe4cf Support for version note in modules too 2024-04-24 13:20:40 +02:00
Badlop
da01d932ea Add some text to examples, so docs Makefile can find and update its syntax 2024-04-24 13:20:39 +02:00
Badlop
7cd5808766 Mark toplevel options, commands and modules that changed in latest version 2024-04-24 13:20:37 +02:00
Badlop
c98302b3c0 Now modules themselves can have version annotations in 'note'
This was already supported in module options, toplevel options
and ejabberd_commands.
2024-04-24 13:20:36 +02:00
Badlop
cd7eedf589 Update API to mkdocs 2024-04-24 13:20:35 +02:00
Badlop
27bd8852a1 Update name of API section 2024-04-24 13:20:34 +02:00
Badlop
effcf0b7cf Update markdown text for version notes, to work with mkdocs 2024-04-24 13:20:33 +02:00
Badlop
71b9db688a Fix markdown indentation of JSON examples 2024-04-24 13:20:32 +02:00
Badlop
8be6dc7758 Use new shorthand to provide URLs relative to ejabberd Docs 2024-04-24 13:20:30 +02:00
Badlop
569f0b303b Use same module shorthand in API documentation than in module docs 2024-04-24 13:20:29 +02:00
Badlop
15e3add909 CHANGELOG.md: Fix markdown syntax to work with MkDocs 2024-04-24 13:20:28 +02:00
Badlop
68c0c4d94f Update doc headers to MkDocs and mention ejabberd version used 2024-04-24 13:20:27 +02:00
Badlop
a550a1c55c Fix documentation links to new URLs generated by MkDocs 2024-04-24 13:20:26 +02:00
Badlop
832588f861 mix.lock: Update to get p1_acme fix in ACME IPv6 2024-04-24 13:20:24 +02:00
Paweł Chmielowski
73bcabd2fa Replace muc.example.com with conference.example.com in commands docs
Second form matches what we use by default, and we seen some confusion
between those two when people try to adopt commands from docs to real
usage.
2024-04-23 14:33:34 +02:00
Badlop
da8c9f3357 rebar.lock: Track it, now that rebar3 uses loose dependency versioning
This is recommended in Rebar3 documentation:
  [Lock files] should always be checked into source control.
  https://rebar3.org/docs/configuration/dependencies/#lock-files
2024-04-23 13:46:21 +02:00
Badlop
6cfef4f476 mix.lock: Update to latest versions 2024-04-22 18:28:34 +02:00
Badlop
e9fbfaf536 Update Luerl to 1.2.0 when OTP>=20, simplifies commit a09f222 2024-04-22 18:28:34 +02:00
Badlop
0407c56605 rebar.config: Update deps version to rebar3's relaxed versioning 2024-04-22 18:28:34 +02:00
Badlop
1a63443e02 rebar.config.script: Support relaxed dependency version (#4192)
Instead of adding another element to the tuple, let's reuse the second
element, which was used only by rebar2, and always has ".*" as value.
2024-04-22 18:28:34 +02:00
Badlop
0345f798bd Update p1_acme to git, to support Jose 1.11.10 and Ipv6 support (#4170) 2024-04-22 18:28:34 +02:00
Badlop
ee9d4d56a9 Update Jose to the new 1.11.10 for Erlang/OTP > 23 2024-04-22 18:28:34 +02:00
Badlop
44bafa478e New ban commands use private storage to keep ban information (#4201) 2024-04-22 18:28:15 +02:00
badlop
ce57e02769
Merge pull request #4205 from LeszekBlazewski/fix-command-on-start-docs
fix: invalid CTL_ON_CREATE usage in docker-compose example
2024-04-19 18:24:46 +02:00
LeszekBlazewski
64cd794c02 fix: invalid CTL_ON_CREATE usage in docker-compose example 2024-04-19 16:14:05 +02:00
Badlop
9c8ae96f25 Define base64url dependency only when using rebar2 and Erlang<24
base64url is not called directly in ejabberd code since e227940,
it is only required by p1_acme and erlang-jose 1.11.1

erlang-jose 1.11.1 defines base64url dependency as an hex package,
and rebar2 is not able to download it.
For that reason, when compiling ejabberd with rebar2,
we provide a rebar2-friendly base64url dependency definition.
That way when jose is downloaded, that dependency is already available.
2024-04-19 01:50:42 +02:00
Badlop
e973360aa7 Test: Fix some minor compilation warnings
- This QueryID is unnecessary since d3aeed8, due to d6e9e03
- DB variable was added in d32a0ce to detect riak and disable some tests,
  but support for Riak was removed later in 3f7d9e3.
- MyJID was added in 5b863c2 but was never actually used
- recv2 return should be checked
2024-04-19 01:50:42 +02:00
dependabot[bot]
697e5b8b6c Bump peaceiris/actions-gh-pages from 3 to 4
Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4.
- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)
- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)
- [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4)

---
updated-dependencies:
- dependency-name: peaceiris/actions-gh-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-19 01:50:42 +02:00
Badlop
017f609a51 make-binaries: Bump OpenSSL to 3.3.0 2024-04-19 01:50:42 +02:00
Badlop
22f0d44fed make-binaries: Bump Linux-PAM to 1.6.1 2024-04-19 01:50:42 +02:00
Paweł Chmielowski
0fdf58b1ec Add ability to use additional custom errors when parsing options 2024-04-17 14:01:21 +02:00
Badlop
051bf2968a Runtime: Test 27.0-rc1 instead of 27, as port_compiler still fails in rc2 2024-04-12 17:56:02 +02:00
Badlop
4fd83631ec Mention in what ejabberd version was added update_sql_schema option 2024-04-12 16:41:25 +02:00
Badlop
a29d54c497 Comment ERTS_VSN variable in ejabberdctl when not used (#4194)
That variable is not used in "make relive" and "make install",
so let's comment the variable in ejabberdctl when preparing
that file for those targets.
2024-04-12 16:41:21 +02:00
Badlop
ed6762b8ee Don't name integer and string results in API examples (#4198)
Since ejabberd 24.02, mod_http_api does not name any results,
previously integer and strings were named, but other results were not.
And ejabberdctl obviously does not name results either.
Only ejabberd_xmlrpc does.
Consequently, the documentation should not name results in the examples.
2024-04-12 12:08:03 +02:00
Badlop
b6a0c7e57f mod_configure: Retract 'Get User Password' command to update XEP-0133 1.3.0
https://github.com/xsf/xeps/pull/1314
2024-04-12 12:07:50 +02:00
Badlop
ba0be28d45 CONTAINER.md: live in podman doesn't strictly require EJABBERD_BYPASS_WARNINGS 2024-04-12 12:07:46 +02:00
Badlop
ef5a435480 sql_server option: Mention in what version it was last updated 2024-04-12 12:07:40 +02:00
Paweł Chmielowski
61ad808d26 Fix validation of user field in get_user_subscriptions command
I made it test for valid muc room, instead of just valid username.

This should fix issue #4197
2024-04-11 12:17:02 +02:00
Badlop
426e33d3a6 Fix previous commit: shellcheck reported a warning 2024-04-04 15:58:48 +02:00
Badlop
d6d8bce0e4 If INET_DIST_INTERFACE is IPv6, set required option (thanks to Stu Tomlinson)(#4189) 2024-04-04 13:42:09 +02:00
Badlop
7c76f2b764 Handle the "approved" attribute. As feature isn't implemented, discard it (#4188)
Reference:
https://xmpp.org/rfcs/rfc6121.html#roster-syntax-items-approved

Additionally, when roster contains unknown attribute, discard it and
show a warning
2024-04-04 13:42:09 +02:00
Paweł Chmielowski
735516ed37 Don't start sql connection pools for unknown hosts
It's possible to trigger that by passing wrong domain to some ctl commands,
and if you don't have default credentials for sql connections, you get
repeating errors when this pools tries to reconnect from error.
2024-04-04 11:05:34 +02:00
Badlop
dbf0fb8e86 Runtime: Run Dialyzer in Mix jobs 2024-04-01 14:26:55 +02:00
Badlop
f50b5e1a58 Fix typo in elixir code that breaks 537aac2 when using mix 2024-04-01 14:26:55 +02:00
Badlop
50c74ab821 Fix code:lib_dir call to work with Erlang/OTP 27.0-rc2 2024-04-01 14:26:55 +02:00
Badlop
a1b76ac0a9 Container: Update to Elixir 1.16.2 2024-04-01 14:26:55 +02:00
Badlop
49ca325845 make-binaries: Bump to OTP 26.2.3, Elixir 1.16.2, Expat 2.6.2 2024-04-01 14:26:55 +02:00
dependabot[bot]
703e98ec45 Bump ex_doc from 0.31.1 to 0.31.2
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.31.1 to 0.31.2.
- [Release notes](https://github.com/elixir-lang/ex_doc/releases)
- [Changelog](https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-lang/ex_doc/compare/v0.31.1...v0.31.2)

---
updated-dependencies:
- dependency-name: ex_doc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 14:26:55 +02:00
dependabot[bot]
208f798b07 Bump softprops/action-gh-release from 1 to 2
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 14:26:55 +02:00
Badlop
059a028c0c CONTRIBUTING.md: Fix markdown 2024-04-01 14:26:55 +02:00
Badlop
7269d171a7 README.md: Fix markdown syntax and add docs badge 2024-04-01 14:26:55 +02:00
Badlop
3ca2d99a47 COPYING: Move the markdown-formatted file to Docs git, keep plaintext file here 2024-04-01 14:26:55 +02:00
Paweł Chmielowski
9ab60935a4 Add update_primary_key command to sql schema updater 2024-03-21 10:58:06 +01:00
Paweł Chmielowski
c5437235f3 Make mod_vcard_xupdate send hash after avatar get set for first time
We need to remove info about empty photo in session stored presence after
avatar get set, otherwise as we don't modify presences like that in
mod_vcard_xupdate, we will send presence with updated hash.

This fixes issue #4182
2024-03-20 10:57:12 +01:00
Paweł Chmielowski
537aac24f7 Improve detection of types in odbc
This should fix issue with dialyzer on erlang 26.2.3+
2024-03-18 14:54:32 +01:00
Paweł Chmielowski
8f20dd8425 Test retractons in mam_tests 2024-03-18 12:42:03 +01:00
Badlop
1639471250 Fix crash running export2sql when MAM enabled but MUC disabled
Problem introduced in cfc393a
2024-03-07 18:38:32 +01:00
Badlop
fcc5f00e75 Copy from COPYING the sentence about OpenSSL additional permission 2024-03-07 18:38:32 +01:00
Badlop
80b06da56b Download GPL 2 in markdown format
Downloaded file https://www.gnu.org/licenses/old-licenses/gpl-2.0.md
from https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
2024-03-07 18:38:32 +01:00
Badlop
2c1b0bb77b Use shorthands provided by docs.ejabberd.im Makefile, fix markdown syntax 2024-03-07 18:38:32 +01:00
Badlop
f5c8406353 Dialyzer: Add support to run Dialyzer with Mix 2024-03-06 15:25:38 +01:00
Badlop
c7f76944f3 Dialyzer: Update Elixir code to satisfy dialyzer warnings 2024-03-06 15:25:38 +01:00
Badlop
6542a70c05 Dialyzer: First set alias definitions and then use them in @type 2024-03-06 15:25:38 +01:00
Badlop
5bb94f1d9e Result of running "make options" 2024-03-06 15:25:38 +01:00
Badlop
2378ea9c07 Dialyzer: Replace re:mp dirty workaround from 0bbc255 with other less dirty 2024-03-06 15:25:38 +01:00
Badlop
cd30538130 Fix "ejabberdctl iexlive" after "make prod" when using Elixir
The version number in ejabberd is 24.02,
but Elixir requires semver, that is, 24.2.
Use the version() function, which does the conversion.
2024-03-06 15:25:38 +01:00
Badlop
356ee22cc5 Change method from 1bf80e8 to determine if Elixir supports default_formatter function
Dialyzer when using Elixir complains about undefined function module_info.
2024-03-06 15:25:38 +01:00
Badlop
281515cd9f mod_muc_log: Hide join/leave lines, add method to show them 2024-03-06 15:25:32 +01:00
Badlop
c0055b7a7f mod_muc_log: Support allowpm introduced in 2bd61ab 2024-03-06 15:23:16 +01:00
Holger Weiss
6bdbafcd5c Merge remote-tracking branch 'processone/pr/4169'
* processone/pr/4169:
  mod_mam: Document that XEP-0441 is implemented as well
2024-03-04 11:30:53 +01:00
Melvin Keskin
a29955ff96
mod_mam: Document that XEP-0441 is implemented as well 2024-03-03 21:05:57 +01:00
Badlop
91cca3cff3 mod_conversejs: Simplify support for @HOST@ in default_domain option (#4167) 2024-02-28 13:06:49 +01:00
Badlop
716f5de517 mod_matrix_gw: Fix support for @HOST@ in matrix_domain option (#4167) 2024-02-28 13:06:47 +01:00
Paweł Chmielowski
aac0e782d0 Don't use ejabberd_config:get_myhosts() 2024-02-28 12:24:50 +01:00
Paweł Chmielowski
c69884fa3f Config reload should update loger settings part 2 2024-02-28 12:03:42 +01:00
Paweł Chmielowski
06675e4fb2 Improve validation of arguments in mod_muc_admin commands
This adds validation to couple command where they were missing and catch
passing unknown hostnames.
2024-02-28 12:01:14 +01:00
Paweł Chmielowski
ad67710f7e Make config reload update new logger settings 2024-02-28 11:46:30 +01:00
439 changed files with 24862 additions and 9835 deletions

View file

@ -1,20 +1,22 @@
#' Define default build variables #' Define default build variables
## specifc ARGs for METHOD='direct' ARG OTP_VSN='27.3.4.3'
ARG OTP_VSN='26.2' ARG ELIXIR_VSN='1.18.4'
ARG ELIXIR_VSN='1.16.1'
## specifc ARGs for METHOD='package'
ARG ALPINE_VSN='3.19'
## general ARGs
ARG UID='9000' ARG UID='9000'
ARG USER='ejabberd' ARG USER='ejabberd'
ARG HOME="opt/$USER" ARG HOME="opt/$USER"
ARG METHOD='direct'
ARG BUILD_DIR="/$USER" ARG BUILD_DIR="/$USER"
ARG VERSION='master' ARG VERSION='master'
################################################################################ ################################################################################
#' METHOD='direct' - build and install ejabberd directly from source #' Compile ejabberdapi
FROM docker.io/erlang:${OTP_VSN}-alpine AS direct FROM docker.io/golang:1.25-alpine AS api
RUN go install -v \
github.com/processone/ejabberd-api/cmd/ejabberd@master \
&& mv bin/ejabberd bin/ejabberdapi
################################################################################
#' build and install ejabberd directly from source
FROM docker.io/erlang:${OTP_VSN}-alpine AS ejabberd
RUN apk -U add --no-cache \ RUN apk -U add --no-cache \
autoconf \ autoconf \
@ -39,7 +41,8 @@ ARG ELIXIR_VSN
RUN wget -O - https://github.com/elixir-lang/elixir/archive/v$ELIXIR_VSN.tar.gz \ RUN wget -O - https://github.com/elixir-lang/elixir/archive/v$ELIXIR_VSN.tar.gz \
| tar -xzf - | tar -xzf -
WORKDIR elixir-$ELIXIR_VSN WORKDIR /elixir-$ELIXIR_VSN
ENV ERL_FLAGS="+JPperf true"
RUN make install clean RUN make install clean
RUN mix local.hex --force \ RUN mix local.hex --force \
@ -50,6 +53,7 @@ COPY / $BUILD_DIR/
WORKDIR $BUILD_DIR WORKDIR $BUILD_DIR
RUN mv .github/container/ejabberdctl.template . \ RUN mv .github/container/ejabberdctl.template . \
&& mv .github/container/ejabberd.yml.example . \
&& ./autogen.sh \ && ./autogen.sh \
&& ./configure --with-rebar=mix --enable-all \ && ./configure --with-rebar=mix --enable-all \
&& make deps \ && make deps \
@ -67,36 +71,18 @@ RUN cp -p $BUILD_DIR/tools/captcha*.sh $HOME-$VERSION/lib
RUN find "$HOME-$VERSION/bin" -name 'ejabberd' -delete \ RUN find "$HOME-$VERSION/bin" -name 'ejabberd' -delete \
&& find "$HOME-$VERSION/releases" -name 'COOKIE' -delete && find "$HOME-$VERSION/releases" -name 'COOKIE' -delete
RUN wget -O "$HOME/conf/cacert.pem" 'https://curl.se/ca/cacert.pem' \ RUN wget -O "$HOME/conf/cacert.pem" 'https://curl.se/ca/cacert.pem'
&& sed -i '/^loglevel:/a \ \
\nca_file: /opt/ejabberd/conf/cacert.pem \
\ncertfiles: \
\n - /opt/ejabberd/conf/server.pem' "$HOME/conf/ejabberd.yml"
################################################################################
#' METHOD='package' - install ejabberd from binary tarball package
FROM docker.io/alpine:${ALPINE_VSN} AS package
COPY tarballs/ejabberd-*-linux-musl-*.tar.gz /tmp/
WORKDIR /rootfs
ARG HOME
RUN home_root_dir=$(echo $HOME | sed 's|\(.*\)/.*|\1 |') \
&& mkdir -p $home_root_dir \
&& ARCH=$(uname -m | sed -e 's/x86_64/x64/;s/aarch64/arm64/') \
&& tar -xzf /tmp/ejabberd-*-linux-musl-$ARCH.tar.gz -C $home_root_dir
################################################################################
#' Prepare ejabberd for runtime #' Prepare ejabberd for runtime
FROM ${METHOD} AS ejabberd
RUN apk -U add --no-cache \ RUN apk -U add --no-cache \
git \ git \
libcap \ libcap \
openssl openssl
WORKDIR /rootfs
ARG HOME
RUN mkdir -p usr/local/bin $HOME/conf $HOME/database $HOME/logs $HOME/upload RUN mkdir -p usr/local/bin $HOME/conf $HOME/database $HOME/logs $HOME/upload
ARG BUILD_DIR COPY --from=api /go/bin/ejabberdapi usr/local/bin/
RUN if [ ! -d $HOME/.ejabberd-modules ]; \ RUN if [ ! -d $HOME/.ejabberd-modules ]; \
then \ then \
if [ -d $BUILD_DIR/.ejabberd-modules ]; \ if [ -d $BUILD_DIR/.ejabberd-modules ]; \
@ -116,11 +102,35 @@ RUN export PEM=$HOME/conf/server.pem \
-days 3650 \ -days 3650 \
-subj "/CN=localhost" -subj "/CN=localhost"
RUN sed -i 's|^#CTL_OVER_HTTP=|CTL_OVER_HTTP=../|' "$HOME/conf/ejabberdctl.cfg"
RUN home_root_dir=$(echo $HOME | sed 's|\(.*\)/.*|\1 |') \ RUN home_root_dir=$(echo $HOME | sed 's|\(.*\)/.*|\1 |') \
&& setcap 'cap_net_bind_service=+ep' $(find $home_root_dir -name beam.smp) \ && setcap 'cap_net_bind_service=+ep' $(find $home_root_dir -name beam.smp) \
&& echo -e \ && echo -e \
"#!/bin/sh \ "#!/bin/sh \
\n[ -z \$ERLANG_NODE_ARG ] && export ERLANG_NODE_ARG=ejabberd@localhost \ \n[ -z \$ERLANG_NODE_ARG ] && export ERLANG_NODE_ARG=ejabberd@localhost \
\nexport EMA=\"\$EJABBERD_MACRO_ADMIN\" \
\nexport HOST=\"\${EJABBERD_MACRO_HOST:-localhost}\" \
\nif [ -n \"\$EMA\" ] \
\nthen \
\n if [ \"\$EMA\" != \"\${EMA%%@*}\" ] \
\n then \
\n export USERNAME=\"\${EMA%%@*}\" \
\n export HOST=\"\${EMA##*@}\" \
\n else \
\n export USERNAME=\"\$EMA\" \
\n export SHOW_WARNING=\"true\" \
\n fi \
\nelif [ -n \"\$REGISTER_ADMIN_PASSWORD\" ] \
\nthen \
\n export USERNAME=\"admin\" \
\nelse \
\n export USERNAME=\"\$(od -A n -N 8 -t x8 /dev/urandom)\" \
\nfi \
\nexport EJABBERD_MACRO_ADMIN=\"\$USERNAME@\$HOST\" \
\n[ -n \"\$SHOW_WARNING\" ] && echo \"WARNING: The EJABBERD_MACRO_ADMIN environment variable was set to '\$EMA', but it should include the host... I'll overwrite it to become '\$EJABBERD_MACRO_ADMIN'.\" \
\n[ -n \"\$CTL_ON_CREATE\" ] && export SEPARATOR=\";\" \
\n[ -n \"\$REGISTER_ADMIN_PASSWORD\" ] && export CTL_ON_CREATE=\"register \${EJABBERD_MACRO_ADMIN%%@*} \${EJABBERD_MACRO_ADMIN##*@} \$REGISTER_ADMIN_PASSWORD \$SEPARATOR \$CTL_ON_CREATE\" \
\nexport CONFIG_DIR=/$HOME/conf \ \nexport CONFIG_DIR=/$HOME/conf \
\nexport LOGS_DIR=/$HOME/logs \ \nexport LOGS_DIR=/$HOME/logs \
\nexport SPOOL_DIR=/$HOME/database \ \nexport SPOOL_DIR=/$HOME/database \
@ -137,28 +147,28 @@ RUN home_root_dir=$(echo $HOME | sed 's|\(.*\)/.*|\1 |') \
ARG UID ARG UID
RUN chown -R $UID:$UID $HOME RUN chown -R $UID:$UID $HOME
RUN cp /rootfs/$HOME-$VERSION/lib/captcha*.sh usr/local/bin/
RUN mkdir $HOME/sql \
&& find /rootfs/$HOME-$VERSION/lib/ -name *.sql -exec cp {} $HOME/sql \; -exec cp {} $HOME/database \;
################################################################################ ################################################################################
#' METHOD='direct' - Remove erlang/OTP & rebar3 #' Remove erlang/OTP & rebar3
FROM docker.io/erlang:${OTP_VSN}-alpine AS runtime-direct FROM docker.io/erlang:${OTP_VSN}-alpine AS runtime
RUN apk del .erlang-rundeps \ RUN apk del .erlang-rundeps \
&& rm -f $(which rebar3) \ && rm -f $(which rebar3) \
&& find /usr -type d -name 'erlang' -exec rm -rf {} + \ && find /usr -type d -name 'erlang' -exec rm -rf {} + \
&& find /usr -type l -exec test ! -e {} \; -delete && find /usr -type l -exec test ! -e {} \; -delete
################################################################################
#' METHOD='package' - define runtime base image
FROM docker.io/alpine:${ALPINE_VSN} AS runtime-package
################################################################################
#' Update alpine, finalize runtime environment #' Update alpine, finalize runtime environment
FROM runtime-${METHOD} AS runtime
COPY --from=ejabberd /tmp/runDeps /tmp/runDeps COPY --from=ejabberd /tmp/runDeps /tmp/runDeps
RUN apk -U upgrade --available --no-cache \ RUN apk -U upgrade --available --no-cache \
&& apk add --no-cache \ && apk add --no-cache \
$(cat /tmp/runDeps) \ $(cat /tmp/runDeps) \
so:libcap.so.2 \ so:libcap.so.2 \
so:libtdsodbc.so.0 \ so:libtdsodbc.so.0 \
curl \
tini \ tini \
&& rm /tmp/runDeps \
&& ln -fs /usr/lib/libtdsodbc.so.0 /usr/lib/libtdsodbc.so && ln -fs /usr/lib/libtdsodbc.so.0 /usr/lib/libtdsodbc.so
ARG USER ARG USER
@ -167,9 +177,13 @@ ARG HOME
RUN addgroup $USER -g $UID \ RUN addgroup $USER -g $UID \
&& adduser -s /sbin/nologin -D -u $UID -h /$HOME -G $USER $USER && adduser -s /sbin/nologin -D -u $UID -h /$HOME -G $USER $USER
RUN ln -fs /usr/local/bin/ /opt/ejabberd/bin
RUN rm -rf /home \
&& ln -fs /opt /home
################################################################################ ################################################################################
#' Build together production image #' Build together production image
FROM scratch AS prod FROM scratch
ARG USER ARG USER
ARG HOME ARG HOME
@ -186,7 +200,7 @@ HEALTHCHECK \
WORKDIR /$HOME WORKDIR /$HOME
USER $USER USER $USER
VOLUME ["/$HOME"] VOLUME ["/$HOME"]
EXPOSE 1883 4369-4399 5210 5222 5269 5280 5443 EXPOSE 1880 1883 4369-4399 5210 5222 5269 5280 5443
ENTRYPOINT ["/sbin/tini","--","ejabberdctl"] ENTRYPOINT ["/sbin/tini","--","ejabberdctl"]
CMD ["foreground"] CMD ["foreground"]

278
.github/container/ejabberd.yml.example vendored Normal file
View file

@ -0,0 +1,278 @@
###
### ejabberd configuration file
###
### The parameters used in this configuration file are explained at
###
### https://docs.ejabberd.im/admin/configuration
###
### The configuration file is written in YAML.
### *******************************************************
### ******* !!! WARNING !!! *******
### ******* YAML IS INDENTATION SENSITIVE *******
### ******* MAKE SURE YOU INDENT SECTIONS CORRECTLY *******
### *******************************************************
### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.
###
define_macro:
HOST: localhost
## ADMIN: ... # set by /usr/local/bin/ejabberdctl
PORT_C2S: 5222
PORT_C2S_TLS: 5223
PORT_S2S: 5269
PORT_HTTP_TLS: 5443
PORT_HTTP: 5280
PORT_BROWSER: 1880
PORT_STUN: 5478
PORT_MQTT: 1883
PORT_PROXY65: 7777
hosts:
- HOST
loglevel: info
## If you already have certificates, list them here
# certfiles:
# - /etc/letsencrypt/live/domain.tld/fullchain.pem
# - /etc/letsencrypt/live/domain.tld/privkey.pem
ca_file: /opt/ejabberd/conf/cacert.pem
certfiles:
- /opt/ejabberd/conf/server.pem
listen:
-
port: PORT_C2S
ip: "::"
module: ejabberd_c2s
max_stanza_size: 262144
shaper: c2s_shaper
access: c2s
starttls_required: true
-
port: PORT_C2S_TLS
ip: "::"
module: ejabberd_c2s
max_stanza_size: 262144
shaper: c2s_shaper
access: c2s
tls: true
-
port: PORT_S2S
ip: "::"
module: ejabberd_s2s_in
max_stanza_size: 524288
shaper: s2s_shaper
-
port: PORT_HTTP_TLS
ip: "::"
module: ejabberd_http
tls: true
request_handlers:
/admin: ejabberd_web_admin
/api: mod_http_api
/bosh: mod_bosh
/captcha: ejabberd_captcha
/upload: mod_http_upload
/ws: ejabberd_http_ws
-
port: PORT_HTTP
ip: "::"
module: ejabberd_http
request_handlers:
/admin: ejabberd_web_admin
/.well-known/acme-challenge: ejabberd_acme
-
port: PORT_BROWSER
ip: "::"
module: ejabberd_http
request_handlers:
/: ejabberd_web_admin
-
port: "unix:../sockets/ctl_over_http.sock"
module: ejabberd_http
unix_socket:
mode: '0600'
request_handlers:
/ctl: ejabberd_ctl
-
port: PORT_STUN
ip: "::"
transport: udp
module: ejabberd_stun
use_turn: true
## The server's public IPv4 address:
# turn_ipv4_address: "203.0.113.3"
## The server's public IPv6 address:
# turn_ipv6_address: "2001:db8::3"
-
port: PORT_MQTT
ip: "::"
module: mod_mqtt
backlog: 1000
s2s_use_starttls: optional
acl:
local:
user_regexp: ""
loopback:
ip:
- 127.0.0.0/8
- ::1/128
admin:
user:
- ADMIN
access_rules:
local:
allow: local
c2s:
deny: blocked
allow: all
announce:
allow: admin
configure:
allow: admin
muc_create:
allow: local
pubsub_createnode:
allow: local
trusted_network:
allow: loopback
api_permissions:
"console commands":
from: ejabberd_ctl
who: all
what: "*"
"webadmin commands":
from: ejabberd_web_admin
who: admin
what: "*"
"admin access":
who:
access:
allow:
- acl: loopback
- acl: admin
oauth:
scope: "ejabberd:admin"
access:
allow:
- acl: loopback
- acl: admin
what:
- "*"
- "!stop"
- "!start"
"public commands":
who:
ip: 127.0.0.1/8
what:
- status
- connected_users_number
shaper:
normal:
rate: 3000
burst_size: 20000
fast: 100000
shaper_rules:
max_user_sessions: 10
max_user_offline_messages:
5000: admin
100: all
c2s_shaper:
none: admin
normal: all
s2s_shaper: fast
modules:
mod_adhoc: {}
mod_admin_extra: {}
mod_announce:
access: announce
mod_avatar: {}
mod_blocking: {}
mod_bosh: {}
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
mod_configure: {}
mod_disco: {}
mod_fail2ban: {}
mod_http_api: {}
mod_http_upload:
put_url: https://@HOST_URL_ENCODE@:5443/upload
custom_headers:
"Access-Control-Allow-Origin": "https://@HOST@"
"Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
"Access-Control-Allow-Headers": "Content-Type"
mod_last: {}
mod_mam:
## Mnesia is limited to 2GB, better to use an SQL backend
## For small servers SQLite is a good fit and is very easy
## to configure. Uncomment this when you have SQL configured:
## db_type: sql
assume_mam_usage: true
default: always
mod_mqtt: {}
mod_muc:
access:
- allow
access_admin:
- allow: admin
access_create: muc_create
access_persistent: muc_create
access_mam:
- allow
default_room_options:
mam: true
mod_muc_admin: {}
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
mod_privacy: {}
mod_private: {}
mod_proxy65:
access: local
max_connections: 5
port: PORT_PROXY65
mod_pubsub:
access_createnode: pubsub_createnode
plugins:
- flat
- pep
force_node_config:
## Avoid buggy clients to make their bookmarks public
storage:bookmarks:
access_model: whitelist
mod_push: {}
mod_push_keepalive: {}
mod_register:
## Only accept registration requests from the "trusted"
## network (see access_rules section above).
## Think twice before enabling registration from any
## address. See the Jabber SPAM Manifesto for details:
## https://github.com/ge0rg/jabber-spam-fighting-manifesto
ip_access: trusted_network
mod_roster:
versioning: true
mod_s2s_bidi: {}
mod_s2s_dialback: {}
mod_shared_roster: {}
mod_stream_mgmt:
resend_on_timeout: if_offline
mod_stun_disco: {}
mod_vcard: {}
mod_vcard_xupdate: {}
mod_version:
show_os: false
### Local Variables:
### mode: yaml
### End:
### vim: set filetype=yaml tabstop=8

View file

@ -71,6 +71,10 @@ done
: "${SPOOL_DIR:="{{spool_dir}}"}" : "${SPOOL_DIR:="{{spool_dir}}"}"
: "${EJABBERD_LOG_PATH:="$LOGS_DIR/ejabberd.log"}" : "${EJABBERD_LOG_PATH:="$LOGS_DIR/ejabberd.log"}"
# backward support for old mnesia spool dir path
: "${SPOOL_DIR_OLD:="$SPOOL_DIR/$ERLANG_NODE"}"
[ -r "$SPOOL_DIR_OLD/schema.DAT" ] && [ ! -r "$SPOOL_DIR/schema.DAT" ] && SPOOL_DIR="$SPOOL_DIR_OLD"
# define erl parameters # define erl parameters
ERLANG_OPTS="+K $POLL +P $ERL_PROCESSES $ERL_OPTIONS" ERLANG_OPTS="+K $POLL +P $ERL_PROCESSES $ERL_OPTIONS"
if [ -n "$FIREWALL_WINDOW" ] ; then if [ -n "$FIREWALL_WINDOW" ] ; then
@ -79,6 +83,9 @@ fi
if [ -n "$INET_DIST_INTERFACE" ] ; then if [ -n "$INET_DIST_INTERFACE" ] ; then
INET_DIST_INTERFACE2=$("$ERL" $ERLANG_OPTS -noshell -eval 'case inet:parse_address("'$INET_DIST_INTERFACE'") of {ok,IP} -> io:format("~p",[IP]); _ -> ok end.' -s erlang halt) INET_DIST_INTERFACE2=$("$ERL" $ERLANG_OPTS -noshell -eval 'case inet:parse_address("'$INET_DIST_INTERFACE'") of {ok,IP} -> io:format("~p",[IP]); _ -> ok end.' -s erlang halt)
if [ -n "$INET_DIST_INTERFACE2" ] ; then if [ -n "$INET_DIST_INTERFACE2" ] ; then
if [ "$(echo "$INET_DIST_INTERFACE2" | grep -o "," | wc -l)" -eq 7 ] ; then
INET_DIST_INTERFACE2="$INET_DIST_INTERFACE2 -proto_dist inet6_tcp"
fi
ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_use_interface $INET_DIST_INTERFACE2" ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_use_interface $INET_DIST_INTERFACE2"
fi fi
fi fi
@ -188,7 +195,9 @@ livewarning()
echo "Please be extremely cautious with your actions," echo "Please be extremely cautious with your actions,"
echo "and exit immediately if you are not completely sure." echo "and exit immediately if you are not completely sure."
echo "" echo ""
echo "To exit and detach this shell from ejabberd, press:" echo "To stop ejabberd gracefully:"
echo " ejabberd:stop()."
echo "To quit erlang immediately, press:"
echo " control+g and then q" echo " control+g and then q"
echo "" echo ""
echo "--------------------------------------------------------------------" echo "--------------------------------------------------------------------"
@ -262,7 +271,7 @@ help()
# dynamic node name helper # dynamic node name helper
uid() { uid() {
ERTSVERSION="$("$ERL" -version 2>&1 | sed 's|.*\([0-9][0-9]\).*|\1|g')" ERTSVERSION="$("$ERL" -version 2>&1 | sed 's|.* \([0-9]*[0-9]\).*|\1|g')"
if [ $ERTSVERSION -lt 11 ] ; then # otp 23.0 includes erts 11.0 if [ $ERTSVERSION -lt 11 ] ; then # otp 23.0 includes erts 11.0
# Erlang/OTP lower than 23, which doesn's support dynamic node code # Erlang/OTP lower than 23, which doesn's support dynamic node code
N=1 N=1
@ -283,7 +292,11 @@ uid() {
else else
# Erlang/OTP 23 or higher: use native dynamic node code # Erlang/OTP 23 or higher: use native dynamic node code
# https://www.erlang.org/patches/otp-23.0#OTP-13812 # https://www.erlang.org/patches/otp-23.0#OTP-13812
echo undefined if [ "$ERLANG_NODE" != "${ERLANG_NODE%.*}" ]; then
echo "undefined@${ERLANG_NODE#*@}"
else
echo "undefined"
fi
fi fi
} }
@ -298,6 +311,8 @@ stop_epmd()
# if all ok, ensure runtime directory exists and make it current directory # if all ok, ensure runtime directory exists and make it current directory
check_start() check_start()
{ {
ECSIMAGE_DBPATH=$HOME/database/$ERLANG_NODE
[ ! -d "$ECSIMAGE_DBPATH" ] && ln -s $HOME/database $HOME/database/$ERLANG_NODE
[ -n "$ERL_DIST_PORT" ] && return [ -n "$ERL_DIST_PORT" ] && return
"$EPMD" -names 2>/dev/null | grep -q " ${ERLANG_NODE%@*} " && { "$EPMD" -names 2>/dev/null | grep -q " ${ERLANG_NODE%@*} " && {
pgrep -f "$ERLANG_NODE" >/dev/null && { pgrep -f "$ERLANG_NODE" >/dev/null && {
@ -350,6 +365,13 @@ post_waiter_loop()
# allow sync calls # allow sync calls
wait_status() wait_status()
{ {
wait_status_node "$ERLANG_NODE" $1 $2 $3
}
wait_status_node()
{
CONNECT_NODE=$1
shift
# args: status try delay # args: status try delay
# return: 0 OK, 1 KO # return: 0 OK, 1 KO
timeout="$2" timeout="$2"
@ -361,15 +383,70 @@ wait_status()
status="$1" status="$1"
else else
run_erl "$(uid ctl)" -hidden -noinput \ run_erl "$(uid ctl)" -hidden -noinput \
-eval 'net_kernel:connect_node('"'$ERLANG_NODE'"')' \ -eval 'net_kernel:connect_node('"'$CONNECT_NODE'"')' \
-s ejabberd_ctl \ -s ejabberd_ctl \
-extra "$ERLANG_NODE" $NO_TIMEOUT status > /dev/null -extra "$CONNECT_NODE" $NO_TIMEOUT status > /dev/null
status="$?" status="$?"
fi fi
done done
[ $timeout -gt 0 ] [ $timeout -gt 0 ]
} }
exec_other_command()
{
exec_other_command_node $ERLANG_NODE "$@"
}
exec_other_command_node()
{
CONNECT_NODE=$1
shift
if [ -z "$CTL_OVER_HTTP" ] || [ ! -S "$CTL_OVER_HTTP" ] \
|| [ ! -x "$(command -v curl)" ] || [ -z "$1" ] || [ "$1" = "help" ] \
|| [ "$1" = "mnesia_info_ctl" ]|| [ "$1" = "print_sql_schema" ] ; then
run_erl "$(uid ctl)" -hidden -noinput \
-eval 'net_kernel:connect_node('"'$CONNECT_NODE'"')' \
-s ejabberd_ctl \
-extra "$CONNECT_NODE" $NO_TIMEOUT "$@"
result=$?
case $result in
3) help;;
*) :;;
esac
return $result
else
exec_ctl_over_http_socket "$@"
fi
}
exec_ctl_over_http_socket()
{
COMMAND=${1}
CARGS=""
while [ $# -gt 0 ]; do
[ -z "$CARGS" ] && CARGS="[" || CARGS="${CARGS}, "
CARGS="${CARGS}\"$1\""
shift
done
CARGS="${CARGS}]"
TEMPHEADERS=temp-headers.log
curl \
--unix-socket ${CTL_OVER_HTTP} \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "${CARGS}" \
--dump-header ${TEMPHEADERS} \
--no-progress-meter \
"http://localhost/ctl/${COMMAND}"
result=$(sed -n 's/.*status-code: \([0-9]*\).*/\1/p' < $TEMPHEADERS)
rm ${TEMPHEADERS}
case $result in
2|3) exec_other_command help ${COMMAND};;
*) :;;
esac
exit $result
}
# ensure we can change current directory to SPOOL_DIR # ensure we can change current directory to SPOOL_DIR
[ -f "$SPOOL_DIR/schema.DAT" ] || FIRST_RUN=true [ -f "$SPOOL_DIR/schema.DAT" ] || FIRST_RUN=true
[ -d "$SPOOL_DIR" ] || run_cmd mkdir -p "$SPOOL_DIR" [ -d "$SPOOL_DIR" ] || run_cmd mkdir -p "$SPOOL_DIR"
@ -378,6 +455,103 @@ cd "$SPOOL_DIR" || {
exit 6 exit 6
} }
printe()
{
printf "\n"
printf "\e[1;40;32m==> %s\e[0m\n" "$1"
}
## Function copied from tools/make-installers
user_agrees()
{
question="$*"
if [ -t 0 ]
then
printe "$question (y/n) [n]"
read -r response
case "$response" in
[Yy]|[Yy][Ee][Ss])
return 0
;;
[Nn]|[Nn][Oo]|'')
return 1
;;
*)
echo 'Please respond with "yes" or "no".'
user_agrees "$question"
;;
esac
else # Assume 'yes' if not running interactively.
return 0
fi
}
mnesia_change()
{
ERLANG_NODE_OLD="$1"
[ "$ERLANG_NODE_OLD" = "" ] \
&& echo "Error: Please provide the old erlang node name, for example:" \
&& echo " ejabberdctl mnesia_change ejabberd@oldmachine" \
&& exit 1
SPOOL_DIR_BACKUP=$SPOOL_DIR/$ERLANG_NODE_OLD-backup/
OLDFILE=$SPOOL_DIR_BACKUP/$ERLANG_NODE_OLD.backup
NEWFILE=$SPOOL_DIR_BACKUP/$ERLANG_NODE.backup
printe "This changes your mnesia database from node name '$ERLANG_NODE_OLD' to '$ERLANG_NODE'"
[ -d "$SPOOL_DIR_BACKUP" ] && printe "WARNING! A backup of old node already exists in $SPOOL_DIR_BACKUP"
if ! user_agrees "Do you want to proceed?"
then
echo 'Operation aborted.'
exit 1
fi
printe "Starting ejabberd with old node name $ERLANG_NODE_OLD ..."
exec_erl "$ERLANG_NODE_OLD" $EJABBERD_OPTS -detached
wait_status_node $ERLANG_NODE_OLD 0 30 2
result=$?
case $result in
1) echo "There was a problem starting ejabberd with the old erlang node name. " \
&& echo "Check for log errors in $EJABBERD_LOG_PATH" \
&& exit $result;;
*) :;;
esac
exec_other_command_node $ERLANG_NODE_OLD "status"
printe "Making backup of old database to file $OLDFILE ..."
mkdir $SPOOL_DIR_BACKUP
exec_other_command_node $ERLANG_NODE_OLD backup "$OLDFILE"
printe "Changing node name in new backup file $NEWFILE ..."
exec_other_command_node $ERLANG_NODE_OLD mnesia_change_nodename "$ERLANG_NODE_OLD" "$ERLANG_NODE" "$OLDFILE" "$NEWFILE"
printe "Stopping old ejabberd..."
exec_other_command_node $ERLANG_NODE_OLD "stop"
wait_status_node $ERLANG_NODE_OLD 3 30 2 && stop_epmd
printe "Moving old mnesia spool files to backup subdirectory $SPOOL_DIR_BACKUP ..."
mv $SPOOL_DIR/*.DAT $SPOOL_DIR_BACKUP
mv $SPOOL_DIR/*.DCD $SPOOL_DIR_BACKUP
mv $SPOOL_DIR/*.LOG $SPOOL_DIR_BACKUP
printe "Starting ejabberd with new node name $ERLANG_NODE ..."
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS -detached
wait_status 0 30 2
exec_other_command "status"
printe "Installing fallback of new mnesia..."
exec_other_command install_fallback "$NEWFILE"
printe "Stopping new ejabberd..."
exec_other_command "stop"
wait_status 3 30 2 && stop_epmd
printe "Finished, now you can start ejabberd normally"
}
# main # main
case $1 in case $1 in
start) start)
@ -440,20 +614,14 @@ case $1 in
set_dist_client set_dist_client
wait_status 3 30 2 && stop_epmd # wait 30x2s before timeout wait_status 3 30 2 && stop_epmd # wait 30x2s before timeout
;; ;;
mnesia_change)
mnesia_change $2
;;
post_waiter) post_waiter)
post_waiter_waiting post_waiter_waiting
;; ;;
*) *)
set_dist_client set_dist_client
run_erl "$(uid ctl)" -hidden -noinput \ exec_other_command "$@"
-eval 'net_kernel:connect_node('"'$ERLANG_NODE'"')' \
-s ejabberd_ctl \
-extra "$ERLANG_NODE" $NO_TIMEOUT "$@"
result=$?
case $result in
2|3) help;;
*) :;;
esac
exit $result
;; ;;
esac esac

View file

@ -25,20 +25,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
otp: ['20.0', '25', '26', '27.0-rc1'] otp: ['25', '26', '27', '28']
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
services: services:
redis: redis:
image: redis image: public.ecr.aws/docker/library/redis
ports: ports:
- 6379:6379 - 6379:6379
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- name: Test shell scripts - name: Test shell scripts
if: matrix.otp == '26' if: matrix.otp == '27'
run: | run: |
shellcheck test/ejabberd_SUITE_data/gencerts.sh shellcheck test/ejabberd_SUITE_data/gencerts.sh
shellcheck tools/captcha.sh shellcheck tools/captcha.sh
@ -50,13 +50,6 @@ jobs:
with: with:
otp-version: ${{ matrix.otp }} otp-version: ${{ matrix.otp }}
- name: Get a compatible Rebar3
if: matrix.otp < 24
run: |
rm rebar3
wget https://github.com/processone/ejabberd/raw/21.12/rebar3
chmod +x rebar3
- name: Install MS SQL Server - name: Install MS SQL Server
run: | run: |
docker run -d -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=ejabberd_Test1" \ docker run -d -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=ejabberd_Test1" \
@ -68,8 +61,8 @@ jobs:
- name: Prepare databases - name: Prepare databases
run: | run: |
docker exec ejabberd-mssql /opt/mssql-tools/bin/sqlcmd -U SA -P ejabberd_Test1 -S localhost -i /initdb_mssql.sql docker exec ejabberd-mssql /opt/mssql-tools18/bin/sqlcmd -C -U SA -P ejabberd_Test1 -S localhost -i /initdb_mssql.sql
docker exec ejabberd-mssql /opt/mssql-tools/bin/sqlcmd -U SA -P ejabberd_Test1 -S localhost -d ejabberd_test -i /mssql.sql docker exec ejabberd-mssql /opt/mssql-tools18/bin/sqlcmd -C -U SA -P ejabberd_Test1 -S localhost -d ejabberd_test -i /mssql.sql
sudo systemctl start mysql.service sudo systemctl start mysql.service
sudo systemctl start postgresql.service sudo systemctl start postgresql.service
mysql -u root -proot -e "CREATE DATABASE ejabberd_test;" mysql -u root -proot -e "CREATE DATABASE ejabberd_test;"
@ -77,14 +70,14 @@ jobs:
IDENTIFIED BY 'ejabberd_test';" IDENTIFIED BY 'ejabberd_test';"
mysql -u root -proot -e "GRANT ALL ON ejabberd_test.* mysql -u root -proot -e "GRANT ALL ON ejabberd_test.*
TO 'ejabberd_test'@'localhost';" TO 'ejabberd_test'@'localhost';"
mysql -u ejabberd_test -pejabberd_test ejabberd_test < sql/mysql.sql
pg_isready pg_isready
sudo -u postgres psql -c "CREATE DATABASE ejabberd_test;" sudo -u postgres psql -c "CREATE DATABASE ejabberd_test;"
sudo -u postgres psql -c "CREATE USER ejabberd_test sudo -u postgres psql -c "CREATE USER ejabberd_test
WITH PASSWORD 'ejabberd_test';" WITH PASSWORD 'ejabberd_test';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES sudo -u postgres psql -c "GRANT ALL PRIVILEGES
ON DATABASE ejabberd_test TO ejabberd_test;" ON DATABASE ejabberd_test TO ejabberd_test;"
PGPASSWORD="ejabberd_test" psql -h localhost -U ejabberd_test ejabberd_test -f sql/pg.sql sudo -u postgres psql -c "GRANT ALL ON SCHEMA public TO ejabberd_test;"
sudo -u postgres psql -c "ALTER DATABASE ejabberd_test OWNER TO ejabberd_test;"
sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
TABLES IN SCHEMA public TABLES IN SCHEMA public
TO ejabberd_test;" TO ejabberd_test;"
@ -102,22 +95,13 @@ jobs:
- name: Remove syntax_tools from release - name: Remove syntax_tools from release
run: sed -i 's|, syntax_tools||g' src/ejabberd.app.src.script run: sed -i 's|, syntax_tools||g' src/ejabberd.app.src.script
- name: Cache rebar - name: Cache Hex.pm
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
path: | path: |
~/.cache/rebar3/ ~/.cache/rebar3/
key: ${{matrix.otp}}-${{hashFiles('rebar.config')}} key: ${{matrix.otp}}-${{hashFiles('rebar.config')}}
- name: Download test logs
if: matrix.otp == '26' && github.repository == 'processone/ejabberd'
continue-on-error: true
run: |
mkdir -p _build/test
curl -sSL https://github.com/processone/ecil/tarball/gh-pages |
tar -C _build/test --strip-components=1 --wildcards -xzf -
rm -rf _build/test/logs/last/
- name: Compile - name: Compile
run: | run: |
./autogen.sh ./autogen.sh
@ -127,7 +111,6 @@ jobs:
--disable-elixir \ --disable-elixir \
--disable-mssql \ --disable-mssql \
--disable-odbc --disable-odbc
make update
make make
- run: make install -s - run: make install -s
@ -135,6 +118,9 @@ jobs:
- run: make options - run: make options
- run: make xref - run: make xref
- run: make dialyzer - run: make dialyzer
- run: make test-eunit
- run: make elvis
if: matrix.otp >= '26'
- name: Check Production Release - name: Check Production Release
run: | run: |
@ -147,12 +133,30 @@ jobs:
cat $RE/logs/ejabberd.log cat $RE/logs/ejabberd.log
grep -q "is stopped in" $RE/logs/ejabberd.log grep -q "is stopped in" $RE/logs/ejabberd.log
- name: Check Development Release - name: Start Development Release
run: | run: |
make dev make dev
RE=_build/dev/rel/ejabberd RE=_build/dev/rel/ejabberd
sed -i 's/starttls_required: true/starttls_required: false/g' $RE/conf/ejabberd.yml
$RE/bin/ejabberdctl start $RE/bin/ejabberdctl start
$RE/bin/ejabberdctl started $RE/bin/ejabberdctl started
$RE/bin/ejabberdctl register admin localhost admin
grep -q "is started in" $RE/logs/ejabberd.log
- name: Run XMPP Interoperability Tests against CI server.
if: matrix.otp == '27'
continue-on-error: true
uses: XMPP-Interop-Testing/xmpp-interop-tests-action@v1.6.1
with:
domain: 'localhost'
adminAccountUsername: 'admin'
adminAccountPassword: 'admin'
disabledSpecifications: RFC6121,XEP-0030,XEP-0045,XEP-0054,XEP-0060,XEP-0080,XEP-0115,XEP-0118,XEP-0215,XEP-0347,XEP-0363,XEP-0384
- name: Stop Development Release
if: always()
run: |
RE=_build/dev/rel/ejabberd
$RE/bin/ejabberdctl stop $RE/bin/ejabberdctl stop
$RE/bin/ejabberdctl stopped $RE/bin/ejabberdctl stopped
cat $RE/logs/ejabberd.log cat $RE/logs/ejabberd.log
@ -172,7 +176,7 @@ jobs:
./rebar3 cover ./rebar3 cover
- name: Check results - name: Check results
if: always() && (steps.ct.outcome != 'skipped' || steps.ct2.outcome != 'skipped') if: always() && (steps.ct.outcome != 'skipped')
id: ctresults id: ctresults
run: | run: |
[[ -d _build ]] && ln -s _build/test/logs/last/ logs || true [[ -d _build ]] && ln -s _build/test/logs/last/ logs || true
@ -190,7 +194,7 @@ jobs:
find logs/ -name exunit.log -exec cat '{}' ';' find logs/ -name exunit.log -exec cat '{}' ';'
- name: Send to coveralls - name: Send to coveralls
if: matrix.otp == '26' if: matrix.otp == '27'
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
@ -202,22 +206,6 @@ jobs:
"payload":{"build_num":$GITHUB_RUN_ID, "payload":{"build_num":$GITHUB_RUN_ID,
"status":"done"}}' "status":"done"}}'
- name: Upload test logs
if: always() && steps.ct.outcome == 'failure' && github.repository == 'processone/ejabberd'
uses: peaceiris/actions-gh-pages@v3
with:
publish_dir: _build/test
exclude_assets: '.github,lib,plugins'
external_repository: processone/ecil
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
keep_files: true
- name: View ECIL address
if: always() && steps.ct.outcome == 'failure' && github.repository == 'processone/ejabberd'
run: |
CTRUN=`ls -la _build/test/logs/last | sed 's|.*-> ||'`
echo "::notice::View CT results: https://processone.github.io/ecil/logs/$CTRUN/"
- name: Check for changes to trigger schema upgrade test - name: Check for changes to trigger schema upgrade test
uses: dorny/paths-filter@v3 uses: dorny/paths-filter@v3
id: filter id: filter
@ -258,20 +246,20 @@ jobs:
run: | run: |
[[ -d logs ]] && rm -rf logs [[ -d logs ]] && rm -rf logs
[[ -d _build/test/logs ]] && rm -rf _build/test/logs || true [[ -d _build/test/logs ]] && rm -rf _build/test/logs || true
docker exec ejabberd-mssql /opt/mssql-tools/bin/sqlcmd -U SA -P ejabberd_Test1 -S localhost -Q "drop database [ejabberd_test];" docker exec ejabberd-mssql /opt/mssql-tools18/bin/sqlcmd -C -U SA -P ejabberd_Test1 -S localhost -Q "drop database [ejabberd_test];"
docker exec ejabberd-mssql /opt/mssql-tools/bin/sqlcmd -U SA -P ejabberd_Test1 -S localhost -Q "drop login [ejabberd_test];" docker exec ejabberd-mssql /opt/mssql-tools18/bin/sqlcmd -C -U SA -P ejabberd_Test1 -S localhost -Q "drop login [ejabberd_test];"
mysql -u root -proot -e "DROP DATABASE ejabberd_test;" mysql -u root -proot -e "DROP DATABASE ejabberd_test;"
sudo -u postgres psql -c "DROP DATABASE ejabberd_test;" sudo -u postgres psql -c "DROP DATABASE ejabberd_test;"
docker exec ejabberd-mssql /opt/mssql-tools/bin/sqlcmd -U SA -P ejabberd_Test1 -S localhost -i /initdb_mssql.sql docker exec ejabberd-mssql /opt/mssql-tools18/bin/sqlcmd -C -U SA -P ejabberd_Test1 -S localhost -i /initdb_mssql.sql
docker exec ejabberd-mssql /opt/mssql-tools/bin/sqlcmd -U SA -P ejabberd_Test1 -S localhost -d ejabberd_test -i /mssql.new.sql docker exec ejabberd-mssql /opt/mssql-tools18/bin/sqlcmd -C -U SA -P ejabberd_Test1 -S localhost -d ejabberd_test -i /mssql.new.sql
mysql -u root -proot -e "CREATE DATABASE ejabberd_test;" mysql -u root -proot -e "CREATE DATABASE ejabberd_test;"
mysql -u root -proot -e "GRANT ALL ON ejabberd_test.* mysql -u root -proot -e "GRANT ALL ON ejabberd_test.*
TO 'ejabberd_test'@'localhost';" TO 'ejabberd_test'@'localhost';"
mysql -u ejabberd_test -pejabberd_test ejabberd_test < sql/mysql.new.sql
sudo -u postgres psql -c "CREATE DATABASE ejabberd_test;" sudo -u postgres psql -c "CREATE DATABASE ejabberd_test;"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES sudo -u postgres psql -c "GRANT ALL PRIVILEGES
ON DATABASE ejabberd_test TO ejabberd_test;" ON DATABASE ejabberd_test TO ejabberd_test;"
PGPASSWORD="ejabberd_test" psql -h localhost -U ejabberd_test ejabberd_test -f sql/pg.new.sql sudo -u postgres psql -c "GRANT ALL ON SCHEMA public TO ejabberd_test;"
sudo -u postgres psql -c "ALTER DATABASE ejabberd_test OWNER TO ejabberd_test;"
sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
TABLES IN SCHEMA public TABLES IN SCHEMA public
TO ejabberd_test;" TO ejabberd_test;"

View file

@ -1,8 +1,6 @@
name: Container name: Container
on: on:
schedule:
- cron: '22 2 */6 * *' # every 6 days to avoid gha cache being evicted
push: push:
paths-ignore: paths-ignore:
- '.devcontainer/**' - '.devcontainer/**'
@ -24,58 +22,12 @@ jobs:
packages: write packages: write
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Cache build directory
uses: actions/cache@v4
with:
path: ~/build/
key: ${{runner.os}}-ctr-ct-ng-1.26.0
- name: Get erlang/OTP version for bootstrapping
run: |
echo "OTP_VSN=$(awk '/^otp_vsn=/ {{gsub(/[^0-9.rc-]/, ""); print}}' tools/make-binaries)" >> $GITHUB_ENV
echo "ELIXIR_VSN=$(awk '/^elixir_vsn=/ {{gsub(/[^0-9.]/, ""); print}}' tools/make-binaries)" >> $GITHUB_ENV
- name: Install prerequisites
run: |
sudo apt-get -qq update
sudo apt-get -qq install makeself
# https://github.com/crosstool-ng/crosstool-ng/blob/master/testing/docker/ubuntu21.10/Dockerfile
sudo apt-get -qq install build-essential autoconf bison flex gawk
sudo apt-get -qq install help2man libncurses5-dev libtool libtool-bin
sudo apt-get -qq install python3-dev texinfo unzip
- name: Install erlang/OTP
uses: erlef/setup-beam@v1
with:
otp-version: ${{ env.OTP_VSN }}
elixir-version: ${{ env.ELIXIR_VSN }}
version-type: strict
- name: Remove Elixir Matchers
run: |
echo "::remove-matcher owner=elixir-mixCompileWarning::"
echo "::remove-matcher owner=elixir-credoOutputDefault::"
echo "::remove-matcher owner=elixir-mixCompileError::"
echo "::remove-matcher owner=elixir-mixTestFailure::"
echo "::remove-matcher owner=elixir-dialyzerOutputDefault::"
- name: Build musl-libc based binary archives
run: |
sed -i "s|targets='.*'|targets='x86_64-linux-musl aarch64-linux-musl'|" tools/make-binaries
mv .github/container/ejabberdctl.template .
CHECK_DEPS=false tools/make-binaries
- name: Collect packages
run: |
mkdir tarballs
mv ejabberd-*.tar.gz tarballs
- name: Checkout ejabberd-contrib - name: Checkout ejabberd-contrib
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
repository: processone/ejabberd-contrib repository: processone/ejabberd-contrib
path: .ejabberd-modules/sources/ejabberd-contrib path: .ejabberd-modules/sources/ejabberd-contrib
@ -108,10 +60,9 @@ jobs:
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Build and push Docker image - name: Build and push Docker image
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
build-args: | build-args: |
METHOD=package
VERSION=${{ steps.gitdescribe.outputs.ver }} VERSION=${{ steps.gitdescribe.outputs.ver }}
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max

View file

@ -27,7 +27,7 @@ jobs:
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
path: ~/build/ path: ~/build/
key: ${{runner.os}}-ct-ng-1.26.0 key: ${{runner.os}}-ct-ng-1.27.0
- name: Install prerequisites - name: Install prerequisites
run: | run: |
sudo apt-get -qq update sudo apt-get -qq update
@ -41,7 +41,7 @@ jobs:
gem install --no-document --user-install fpm gem install --no-document --user-install fpm
echo $HOME/.local/share/gem/ruby/*/bin >> $GITHUB_PATH echo $HOME/.local/share/gem/ruby/*/bin >> $GITHUB_PATH
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Build binary archives - name: Build binary archives
@ -74,11 +74,11 @@ jobs:
if: github.ref_type == 'tag' if: github.ref_type == 'tag'
steps: steps:
- name: Download packages - name: Download packages
uses: actions/download-artifact@v4 uses: actions/download-artifact@v5
with: with:
name: ejabberd-packages name: ejabberd-packages
- name: Draft Release - name: Draft Release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v2
with: with:
draft: true draft: true
files: ejabberd-packages/* files: ejabberd-packages/*

View file

@ -31,17 +31,24 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
otp: ['20', '25', '26', '27'] otp: ['24', '25', '26', '27', '28']
rebar: ['rebar', 'rebar3'] rebar: ['rebar', 'rebar3']
runs-on: ubuntu-22.04 exclude:
- otp: '24'
rebar: 'rebar'
- otp: '27'
rebar: 'rebar'
- otp: '28'
rebar: 'rebar'
runs-on: ubuntu-24.04
container: container:
image: erlang:${{ matrix.otp }} image: public.ecr.aws/docker/library/erlang:${{ matrix.otp }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- name: Get compatible Rebar binaries - name: Get old compatible Rebar binaries
if: matrix.otp < 24 if: matrix.otp < 24
run: | run: |
rm rebar rm rebar
@ -51,6 +58,16 @@ jobs:
chmod +x rebar chmod +x rebar
chmod +x rebar3 chmod +x rebar3
- name: Get recent compatible Rebar binaries
if: matrix.otp > 23 && matrix.otp < 25
run: |
rm rebar
rm rebar3
wget https://github.com/processone/ejabberd/raw/24.12/rebar
wget https://github.com/processone/ejabberd/raw/24.12/rebar3
chmod +x rebar
chmod +x rebar3
- name: Prepare libraries - name: Prepare libraries
run: | run: |
apt-get -qq update apt-get -qq update
@ -58,20 +75,33 @@ jobs:
apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \ apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
libsqlite3-dev libwebp-dev libyaml-dev libsqlite3-dev libwebp-dev libyaml-dev
- name: Cache Hex.pm
uses: actions/cache@v4
with:
path: |
~/.cache/rebar3/
key: ${{matrix.otp}}-${{hashFiles('rebar.config')}}
- name: Unlock eredis dependency
if: matrix.rebar == 'rebar3' && matrix.otp < 21
run: rebar3 unlock eredis
- name: Compile - name: Compile
run: | run: |
./autogen.sh ./autogen.sh
./configure --with-rebar=./${{ matrix.rebar }} \ ./configure --with-rebar=./${{ matrix.rebar }} \
--prefix=/tmp/ejabberd \ --prefix=/tmp/ejabberd \
--with-min-erlang=9.0.5 \
--enable-all \ --enable-all \
--disable-elixir \ --disable-elixir \
--disable-tools \ --disable-tools \
--disable-odbc --disable-odbc
make update
make make
- run: make xref - run: make xref
- run: make dialyzer
- name: Prepare rel (rebar2) - name: Prepare rel (rebar2)
if: matrix.rebar == 'rebar' if: matrix.rebar == 'rebar'
run: | run: |
@ -149,53 +179,42 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
otp: ['23.0', '25', '26', '27.0-rc1'] elixir: ['1.14', '1.15', '1.16', '1.17', '1.18']
elixir: ['1.13.4', '1.15.7', '1.16'] runs-on: ubuntu-24.04
exclude: container:
- otp: '23.0' image: public.ecr.aws/docker/library/elixir:${{ matrix.elixir }}
elixir: '1.15.7'
- otp: '23.0'
elixir: '1.16'
- otp: '26'
elixir: '1.13.4'
- otp: '27.0-rc1'
elixir: '1.13.4'
runs-on: ubuntu-20.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- name: Get specific Erlang/OTP
uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}}
- name: Get compatible Rebar binaries
if: matrix.otp < 24
run: |
rm rebar
rm rebar3
wget https://github.com/processone/ejabberd/raw/21.12/rebar
wget https://github.com/processone/ejabberd/raw/21.12/rebar3
chmod +x rebar
chmod +x rebar3
- name: Prepare libraries - name: Prepare libraries
run: | run: |
sudo apt-get -qq update apt-get -qq update
sudo apt-get -y purge libgd3 nginx apt-get -y purge libgd3 nginx
sudo apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \ apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
libsqlite3-dev libwebp-dev libyaml-dev libsqlite3-dev libwebp-dev libyaml-dev
- name: Enable ModPresenceDemo and an Elixir dependency - name: Enable Module.Example and an Elixir dependency
run: | run: |
sed -i "s|^modules:|modules:\n 'ModPresenceDemo': {}|g" ejabberd.yml.example sed -i "s|^modules:|modules:\n 'Ejabberd.Module.Example': {}|g" ejabberd.yml.example
cat ejabberd.yml.example cat ejabberd.yml.example
sed -i 's|^{deps, \(.*\)|{deps, \1\n {decimal, ".*", {git, "https://github.com/ericmj/decimal", {branch, "main"}}}, |g' rebar.config sed -i 's|^{deps, \[\(.*\)|{deps, [{decimal, ".*", {git, "https://github.com/ericmj/decimal", {branch, "main"}}},\n \1|g' rebar.config
cat rebar.config cat rebar.config
- name: Cache Hex.pm
uses: actions/cache@v4
with:
path: |
~/.cache/rebar3/
key: ${{matrix.elixir}}-${{hashFiles('rebar.config')}}
- name: Install Hex and Rebar3 manually on older Elixir
if: matrix.elixir <= '1.14'
run: |
mix local.hex --force
mix local.rebar --force
- name: Compile - name: Compile
run: | run: |
./autogen.sh ./autogen.sh
@ -203,7 +222,6 @@ jobs:
--prefix=/tmp/ejabberd \ --prefix=/tmp/ejabberd \
--enable-all \ --enable-all \
--disable-odbc --disable-odbc
make update
make make
- run: make xref - run: make xref
@ -258,15 +276,15 @@ jobs:
grep -q '^user3$' registered.log grep -q '^user3$' registered.log
grep -q 'is started' _build/prod/rel/ejabberd/logs/ejabberd.log grep -q 'is started' _build/prod/rel/ejabberd/logs/ejabberd.log
grep -q 'is stopped' _build/prod/rel/ejabberd/logs/ejabberd.log grep -q 'is stopped' _build/prod/rel/ejabberd/logs/ejabberd.log
grep -q 'module Presence Demo' _build/prod/rel/ejabberd/logs/ejabberd.log grep -q 'Stopping Ejabberd.Module.Example' _build/prod/rel/ejabberd/logs/ejabberd.log
test $(find _build/prod/ -empty -name error.log) test $(find _build/prod/ -empty -name error.log)
grep -q 'is started' _build/dev/rel/ejabberd/logs/ejabberd.log grep -q 'is started' _build/dev/rel/ejabberd/logs/ejabberd.log
grep -q 'is stopped' _build/dev/rel/ejabberd/logs/ejabberd.log grep -q 'is stopped' _build/dev/rel/ejabberd/logs/ejabberd.log
grep -q 'module Presence Demo' _build/dev/rel/ejabberd/logs/ejabberd.log grep -q 'Stopping Ejabberd.Module.Example' _build/dev/rel/ejabberd/logs/ejabberd.log
test $(find _build/dev/ -empty -name error.log) test $(find _build/dev/ -empty -name error.log)
grep -q 'is started' /tmp/ejabberd/var/log/ejabberd/ejabberd.log grep -q 'is started' /tmp/ejabberd/var/log/ejabberd/ejabberd.log
grep -q 'is stopped' /tmp/ejabberd/var/log/ejabberd/ejabberd.log grep -q 'is stopped' /tmp/ejabberd/var/log/ejabberd/ejabberd.log
grep -q 'module Presence Demo' /tmp/ejabberd/var/log/ejabberd/ejabberd.log grep -q 'Stopping Ejabberd.Module.Example' /tmp/ejabberd/var/log/ejabberd/ejabberd.log
test $(find /tmp/ejabberd/var/log/ejabberd/ -empty -name error.log) test $(find /tmp/ejabberd/var/log/ejabberd/ -empty -name error.log)
- name: View logs failures - name: View logs failures
@ -284,34 +302,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
otp: ['23.0', '25', '26', '27.0-rc1'] elixir: ['1.14', '1.15', '1.16', '1.17', '1.18']
elixir: ['1.13.4', '1.15.7', '1.16'] runs-on: ubuntu-24.04
exclude: container:
- otp: '23.0' image: public.ecr.aws/docker/library/elixir:${{ matrix.elixir }}
elixir: '1.15.7'
- otp: '23.0'
elixir: '1.16'
- otp: '26'
elixir: '1.13.4'
- otp: '27.0-rc1'
elixir: '1.13.4'
runs-on: ubuntu-20.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- name: Get specific Erlang/OTP
uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}}
- name: Prepare libraries - name: Prepare libraries
run: | run: |
sudo apt-get -qq update apt-get -qq update
sudo apt-get -y purge libgd3 nginx apt-get -y purge libgd3 nginx
sudo apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \ apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
libsqlite3-dev libwebp-dev libyaml-dev libsqlite3-dev libwebp-dev libyaml-dev
- name: Remove Elixir Matchers - name: Remove Elixir Matchers
@ -322,25 +326,38 @@ jobs:
echo "::remove-matcher owner=elixir-mixTestFailure::" echo "::remove-matcher owner=elixir-mixTestFailure::"
echo "::remove-matcher owner=elixir-dialyzerOutputDefault::" echo "::remove-matcher owner=elixir-dialyzerOutputDefault::"
- name: Enable ModPresenceDemo and an Elixir dependency - name: Enable Module.Example and an Elixir dependency
run: | run: |
sed -i "s|^modules:|modules:\n 'ModPresenceDemo': {}|g" ejabberd.yml.example sed -i "s|^modules:|modules:\n 'Ejabberd.Module.Example': {}|g" ejabberd.yml.example
cat ejabberd.yml.example cat ejabberd.yml.example
sed -i 's|^{deps, \(.*\)|{deps, \1\n {decimal, ".*", {git, "https://github.com/ericmj/decimal", {branch, "main"}}}, |g' rebar.config sed -i 's|^{deps, \(.*\)|{deps, \1\n {decimal, ".*", {git, "https://github.com/ericmj/decimal", {branch, "main"}}}, |g' rebar.config
cat rebar.config cat rebar.config
- name: Cache Hex.pm
uses: actions/cache@v4
with:
path: |
~/.hex/
key: ${{matrix.elixir}}-${{hashFiles('mix.exs')}}
- name: Install Hex and Rebar3 manually on older Elixir
if: matrix.elixir <= '1.14'
run: |
mix local.hex --force
mix local.rebar --force
- name: Compile - name: Compile
run: | run: |
./autogen.sh ./autogen.sh
./configure --with-rebar=mix \ ./configure --with-rebar=mix \
--prefix=/tmp/ejabberd \ --prefix=/tmp/ejabberd \
--enable-all \ --enable-all
--disable-odbc
mix deps.get
make make
- run: make xref - run: make xref
- run: make dialyzer
- run: make edoc - run: make edoc
- name: Run rel - name: Run rel
@ -393,15 +410,15 @@ jobs:
grep -q '^user3$' registered.log grep -q '^user3$' registered.log
grep -q 'is started' _build/prod/rel/ejabberd/logs/ejabberd.log grep -q 'is started' _build/prod/rel/ejabberd/logs/ejabberd.log
grep -q 'is stopped' _build/prod/rel/ejabberd/logs/ejabberd.log grep -q 'is stopped' _build/prod/rel/ejabberd/logs/ejabberd.log
grep -q 'module Presence Demo' _build/prod/rel/ejabberd/logs/ejabberd.log grep -q 'Stopping Ejabberd.Module.Example' _build/prod/rel/ejabberd/logs/ejabberd.log
test $(find _build/prod/ -empty -name error.log) test $(find _build/prod/ -empty -name error.log)
grep -q 'is started' _build/dev/rel/ejabberd/logs/ejabberd.log grep -q 'is started' _build/dev/rel/ejabberd/logs/ejabberd.log
grep -q 'is stopped' _build/dev/rel/ejabberd/logs/ejabberd.log grep -q 'is stopped' _build/dev/rel/ejabberd/logs/ejabberd.log
grep -q 'module Presence Demo' _build/dev/rel/ejabberd/logs/ejabberd.log grep -q 'Stopping Ejabberd.Module.Example' _build/dev/rel/ejabberd/logs/ejabberd.log
test $(find _build/dev/ -empty -name error.log) test $(find _build/dev/ -empty -name error.log)
grep -q 'is started' /tmp/ejabberd/var/log/ejabberd/ejabberd.log grep -q 'is started' /tmp/ejabberd/var/log/ejabberd/ejabberd.log
grep -q 'is stopped' /tmp/ejabberd/var/log/ejabberd/ejabberd.log grep -q 'is stopped' /tmp/ejabberd/var/log/ejabberd/ejabberd.log
grep -q 'module Presence Demo' /tmp/ejabberd/var/log/ejabberd/ejabberd.log grep -q 'Stopping Ejabberd.Module.Example' /tmp/ejabberd/var/log/ejabberd/ejabberd.log
test $(find /tmp/ejabberd/var/log/ejabberd/ -empty -name error.log) test $(find /tmp/ejabberd/var/log/ejabberd/ -empty -name error.log)
- name: View logs failures - name: View logs failures

4
.gitignore vendored
View file

@ -34,12 +34,14 @@
/priv/bin/captcha*sh /priv/bin/captcha*sh
/priv/sql /priv/sql
/rel/ejabberd /rel/ejabberd
/recompile.log
/_build /_build
/database/ /database/
/.rebar /.rebar
/rebar.lock
/log/ /log/
Mnesia.nonode@nohost/ Mnesia.nonode@nohost/
/TAGS
/tags
# Binaries created with tools/make-{binaries,installers,packages}: # Binaries created with tools/make-{binaries,installers,packages}:
/ejabberd_*.deb /ejabberd_*.deb
/ejabberd-*.rpm /ejabberd-*.rpm

19
.vscode/launch.json vendored
View file

@ -2,7 +2,24 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "Relive", "name": "Relive (Vim)",
"type": "erlang",
"request": "launch",
"runinterminal": [
"./rebar3", "shell",
"--apps", "ejabberd",
"--config", "rel/relive.config",
"--script", "rel/relive.escript",
"--name", "ejabberd@localhost",
"--setcookie", "COOKIE"
],
"projectnode": "ejabberd@localhost",
"cookie": "COOKIE",
"timeout": 900,
"cwd": "."
},
{
"name": "Relive (VSCode)",
"type": "erlang", "type": "erlang",
"request": "launch", "request": "launch",
"runinterminal": [ "runinterminal": [

4
.vscode/relive.sh vendored
View file

@ -1,6 +1,6 @@
[ ! -f Makefile ] \ [ ! -f Makefile ] \
&& ./autogen.sh \ && ./autogen.sh \
&& ./configure --with-rebar=./rebar3 \ && ./configure --with-rebar=rebar3 \
&& make deps && make
make relive make relive

File diff suppressed because it is too large Load diff

View file

@ -22,6 +22,21 @@ Examples of unacceptable behavior by participants include:
* Publishing others' private information, such as a physical or electronic address, without explicit permission * Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting * Other conduct which could reasonably be considered inappropriate in a professional setting
## Guidelines for Respectful and Efficient Communication on Issues, Discussions, and PRs
To ensure that our maintainers can efficiently manage issues and provide timely updates, we kindly ask that all comments on GitHub tickets remain relevant to the topic of the issue. Please avoid posting comments solely to ping maintainers or ask for updates. If you need information on the status of an issue, consider the following:
- **Check the Issue Timeline:** Review the existing comments and updates on the issue before posting.
- **Use Reactions:** If you want to show that you are interested in an issue, use GitHub's reaction feature (e.g., thumbs up) instead of commenting.
- **Be Patient:** Understand that maintainers may be working on multiple tasks and will provide updates as soon as possible.
Additionally, please be aware that:
- **User Responses:** Users who report issues may no longer be using the software, may have switched to other projects, or may simply be busy. It is their right not to respond to follow-up questions or comments.
- **Maintainer Priorities:** Maintainers have the right to define their own priorities and schedule. They will address issues based on their availability and the project's needs.
By following these guidelines, you help us maintain a productive and respectful environment for everyone involved.
## Our Responsibilities ## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
@ -40,7 +55,7 @@ Project maintainers who do not follow or enforce the Code of Conduct in good fai
## Attribution ## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org [homepage]: https://www.contributor-covenant.org/
[version]: http://contributor-covenant.org/version/1/4/ [version]: https://www.contributor-covenant.org/version/1/4/

View file

@ -7,7 +7,7 @@ from source code.
For a more detailed explanation, please check the For a more detailed explanation, please check the
ejabberd Docs: [Source Code Installation][docs-source]. ejabberd Docs: [Source Code Installation][docs-source].
[docs-source]: https://docs.ejabberd.im/admin/installation/#source-code [docs-source]: https://docs.ejabberd.im/admin/install/source/
Requirements Requirements
@ -19,7 +19,7 @@ To compile ejabberd you need:
- GCC - GCC
- Libexpat ≥ 1.95 - Libexpat ≥ 1.95
- Libyaml ≥ 0.1.4 - Libyaml ≥ 0.1.4
- Erlang/OTP ≥ 20.0 - Erlang/OTP ≥ 25.0
- OpenSSL ≥ 1.0.0 - OpenSSL ≥ 1.0.0
Other optional libraries are: Other optional libraries are:
@ -28,8 +28,7 @@ Other optional libraries are:
- PAM library, for Pluggable Authentication Modules (PAM) - PAM library, for Pluggable Authentication Modules (PAM)
- ImageMagick's Convert program and Ghostscript fonts, for CAPTCHA - ImageMagick's Convert program and Ghostscript fonts, for CAPTCHA
challenges challenges
- Elixir ≥ 1.10.3, for Elixir support. It is recommended Elixir 1.13.4 or higher - Elixir ≥ 1.10.3, for Elixir support. It is recommended Elixir 1.14.0 or higher
and Erlang/OTP 23.0 or higher.
If your system splits packages in libraries and development headers, If your system splits packages in libraries and development headers,
install the development packages too. install the development packages too.
@ -44,7 +43,7 @@ There are several ways to obtain the ejabberd source code:
- Source code package from [ejabberd GitHub Releases][ghr] - Source code package from [ejabberd GitHub Releases][ghr]
- Latest development code from [ejabberd Git repository][gitrepo] - Latest development code from [ejabberd Git repository][gitrepo]
[p1dl]: https://www.process-one.net/en/ejabberd/downloads/ [p1dl]: https://www.process-one.net/download/ejabberd/
[ghr]: https://github.com/processone/ejabberd/releases [ghr]: https://github.com/processone/ejabberd/releases
[gitrepo]: https://github.com/processone/ejabberd [gitrepo]: https://github.com/processone/ejabberd
@ -66,6 +65,11 @@ To configure the compilation, features, install paths...
./configure --help ./configure --help
The build tool automatically downloads and compiles the
erlang libraries that [ejabberd depends on][docs-repo].
[docs-repo]: https://docs.ejabberd.im/developer/repositories/
Install in the System Install in the System
--------------------- ---------------------

File diff suppressed because it is too large Load diff

View file

@ -25,18 +25,18 @@ support platforms, the best being [Stack Overflow][stackoverflow].
Stack Overflow is a much better place to ask questions since: Stack Overflow is a much better place to ask questions since:
- there are thousands of people willing to help on Stack Overflow * there are thousands of people willing to help on Stack Overflow
- questions and answers stay available for public viewing so your question / answer might help * questions and answers stay available for public viewing so your question / answer might help
someone else someone else
- Stack Overflow's voting system assures that the best answers are prominently visible. * Stack Overflow's voting system assures that the best answers are prominently visible.
To save your and our time, we will systematically close all issues that are requests for general To save your and our time, we will systematically close all issues that are requests for general
support and redirect people to the section you are reading right now. support and redirect people to the section you are reading right now.
Other channels for support are: Other channels for support are:
- ejabberd XMPP room: [ejabberd@conference.process-one.net][muc]
- [ejabberd XMPP room logs][logs] * ejabberd XMPP room: [ejabberd@conference.process-one.net][muc]
- [ejabberd Mailing List][list] * [ejabberd Mailing List][list]
### Found an Issue or Bug? ### Found an Issue or Bug?
@ -52,7 +52,7 @@ If you would like to implement a new feature then consider what kind of change i
* **Major Changes** that you wish to contribute to the project should be discussed first in an * **Major Changes** that you wish to contribute to the project should be discussed first in an
[GitHub issue][github-issues] that clearly outlines the changes and benefits of the feature. [GitHub issue][github-issues] that clearly outlines the changes and benefits of the feature.
* **Small Changes** can directly be crafted and submitted to the [GitHub Repository][github] * **Small Changes** can directly be crafted and submitted to the [GitHub Repository][github]
as a Pull Request. See the section about [Pull Request Submission Guidelines](#submit-pr). as a Pull Request. See the section about [Pull Request Submission Guidelines](#pull-request-submission-guidelines).
## Issue Submission Guidelines ## Issue Submission Guidelines
@ -80,6 +80,7 @@ Before you submit your pull request consider the following guidelines:
```shell ```shell
git checkout -b my-fix-branch master git checkout -b my-fix-branch master
``` ```
* Test your changes and, if relevant, expand the automated test suite. * Test your changes and, if relevant, expand the automated test suite.
* Create your patch commit, including appropriate test cases. * Create your patch commit, including appropriate test cases.
* If the changes affect public APIs, change or add relevant [documentation][doc-repo]. * If the changes affect public APIs, change or add relevant [documentation][doc-repo].
@ -88,6 +89,7 @@ Before you submit your pull request consider the following guidelines:
```shell ```shell
git commit -a git commit -a
``` ```
Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files. Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files.
* Push your branch to GitHub: * Push your branch to GitHub:
@ -128,22 +130,20 @@ That's it! Thank you for your contribution!
Upon submitting a Pull Request, we will ask you to sign our CLA if you haven't done Upon submitting a Pull Request, we will ask you to sign our CLA if you haven't done
so before. It's a quick process, we promise, and you will be able to do it all online so before. It's a quick process, we promise, and you will be able to do it all online
You can read [ProcessOne Contribution License Agreement][cla] in PDF. Here's a link to the [ProcessOne Contribution License Agreement][cla].
This is part of the legal framework of the open-source ecosystem that adds some red tape, This is part of the legal framework of the open-source ecosystem that adds some red tape,
but protects both the contributor and the company / foundation behind the project. It also but protects both the contributor and the company / foundation behind the project. It also
gives us the option to relicense the code with a more permissive license in the future. gives us the option to relicense the code with a more permissive license in the future.
[coc]: https://github.com/processone/ejabberd/blob/master/CODE_OF_CONDUCT.md [coc]: https://github.com/processone/ejabberd/blob/master/CODE_OF_CONDUCT.md
[stackoverflow]: https://stackoverflow.com/questions/tagged/ejabberd?sort=newest [stackoverflow]: https://stackoverflow.com/questions/tagged/ejabberd?sort=newest
[list]: https://lists.jabber.ru/mailman/listinfo/ejabberd [list]: https://web.archive.org/web/20230319174915/http://lists.jabber.ru/mailman/listinfo/ejabberd
[muc]: xmpp:ejabberd@conference.process-one.net [muc]: xmpp:ejabberd@conference.process-one.net
[logs]: https://process-one.net/logs/ejabberd@conference.process-one.net/
[github]: https://github.com/processone/ejabberd [github]: https://github.com/processone/ejabberd
[github-issues]: https://github.com/processone/ejabberd/issues [github-issues]: https://github.com/processone/ejabberd/issues
[github-new-issue]: https://github.com/processone/ejabberd/issues/new [github-new-issue]: https://github.com/processone/ejabberd/issues/new
[github-pr]: https://github.com/processone/ejabberd/pulls [github-pr]: https://github.com/processone/ejabberd/pulls
[doc-repo]: https://github.com/processone/docs.ejabberd.im [doc-repo]: https://github.com/processone/docs.ejabberd.im
[developer-setup]: https://docs.ejabberd.im/developer/ [developer-setup]: https://docs.ejabberd.im/developer/
[cla]: https://www.process-one.net/resources/ejabberd-cla.pdf [cla]: https://cla.process-one.net/

View file

@ -3,7 +3,8 @@
# #
ESCRIPT = @ESCRIPT@ ESCRIPT = @ESCRIPT@
REBAR = @rebar@ REBAR = @rebar@ # rebar|rebar3|mix binary (or path to binary)
REBAR3 = @REBAR3@ # path to rebar3 binary
MIX = @rebar@ MIX = @rebar@
AWK = @AWK@ AWK = @AWK@
INSTALL = @INSTALL@ INSTALL = @INSTALL@
@ -150,6 +151,7 @@ ifeq ($(REBAR_ENABLE_ELIXIR),true)
ELIXIR_LIBDIR_RAW=$(shell elixir -e "IO.puts(:filename.dirname(:code.lib_dir(:elixir)))" -e ":erlang.halt") ELIXIR_LIBDIR_RAW=$(shell elixir -e "IO.puts(:filename.dirname(:code.lib_dir(:elixir)))" -e ":erlang.halt")
ELIXIR_LIBDIR=":$(ELIXIR_LIBDIR_RAW)" ELIXIR_LIBDIR=":$(ELIXIR_LIBDIR_RAW)"
EXPLICIT_ELIXIR_COMPILE=MIX_ENV=default mix compile.elixir EXPLICIT_ELIXIR_COMPILE=MIX_ENV=default mix compile.elixir
EXPLICIT_ELIXIR_COMPILE_DEV=MIX_ENV=dev mix compile.elixir
PREPARE_ELIXIR_SCRIPTS=$(MKDIR_P) rel/overlays; cp $(ELIXIR_LIBDIR_RAW)/../bin/iex rel/overlays/; cp $(ELIXIR_LIBDIR_RAW)/../bin/elixir rel/overlays/; sed -i 's|ERTS_BIN=$$|ERTS_BIN=$$SCRIPT_PATH/../../erts-{{erts_vsn}}/bin/|' rel/overlays/elixir PREPARE_ELIXIR_SCRIPTS=$(MKDIR_P) rel/overlays; cp $(ELIXIR_LIBDIR_RAW)/../bin/iex rel/overlays/; cp $(ELIXIR_LIBDIR_RAW)/../bin/elixir rel/overlays/; sed -i 's|ERTS_BIN=$$|ERTS_BIN=$$SCRIPT_PATH/../../erts-{{erts_vsn}}/bin/|' rel/overlays/elixir
endif endif
ifeq "$(REBAR_VER)" "3" ifeq "$(REBAR_VER)" "3"
@ -170,7 +172,7 @@ endif
CLEANARG=--all CLEANARG=--all
REBARREL=$(REBAR) as prod tar REBARREL=$(REBAR) as prod tar
REBARDEV=$(REBAR) as dev release REBARDEV=$(REBAR) as dev release
RELIVECMD=$(REBAR) relive RELIVECMD=$(REBAR) as dev relive
REL_LIB_DIR = _build/dev/rel/ejabberd/lib REL_LIB_DIR = _build/dev/rel/ejabberd/lib
COPY_REL_TARGET = dev COPY_REL_TARGET = dev
GET_DEPS_TRANSLATIONS=$(REBAR) as translations $(GET_DEPS) GET_DEPS_TRANSLATIONS=$(REBAR) as translations $(GET_DEPS)
@ -258,7 +260,17 @@ _build/edoc/docs.md: edoc_compile
> _build/edoc/docs.md > _build/edoc/docs.md
_build/edoc/logo.png: edoc_compile _build/edoc/logo.png: edoc_compile
wget https://docs.ejabberd.im/static/shared/images/footer_logo_e.png -O _build/edoc/logo.png wget https://docs.ejabberd.im/assets/img/footer_logo_e.png -O _build/edoc/logo.png
#.
#' format / indent
#
format:
tools/rebar3-format.sh $(REBAR3)
indent:
tools/emacs-indent.sh
#. #.
#' copy-files #' copy-files
@ -377,6 +389,7 @@ uninstall-librel:
# #
relive: relive:
$(EXPLICIT_ELIXIR_COMPILE_DEV)
$(RELIVECMD) $(RELIVECMD)
relivelibdir=$(shell pwd)/$(DEPSDIR) relivelibdir=$(shell pwd)/$(DEPSDIR)
@ -396,6 +409,7 @@ ejabberdctl.relive:
-e "s*{{spool_dir}}*${SPOOL_DIR}*g" \ -e "s*{{spool_dir}}*${SPOOL_DIR}*g" \
-e "s*{{bindir}}*${BINDIR}*g" \ -e "s*{{bindir}}*${BINDIR}*g" \
-e "s*{{libdir}}*${relivelibdir}${ELIXIR_LIBDIR}*g" \ -e "s*{{libdir}}*${relivelibdir}${ELIXIR_LIBDIR}*g" \
-e "s*ERTS_VSN*# ERTS_VSN*g" \
-e "s*{{iexpath}}*${IEX}*g" \ -e "s*{{iexpath}}*${IEX}*g" \
-e "s*{{erl}}*${ERL}*g" \ -e "s*{{erl}}*${ERL}*g" \
-e "s*{{epmd}}*${EPMD}*g" ejabberdctl.template \ -e "s*{{epmd}}*${EPMD}*g" ejabberdctl.template \
@ -420,6 +434,7 @@ ejabberdctl.example: vars.config
-e "s*{{spool_dir}}*${SPOOLDIR}*g" \ -e "s*{{spool_dir}}*${SPOOLDIR}*g" \
-e "s*{{bindir}}*${BINDIR}*g" \ -e "s*{{bindir}}*${BINDIR}*g" \
-e "s*{{libdir}}*${LIBDIR}${ELIXIR_LIBDIR}*g" \ -e "s*{{libdir}}*${LIBDIR}${ELIXIR_LIBDIR}*g" \
-e "s*ERTS_VSN*# ERTS_VSN*g" \
-e "s*{{iexpath}}*${IEX}*g" \ -e "s*{{iexpath}}*${IEX}*g" \
-e "s*{{erl}}*${ERL}*g" \ -e "s*{{erl}}*${ERL}*g" \
-e "s*{{epmd}}*${EPMD}*g" ejabberdctl.template \ -e "s*{{epmd}}*${EPMD}*g" ejabberdctl.template \
@ -577,12 +592,16 @@ Makefile: Makefile.in
#' dialyzer #' dialyzer
# #
ifeq "$(REBAR_VER)" "3" ifeq "$(REBAR_VER)" "6" # Mix
dialyzer: dialyzer:
find src/*_opt.erl -type f \! -regex ".*git.*" -exec sed -i 's/re:mp/ tuple/g' {} \; MIX_ENV=test $(REBAR) dialyzer
$(REBAR) dialyzer
find src/*_opt.erl -type f \! -regex ".*git.*" -exec sed -i 's/ tuple/re:mp/g' {} \;
else else
ifeq "$(REBAR_VER)" "3" # Rebar3
dialyzer:
$(REBAR) dialyzer
else # Rebar2
deps := $(wildcard $(DEPSDIR)/*/ebin) deps := $(wildcard $(DEPSDIR)/*/ebin)
dialyzer/erlang.plt: dialyzer/erlang.plt:
@ -622,6 +641,14 @@ dialyzer: erlang_plt deps_plt ejabberd_plt
--get_warnings -o dialyzer/error.log ebin; \ --get_warnings -o dialyzer/error.log ebin; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
endif endif
endif
#.
#' elvis
#
elvis:
$(REBAR) lint
#. #.
#' test #' test
@ -634,14 +661,28 @@ test:
@cd priv && ln -sf ../sql @cd priv && ln -sf ../sql
$(REBAR) $(SKIPDEPS) ct $(REBAR) $(SKIPDEPS) ct
.PHONY: test-%
define test-group-target
test-$1:
$(REBAR) $(SKIPDEPS) ct --suite=test/ejabberd_SUITE --group=$1
endef
ifneq ($(filter test-%,$(MAKECMDGOALS)),)
group_to_test := $(patsubst test-%,%,$(filter test-%,$(MAKECMDGOALS)))
$(eval $(call test-group-target,$(group_to_test)))
endif
test-eunit:
$(REBAR) $(SKIPDEPS) eunit --verbose
#. #.
#' phony #' phony
# #
.PHONY: src edoc dialyzer Makefile TAGS clean clean-rel distclean prod rel \ .PHONY: src edoc dialyzer Makefile TAGS clean clean-rel distclean prod rel \
install uninstall uninstall-binary uninstall-all translations deps test \ install uninstall uninstall-binary uninstall-all translations deps test test-eunit \
all dev doap help install-rel relive scripts uninstall-rel update \ all dev doap help install-rel relive scripts uninstall-rel update \
erlang_plt deps_plt ejabberd_plt xref hooks options erlang_plt deps_plt ejabberd_plt xref hooks options format indent
#. #.
#' help #' help
@ -673,9 +714,15 @@ help:
@echo " translations Extract translation files" @echo " translations Extract translation files"
@echo " TAGS Generate tags file for text editors" @echo " TAGS Generate tags file for text editors"
@echo "" @echo ""
@echo " dialyzer Run Dialyzer static analyzer [rebar3]" @echo " format Format source code using rebar3_format"
@echo " indent Indent source code using erlang-mode [emacs]"
@echo ""
@echo " dialyzer Run Dialyzer static analyzer"
@echo " elvis Run Elvis source code style reviewer [rebar3]"
@echo " hooks Run hooks validator" @echo " hooks Run hooks validator"
@echo " test Run Common Tests suite [rebar3]" @echo " test Run Common Tests suite [rebar3]"
@echo " test-eunit Run EUnit suite [rebar3]"
@echo " test-<group> Run Common Test suite for specific group only [rebar3]"
@echo " xref Run cross reference analysis [rebar3]" @echo " xref Run cross reference analysis [rebar3]"
#. #.

View file

@ -17,12 +17,13 @@
<a href="https://github.com/processone/ejabberd/actions/workflows/ci.yml" alt="CI"> <a href="https://github.com/processone/ejabberd/actions/workflows/ci.yml" alt="CI">
<img src="https://github.com/processone/ejabberd/actions/workflows/ci.yml/badge.svg" /></a> <img src="https://github.com/processone/ejabberd/actions/workflows/ci.yml/badge.svg" /></a>
<a href="https://coveralls.io/github/processone/ejabberd?branch=master" alt="Coverage Status"> <a href="https://coveralls.io/github/processone/ejabberd?branch=master" alt="Coverage Status">
<img src="https://coveralls.io/repos/github/processone/ejabberd/badge.svg?branch=master "Coverage in coveralls.io"" /></a> <img src="https://coveralls.io/repos/github/processone/ejabberd/badge.svg?branch=master" /></a>
<a href="https://hosted.weblate.org/projects/ejabberd/ejabberd-po/" alt="Translation status"> <a href="https://hosted.weblate.org/projects/ejabberd/ejabberd-po/" alt="Translation status">
<img src="https://hosted.weblate.org/widgets/ejabberd/-/ejabberd-po/svg-badge.svg"" /></a> <img src="https://hosted.weblate.org/widgets/ejabberd/-/ejabberd-po/svg-badge.svg" /></a>
<a href="https://docs.ejabberd.im/" alt="ejabberd Docs">
<img src="https://img.shields.io/github/v/tag/processone/docs.ejabberd.im?sort=semver&logo=&label=docs&logoWidth=0" /></a>
</p> </p>
[ejabberd][im] is an open-source, [ejabberd][im] is an open-source,
robust, scalable and extensible realtime platform built using [Erlang/OTP][erlang], robust, scalable and extensible realtime platform built using [Erlang/OTP][erlang],
that includes [XMPP][xmpp] Server, [MQTT][mqtt] Broker and [SIP][sip] Service. that includes [XMPP][xmpp] Server, [MQTT][mqtt] Broker and [SIP][sip] Service.
@ -37,12 +38,16 @@ Installation
There are several ways to install ejabberd: There are several ways to install ejabberd:
- Source code: compile yourself, see [COMPILE](COMPILE.md) - Source code: compile yourself, see [COMPILE](COMPILE.md)
- Installers: [ProcessOne Download][p1download] and [GitHub Releases][releases] for releases, [GitHub Actions](https://github.com/processone/ejabberd/actions/workflows/installers.yml) for master branch (run/deb/rpm for x64 and arm64) - Installers:
- `ecs` container image: [Docker Hub][hubecs] and [Github Packages][packagesecs], see [ecs README][docker-ecs-readme] (for x64) - [ProcessOne Download Page][p1download] or [GitHub Releases][releases] for releases.
- `ejabberd` container image: [Github Packages][packages] for releases and master branch, see [CONTAINER](CONTAINER.md) (for x64 and arm64) - [GitHub Actions](https://github.com/processone/ejabberd/actions/workflows/installers.yml) for master branch (`run`/`deb`/`rpm` for `x64` and `arm64`)
- Docker Containers:
- `ecs` container image: [Docker Hub][hubecs] and [Github Packages][packagesecs], see [ecs README][docker-ecs-readme] (for `x64`)
- `ejabberd` container image: [Github Packages][packages] for releases and master branch, see [CONTAINER](CONTAINER.md) (for `x64` and `arm64`)
- Using your [Operating System package][osp] - Using your [Operating System package][osp]
- Using the [Homebrew][homebrew] package manager - Using the [Homebrew][homebrew] package manager
More info can be found in the `Installation` part of [ejabberd Docs](https://docs.ejabberd.im/admin/install/).
Documentation Documentation
------------- -------------
@ -59,7 +64,6 @@ Once ejabberd is installed, try:
ejabberdctl help ejabberdctl help
man ejabberd.yml man ejabberd.yml
Development Development
----------- -----------
@ -72,6 +76,7 @@ or in your local machine as explained in [Localization][localization].
Documentation for developers is available in [ejabberd docs: Developers][docs-dev]. Documentation for developers is available in [ejabberd docs: Developers][docs-dev].
There are nightly builds of ejabberd, both for `master` branch and for Pull Requests: There are nightly builds of ejabberd, both for `master` branch and for Pull Requests:
- Installers: go to [GitHub Actions: Installers](https://github.com/processone/ejabberd/actions/workflows/installers.yml), open the most recent commit, on the bottom of that commit page, download the `ejabberd-packages.zip` artifact. - Installers: go to [GitHub Actions: Installers](https://github.com/processone/ejabberd/actions/workflows/installers.yml), open the most recent commit, on the bottom of that commit page, download the `ejabberd-packages.zip` artifact.
- `ejabberd` container image: go to [ejabberd Github Packages][packages] - `ejabberd` container image: go to [ejabberd Github Packages][packages]
@ -82,6 +87,10 @@ or some other method from [ProcessOne Contact][p1contact].
For commercial offering and support, including [ejabberd Business Edition][p1home] For commercial offering and support, including [ejabberd Business Edition][p1home]
and [Fluux (ejabberd in the Cloud)][fluux], please check [ProcessOne ejabberd page][p1home]. and [Fluux (ejabberd in the Cloud)][fluux], please check [ProcessOne ejabberd page][p1home].
Security
--------
For information on how to report security vulnerabilities, please refer to the [SECURITY.md](SECURITY.md) file. It contains guidelines on how to report vulnerabilities privately and securely, ensuring that any issues are addressed in a timely and confidential manner.
Community Community
--------- ---------
@ -92,13 +101,11 @@ There are several places to get in touch with other ejabberd developers and admi
- [GitHub Discussions][discussions] - [GitHub Discussions][discussions]
- [Stack Overflow][stackoverflow] - [Stack Overflow][stackoverflow]
License License
------- -------
ejabberd is released under the GNU General Public License v2 (see [COPYING](COPYING)), - ejabberd is released under the __GNU General Public License v2__ (see [COPYING](COPYING))
and [ejabberd translations](https://github.com/processone/ejabberd-po/) under MIT License. - [ejabberd translations](https://github.com/processone/ejabberd-po/) under __MIT License__.
[discussions]: https://github.com/processone/ejabberd/discussions [discussions]: https://github.com/processone/ejabberd/discussions
[docker-ecs-readme]: https://github.com/processone/docker-ejabberd/tree/master/ecs#readme [docker-ecs-readme]: https://github.com/processone/docker-ejabberd/tree/master/ecs#readme
@ -107,24 +114,23 @@ and [ejabberd translations](https://github.com/processone/ejabberd-po/) under MI
[erlang]: https://www.erlang.org/ [erlang]: https://www.erlang.org/
[features]: https://docs.ejabberd.im/admin/introduction/ [features]: https://docs.ejabberd.im/admin/introduction/
[fluux]: https://fluux.io/ [fluux]: https://fluux.io/
[homebrew]: https://docs.ejabberd.im/admin/installation/#homebrew [homebrew]: https://docs.ejabberd.im/admin/install/homebrew/
[hubecs]: https://hub.docker.com/r/ejabberd/ecs/ [hubecs]: https://hub.docker.com/r/ejabberd/ecs/
[im]: https://ejabberd.im/ [im]: https://www.ejabberd.im/
[issues]: https://github.com/processone/ejabberd/issues [issues]: https://github.com/processone/ejabberd/issues
[localization]: https://docs.ejabberd.im/developer/extending-ejabberd/localization/ [localization]: https://docs.ejabberd.im/developer/extending-ejabberd/localization/
[mqtt]: https://mqtt.org/ [mqtt]: https://mqtt.org/
[muc]: xmpp:ejabberd@conference.process-one.net [muc]: xmpp:ejabberd@conference.process-one.net
[osp]: https://docs.ejabberd.im/admin/installation/#operating-system-packages [osp]: https://docs.ejabberd.im/admin/install/os-package/
[p1contact]: https://www.process-one.net/en/company/contact/ [p1contact]: https://www.process-one.net/contact/
[p1download]: https://www.process-one.net/en/ejabberd/downloads/ [p1download]: https://www.process-one.net/download/ejabberd/
[p1home]: https://www.process-one.net/en/ejabberd/ [p1home]: https://www.process-one.net/ejabberd/
[packages]: https://github.com/processone/ejabberd/pkgs/container/ejabberd [packages]: https://github.com/processone/ejabberd/pkgs/container/ejabberd
[packagesecs]: https://github.com/processone/docker-ejabberd/pkgs/container/ecs [packagesecs]: https://github.com/processone/docker-ejabberd/pkgs/container/ecs
[releases]: https://github.com/processone/ejabberd/releases [releases]: https://github.com/processone/ejabberd/releases
[sip]: https://en.wikipedia.org/wiki/Session_Initiation_Protocol [sip]: https://en.wikipedia.org/wiki/Session_Initiation_Protocol
[stackoverflow]: https://stackoverflow.com/questions/tagged/ejabberd?sort=newest [stackoverflow]: https://stackoverflow.com/questions/tagged/ejabberd?sort=newest
[weblate]: https://hosted.weblate.org/projects/ejabberd/ejabberd-po/ [weblate]: https://hosted.weblate.org/projects/ejabberd/ejabberd-po/
[xeps]: https://www.process-one.net/en/ejabberd/protocols/ [xeps]: https://www.process-one.net/ejabberd-features/
[xmpp]: https://xmpp.org/ [xmpp]: https://xmpp.org/
[xmppej]: https://xmpp.org/software/servers/ejabberd/ [xmppej]: https://xmpp.org/software/servers/ejabberd/

45
SECURITY.md Normal file
View file

@ -0,0 +1,45 @@
# Security Policy
## Supported Versions
We recommend that all users always use the latest version of ejabberd.
To ensure the best experience and security, upgrade to the latest version available on [this repo](https://github.com/processone/ejabberd).
## Reporting a Vulnerability
### Private Reporting
**Preferred Method**: Use GitHub's private vulnerability reporting system by clicking the "Report a Vulnerability" button in the [Security tab of this repository](https://github.com/processone/ejabberd/security). This ensures your report is securely transmitted and tracked.
**Alternative**: If you cannot use the GitHub system, send an email to **`contact@process-one.net`** with the following details:
- A clear description of the vulnerability.
- Steps to reproduce the issue.
- Any potential impact or exploitation scenarios.
### Response Time
We aim to acknowledge receipt of your report within 72 hours. You can expect regular updates on the status of your report.
### Resolution
If the vulnerability is confirmed, we will work on a patch or mitigation strategy.
We will notify you once the issue is resolved and coordinate a public disclosure if needed.
### Acknowledgements
We value and appreciate the contributions of security researchers and community members.
If you wish, we are happy to acknowledge your efforts publicly by listing your name (or alias) below in this document.
Please let us know if you would like to be recognized when reporting the vulnerability.
## Public Discussion
For general inquiries or discussions about the projects security, feel free to chat with us here:
- XMPP room: `ejabberd@conference.process-one.net`
- [GitHub Discussions](https://github.com/processone/ejabberd/discussions)
However, please note that if the issue is **critical** or potentially exploitable, **do not share it publicly**. Instead, we strongly recommend you contact the maintainers directly via the private reporting methods outlined above to ensure a secure and timely response.
Thank you for helping us improve the security of ejabberd!

View file

@ -11,3 +11,5 @@ config :ejabberd,
log_path: Path.join(rootpath, "logs/ejabberd.log") log_path: Path.join(rootpath, "logs/ejabberd.log")
config :mnesia, config :mnesia,
dir: Path.join(rootpath, "database/") dir: Path.join(rootpath, "database/")
config :exsync,
reload_callback: {:ejabberd_admin, :update, []}

View file

@ -2,8 +2,17 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59) AC_PREREQ(2.59)
AC_INIT(ejabberd, m4_esyscmd([echo `git describe --tags 2>/dev/null || echo 24.02` | sed 's/-g.*//;s/-/./' | tr -d '\012']), [ejabberd@process-one.net], [ejabberd]) AC_INIT(ejabberd, m4_esyscmd([echo `git describe --tags 2>/dev/null || echo 25.08` | sed 's/-g.*//;s/-/./' | tr -d '\012']), [ejabberd@process-one.net], [ejabberd])
REQUIRE_ERLANG_MIN="9.0.5 (Erlang/OTP 20.0)"
AC_ARG_WITH(min-erlang,
AS_HELP_STRING([--with-min-erlang=version],[set minimal required erlang version, default to OTP25]),
[if test "X$withval" = "X"; then
REQUIRE_ERLANG_MIN="13.0 (Erlang/OTP 25.0)"
else
REQUIRE_ERLANG_MIN="$withval"
fi
], [REQUIRE_ERLANG_MIN="13.0 (Erlang/OTP 25.0)"])
REQUIRE_ERLANG_MAX="100.0.0 (No Max)" REQUIRE_ERLANG_MAX="100.0.0 (No Max)"
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
@ -333,3 +342,28 @@ AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS)
AC_OUTPUT AC_OUTPUT
AS_CASE([$rebar],
[*rebar3], [
deps=""
AS_IF([test "x$stun" = "xfalse"], [deps="stun,$deps"])
AS_IF([test "x$sqlite" = "xfalse"], [deps="sqlite3,$deps"])
AS_IF([test "x$pgsql" = "xfalse"], [deps="p1_pgsql,$deps"])
AS_IF([test "x$mysql" = "xfalse"], [deps="p1_mysql,$deps"])
AS_IF([test "x$zlib" = "xfalse"], [deps="ezlib,$deps"])
AS_IF([test "x$sip" = "xfalse"], [deps="esip,$deps"])
AS_IF([test "x$redis" = "xfalse"], [deps="eredis,$deps"])
AS_IF([test "x$pam" = "xfalse"], [deps="epam,$deps"])
AS_IF([test "x$deps" = "x"], [],
[AC_MSG_NOTICE([unlocking disabled rebar3 dependencies: $deps])
$rebar unlock "$deps"])
deps=""
ERLANG_VERSION=m4_esyscmd([erl -noinput -noshell -eval 'erlang:display(list_to_integer(erlang:system_info(otp_release))), halt().'])
AS_IF([test "$ERLANG_VERSION" -lt "21"], [deps="luerl,$deps"])
AS_IF([test "$ERLANG_VERSION" -lt "22"], [deps="lager,$deps"])
AS_IF([test "$ERLANG_VERSION" -le "23"], [deps="jose,$deps"])
AS_IF([test "$ERLANG_VERSION" -ge "27"], [deps="jiffy,$deps"])
AS_IF([test "x$deps" = "x"], [],
[AC_MSG_NOTICE([unlocking rebar3 dependencies for old Erlang/OTP: $deps])
$rebar unlock "$deps"])
])

View file

@ -19,10 +19,10 @@
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/> <category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/>
<homepage rdf:resource="https://www.ejabberd.im"/> <homepage rdf:resource="https://www.ejabberd.im"/>
<download-page rdf:resource="https://www.process-one.net/en/ejabberd/downloads/"/> <download-page rdf:resource="https://www.process-one.net/download/ejabberd/"/>
<download-mirror rdf:resource="https://github.com/processone/ejabberd/tags"/> <download-mirror rdf:resource="https://github.com/processone/ejabberd/tags"/>
<license rdf:resource="https://raw.githubusercontent.com/processone/ejabberd/master/COPYING"/> <license rdf:resource="https://raw.githubusercontent.com/processone/ejabberd/master/COPYING"/>
<schema:logo rdf:resource="https://docs.ejabberd.im/static/shared/images/footer_logo_e@2x.png"/> <schema:logo rdf:resource="https://docs.ejabberd.im/assets/img/footer_logo_e@2x.png"/>
<bug-database rdf:resource="https://github.com/processone/ejabberd/issues"/> <bug-database rdf:resource="https://github.com/processone/ejabberd/issues"/>
<support-forum rdf:resource="xmpp:ejabberd@conference.process-one.net?join"/> <support-forum rdf:resource="xmpp:ejabberd@conference.process-one.net?join"/>
<repository> <repository>
@ -48,8 +48,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0004.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0004.html"/>
<xmpp:version>2.9</xmpp:version> <xmpp:version>2.9</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -57,8 +57,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0012.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0012.html"/>
<xmpp:version>2.0</xmpp:version> <xmpp:version>2.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_last</xmpp:note> <xmpp:note>mod_last</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -67,7 +67,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0013.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0013.html"/>
<xmpp:version>1.2</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since>16.02</xmpp:since> <xmpp:since>16.02</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_offline</xmpp:note> <xmpp:note>mod_offline</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -75,8 +75,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0016.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0016.html"/>
<xmpp:version>1.6</xmpp:version> <xmpp:version>1.6</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_privacy</xmpp:note> <xmpp:note>mod_privacy</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -84,8 +84,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0022.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0022.html"/>
<xmpp:version>1.4</xmpp:version> <xmpp:version>1.4</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_offline</xmpp:note> <xmpp:note>mod_offline</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -93,8 +93,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0023.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0023.html"/>
<xmpp:version>1.3</xmpp:version> <xmpp:version>1.3</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.7.5</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_offline</xmpp:note> <xmpp:note>mod_offline</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -102,8 +102,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/>
<xmpp:version>2.4</xmpp:version> <xmpp:version>2.4</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_disco</xmpp:note> <xmpp:note>mod_disco</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -112,7 +112,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0033.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0033.html"/>
<xmpp:version>1.1</xmpp:version> <xmpp:version>1.1</xmpp:version>
<xmpp:since>15.04</xmpp:since> <xmpp:since>15.04</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_multicast</xmpp:note> <xmpp:note>mod_multicast</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -120,8 +120,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0039.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0039.html"/>
<xmpp:version>0.6.0</xmpp:version> <xmpp:version>0.6.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_stats</xmpp:note> <xmpp:note>mod_stats</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -129,17 +129,26 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0045.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0045.html"/>
<xmpp:version>1.25</xmpp:version> <xmpp:version>1.25</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_muc</xmpp:note> <xmpp:note>mod_muc</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
<xmpp:version>1.2</xmpp:version>
<xmpp:since>0.5.0</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_pubsub</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0049.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0049.html"/>
<xmpp:version>1.2</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_private</xmpp:note> <xmpp:note>mod_private</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -147,8 +156,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0050.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0050.html"/>
<xmpp:version>1.2</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>1.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_adhoc</xmpp:note> <xmpp:note>mod_adhoc</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -156,8 +165,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/>
<xmpp:version>1.2</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_vcard</xmpp:note> <xmpp:note>mod_vcard</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -165,17 +174,26 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0055.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0055.html"/>
<xmpp:version>1.3</xmpp:version> <xmpp:version>1.3</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_vcard</xmpp:note> <xmpp:note>mod_vcard</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0059.html"/>
<xmpp:version>1.0</xmpp:version>
<xmpp:since>2.1.0</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0060.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0060.html"/>
<xmpp:version>1.14</xmpp:version> <xmpp:version>1.14</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>partial</xmpp:status>
<xmpp:note>mod_pubsub</xmpp:note> <xmpp:note>mod_pubsub</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -183,8 +201,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0065.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0065.html"/>
<xmpp:version>1.8</xmpp:version> <xmpp:version>1.8</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.0.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_proxy65</xmpp:note> <xmpp:note>mod_proxy65</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -192,8 +210,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0077.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0077.html"/>
<xmpp:version>2.4</xmpp:version> <xmpp:version>2.4</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_register</xmpp:note> <xmpp:note>mod_register</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -201,17 +219,26 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0078.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0078.html"/>
<xmpp:version>2.5</xmpp:version> <xmpp:version>2.5</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>17.03</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_legacy_auth</xmpp:note> <xmpp:note>mod_legacy_auth</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0082.html"/>
<xmpp:version>1.1.1</xmpp:version>
<xmpp:since>2.1.0</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/>
<xmpp:version>2.1</xmpp:version> <xmpp:version>2.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_client_state</xmpp:note> <xmpp:note>mod_client_state</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -219,8 +246,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0086.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0086.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -228,8 +255,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0092.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0092.html"/>
<xmpp:version>1.1</xmpp:version> <xmpp:version>1.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_version</xmpp:note> <xmpp:note>mod_version</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -237,8 +264,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0106.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0106.html"/>
<xmpp:version>1.1</xmpp:version> <xmpp:version>1.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -246,8 +273,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0114.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0114.html"/>
<xmpp:version>1.6</xmpp:version> <xmpp:version>1.6</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_service</xmpp:note> <xmpp:note>ejabberd_service</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -255,8 +282,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/>
<xmpp:version>1.5</xmpp:version> <xmpp:version>1.5</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.4</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_caps</xmpp:note> <xmpp:note>mod_caps</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -264,26 +291,35 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0124.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0124.html"/>
<xmpp:version>1.11</xmpp:version> <xmpp:version>1.11</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>16.12</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_bosh</xmpp:note> <xmpp:note>ejabberd_bosh</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0133.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0133.html"/>
<xmpp:version>1.1</xmpp:version> <xmpp:version>1.3.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>13.10</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>partial</xmpp:status>
<xmpp:note>mod_configure</xmpp:note> <xmpp:note>mod_configure</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0138.html"/>
<xmpp:version>2.1</xmpp:version>
<xmpp:since>1.1.0</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_c2s</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/>
<xmpp:version>1.1</xmpp:version> <xmpp:version>1.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>17.09</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_vcard</xmpp:note> <xmpp:note>mod_vcard</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -292,7 +328,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0156.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0156.html"/>
<xmpp:version>1.4.0</xmpp:version> <xmpp:version>1.4.0</xmpp:version>
<xmpp:since>22.05</xmpp:since> <xmpp:since>22.05</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_host_meta</xmpp:note> <xmpp:note>mod_host_meta</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -300,8 +336,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0157.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0157.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_disco</xmpp:note> <xmpp:note>mod_disco</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -309,8 +345,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0158.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0158.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_captcha</xmpp:note> <xmpp:note>ejabberd_captcha</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -318,8 +354,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0160.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0160.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>16.01</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_offline</xmpp:note> <xmpp:note>mod_offline</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -327,8 +363,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0163.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0163.html"/>
<xmpp:version>1.2</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.0.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_pubsub</xmpp:note> <xmpp:note>mod_pubsub</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -336,26 +372,35 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0170.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0170.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>17.12</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0176.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0175.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>1.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_stun</xmpp:note> <xmpp:note>ejabberd_auth_anonymous</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0178.html"/>
<xmpp:version>1.1</xmpp:version>
<xmpp:since>17.03</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0185.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0185.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>17.03</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_s2s_dialback</xmpp:note> <xmpp:note>mod_s2s_dialback</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -363,8 +408,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/>
<xmpp:version>1.2</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.7</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_blocking</xmpp:note> <xmpp:note>mod_blocking</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -373,7 +418,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/>
<xmpp:version>1.5.2</xmpp:version> <xmpp:version>1.5.2</xmpp:version>
<xmpp:since>14.05</xmpp:since> <xmpp:since>14.05</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_stream_mgmt</xmpp:note> <xmpp:note>mod_stream_mgmt</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -381,8 +426,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
<xmpp:version>2.0</xmpp:version> <xmpp:version>2.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_ping</xmpp:note> <xmpp:note>mod_ping</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -390,17 +435,26 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0202.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0202.html"/>
<xmpp:version>2.0</xmpp:version> <xmpp:version>2.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_time</xmpp:note> <xmpp:note>mod_time</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0203.html"/>
<xmpp:version>2.0</xmpp:version>
<xmpp:since>2.1.0</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_offline</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0205.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0205.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>1.1.2</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -408,80 +462,71 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0206.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0206.html"/>
<xmpp:version>1.4</xmpp:version> <xmpp:version>1.4</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>16.12</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_bosh</xmpp:note> <xmpp:note>ejabberd_bosh</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0212.html"/>
<xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0215.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0215.html"/>
<xmpp:version>0.7</xmpp:version> <xmpp:version>0.7</xmpp:version>
<xmpp:since>20.04</xmpp:since> <xmpp:since>20.04</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_stun_disco</xmpp:note> <xmpp:note>mod_stun_disco</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0216.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0220.html"/>
<xmpp:version>1.0</xmpp:version> <xmpp:version>1.1.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>17.03</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note>mod_s2s_dialback</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0220.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0223.html"/>
<xmpp:version>1.1</xmpp:version> <xmpp:version>1.1.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.0.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_s2s, mod_s2s_dialback</xmpp:note> <xmpp:note>mod_pubsub</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0227.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0227.html"/>
<xmpp:version>1.1</xmpp:version> <xmpp:version>1.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>partial</xmpp:status>
<xmpp:note>ejabberd_piefxis</xmpp:note> <xmpp:note>ejabberd_piefxis</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0231.html"/>
<xmpp:version>1.0</xmpp:version>
<xmpp:since>2.1.0</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>ejabberd_captcha</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/>
<xmpp:version>1.3</xmpp:version> <xmpp:version>1.3</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_roster</xmpp:note> <xmpp:note>mod_roster</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0243.html"/>
<xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0248.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0248.html"/>
<xmpp:version>0.2</xmpp:version> <xmpp:version>0.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_pubsub</xmpp:note> <xmpp:note>mod_pubsub</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -489,54 +534,54 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0249.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0249.html"/>
<xmpp:version>1.2</xmpp:version> <xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>0.5.0</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_muc</xmpp:note> <xmpp:note>mod_muc</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0270.html"/>
<xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0279.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0279.html"/>
<xmpp:version>0.2</xmpp:version> <xmpp:version>0.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>2.1.3</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_sic</xmpp:note> <xmpp:note>mod_sic</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/>
<xmpp:version>0.13.2</xmpp:version> <xmpp:version>1.0.1</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>13.06</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_carboncopy</xmpp:note> <xmpp:note>mod_carboncopy</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0288.html"/>
<xmpp:version>1.0.1</xmpp:version>
<xmpp:since>24.10</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_s2s_bidi</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0313.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0313.html"/>
<xmpp:version>0.6.1</xmpp:version> <xmpp:version>0.6.1</xmpp:version>
<xmpp:since>15.06</xmpp:since> <xmpp:since>15.06</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mam</xmpp:note> <xmpp:note>mod_mam</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0317.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0317.html"/>
<xmpp:version>0.1</xmpp:version> <xmpp:version>0.3.1</xmpp:version>
<xmpp:since>21.12</xmpp:since> <xmpp:since>21.12</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_muc_room, conversejs/prosody compatible</xmpp:note> <xmpp:note>mod_muc_room, 0.3.1 since 25.xx</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
@ -544,7 +589,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0328.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0328.html"/>
<xmpp:version>0.1</xmpp:version> <xmpp:version>0.1</xmpp:version>
<xmpp:since>19.09</xmpp:since> <xmpp:since>19.09</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_jidprep</xmpp:note> <xmpp:note>mod_jidprep</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -552,8 +597,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0334.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0334.html"/>
<xmpp:version>0.2</xmpp:version> <xmpp:version>0.2</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>16.01</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mam, mod_muc_log, mod_offline</xmpp:note> <xmpp:note>mod_mam, mod_muc_log, mod_offline</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -562,7 +607,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/>
<xmpp:version>0.1</xmpp:version> <xmpp:version>0.1</xmpp:version>
<xmpp:since>14.12</xmpp:since> <xmpp:since>14.12</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_client_state</xmpp:note> <xmpp:note>mod_client_state</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -571,16 +616,16 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0355.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0355.html"/>
<xmpp:version>0.4.1</xmpp:version> <xmpp:version>0.4.1</xmpp:version>
<xmpp:since>16.09</xmpp:since> <xmpp:since>16.09</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_delegation</xmpp:note> <xmpp:note>mod_delegation</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0356.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0356.html"/>
<xmpp:version>0.2.1</xmpp:version> <xmpp:version>0.4.1</xmpp:version>
<xmpp:since>16.09</xmpp:since> <xmpp:since>24.10</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_privilege</xmpp:note> <xmpp:note>mod_privilege</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -589,7 +634,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0357.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0357.html"/>
<xmpp:version>0.2</xmpp:version> <xmpp:version>0.2</xmpp:version>
<xmpp:since>17.08</xmpp:since> <xmpp:since>17.08</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_push</xmpp:note> <xmpp:note>mod_push</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -597,17 +642,17 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0359.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0359.html"/>
<xmpp:version>0.5.0</xmpp:version> <xmpp:version>0.5.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>15.09</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mam</xmpp:note> <xmpp:note>mod_mam</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/>
<xmpp:version>0.2</xmpp:version> <xmpp:version>0.3.0</xmpp:version>
<xmpp:since>15.10</xmpp:since> <xmpp:since>15.10</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_http_upload</xmpp:note> <xmpp:note>mod_http_upload</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -615,8 +660,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/>
<xmpp:version>1.1.0</xmpp:version> <xmpp:version>1.1.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>17.09</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -625,16 +670,25 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0369.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0369.html"/>
<xmpp:version>0.14.1</xmpp:version> <xmpp:version>0.14.1</xmpp:version>
<xmpp:since>16.03</xmpp:since> <xmpp:since>16.03</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mix</xmpp:note> <xmpp:note>mod_mix</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html"/>
<xmpp:version>0.8.3</xmpp:version>
<xmpp:since>21.12</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>node_pep</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0386.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0386.html"/>
<xmpp:version>0.3.0</xmpp:version> <xmpp:version>0.3.0</xmpp:version>
<xmpp:since>24.02</xmpp:since> <xmpp:since>24.02</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -643,7 +697,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0388.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0388.html"/>
<xmpp:version>0.4.0</xmpp:version> <xmpp:version>0.4.0</xmpp:version>
<xmpp:since>24.02</xmpp:since> <xmpp:since>24.02</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -652,7 +706,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0398.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0398.html"/>
<xmpp:version>0.2.0</xmpp:version> <xmpp:version>0.2.0</xmpp:version>
<xmpp:since>18.03</xmpp:since> <xmpp:since>18.03</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_avatar</xmpp:note> <xmpp:note>mod_avatar</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -661,7 +715,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0402.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0402.html"/>
<xmpp:version>1.1.3</xmpp:version> <xmpp:version>1.1.3</xmpp:version>
<xmpp:since>23.10</xmpp:since> <xmpp:since>23.10</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_private</xmpp:note> <xmpp:note>mod_private</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -669,8 +723,8 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0405.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0405.html"/>
<xmpp:version>0.3.0</xmpp:version> <xmpp:version>0.3.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>19.02</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mix_pam</xmpp:note> <xmpp:note>mod_mix_pam</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -679,7 +733,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0410.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0410.html"/>
<xmpp:version>1.1.0</xmpp:version> <xmpp:version>1.1.0</xmpp:version>
<xmpp:since>18.12</xmpp:since> <xmpp:since>18.12</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_muc_room</xmpp:note> <xmpp:note>mod_muc_room</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -688,7 +742,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0411.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0411.html"/>
<xmpp:version>0.2.0</xmpp:version> <xmpp:version>0.2.0</xmpp:version>
<xmpp:since>18.12</xmpp:since> <xmpp:since>18.12</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_private</xmpp:note> <xmpp:note>mod_private</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -697,25 +751,34 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0421.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0421.html"/>
<xmpp:version>0.1.0</xmpp:version> <xmpp:version>0.1.0</xmpp:version>
<xmpp:since>23.10</xmpp:since> <xmpp:since>23.10</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_muc_occupantid</xmpp:note> <xmpp:note>mod_muc_occupantid</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0424.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0424.html"/>
<xmpp:version>0.4.0</xmpp:version> <xmpp:version>0.4.2</xmpp:version>
<xmpp:since>24.02</xmpp:since> <xmpp:since>24.02</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>partial</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note>mod_mam, Tombstones not implemented</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0425.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0425.html"/>
<xmpp:version>0.2.1</xmpp:version> <xmpp:version>0.3.0</xmpp:version>
<xmpp:since>23.04</xmpp:since> <xmpp:since>24.06</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mam</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0431.html"/>
<xmpp:version>0.2.0</xmpp:version>
<xmpp:since>24.12</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mam</xmpp:note> <xmpp:note>mod_mam</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -724,7 +787,7 @@
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0440.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0440.html"/>
<xmpp:version>0.4.0</xmpp:version> <xmpp:version>0.4.0</xmpp:version>
<xmpp:since>24.02</xmpp:since> <xmpp:since>24.02</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note></xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
@ -732,18 +795,54 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0441.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0441.html"/>
<xmpp:version>0.2.0</xmpp:version> <xmpp:version>0.2.0</xmpp:version>
<xmpp:since></xmpp:since> <xmpp:since>15.06</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note>mod_mam</xmpp:note> <xmpp:note>mod_mam</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
<implements> <implements>
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0474.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0474.html"/>
<xmpp:version>0.3.0</xmpp:version> <xmpp:version>0.4.0</xmpp:version>
<xmpp:since>24.02</xmpp:since> <xmpp:since>24.02</xmpp:since>
<xmpp:status></xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:note></xmpp:note> <xmpp:note>, 0.4.0 since 25.03</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0480.html"/>
<xmpp:version>0.2.0</xmpp:version>
<xmpp:since>24.10</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_scram_upgrade</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0484.html"/>
<xmpp:version>0.2.0</xmpp:version>
<xmpp:since>24.12</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_auth_fast</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0485.html"/>
<xmpp:version>0.1.1</xmpp:version>
<xmpp:since>25.07</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_pubsub_serverinfo</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0486.html"/>
<xmpp:version>0.1.0</xmpp:version>
<xmpp:since>24.07</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_muc</xmpp:note>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>
</Project> </Project>

View file

@ -9,7 +9,6 @@ Group=@installuser@
LimitNOFILE=65536 LimitNOFILE=65536
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
WatchdogSec=30
ExecStart=@ctlscriptpath@/ejabberdctl foreground ExecStart=@ctlscriptpath@/ejabberdctl foreground
ExecStop=/bin/sh -c '@ctlscriptpath@/ejabberdctl stop && @ctlscriptpath@/ejabberdctl stopped' ExecStop=/bin/sh -c '@ctlscriptpath@/ejabberdctl stop && @ctlscriptpath@/ejabberdctl stopped'
ExecReload=@ctlscriptpath@/ejabberdctl reload_config ExecReload=@ctlscriptpath@/ejabberdctl reload_config

View file

@ -67,7 +67,7 @@ listen:
/admin: ejabberd_web_admin /admin: ejabberd_web_admin
/.well-known/acme-challenge: ejabberd_acme /.well-known/acme-challenge: ejabberd_acme
- -
port: 3478 port: 5478
ip: "::" ip: "::"
transport: udp transport: udp
module: ejabberd_stun module: ejabberd_stun
@ -111,11 +111,19 @@ access_rules:
api_permissions: api_permissions:
"console commands": "console commands":
from: from: ejabberd_ctl
- ejabberd_ctl
who: all who: all
what: "*" what: "*"
"admin access": "webadmin commands":
from: ejabberd_web_admin
who: admin
what: "*"
"adhoc commands":
from: mod_adhoc_api
who: admin
what: "*"
"http access":
from: mod_http_api
who: who:
access: access:
allow: allow:
@ -156,6 +164,7 @@ shaper_rules:
modules: modules:
mod_adhoc: {} mod_adhoc: {}
mod_adhoc_api: {}
mod_admin_extra: {} mod_admin_extra: {}
mod_announce: mod_announce:
access: announce access: announce
@ -170,7 +179,7 @@ modules:
mod_fail2ban: {} mod_fail2ban: {}
mod_http_api: {} mod_http_api: {}
mod_http_upload: mod_http_upload:
put_url: https://@HOST@:5443/upload put_url: https://@HOST_URL_ENCODE@:5443/upload
custom_headers: custom_headers:
"Access-Control-Allow-Origin": "https://@HOST@" "Access-Control-Allow-Origin": "https://@HOST@"
"Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS" "Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
@ -196,6 +205,7 @@ modules:
default_room_options: default_room_options:
mam: true mam: true
mod_muc_admin: {} mod_muc_admin: {}
mod_muc_occupantid: {}
mod_offline: mod_offline:
access_max_user_messages: max_user_offline_messages access_max_user_messages: max_user_offline_messages
mod_ping: {} mod_ping: {}
@ -224,6 +234,7 @@ modules:
ip_access: trusted_network ip_access: trusted_network
mod_roster: mod_roster:
versioning: true versioning: true
mod_s2s_bidi: {}
mod_s2s_dialback: {} mod_s2s_dialback: {}
mod_shared_roster: {} mod_shared_roster: {}
mod_stream_mgmt: mod_stream_mgmt:

View file

@ -198,6 +198,17 @@
# #
#CONTRIB_MODULES_CONF_DIR=/etc/ejabberd/modules #CONTRIB_MODULES_CONF_DIR=/etc/ejabberd/modules
#.
#' CTL_OVER_HTTP: Path to ejabberdctl HTTP listener socket
#
# To speedup ejabberdctl execution time for ejabberd commands,
# you can setup an ejabberd_http listener with ejabberd_ctl handling requests,
# listening in a unix domain socket.
#
# Default: disabled
#
#CTL_OVER_HTTP=sockets/ctl_over_http.sock
#. #.
#' #'
# vim: foldmarker=#',#. foldmethod=marker: # vim: foldmarker=#',#. foldmethod=marker:

View file

@ -66,10 +66,15 @@ done
# shellcheck source=ejabberdctl.cfg.example # shellcheck source=ejabberdctl.cfg.example
[ -f "$EJABBERDCTL_CONFIG_PATH" ] && . "$EJABBERDCTL_CONFIG_PATH" [ -f "$EJABBERDCTL_CONFIG_PATH" ] && . "$EJABBERDCTL_CONFIG_PATH"
[ -n "$ERLANG_NODE_ARG" ] && ERLANG_NODE="$ERLANG_NODE_ARG" [ -n "$ERLANG_NODE_ARG" ] && ERLANG_NODE="$ERLANG_NODE_ARG"
[ "$ERLANG_NODE" = "${ERLANG_NODE%@*}" ] && ERLANG_NODE="$ERLANG_NODE@$(hostname -s)"
[ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && S="-s" [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && S="-s"
: "${SPOOL_DIR:="{{spool_dir}}"}" : "${SPOOL_DIR:="{{spool_dir}}"}"
: "${EJABBERD_LOG_PATH:="$LOGS_DIR/ejabberd.log"}" : "${EJABBERD_LOG_PATH:="$LOGS_DIR/ejabberd.log"}"
# backward support for old mnesia spool dir path
: "${SPOOL_DIR_OLD:="$SPOOL_DIR/$ERLANG_NODE"}"
[ -r "$SPOOL_DIR_OLD/schema.DAT" ] && [ ! -r "$SPOOL_DIR/schema.DAT" ] && SPOOL_DIR="$SPOOL_DIR_OLD"
# define erl parameters # define erl parameters
ERLANG_OPTS="+K $POLL +P $ERL_PROCESSES $ERL_OPTIONS" ERLANG_OPTS="+K $POLL +P $ERL_PROCESSES $ERL_OPTIONS"
if [ -n "$FIREWALL_WINDOW" ] ; then if [ -n "$FIREWALL_WINDOW" ] ; then
@ -78,6 +83,9 @@ fi
if [ -n "$INET_DIST_INTERFACE" ] ; then if [ -n "$INET_DIST_INTERFACE" ] ; then
INET_DIST_INTERFACE2=$("$ERL" $ERLANG_OPTS -noshell -eval 'case inet:parse_address("'$INET_DIST_INTERFACE'") of {ok,IP} -> io:format("~p",[IP]); _ -> ok end.' -s erlang halt) INET_DIST_INTERFACE2=$("$ERL" $ERLANG_OPTS -noshell -eval 'case inet:parse_address("'$INET_DIST_INTERFACE'") of {ok,IP} -> io:format("~p",[IP]); _ -> ok end.' -s erlang halt)
if [ -n "$INET_DIST_INTERFACE2" ] ; then if [ -n "$INET_DIST_INTERFACE2" ] ; then
if [ "$(echo "$INET_DIST_INTERFACE2" | grep -o "," | wc -l)" -eq 7 ] ; then
INET_DIST_INTERFACE2="$INET_DIST_INTERFACE2 -proto_dist inet6_tcp"
fi
ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_use_interface $INET_DIST_INTERFACE2" ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_use_interface $INET_DIST_INTERFACE2"
fi fi
fi fi
@ -175,7 +183,9 @@ livewarning()
echo "Please be extremely cautious with your actions," echo "Please be extremely cautious with your actions,"
echo "and exit immediately if you are not completely sure." echo "and exit immediately if you are not completely sure."
echo "" echo ""
echo "To exit and detach this shell from ejabberd, press:" echo "To stop ejabberd gracefully:"
echo " ejabberd:stop()."
echo "To quit erlang immediately, press:"
echo " control+g and then q" echo " control+g and then q"
echo "" echo ""
echo "--------------------------------------------------------------------" echo "--------------------------------------------------------------------"
@ -249,7 +259,7 @@ help()
# dynamic node name helper # dynamic node name helper
uid() { uid() {
ERTSVERSION="$("$ERL" -version 2>&1 | sed 's|.*\([0-9][0-9]\).*|\1|g')" ERTSVERSION="$("$ERL" -version 2>&1 | sed 's|.* \([0-9]*[0-9]\).*|\1|g')"
if [ $ERTSVERSION -lt 11 ] ; then # otp 23.0 includes erts 11.0 if [ $ERTSVERSION -lt 11 ] ; then # otp 23.0 includes erts 11.0
# Erlang/OTP lower than 23, which doesn's support dynamic node code # Erlang/OTP lower than 23, which doesn's support dynamic node code
N=1 N=1
@ -270,7 +280,11 @@ uid() {
else else
# Erlang/OTP 23 or higher: use native dynamic node code # Erlang/OTP 23 or higher: use native dynamic node code
# https://www.erlang.org/patches/otp-23.0#OTP-13812 # https://www.erlang.org/patches/otp-23.0#OTP-13812
echo undefined if [ "$ERLANG_NODE" != "${ERLANG_NODE%.*}" ]; then
echo "undefined@${ERLANG_NODE#*@}"
else
echo "undefined"
fi
fi fi
} }
@ -304,6 +318,13 @@ check_start()
# allow sync calls # allow sync calls
wait_status() wait_status()
{ {
wait_status_node "$ERLANG_NODE" $1 $2 $3
}
wait_status_node()
{
CONNECT_NODE=$1
shift
# args: status try delay # args: status try delay
# return: 0 OK, 1 KO # return: 0 OK, 1 KO
timeout="$2" timeout="$2"
@ -315,15 +336,70 @@ wait_status()
status="$1" status="$1"
else else
exec_erl "$(uid ctl)" -hidden -noinput \ exec_erl "$(uid ctl)" -hidden -noinput \
-eval 'net_kernel:connect_node('"'$ERLANG_NODE'"')' \ -eval 'net_kernel:connect_node('"'$CONNECT_NODE'"')' \
-s ejabberd_ctl \ -s ejabberd_ctl \
-extra "$ERLANG_NODE" $NO_TIMEOUT status > /dev/null -extra "$CONNECT_NODE" $NO_TIMEOUT status > /dev/null
status="$?" status="$?"
fi fi
done done
[ $timeout -gt 0 ] [ $timeout -gt 0 ]
} }
exec_other_command()
{
exec_other_command_node $ERLANG_NODE "$@"
}
exec_other_command_node()
{
CONNECT_NODE=$1
shift
if [ -z "$CTL_OVER_HTTP" ] || [ ! -S "$CTL_OVER_HTTP" ] \
|| [ ! -x "$(command -v curl)" ] || [ -z "$1" ] || [ "$1" = "help" ] \
|| [ "$1" = "mnesia_info_ctl" ]|| [ "$1" = "print_sql_schema" ] ; then
exec_erl "$(uid ctl)" -hidden -noinput \
-eval 'net_kernel:connect_node('"'$CONNECT_NODE'"')' \
-s ejabberd_ctl \
-extra "$CONNECT_NODE" $NO_TIMEOUT "$@"
result=$?
case $result in
3) help;;
*) :;;
esac
return $result
else
exec_ctl_over_http_socket "$@"
fi
}
exec_ctl_over_http_socket()
{
COMMAND=${1}
CARGS=""
while [ $# -gt 0 ]; do
[ -z "$CARGS" ] && CARGS="[" || CARGS="${CARGS}, "
CARGS="${CARGS}\"$1\""
shift
done
CARGS="${CARGS}]"
TEMPHEADERS=temp-headers.log
curl \
--unix-socket ${CTL_OVER_HTTP} \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "${CARGS}" \
--dump-header ${TEMPHEADERS} \
--no-progress-meter \
"http://localhost/ctl/${COMMAND}"
result=$(sed -n 's/.*status-code: \([0-9]*\).*/\1/p' < $TEMPHEADERS)
rm ${TEMPHEADERS}
case $result in
2|3) exec_other_command help ${COMMAND};;
*) :;;
esac
exit $result
}
# ensure we can change current directory to SPOOL_DIR # ensure we can change current directory to SPOOL_DIR
[ -d "$SPOOL_DIR" ] || exec_cmd mkdir -p "$SPOOL_DIR" [ -d "$SPOOL_DIR" ] || exec_cmd mkdir -p "$SPOOL_DIR"
cd "$SPOOL_DIR" || { cd "$SPOOL_DIR" || {
@ -331,6 +407,103 @@ cd "$SPOOL_DIR" || {
exit 6 exit 6
} }
printe()
{
printf "\n"
printf "\e[1;40;32m==> %s\e[0m\n" "$1"
}
## Function copied from tools/make-installers
user_agrees()
{
question="$*"
if [ -t 0 ]
then
printe "$question (y/n) [n]"
read -r response
case "$response" in
[Yy]|[Yy][Ee][Ss])
return 0
;;
[Nn]|[Nn][Oo]|'')
return 1
;;
*)
echo 'Please respond with "yes" or "no".'
user_agrees "$question"
;;
esac
else # Assume 'yes' if not running interactively.
return 0
fi
}
mnesia_change()
{
ERLANG_NODE_OLD="$1"
[ "$ERLANG_NODE_OLD" = "" ] \
&& echo "Error: Please provide the old erlang node name, for example:" \
&& echo " ejabberdctl mnesia_change ejabberd@oldmachine" \
&& exit 1
SPOOL_DIR_BACKUP=$SPOOL_DIR/$ERLANG_NODE_OLD-backup/
OLDFILE=$SPOOL_DIR_BACKUP/$ERLANG_NODE_OLD.backup
NEWFILE=$SPOOL_DIR_BACKUP/$ERLANG_NODE.backup
printe "This changes your mnesia database from node name '$ERLANG_NODE_OLD' to '$ERLANG_NODE'"
[ -d "$SPOOL_DIR_BACKUP" ] && printe "WARNING! A backup of old node already exists in $SPOOL_DIR_BACKUP"
if ! user_agrees "Do you want to proceed?"
then
echo 'Operation aborted.'
exit 1
fi
printe "Starting ejabberd with old node name $ERLANG_NODE_OLD ..."
exec_erl "$ERLANG_NODE_OLD" $EJABBERD_OPTS -detached
wait_status_node $ERLANG_NODE_OLD 0 30 2
result=$?
case $result in
1) echo "There was a problem starting ejabberd with the old erlang node name. " \
&& echo "Check for log errors in $EJABBERD_LOG_PATH" \
&& exit $result;;
*) :;;
esac
exec_other_command_node $ERLANG_NODE_OLD "status"
printe "Making backup of old database to file $OLDFILE ..."
mkdir $SPOOL_DIR_BACKUP
exec_other_command_node $ERLANG_NODE_OLD backup "$OLDFILE"
printe "Changing node name in new backup file $NEWFILE ..."
exec_other_command_node $ERLANG_NODE_OLD mnesia_change_nodename "$ERLANG_NODE_OLD" "$ERLANG_NODE" "$OLDFILE" "$NEWFILE"
printe "Stopping old ejabberd..."
exec_other_command_node $ERLANG_NODE_OLD "stop"
wait_status_node $ERLANG_NODE_OLD 3 30 2 && stop_epmd
printe "Moving old mnesia spool files to backup subdirectory $SPOOL_DIR_BACKUP ..."
mv $SPOOL_DIR/*.DAT $SPOOL_DIR_BACKUP
mv $SPOOL_DIR/*.DCD $SPOOL_DIR_BACKUP
mv $SPOOL_DIR/*.LOG $SPOOL_DIR_BACKUP
printe "Starting ejabberd with new node name $ERLANG_NODE ..."
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS -detached
wait_status 0 30 2
exec_other_command "status"
printe "Installing fallback of new mnesia..."
exec_other_command install_fallback "$NEWFILE"
printe "Stopping new ejabberd..."
exec_other_command "stop"
wait_status 3 30 2 && stop_epmd
printe "Finished, now you can start ejabberd normally"
}
# main # main
case $1 in case $1 in
start) start)
@ -380,7 +553,8 @@ case $1 in
-noinput -hidden \ -noinput -hidden \
-eval 'net_kernel:connect_node('"'$PEER'"')' \ -eval 'net_kernel:connect_node('"'$PEER'"')' \
-eval 'io:format("~p~n",[net_adm:ping('"'$PEER'"')])' \ -eval 'io:format("~p~n",[net_adm:ping('"'$PEER'"')])' \
-s erlang halt -output text -eval 'halt(case net_adm:ping('"'$PEER'"') of pong -> 0; pang -> 1 end).' \
-output text
;; ;;
started) started)
set_dist_client set_dist_client
@ -390,17 +564,11 @@ case $1 in
set_dist_client set_dist_client
wait_status 3 30 2 && stop_epmd # wait 30x2s before timeout wait_status 3 30 2 && stop_epmd # wait 30x2s before timeout
;; ;;
mnesia_change)
mnesia_change $2
;;
*) *)
set_dist_client set_dist_client
exec_erl "$(uid ctl)" -hidden -noinput \ exec_other_command "$@"
-eval 'net_kernel:connect_node('"'$ERLANG_NODE'"')' \
-s ejabberd_ctl \
-extra "$ERLANG_NODE" $NO_TIMEOUT "$@"
result=$?
case $result in
2|3) help;;
*) :;;
esac
exit $result
;; ;;
esac esac

View file

@ -5,38 +5,55 @@
{config, {config,
[#{dirs => ["src"], [#{dirs => ["src"],
filter => "*.erl", filter => "*.erl",
ignore => ['ELDAPv3', eldap_filter_yecc],
ruleset => erl_files, ruleset => erl_files,
rules => [{elvis_style, line_length, #{limit => 100, rules => [{elvis_text_style, line_length, #{limit => 1000, skip_comments => false}},
skip_comments => false}},
{elvis_text_style, no_tabs, disable}, {elvis_text_style, no_tabs, disable},
{elvis_style, no_debug_call, disable}, {elvis_style, atom_naming_convention, disable},
{elvis_style, operator_spaces, disable}, {elvis_style, consistent_variable_casing, disable},
{elvis_style, dont_repeat_yourself, #{min_complexity => 70}},
{elvis_style, export_used_types, disable},
{elvis_style, function_naming_convention, disable},
{elvis_style, god_modules, #{limit => 300}},
{elvis_style, invalid_dynamic_call, disable}, {elvis_style, invalid_dynamic_call, disable},
{elvis_style, variable_naming_convention, #{ regex => ".*" }}, {elvis_style, macro_names, disable},
{elvis_style, dont_repeat_yourself, #{min_complexity => 20}} {elvis_style, max_function_arity, disable}, % #{max_arity => 15}},
{elvis_style, nesting_level, disable},
{elvis_style, no_author, disable},
{elvis_style, no_boolean_in_comparison, disable},
{elvis_style, no_catch_expressions, disable},
{elvis_style, no_debug_call, disable},
{elvis_style, no_if_expression, disable},
{elvis_style, no_import, disable},
{elvis_style, no_nested_try_catch, disable},
{elvis_style, no_operation_on_same_value, disable},
{elvis_style, no_receive_without_timeout, disable},
{elvis_style, no_single_clause_case, disable},
{elvis_style, no_spec_with_records, disable},
{elvis_style, no_throw, disable},
{elvis_style, operator_spaces, disable},
{elvis_style, param_pattern_matching, disable},
{elvis_style, private_data_types, disable},
{elvis_style, variable_naming_convention, disable}
] ]
}, },
%#{dirs => ["include"],
% filter => "*.hrl",
% ruleset => hrl_files},
#{dirs => ["."], #{dirs => ["."],
filter => "Makefile.in", filter => "Makefile.in",
ruleset => makefiles, ruleset => makefiles,
rules => [{elvis_style, line_length, #{limit => 100, rules => [{elvis_text_style, line_length, #{limit => 400,
skip_comments => false}}, skip_comments => false}},
{elvis_style, no_tabs, disable},
{elvis_style, dont_repeat_yourself, #{min_complexity => 20}} {elvis_style, dont_repeat_yourself, #{min_complexity => 20}}
] ]
},
#{dirs => ["."],
filter => "rebar.config",
ruleset => rebar_config,
rules => [{elvis_style, line_length, #{limit => 100,
skip_comments => false}},
{elvis_style, no_tabs, disable},
{elvis_style, dont_repeat_yourself, #{min_complexity => 20}}
]
}
} }
] ]
} }
] ]
} }
]. ].
%% vim: set filetype=erlang tabstop=8:

View file

@ -1,5 +1,5 @@
otp_path: "/usr/lib/erlang" #otp_path: "/usr/lib/erlang"
plt_path: "_build/default/rebar3_24.3.3_plt" #plt_path: "_build/default/rebar3_24.3.3_plt"
#code_reload: #code_reload:
# node: ejabberd@localhost # node: ejabberd@localhost
apps_dirs: apps_dirs:
@ -14,12 +14,12 @@ macros:
- name: DEPRECATED_GET_STACKTRACE - name: DEPRECATED_GET_STACKTRACE
- name: HAVE_ERL_ERROR - name: HAVE_ERL_ERROR
- name: HAVE_URI_STRING - name: HAVE_URI_STRING
- name: OTP_BELOW_25 - name: OTP_BELOW_27
- name: SIP - name: SIP
- name: STUN - name: STUN
diagnostics: diagnostics:
# enabled: enabled:
# - crossref - crossref
disabled: disabled:
# - dialyzer # - dialyzer
- unused_includes # Otherwise it complains about unused logger.hrl - unused_includes # Otherwise it complains about unused logger.hrl

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -18,5 +18,5 @@
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
-record(passwd, {us = {<<"">>, <<"">>} :: {binary(), binary()} | '$1', -record(passwd, {us = {<<"">>, <<"">>} :: {binary(), binary()} | {binary(), binary(), atom()} | '$1',
password = <<"">> :: binary() | scram() | '_'}). password = <<"">> :: binary() | scram() | '_'}).

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -19,13 +19,30 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
-type aterm() :: {atom(), atype()}. -type aterm() :: {atom(), atype()}.
-type atype() :: integer | string | binary | -type atype() :: integer | string | binary | any | atom |
{tuple, [aterm()]} | {list, aterm()}. {tuple, [aterm()]} | {list, aterm()}.
-type rterm() :: {atom(), rtype()}. -type rterm() :: {atom(), rtype()}.
-type rtype() :: integer | string | atom | -type rtype() :: integer | string | atom | any |
{tuple, [rterm()]} | {list, rterm()} | {tuple, [rterm()]} | {list, rterm()} |
rescode | restuple. rescode | restuple.
%% The 'any' and 'atom' argument types and 'any' result type
%% should only be used %% by commands with tag 'internal',
%% which are meant to be used only internally in ejabberd,
%% and not called using external frontends.
%% The purpose of a command can either be:
%% - informative: its purpose is to obtain information
%% - modifier: its purpose is to produce some change in the server
%%
%% A modifier command should be designed just to produce its desired side-effect,
%% and its result term should just be success or failure: rescode or restuple.
%%
%% ejabberd_web_admin:make_command/2 considers that commands
%% with result type different than rescode or restuple
%% are commands that can be safely executed automatically
%% to get information and build the web page.
-type oauth_scope() :: atom(). -type oauth_scope() :: atom().
%% ejabberd_commands OAuth ReST ACL definition: %% ejabberd_commands OAuth ReST ACL definition:

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -62,6 +62,11 @@
[{<<"type">>, Type}, {<<"name">>, Name}, [{<<"type">>, Type}, {<<"name">>, Name},
{<<"value">>, Value}])). {<<"value">>, Value}])).
-define(INPUTPH(Type, Name, Value, PlaceHolder),
?XA(<<"input">>,
[{<<"type">>, Type}, {<<"name">>, Name},
{<<"value">>, Value}, {<<"placeholder">>, PlaceHolder}])).
-define(INPUTT(Type, Name, Value), -define(INPUTT(Type, Name, Value),
?INPUT(Type, Name, (translate:translate(Lang, Value)))). ?INPUT(Type, Name, (translate:translate(Lang, Value)))).
@ -95,16 +100,27 @@
-define(XRES(Text), -define(XRES(Text),
?XAC(<<"p">>, [{<<"class">>, <<"result">>}], Text)). ?XAC(<<"p">>, [{<<"class">>, <<"result">>}], Text)).
-define(DIVRES(Elements),
?XAE(<<"div">>, [{<<"class">>, <<"result">>}], Elements)).
%% Guide Link %% Guide Link
-define(XREST(Text), ?XRES((translate:translate(Lang, Text)))). -define(XREST(Text), ?XRES((translate:translate(Lang, Text)))).
-define(GL(Ref, Title), -define(GL(Ref, Title),
?XAE(<<"div">>, [{<<"class">>, <<"guidelink">>}], ?XAE(<<"div">>, [{<<"class">>, <<"guidelink">>}],
[?XAE(<<"a">>, [?XAE(<<"a">>,
[{<<"href">>, <<"https://docs.ejabberd.im/admin/configuration/", Ref/binary>>}, [{<<"href">>, <<"https://docs.ejabberd.im/", Ref/binary>>},
{<<"target">>, <<"_blank">>}], {<<"target">>, <<"_blank">>}],
[?C(<<"docs: ", Title/binary>>)])])). [?C(<<"docs: ", Title/binary>>)])])).
%% h1 with a Guide Link %% h1 with a Guide Link
-define(H1GL(Name, Ref, Title), -define(H1GLraw(Name, Ref, Title),
[?XC(<<"h1">>, Name), ?GL(Ref, Title)]). [?XC(<<"h1">>, Name), ?GL(Ref, Title), ?BR, ?BR]).
-define(H1GL(Name, RefConf, Title),
?H1GLraw(Name, <<"admin/configuration/", RefConf/binary>>, Title)).
-define(ANCHORL(Ref),
?XAE(<<"div">>, [{<<"class">>, <<"anchorlink">>}],
[?XAE(<<"a">>,
[{<<"href">>, <<"#", Ref/binary>>}],
[?C(unicode:characters_to_binary(""))])])).

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -39,20 +39,46 @@
-else. -else.
-include_lib("kernel/include/logger.hrl"). -include_lib("kernel/include/logger.hrl").
-define(CLEAD, "\e[1"). % bold
-define(CMID, "\e[0"). % normal
-define(CCLEAN, "\e[0m"). % clean
-define(CDEFAULT, ";49;95m"). % light magenta
-define(CDEBUG, ";49;90m"). % dark gray
-define(CINFO, ";49;92m"). % green
-define(CWARNING, ";49;93m"). % light yellow
-define(CERROR, ";49;91m"). % light magenta
-define(CCRITICAL,";49;31m"). % light red
-define(DEBUG(Format, Args), -define(DEBUG(Format, Args),
begin ?LOG_DEBUG(Format, Args), ok end). begin ?LOG_DEBUG(Format, Args,
#{clevel => ?CLEAD ++ ?CDEBUG,
ctext => ?CMID ++ ?CDEBUG}),
ok end).
-define(INFO_MSG(Format, Args), -define(INFO_MSG(Format, Args),
begin ?LOG_INFO(Format, Args), ok end). begin ?LOG_INFO(Format, Args,
#{clevel => ?CLEAD ++ ?CINFO,
ctext => ?CCLEAN}),
ok end).
-define(WARNING_MSG(Format, Args), -define(WARNING_MSG(Format, Args),
begin ?LOG_WARNING(Format, Args), ok end). begin ?LOG_WARNING(Format, Args,
#{clevel => ?CLEAD ++ ?CWARNING,
ctext => ?CMID ++ ?CWARNING}),
ok end).
-define(ERROR_MSG(Format, Args), -define(ERROR_MSG(Format, Args),
begin ?LOG_ERROR(Format, Args), ok end). begin ?LOG_ERROR(Format, Args,
#{clevel => ?CLEAD ++ ?CERROR,
ctext => ?CMID ++ ?CERROR}),
ok end).
-define(CRITICAL_MSG(Format, Args), -define(CRITICAL_MSG(Format, Args),
begin ?LOG_CRITICAL(Format, Args), ok end). begin ?LOG_CRITICAL(Format, Args,
#{clevel => ?CLEAD++ ?CCRITICAL,
ctext => ?CMID ++ ?CCRITICAL}),
ok end).
-endif. -endif.
%% Use only when trying to troubleshoot test problem with ExUnit %% Use only when trying to troubleshoot test problem with ExUnit
@ -62,7 +88,5 @@
_ -> 'Elixir.Logger':bare_log(error, io_lib:format(Format, Args), [?MODULE]) _ -> 'Elixir.Logger':bare_log(error, io_lib:format(Format, Args), [?MODULE])
end). end).
-type re_mp() :: {re_pattern, _, _, _, _}. % Copied from re.erl
%% Uncomment if you want to debug p1_fsm/gen_fsm %% Uncomment if you want to debug p1_fsm/gen_fsm
%%-define(DBGFSM, true). %%-define(DBGFSM, true).

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -18,10 +18,19 @@
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
-ifdef(DEPRECATED_GET_STACKTRACE). -define(MODULE_ANTISPAM, mod_antispam).
-define(EX_RULE(Class, Reason, Stack), Class:Reason:Stack).
-define(EX_STACK(Stack), Stack). -type url() :: binary().
-else. -type filename() :: binary() | none | false.
-define(EX_RULE(Class, Reason, _), Class:Reason). -type jid_set() :: sets:set(ljid()).
-define(EX_STACK(_), erlang:get_stacktrace()). -type url_set() :: sets:set(url()).
-endif.
-define(DEFAULT_RTBL_DOMAINS_NODE, <<"spam_source_domains">>).
-record(rtbl_service,
{host = none :: binary() | none,
node = ?DEFAULT_RTBL_DOMAINS_NODE :: binary(),
subscribed = false :: boolean(),
retry_timer = undefined :: reference() | undefined}).
-type rtbl_service() :: #rtbl_service{}.

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -21,8 +21,16 @@
-record(room_version, -record(room_version,
{id :: binary(), {id :: binary(),
%% use the same field names as in Synapse %% use the same field names as in Synapse
enforce_key_validity :: boolean(),
special_case_aliases_auth :: boolean(),
strict_canonicaljson :: boolean(),
limit_notifications_power_levels :: boolean(),
knock_join_rule :: boolean(),
restricted_join_rule :: boolean(),
restricted_join_rule_fix :: boolean(),
knock_restricted_join_rule :: boolean(), knock_restricted_join_rule :: boolean(),
enforce_int_power_levels :: boolean(), enforce_int_power_levels :: boolean(),
implicit_room_creator :: boolean(), implicit_room_creator :: boolean(),
updated_redaction_rules :: boolean() updated_redaction_rules :: boolean(),
hydra :: boolean()
}). }).

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -44,7 +44,7 @@
allow_visitor_nickchange = true :: boolean(), allow_visitor_nickchange = true :: boolean(),
public = true :: boolean(), public = true :: boolean(),
public_list = true :: boolean(), public_list = true :: boolean(),
persistent = false :: boolean(), persistent = false :: boolean() | {destroying, boolean()},
moderated = true :: boolean(), moderated = true :: boolean(),
captcha_protected = false :: boolean(), captcha_protected = false :: boolean(),
members_by_default = true :: boolean(), members_by_default = true :: boolean(),
@ -126,7 +126,8 @@
history = #lqueue{} :: lqueue(), history = #lqueue{} :: lqueue(),
subject = [] :: [text()], subject = [] :: [text()],
subject_author = {<<"">>, #jid{}} :: {binary(), jid()}, subject_author = {<<"">>, #jid{}} :: {binary(), jid()},
hats_users = #{} :: map(), % FIXME on OTP 21+: #{ljid() => #{binary() => binary()}}, hats_defs = #{} :: #{binary() => {binary(), binary()}},
hats_users = #{} :: #{ljid() => [binary()]},
just_created = erlang:system_time(microsecond) :: true | integer(), just_created = erlang:system_time(microsecond) :: true | integer(),
activity = treap:empty() :: treap:treap(), activity = treap:empty() :: treap:treap(),
room_shaper = none :: ejabberd_shaper:shaper(), room_shaper = none :: ejabberd_shaper:shaper(),

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -2,7 +2,7 @@
%%% RFC 1928 constants. %%% RFC 1928 constants.
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,5 +1,5 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% ejabberd, Copyright (C) 2017-2024 ProcessOne %%% ejabberd, Copyright (C) 2017-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -1,6 +1,6 @@
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------
%%% @author Evgeny Khramtsov <ekhramtsov@process-one.net> %%% @author Evgeny Khramtsov <ekhramtsov@process-one.net>
%%% @copyright (C) 2002-2024 ProcessOne, SARL. All Rights Reserved. %%% @copyright (C) 2002-2025 ProcessOne, SARL. All Rights Reserved.
%%% %%%
%%% Licensed under the Apache License, Version 2.0 (the "License"); %%% Licensed under the Apache License, Version 2.0 (the "License");
%%% you may not use this file except in compliance with the License. %%% you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne %%% ejabberd, Copyright (C) 2002-2025 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as

View file

@ -41,7 +41,7 @@ defmodule Ejabberd.Config.Attr do
""" """
@spec validate([attr]) :: [{:ok, attr}] | [{:error, attr, atom()}] @spec validate([attr]) :: [{:ok, attr}] | [{:error, attr, atom()}]
def validate(attrs) when is_list(attrs), do: Enum.map(attrs, &valid_attr?/1) def validate(attrs) when is_list(attrs), do: Enum.map(attrs, &valid_attr?/1)
def validate(attr), do: validate([attr]) |> List.first def validate(attr), do: validate([attr])
@doc """ @doc """
Returns the type of an attribute, given its name. Returns the type of an attribute, given its name.

View file

@ -105,11 +105,8 @@ defmodule Ejabberd.Config do
Code.eval_file(file_path) |> extract_and_store_module_name() Code.eval_file(file_path) |> extract_and_store_module_name()
# Getting start/0 config # Getting start/0 config
Ejabberd.Config.Store.get(:module_name) [module] = Ejabberd.Config.Store.get(:module_name)
|> case do call_start_func_and_store_data(module)
nil -> IO.puts "[ ERR ] Configuration module not found."
[module] -> call_start_func_and_store_data(module)
end
# Fetching git modules and install them # Fetching git modules and install them
get_modules_parsed_in_order() get_modules_parsed_in_order()

View file

@ -13,7 +13,6 @@ defmodule Ejabberd.Config.EjabberdHook do
@doc """ @doc """
Register a hook to ejabberd. Register a hook to ejabberd.
""" """
@spec start(EjabberdHook.t) :: none
def start(%EjabberdHook{hook: hook, opts: opts, fun: fun}) do def start(%EjabberdHook{hook: hook, opts: opts, fun: fun}) do
host = Keyword.get(opts, :host, :global) host = Keyword.get(opts, :host, :global)
priority = Keyword.get(opts, :priority, 50) priority = Keyword.get(opts, :priority, 50)

View file

@ -7,12 +7,13 @@ defmodule Ejabberd.Config.EjabberdModule do
the already existing Elixir.Module. the already existing Elixir.Module.
""" """
@type t :: %{module: atom, attrs: [Attr.t]}
defstruct [:module, :attrs]
alias Ejabberd.Config.EjabberdModule alias Ejabberd.Config.EjabberdModule
alias Ejabberd.Config.Validation alias Ejabberd.Config.Validation
alias Ejabberd.Config.Attr
@type t :: %{module: atom, attrs: [Attr.attr]}
defstruct [:module, :attrs]
@doc """ @doc """
Given a list of modules / single module Given a list of modules / single module
@ -29,7 +30,6 @@ defmodule Ejabberd.Config.EjabberdModule do
a git attribute and tries to fetch the repo, a git attribute and tries to fetch the repo,
then, it install them through :ext_mod.install/1 then, it install them through :ext_mod.install/1
""" """
@spec fetch_git_repos([EjabberdModule.t]) :: none()
def fetch_git_repos(modules) do def fetch_git_repos(modules) do
modules modules
|> Enum.filter(&is_git_module?/1) |> Enum.filter(&is_git_module?/1)

View file

@ -14,15 +14,12 @@ defmodule Ejabberd.Config.OptsFormatter do
Look at how Config.get_ejabberd_opts/0 is constructed for Look at how Config.get_ejabberd_opts/0 is constructed for
more informations. more informations.
""" """
@spec format_opts_for_ejabberd([{atom(), any()}]) :: list() @spec format_opts_for_ejabberd(map) :: list()
def format_opts_for_ejabberd(opts) do def format_opts_for_ejabberd(opts) do
opts opts
|> format_attrs_for_ejabberd |> format_attrs_for_ejabberd
end end
defp format_attrs_for_ejabberd(opts) when is_list(opts),
do: (Enum.map opts, &format_attrs_for_ejabberd/1)
defp format_attrs_for_ejabberd({:listeners, mods}), defp format_attrs_for_ejabberd({:listeners, mods}),
do: {:listen, format_listeners_for_ejabberd(mods)} do: {:listen, format_listeners_for_ejabberd(mods)}
@ -32,6 +29,9 @@ defmodule Ejabberd.Config.OptsFormatter do
defp format_attrs_for_ejabberd({key, opts}) when is_atom(key), defp format_attrs_for_ejabberd({key, opts}) when is_atom(key),
do: {key, opts} do: {key, opts}
defp format_attrs_for_ejabberd(opts),
do: (Enum.map opts, &format_attrs_for_ejabberd/1)
defp format_mods_for_ejabberd(mods) do defp format_mods_for_ejabberd(mods) do
Enum.map mods, fn %EjabberdModule{module: mod, attrs: attrs} -> Enum.map mods, fn %EjabberdModule{module: mod, attrs: attrs} ->
{mod, attrs[:opts]} {mod, attrs[:opts]}

View file

@ -3,12 +3,12 @@ defmodule Ejabberd.Config.Validation do
Module used to validate a list of modules. Module used to validate a list of modules.
""" """
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
@type mod_validation_result :: {:ok, EjabberdModule.t} | {:error, EjabberdModule.t, map}
alias Ejabberd.Config.EjabberdModule alias Ejabberd.Config.EjabberdModule
alias Ejabberd.Config.Validator alias Ejabberd.Config.Validator
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
@type mod_validation_result :: {:ok, EjabberdModule.t} | {:error, EjabberdModule.t, map}
@doc """ @doc """
Given a module or a list of modules it runs validators on them Given a module or a list of modules it runs validators on them
and returns {:ok, mod} or {:error, mod, errors}, for each and returns {:ok, mod} or {:error, mod, errors}, for each

View file

@ -3,11 +3,12 @@ defmodule Ejabberd.Config.Validator.Attrs do
Validator module used to validate attributes. Validator module used to validate attributes.
""" """
# TODO: Duplicated from validator.ex !!!
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
import Ejabberd.Config.ValidatorUtility import Ejabberd.Config.ValidatorUtility
alias Ejabberd.Config.Attr alias Ejabberd.Config.Attr
alias Ejabberd.Config.EjabberdModule
# TODO: Duplicated from validator.ex !!!
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
@doc """ @doc """
Given a module (with the form used for validation) Given a module (with the form used for validation)
@ -17,9 +18,9 @@ defmodule Ejabberd.Config.Validator.Attrs do
@spec validate(mod_validation) :: mod_validation @spec validate(mod_validation) :: mod_validation
def validate({modules, mod, errors}) do def validate({modules, mod, errors}) do
errors = Enum.reduce mod.attrs, errors, fn(attr, err) -> errors = Enum.reduce mod.attrs, errors, fn(attr, err) ->
case Attr.validate(attr) do case Attr.validate([attr]) do
{:ok, _attr} -> err [{:ok, _attr}] -> err
{:error, attr, cause} -> put_error(err, :attribute, {attr, cause}) [{:error, attr, cause}] -> put_error(err, :attribute, {attr, cause})
end end
end end

View file

@ -4,6 +4,8 @@ defmodule Ejabberd.Config.Validator.Dependencies do
with the @dependency annotation. with the @dependency annotation.
""" """
alias Ejabberd.Config.EjabberdModule
# TODO: Duplicated from validator.ex !!! # TODO: Duplicated from validator.ex !!!
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map} @type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
import Ejabberd.Config.ValidatorUtility import Ejabberd.Config.ValidatorUtility

View file

@ -4,8 +4,6 @@ defmodule Ejabberd.Config.ValidatorUtility do
Imports utility functions for working with validation structures. Imports utility functions for working with validation structures.
""" """
alias Ejabberd.Config.EjabberdModule
@doc """ @doc """
Inserts an error inside the errors collection, for the given key. Inserts an error inside the errors collection, for the given key.
If the key doesn't exists then it creates an empty collection If the key doesn't exists then it creates an empty collection
@ -22,7 +20,6 @@ defmodule Ejabberd.Config.ValidatorUtility do
Given a list of modules it extracts and returns a list Given a list of modules it extracts and returns a list
of the module names (which are Elixir.Module). of the module names (which are Elixir.Module).
""" """
@spec extract_module_names(EjabberdModule.t) :: [atom]
def extract_module_names(modules) when is_list(modules) do def extract_module_names(modules) when is_list(modules) do
modules modules
|> Enum.map(&Map.get(&1, :module)) |> Enum.map(&Map.get(&1, :module))

View file

@ -7,7 +7,7 @@ defmodule Ejabberd.ConfigUtil do
@doc """ @doc """
Returns true when the config file is based on elixir. Returns true when the config file is based on elixir.
""" """
@spec is_elixir_config(list) :: boolean @spec is_elixir_config(binary) :: boolean
def is_elixir_config(filename) when is_list(filename) do def is_elixir_config(filename) when is_list(filename) do
is_elixir_config(to_string(filename)) is_elixir_config(to_string(filename))
end end

View file

@ -1,19 +0,0 @@
defmodule Ejabberd.Module do
defmacro __using__(opts) do
logger_enabled = Keyword.get(opts, :logger, true)
quote do
@behaviour :gen_mod
import Ejabberd.Module
unquote(if logger_enabled do
quote do: import Ejabberd.Logger
end)
end
end
# gen_mod callbacks
def depends(_host, _opts), do: []
def mod_opt_type(_), do: []
end

View file

@ -0,0 +1,44 @@
defmodule Ejabberd.Auth.Example do
@moduledoc """
Example ejabberd auth method written in Elixir.
This is an example to demonstrate the usage of Elixir to
create ejabberd auth methods.
Example configuration:
auth_method: 'Ejabberd.Auth.Example'
"""
@behaviour :ejabberd_auth
import Ejabberd.Logger
@impl true
def start(host) do
info("Starting Ejabberd.Auth.Example to authenticate '#{host}' users")
nil
end
@impl true
def stop(host) do
info("Stopping Ejabberd.Auth.Example to authenticate '#{host}' users")
nil
end
@impl true
def check_password("alice", _authz_id, _host, "secret"), do: {:nocache, true}
def check_password(_username, _authz_id, _host, _secret), do: {:nocache, false}
@impl true
def user_exists("alice", _host), do: {:nocache, true}
def user_exists(_username, _host), do: {:nocache, false}
@impl true
def plain_password_required(_binary), do: true
@impl true
def store_type(_host), do: :external
@impl true
def use_cache(_host), do: false
end

View file

@ -1,14 +1,27 @@
defmodule ModPresenceDemo do defmodule Ejabberd.Module.Example do
use Ejabberd.Module
@moduledoc """
Example ejabberd module written in Elixir.
This is an example to demonstrate the usage of Elixir to
create ejabberd modules.
Example configuration:
modules:
'Ejabberd.Module.Example': {}
"""
@behaviour :gen_mod
import Ejabberd.Logger
def start(host, _opts) do def start(host, _opts) do
info("Starting ejabberd module Presence Demo") info("Starting Ejabberd.Module.Example for host '#{host}'")
Ejabberd.Hooks.add(:set_presence_hook, host, __MODULE__, :on_presence, 50) Ejabberd.Hooks.add(:set_presence_hook, host, __MODULE__, :on_presence, 50)
:ok :ok
end end
def stop(host) do def stop(host) do
info("Stopping ejabberd module Presence Demo") info("Stopping Ejabberd.Module.Example for host '#{host}'")
Ejabberd.Hooks.delete(:set_presence_hook, host, __MODULE__, :on_presence, 50) Ejabberd.Hooks.delete(:set_presence_hook, host, __MODULE__, :on_presence, 50)
:ok :ok
end end

File diff suppressed because it is too large Load diff

77
mix.exs
View file

@ -16,6 +16,7 @@ defmodule Ejabberd.MixProject do
aliases: [test: "test --no-start"], aliases: [test: "test --no-start"],
start_permanent: Mix.env() == :prod, start_permanent: Mix.env() == :prod,
language: :erlang, language: :erlang,
dialyzer: dialyzer(),
releases: releases(), releases: releases(),
package: package(), package: package(),
docs: docs(), docs: docs(),
@ -42,16 +43,26 @@ defmodule Ejabberd.MixProject do
def application do def application do
[mod: {:ejabberd_app, []}, [mod: {:ejabberd_app, []},
applications: [:idna, :inets, :kernel, :sasl, :ssl, :stdlib, :mix, extra_applications: [:inets, :kernel, :sasl, :ssl, :stdlib, :syntax_tools,
:base64url, :fast_tls, :fast_xml, :fast_yaml, :jiffy, :jose, :logger, :mix]
:p1_utils, :stringprep, :syntax_tools, :yconf]
++ cond_apps(), ++ cond_apps(),
included_applications: [:mnesia, :os_mon, included_applications: [:mnesia, :os_mon,
:cache_tab, :eimp, :mqtree, :p1_acme, :cache_tab, :eimp, :mqtree, :p1_acme,
:p1_oauth2, :pkix, :xmpp] :p1_oauth2, :pkix]
++ cond_included_apps()] ++ cond_included_apps()]
end end
defp dialyzer do
[
plt_add_apps: [
:mnesia, :odbc, :os_mon, :stdlib,
:eredis, :luerl,
:cache_tab, :eimp, :epam, :esip, :ezlib, :mqtree,
:p1_acme, :p1_mysql, :p1_oauth2, :p1_pgsql, :pkix,
:sqlite3, :stun, :xmpp],
]
end
defp if_version_above(ver, okResult) do defp if_version_above(ver, okResult) do
if :erlang.system_info(:otp_release) > ver do if :erlang.system_info(:otp_release) > ver do
okResult okResult
@ -74,7 +85,6 @@ defmodule Ejabberd.MixProject do
result = [{:d, :ELIXIR_ENABLED}] ++ result = [{:d, :ELIXIR_ENABLED}] ++
cond_options() ++ cond_options() ++
Enum.map(includes, fn (path) -> {:i, path} end) ++ Enum.map(includes, fn (path) -> {:i, path} end) ++
if_version_above(~c"20", [{:d, :DEPRECATED_GET_STACKTRACE}]) ++
if_version_above(~c"20", [{:d, :HAVE_URI_STRING}]) ++ if_version_above(~c"20", [{:d, :HAVE_URI_STRING}]) ++
if_version_above(~c"20", [{:d, :HAVE_ERL_ERROR}]) ++ if_version_above(~c"20", [{:d, :HAVE_ERL_ERROR}]) ++
if_version_below(~c"21", [{:d, :USE_OLD_HTTP_URI}]) ++ if_version_below(~c"21", [{:d, :USE_OLD_HTTP_URI}]) ++
@ -85,7 +95,10 @@ defmodule Ejabberd.MixProject do
if_version_below(~c"24", [{:d, :COMPILER_REPORTS_ONLY_LINES}]) ++ if_version_below(~c"24", [{:d, :COMPILER_REPORTS_ONLY_LINES}]) ++
if_version_below(~c"24", [{:d, :SYSTOOLS_APP_DEF_WITHOUT_OPTIONAL}]) ++ if_version_below(~c"24", [{:d, :SYSTOOLS_APP_DEF_WITHOUT_OPTIONAL}]) ++
if_version_below(~c"24", [{:d, :OTP_BELOW_24}]) ++ if_version_below(~c"24", [{:d, :OTP_BELOW_24}]) ++
if_version_below(~c"25", [{:d, :OTP_BELOW_25}]) if_version_below(~c"25", [{:d, :OTP_BELOW_25}]) ++
if_version_below(~c"26", [{:d, :OTP_BELOW_26}]) ++
if_version_below(~c"27", [{:d, :OTP_BELOW_27}]) ++
if_version_below(~c"28", [{:d, :OTP_BELOW_28}])
defines = for {:d, value} <- result, do: {:d, value} defines = for {:d, value} <- result, do: {:d, value}
result ++ [{:d, :ALL_DEFS, defines}] result ++ [{:d, :ALL_DEFS, defines}]
end end
@ -102,24 +115,22 @@ defmodule Ejabberd.MixProject do
end end
defp deps do defp deps do
[{:base64url, "~> 1.0"}, [{:cache_tab, "~> 1.0"},
{:cache_tab, "~> 1.0"}, {:dialyxir, "~> 1.2", only: [:test], runtime: false},
{:eimp, "~> 1.0"}, {:eimp, "~> 1.0"},
{:ex_doc, "~> 0.31", only: [:dev, :edoc], runtime: false}, {:ex_doc, "~> 0.31", only: [:edoc], runtime: false},
{:fast_tls, ">= 1.1.18"}, {:fast_tls, "~> 1.1.24"},
{:fast_xml, ">= 1.1.51"}, {:fast_xml, "~> 1.1.56"},
{:fast_yaml, "~> 1.0"}, {:fast_yaml, "~> 1.0"},
{:idna, "~> 6.0"}, {:idna, "~> 6.0"},
{:jiffy, "~> 1.1.1"},
{:jose, "~> 1.11.5"},
{:mqtree, "~> 1.0"}, {:mqtree, "~> 1.0"},
{:p1_acme, "~> 1.0"}, {:p1_acme, ">= 1.0.28"},
{:p1_oauth2, "~> 0.6"}, {:p1_oauth2, "~> 0.6"},
{:p1_utils, "~> 1.0"}, {:p1_utils, "~> 1.0"},
{:pkix, "~> 1.0"}, {:pkix, "~> 1.0"},
{:stringprep, ">= 1.0.26"}, {:stringprep, ">= 1.0.26"},
{:xmpp, ">= 1.8.0"}, {:xmpp, git: "https://github.com/processone/xmpp", ref: "e9d901ea84fd3910ad32b715853397eb1155b41c", override: true},
{:yconf, "~> 1.0"}] {:yconf, git: "https://github.com/processone/yconf", ref: "95692795a8a8d950ba560e5b07e6b80660557259", override: true}]
++ cond_deps() ++ cond_deps()
end end
@ -138,16 +149,18 @@ defmodule Ejabberd.MixProject do
for {:true, dep} <- [{config(:pam), {:epam, "~> 1.0"}}, for {:true, dep} <- [{config(:pam), {:epam, "~> 1.0"}},
{Mix.env() == :translations, {Mix.env() == :translations,
{:ejabberd_po, git: "https://github.com/processone/ejabberd-po.git"}}, {:ejabberd_po, git: "https://github.com/processone/ejabberd-po.git"}},
{config(:redis), {:eredis, "~> 1.2.0"}}, {Mix.env() == :dev,
{:exsync, "~> 0.2", optional: true, runtime: false}},
{config(:redis), {:eredis, "~> 1.7.1"}},
{config(:sip), {:esip, "~> 1.0"}}, {config(:sip), {:esip, "~> 1.0"}},
{config(:zlib), {:ezlib, "~> 1.0"}}, {config(:zlib), {:ezlib, "~> 1.0"}},
{if_version_above(~c"23", true), {:jose, "~> 1.11.10"}},
{if_version_below(~c"24", true), {:jose, "1.11.1", override: true}},
{if_version_below(~c"27", true), {:jiffy, "~> 1.1.1"}},
{if_version_below(~c"22", true), {:lager, "~> 3.9.1"}}, {if_version_below(~c"22", true), {:lager, "~> 3.9.1"}},
{config(:lua) and if_version_below(~c"27", true), {config(:lua), {:luerl, "~> 1.2.0"}},
{:luerl, "~> 1.1.1"}}, {config(:mysql), {:p1_mysql, ">= 1.0.24"}},
{config(:lua) and if_version_above(~c"26", true), {config(:pgsql), {:p1_pgsql, ">= 1.1.32"}},
{:luerl, git: "https://github.com/processone/luerl", branch: "otp27"}},
{config(:mysql), {:p1_mysql, ">= 1.0.23" }},
{config(:pgsql), {:p1_pgsql, "~> 1.1"}},
{config(:sqlite), {:sqlite3, "~> 1.1"}}, {config(:sqlite), {:sqlite3, "~> 1.1"}},
{config(:stun), {:stun, "~> 1.0"}}], do: {config(:stun), {:stun, "~> 1.0"}}], do:
dep dep
@ -155,7 +168,10 @@ defmodule Ejabberd.MixProject do
defp cond_apps do defp cond_apps do
for {:true, app} <- [{config(:stun), :stun}, for {:true, app} <- [{config(:stun), :stun},
{config(:tools), :observer}], do: {if_version_below(~c"27", true), :jiffy},
{config(:tools), :debugger},
{config(:tools), :observer},
{config(:tools), :wx}], do:
app app
end end
@ -164,6 +180,7 @@ defmodule Ejabberd.MixProject do
{config(:lua), :luerl}, {config(:lua), :luerl},
{config(:redis), :eredis}, {config(:redis), :eredis},
{Mix.env() == :edoc, :ex_doc}, {Mix.env() == :edoc, :ex_doc},
{Mix.env() == :test, :dialyxir},
{if_version_below(~c"22", true), :lager}, {if_version_below(~c"22", true), :lager},
{config(:mysql), :p1_mysql}, {config(:mysql), :p1_mysql},
{config(:sip), :esip}, {config(:sip), :esip},
@ -177,13 +194,14 @@ defmodule Ejabberd.MixProject do
[# These are the default files included in the package [# These are the default files included in the package
files: ["include", "lib", "priv", "sql", "src", files: ["include", "lib", "priv", "sql", "src",
"COPYING", "README.md", "COPYING", "README.md",
"ejabberd.yml.example", "config/runtime.exs",
"mix.exs", "rebar.config", "rebar.config.script", "vars.config"], "mix.exs", "rebar.config", "rebar.config.script", "vars.config"],
maintainers: ["ProcessOne"], maintainers: ["ProcessOne"],
licenses: ["GPL-2.0-or-later"], licenses: ["GPL-2.0-or-later"],
links: %{"Site" => "https://www.ejabberd.im", links: %{"ejabberd.im" => "https://www.ejabberd.im",
"Documentation" => "http://docs.ejabberd.im", "ejabberd Docs" => "https://docs.ejabberd.im",
"Source" => "https://github.com/processone/ejabberd", "GitHub" => "https://github.com/processone/ejabberd",
"ProcessOne" => "http://www.process-one.net/"}] "ProcessOne" => "https://www.process-one.net/"}]
end end
defp vars do defp vars do
@ -248,6 +266,7 @@ defmodule Ejabberd.MixProject do
ejabberd: [ ejabberd: [
include_executables_for: [:unix], include_executables_for: [:unix],
# applications: [runtime_tools: :permanent] # applications: [runtime_tools: :permanent]
strip_beams: Mix.env() != :dev,
steps: [&copy_extra_files/1, :assemble | maybe_tar] steps: [&copy_extra_files/1, :assemble | maybe_tar]
] ]
] ]
@ -264,7 +283,7 @@ defmodule Ejabberd.MixProject do
config_dir: config(:config_dir), config_dir: config(:config_dir),
logs_dir: config(:logs_dir), logs_dir: config(:logs_dir),
spool_dir: config(:spool_dir), spool_dir: config(:spool_dir),
vsn: config(:vsn), vsn: version(),
iexpath: config(:iexpath), iexpath: config(:iexpath),
erl: config(:erl), erl: config(:erl),
epmd: config(:epmd), epmd: config(:epmd),

View file

@ -1,35 +1,39 @@
%{ %{
"base64url": {:hex, :base64url, "1.0.1", "f8c7f2da04ca9a5d0f5f50258f055e1d699f0e8bf4cfdb30b750865368403cf6", [:rebar3], [], "hexpm", "f9b3add4731a02a9b0410398b475b33e7566a695365237a6bdee1bb447719f5c"}, "base64url": {:hex, :base64url, "1.0.1", "f8c7f2da04ca9a5d0f5f50258f055e1d699f0e8bf4cfdb30b750865368403cf6", [:rebar3], [], "hexpm", "f9b3add4731a02a9b0410398b475b33e7566a695365237a6bdee1bb447719f5c"},
"cache_tab": {:hex, :cache_tab, "1.0.30", "6d35eecfb65fbe5fc85988503a27338d32de01243f3fc8ea3ee7161af08725a4", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "6d8a5e00d8f84c42627706a6dbedb02e34d58495f3ed61935c8475ca0531cda0"}, "cache_tab": {:hex, :cache_tab, "1.0.33", "e2542afb34f17ee3ca19d2b0f546a074922c2b99fb6b2acfb38160d7d0336ec3", [:rebar3], [{:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "4258009eb050b22aabe0c848e230bba58401a6895c58c2ff74dfb635e3c35900"},
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"}, "dialyxir": {:hex, :dialyxir, "1.4.6", "7cca478334bf8307e968664343cbdb432ee95b4b68a9cba95bdabb0ad5bdfd9a", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "8cf5615c5cd4c2da6c501faae642839c8405b49f8aa057ad4ae401cb808ef64d"},
"eimp": {:hex, :eimp, "1.0.22", "fa9b376ef0b50e8455db15c7c11dea4522c6902e04412288aab436d26335f6eb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "b3b9ffb1d9a5f4a2ba88ac418a819164932d9a9d3a2fc3d32ca338ce855c4392"}, "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"},
"eimp": {:hex, :eimp, "1.0.26", "c0b05f32e35629c4d9bcfb832ff879a92b0f92b19844bc7835e0a45635f2899a", [:rebar3], [{:p1_utils, "~> 1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "d96d4e8572b9dfc40f271e47f0cb1d8849373bc98a21223268781765ed52044c"},
"epam": {:hex, :epam, "1.0.14", "aa0b85d27f4ef3a756ae995179df952a0721237e83c6b79d644347b75016681a", [:rebar3], [], "hexpm", "2f3449e72885a72a6c2a843f561add0fc2f70d7a21f61456930a547473d4d989"}, "epam": {:hex, :epam, "1.0.14", "aa0b85d27f4ef3a756ae995179df952a0721237e83c6b79d644347b75016681a", [:rebar3], [], "hexpm", "2f3449e72885a72a6c2a843f561add0fc2f70d7a21f61456930a547473d4d989"},
"eredis": {:hex, :eredis, "1.2.0", "0b8e9cfc2c00fa1374cd107ea63b49be08d933df2cf175e6a89b73dd9c380de4", [:rebar3], [], "hexpm", "d9b5abef2c2c8aba8f32aa018203e0b3dc8b1157773b254ab1d4c2002317f1e1"}, "eredis": {:hex, :eredis, "1.7.1", "39e31aa02adcd651c657f39aafd4d31a9b2f63c6c700dc9cece98d4bc3c897ab", [:mix, :rebar3], [], "hexpm", "7c2b54c566fed55feef3341ca79b0100a6348fd3f162184b7ed5118d258c3cc1"},
"esip": {:hex, :esip, "1.0.52", "a2840287c493a4280e6fba57a257706843b025c315875e38b03fd07190e22dba", [:rebar3], [{:fast_tls, "1.1.19", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.2.12", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "6f00165395900500aa262ce0297162d93931c78c1464d89fd0edc6e3d6bc011f"}, "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
"ex_doc": {:hex, :ex_doc, "0.31.1", "8a2355ac42b1cc7b2379da9e40243f2670143721dd50748bf6c3b1184dae2089", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0"}, "esip": {:hex, :esip, "1.0.59", "eb202f8c62928193588091dfedbc545fe3274c34ecd209961f86dcb6c9ebce88", [:rebar3], [{:fast_tls, "1.1.25", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.2.21", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "0bdf2e3c349dc0b144f173150329e675c6a51ac473d7a0b2e362245faad3fbe6"},
"ezlib": {:hex, :ezlib, "1.0.12", "ffe906ba10d03aaee7977e1e0e81d9ffc3bb8b47fb9cd8e2e453507a2e56221f", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "30e94355fb42260aab6e12582cb0c56bf233515e655c8aeaf48760e7561e4ebb"}, "ex_doc": {:hex, :ex_doc, "0.38.3", "ddafe36b8e9fe101c093620879f6604f6254861a95133022101c08e75e6c759a", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "ecaa785456a67f63b4e7d7f200e8832fa108279e7eb73fd9928e7e66215a01f9"},
"fast_tls": {:hex, :fast_tls, "1.1.19", "f52731a4b35259fa06cf23e2a0732920ad9efce7c3d68377f129a474998747bb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "db34322c8782d4c5139ccb80709d8ec8c38089b44262edd0c2f660ac495bd389"}, "exsync": {:hex, :exsync, "0.4.1", "0a14fe4bfcb80a509d8a0856be3dd070fffe619b9ba90fec13c58b316c176594", [:mix], [{:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "cefb22aa805ec97ffc5b75a4e1dc54bcaf781e8b32564bf74abbe5803d1b5178"},
"fast_xml": {:hex, :fast_xml, "1.1.51", "a7f8c6942591632309099386d5c339c89997ac2bbdd1216f6c196dee6d7828a9", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "7fce41b7d1a4ba438a2d7a088dabe74a3ca0739f1af2abcb77e62daf43e0409a"}, "ezlib": {:hex, :ezlib, "1.0.15", "d74f5df191784744726a5b1ae9062522c606334f11086363385eb3b772d91357", [:rebar3], [{:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "dd14ba6c12521af5cfe6923e73e3d545f4a0897dc66bfab5287fbb7ae3962eab"},
"fast_yaml": {:hex, :fast_yaml, "1.0.36", "65413a34a570fd4e205a460ba602e4ee7a682f35c22d2e1c839025dbf515105c", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "1abe8f758fc2a86b08edff80bbc687cfd41ebc1412cfec0ef4a0acfcd032052f"}, "fast_tls": {:hex, :fast_tls, "1.1.25", "da8ed6f05a2452121b087158b17234749f36704c1f2b74dc51db99a1e27ed5e8", [:rebar3], [{:p1_utils, "~> 1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "59e183b5740e670e02b8aa6be673b5e7779e5fe5bfcc679fe2d4993d1949a821"},
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, "fast_xml": {:hex, :fast_xml, "1.1.57", "31efc0f9bceda92069704f7a25830407da5dc3dad1272b810d6f2e13e73cc11a", [:rebar3], [{:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "eec34e90adacafe467d5ddab635a014ded73b98b4061554b2d1972173d929c39"},
"jiffy": {:hex, :jiffy, "1.1.1", "aca10f47aa91697bf24ab9582c74e00e8e95474c7ef9f76d4f1a338d0f5de21b", [:rebar3], [], "hexpm", "62e1f0581c3c19c33a725c781dfa88410d8bff1bbafc3885a2552286b4785c4c"}, "fast_yaml": {:hex, :fast_yaml, "1.0.39", "2e71168091949bab0e5f583b340a99072b4d22d93eb86624e7850a12b1517be4", [:rebar3], [{:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "24c7b9ab9e2b9269d64e45f4a2a1280966adb17d31e63365cfd3ee277fb0a78d"},
"jose": {:hex, :jose, "1.11.5", "3bc2d75ffa5e2c941ca93e5696b54978323191988eb8d225c2e663ddfefd515e", [:mix, :rebar3], [], "hexpm", "dcd3b215bafe02ea7c5b23dafd3eb8062a5cd8f2d904fd9caa323d37034ab384"}, "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"},
"luerl": {:hex, :luerl, "1.1.1", "083518e437586f6631150d39c4bff242ed2ec80cb14a3299a0c2628f07a2ff7f", [:rebar3], [], "hexpm", "e17ef246a7ff876ec90e68792a39708979416004d4eacfe8a7643206b9470773"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"}, "jiffy": {:hex, :jiffy, "1.1.2", "a9b6c9a7ec268e7cf493d028f0a4c9144f59ccb878b1afe42841597800840a1b", [:rebar3], [], "hexpm", "bb61bc42a720bbd33cb09a410e48bb79a61012c74cb8b3e75f26d988485cf381"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"}, "jose": {:hex, :jose, "1.11.10", "a903f5227417bd2a08c8a00a0cbcc458118be84480955e8d251297a425723f83", [:mix, :rebar3], [], "hexpm", "0d6cd36ff8ba174db29148fc112b5842186b68a90ce9fc2b3ec3afe76593e614"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.4", "29563475afa9b8a2add1b7a9c8fb68d06ca7737648f28398e04461f008b69521", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f4ed47ecda66de70dd817698a703f8816daa91272e7e45812469498614ae8b29"}, "luerl": {:hex, :luerl, "1.2.3", "df25f41944e57a7c4d9ef09d238bc3e850276c46039cfc12b8bb42eccf36fcb1", [:rebar3], [], "hexpm", "1b4b9d0ca5d7d280d1d2787a6a5ee9f5a212641b62bff91556baa53805df3aed"},
"mqtree": {:hex, :mqtree, "1.0.16", "f8f8b4971e4ca94313ba9bcaaa1aa1077daaba5e3fd3468ffb491420a4cc3593", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "c87d1c95575db65af29b795c9daa3bed43f5c1bf84072a74469659bcf53594eb"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
"p1_acme": {:hex, :p1_acme, "1.0.22", "b40a8031ef0f4592e97e6a8e08e53dbd31a2198cb8377b249f0caea4f8025a1d", [:rebar3], [{:base64url, "1.0.1", [hex: :base64url, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jiffy, "1.1.1", [hex: :jiffy, repo: "hexpm", optional: false]}, {:jose, "1.11.5", [hex: :jose, repo: "hexpm", optional: false]}, {:yconf, "1.0.15", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm", "c2b25a7b295a435dac4f278a73d8417ff2b0020c45e1683504e8692ef03e2057"}, "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"},
"p1_mysql": {:hex, :p1_mysql, "1.0.23", "9b4e98f1f01e2cc4a759f611f0f015365e65c5f61ea453aa4bdfe950d20a5f11", [:rebar3], [], "hexpm", "9cef98265fb287374e7b64bf4022c4df5ec66196ca31cf4bed73c67c45bf824e"}, "mqtree": {:hex, :mqtree, "1.0.19", "d769c25f898810725fc7db0dbffe5f72098647048b1be2e6d772f1c2f31d8476", [:rebar3], [{:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "c81065715c49a1882812f80a5ae2d842e80dd3f2d130530df35990248bf8ce3c"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
"p1_acme": {:hex, :p1_acme, "1.0.28", "64d9c17f5412aa92d75b29206b2b984d734a4fe1b7eacb66c3d7a7c697ac612c", [:rebar3], [{:base64url, "~> 1.0", [hex: :base64url, repo: "hexpm", optional: false]}, {:idna, "~> 6.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jiffy, "~> 1.1.1", [hex: :jiffy, repo: "hexpm", optional: false]}, {:jose, "~> 1.11.10", [hex: :jose, repo: "hexpm", optional: false]}, {:yconf, "~> 1.0.17", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm", "ce686986de3f9d5fd285afe87523cb45329a349c6c6be7acc1ed916725d46423"},
"p1_mysql": {:hex, :p1_mysql, "1.0.26", "574d07c9936c53b1ec3556db3cf064cc14a6c39039835b3d940471bfa5ac8e2b", [:rebar3], [], "hexpm", "ea138083f2c54719b9cf549dbf5802a288b0019ea3e5449b354c74cc03fafdec"},
"p1_oauth2": {:hex, :p1_oauth2, "0.6.14", "1c5f82535574de87e2059695ac4b91f8f9aebacbc1c80287dae6f02552d47aea", [:rebar3], [], "hexpm", "1fd3ac474e43722d9d5a87c6df8d36f698ed87af7bb81cbbb66361451d99ae8f"}, "p1_oauth2": {:hex, :p1_oauth2, "0.6.14", "1c5f82535574de87e2059695ac4b91f8f9aebacbc1c80287dae6f02552d47aea", [:rebar3], [], "hexpm", "1fd3ac474e43722d9d5a87c6df8d36f698ed87af7bb81cbbb66361451d99ae8f"},
"p1_pgsql": {:hex, :p1_pgsql, "1.1.25", "f59b7faa457fadf0c2713ac335202f41ca1b06b7c4926925b3cb0bc6f0578601", [:rebar3], [{:xmpp, "1.8.1", [hex: :xmpp, repo: "hexpm", optional: false]}], "hexpm", "b654c1e07d3e775b626b407e7696cacfd88d17be83e7168b9d89c3832d913de7"}, "p1_pgsql": {:hex, :p1_pgsql, "1.1.35", "e13d89f14d717553e85c88a152ce77461916b013d88fcb851e354a0b332d4218", [:rebar3], [{:xmpp, "~> 1.11.0", [hex: :xmpp, repo: "hexpm", optional: false]}], "hexpm", "e99594446c411c660696795b062336f5c4bd800451d8f620bb4d4ce304e255c2"},
"p1_utils": {:hex, :p1_utils, "1.0.25", "2d39b5015a567bbd2cc7033eeb93a7c60d8c84efe1ef69a3473faa07fa268187", [:rebar3], [], "hexpm", "9219214428f2c6e5d3187ff8eb9a8783695c2427420be9a259840e07ada32847"}, "p1_utils": {:hex, :p1_utils, "1.0.28", "9a7088a98d788b4c4880fd3c82d0c135650db13f2e4ef7e10db179791bc94d59", [:rebar3], [], "hexpm", "c49bd44bc4a40ad996691af826dd7e0aa56d4d0cd730817190a1f84d1a7f0033"},
"pkix": {:hex, :pkix, "1.0.9", "eb20b2715d71a23b4fe7e754dae9281a964b51113d0bba8adf9da72bf9d65ac2", [:rebar3], [], "hexpm", "daab2c09cdd4eda05c9b45a5c00e994a1a5f27634929e1377e2e59b707103e3a"}, "pkix": {:hex, :pkix, "1.0.10", "d3bfadf7b7cfe2a3636f1b256c9cce5f646a07ce31e57ee527668502850765a0", [:rebar3], [], "hexpm", "e02164f83094cb124c41b1ab28988a615d54b9adc38575f00f19a597a3ac5d0e"},
"sqlite3": {:hex, :sqlite3, "1.1.14", "f9ea0cff8540865fdfdb7e24eef34dc46677364b1c070896e99b5bf08c8a7fd7", [:rebar3], [], "hexpm", "85054b6ca297343c159ed6794a473ff2c8eeabd854b6fe02f711c0bfd373ce86"}, "sqlite3": {:hex, :sqlite3, "1.1.15", "e819defd280145c328457d7af897d2e45e8e5270e18812ee30b607c99cdd21af", [:rebar3], [], "hexpm", "3c0ba4e13322c2ad49de4e2ddd28311366adde54beae8dba9d9e3888f69d2857"},
"stringprep": {:hex, :stringprep, "1.0.29", "02f23e8c3a219a3dfe40a22e908bece3a2f68af0ff599ea8a7b714ecb21e62ee", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "928eba304c3006eb1512110ebd7b87db163b00859a09375a1e4466152c6c462a"}, "stringprep": {:hex, :stringprep, "1.0.33", "22f42866b4f6f3c238ea2b9cb6241791184ddedbab55e94a025511f46325f3ca", [:rebar3], [{:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "96f8b30bc50887f605b33b46bca1d248c19a879319b8c482790e3b4da5da98c0"},
"stun": {:hex, :stun, "1.2.12", "a65df67a8aaaecb6a94d687977b2e9f161820819910cb97bbe26a3525356525b", [:rebar3], [{:fast_tls, "1.1.19", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "a2055032b6d338d0454142004bcb12fafb0c64ab1f273f1d0c6923ebbc8ede40"}, "stun": {:hex, :stun, "1.2.21", "735855314ad22cb7816b88597d2f5ca22e24aa5e4d6010a0ef3affb33ceed6a5", [:rebar3], [{:fast_tls, "1.1.25", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.28", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "3d7fe8efb9d05b240a6aa9a6bf8b8b7bff2d802895d170443c588987dc1e12d9"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.1", "a48703a25c170eedadca83b11e88985af08d35f37c6f664d6dcfb106a97782fc", [:rebar3], [], "hexpm", "b3a917854ce3ae233619744ad1e0102e05673136776fb2fa76234f3e03b23642"},
"xmpp": {:hex, :xmpp, "1.8.1", "134a350dbc6e2e99512fb38669191c1d1c134b3b6836f4c6740801882afa650a", [:rebar3], [{:ezlib, "1.0.12", [hex: :ezlib, repo: "hexpm", optional: false]}, {:fast_tls, "1.1.19", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:fast_xml, "1.1.51", [hex: :fast_xml, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stringprep, "1.0.29", [hex: :stringprep, repo: "hexpm", optional: false]}], "hexpm", "32d4a308a6613e4e4155fa4e82eccdc8833096d0fa8d99c8d428c800611e59d3"}, "xmpp": {:git, "https://github.com/processone/xmpp", "e9d901ea84fd3910ad32b715853397eb1155b41c", [ref: "e9d901ea84fd3910ad32b715853397eb1155b41c"]},
"yconf": {:hex, :yconf, "1.0.15", "e22998b3d7728270bdd06162a9515bd142b14fae8927cbdbd3ef639c32aa6f7a", [:rebar3], [{:fast_yaml, "1.0.36", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm", "7ff2ab24d3c9833842716b9aaaa01a8f96641a7695cbb701b03445c4def01117"}, "yconf": {:git, "https://github.com/processone/yconf", "95692795a8a8d950ba560e5b07e6b80660557259", [ref: "95692795a8a8d950ba560e5b07e6b80660557259"]},
} }

View file

@ -131,16 +131,27 @@ ul li #navhead a, ul li #navheadsub a, ul li #navheadsubsub a {
background: #424a55; background: #424a55;
color: #fff; color: #fff;
} }
#navitemlogin-start {
border-top: 0.2em solid #cae7e4;
}
#navitemlogin {
padding: 0.5em;
border-bottom: 0.2em solid #cae7e4;
padding-left: 0.5em;
}
#welcome {
padding: 2em;
border-top: 0.2em solid #cae7e4;
border-bottom: 0.2em solid #cae7e4;
background-color: #f4f9f9;
}
#lastactivity li { #lastactivity li {
padding: 2px; padding: 2px;
margin-bottom: -1px; margin-bottom: -1px;
} }
thead tr td { thead tr td {
background: #3eaffa; background: #cae7e4;
color: #fff;
}
thead tr td a {
color: #fff;
} }
td.copy { td.copy {
text-align: center; text-align: center;
@ -227,24 +238,32 @@ h3 {
padding-top: 25px; padding-top: 25px;
width: 70%; width: 70%;
} }
div.anchorlink {
display: inline-block;
float: right;
margin-top: 1em;
margin-right: 1em;
}
div.anchorlink a {
padding: 3px;
background: #cae7e4;
font-size: 0.75em;
color: black;
}
div.guidelink, div.guidelink,
p[dir=ltr] { p[dir=ltr] {
display: inline-block; display: inline-block;
float: right; float: right;
margin-top: 1em;
margin: 0;
margin-right: 1em; margin-right: 1em;
} }
div.guidelink a, div.guidelink a,
p[dir=ltr] a { p[dir=ltr] a {
display: inline-block;
border-radius: 3px;
padding: 3px; padding: 3px;
background: #3eaffa; background: #3eaffa;
font-size: 0.75em; font-size: 0.75em;
color: #fff; color: #fff;
border-radius: 2px;
} }
table { table {
margin-top: 1em; margin-top: 1em;
@ -265,7 +284,7 @@ input,
select { select {
font-size: 1em; font-size: 1em;
} }
p.result { .result {
border: 1px; border: 1px;
border-style: dashed; border-style: dashed;
border-color: #FE8A02; border-color: #FE8A02;
@ -284,3 +303,20 @@ p.result {
color: #cb2431; color: #cb2431;
transition: none; transition: none;
} }
h3.api {
border-bottom: 1px solid #b6b6b6;
}
details > summary {
background-color: #dbeceb;
border: none;
cursor: pointer;
list-style: none;
padding: 8px;
border-radius: 4px;
}
details > pre, details > p {
background-color: #f2f8f7;
border-bottom: 0.2em solid #dbeceb;
margin: 0;
padding: 10px;
}

View file

@ -16,12 +16,14 @@ a.roomjid {color: #336699; font-size: 24px; font-weight: bold; font-family: sans
div.logdate {color: #663399; font-size: 20px; font-weight: bold; font-family: sans-serif; letter-spacing: 2px; border-bottom: #224466 solid 1pt; margin-left:80pt; margin-top:20px;} div.logdate {color: #663399; font-size: 20px; font-weight: bold; font-family: sans-serif; letter-spacing: 2px; border-bottom: #224466 solid 1pt; margin-left:80pt; margin-top:20px;}
div.roomsubject {color: #336699; font-size: 18px; font-family: sans-serif; margin-left: 80pt; margin-bottom: 10px;} div.roomsubject {color: #336699; font-size: 18px; font-family: sans-serif; margin-left: 80pt; margin-bottom: 10px;}
div.rc {color: #336699; font-size: 12px; font-family: sans-serif; margin-left: 50%; text-align: right; background: #f3f6f9; border-bottom: 1px solid #336699; border-right: 4px solid #336699;} div.rc {color: #336699; font-size: 12px; font-family: sans-serif; margin-left: 50%; text-align: right; background: #f3f6f9; border-bottom: 1px solid #336699; border-right: 4px solid #336699;}
div.rct {font-weight: bold; background: #e3e6e9; padding-right: 10px;} div.rct {font-weight: bold; background: #e3e6e9; padding-right: 10px; cursor: pointer;}
div.rct:hover {text-decoration: underline;}
div.rcos {padding-right: 10px;} div.rcos {padding-right: 10px;}
div.rcoe {color: green;} div.rcoe {color: green;}
div.rcod {color: red;} div.rcod {color: red;}
div.rcoe:after {content: ": v";} div.rcoe:after {content: ": v";}
div.rcod:after {content: ": x";} div.rcod:after {content: ": x";}
div.rcot:after {} div.rcot:after {}
div.jl {display: none;}
.legend {width: 100%; margin-top: 30px; border-top: #224466 solid 1pt; padding: 10px 0px 10px 0px; text-align: left; font-family: monospace; letter-spacing: 2px;} .legend {width: 100%; margin-top: 30px; border-top: #224466 solid 1pt; padding: 10px 0px 10px 0px; text-align: left; font-family: monospace; letter-spacing: 2px;}
.w3c {position: absolute; right: 10px; width: 60%; text-align: right; font-family: monospace; letter-spacing: 1px;} .w3c {position: absolute; right: 10px; width: 60%; text-align: right; font-family: monospace; letter-spacing: 1px;}

1
priv/css/sortable.min.css vendored Normal file
View file

@ -0,0 +1 @@
.sortable thead th:not(.no-sort){cursor:pointer}.sortable thead th:not(.no-sort)::after,.sortable thead th:not(.no-sort)::before{transition:color .1s ease-in-out;font-size:1.2em;color:rgba(0,0,0,0)}.sortable thead th:not(.no-sort)::after{margin-left:3px;content:"▸"}.sortable thead th:not(.no-sort):hover::after{color:inherit}.sortable thead th:not(.no-sort)[aria-sort=descending]::after{color:inherit;content:"▾"}.sortable thead th:not(.no-sort)[aria-sort=ascending]::after{color:inherit;content:"▴"}.sortable thead th:not(.no-sort).indicator-left::after{content:""}.sortable thead th:not(.no-sort).indicator-left::before{margin-right:3px;content:"▸"}.sortable thead th:not(.no-sort).indicator-left:hover::before{color:inherit}.sortable thead th:not(.no-sort).indicator-left[aria-sort=descending]::before{color:inherit;content:"▾"}.sortable thead th:not(.no-sort).indicator-left[aria-sort=ascending]::before{color:inherit;content:"▴"}/*# sourceMappingURL=sortable-base.min.css.map */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Before After
Before After

View file

@ -6,3 +6,14 @@ function sh(e) {
document.getElementById(e).style.display='none'; document.getElementById(e).style.display='none';
} }
} }
// Show/Hide join/leave elements
function jlf() {
var es = document.getElementsByClassName('jl');
for (var i = 0; i < es.length; i++) {
if (es[i].style.display === 'block') {
es[i].style.display = 'none';
} else {
es[i].style.display = 'block';
}
}
}

3
priv/js/sortable.min.js vendored Normal file
View file

@ -0,0 +1,3 @@
document.addEventListener("click",function(c){try{function h(b,a){return b.nodeName===a?b:h(b.parentNode,a)}var v=c.shiftKey||c.altKey,d=h(c.target,"TH"),m=d.parentNode,n=m.parentNode,g=n.parentNode;function p(b){var a;return v?b.dataset.sortAlt:null!==(a=b.dataset.sort)&&void 0!==a?a:b.textContent}if("THEAD"===n.nodeName&&g.classList.contains("sortable")&&!d.classList.contains("no-sort")){var q,f=m.cells,r=+d.dataset.sortTbr;for(c=0;c<f.length;c++)f[c]===d?q=+d.dataset.sortCol||c:f[c].setAttribute("aria-sort",
"none");f="descending";if("descending"===d.getAttribute("aria-sort")||g.classList.contains("asc")&&"ascending"!==d.getAttribute("aria-sort"))f="ascending";d.setAttribute("aria-sort",f);var w="ascending"===f,x=g.classList.contains("n-last"),t=function(b,a,e){a=p(a.cells[e]);b=p(b.cells[e]);if(x){if(""===a&&""!==b)return-1;if(""===b&&""!==a)return 1}e=+a-+b;a=isNaN(e)?a.localeCompare(b):e;return w?-a:a};for(c=0;c<g.tBodies.length;c++){var k=g.tBodies[c],u=[].slice.call(k.rows,0);u.sort(function(b,a){var e=
t(b,a,q);return 0!==e||isNaN(r)?e:t(b,a,r)});var l=k.cloneNode();l.append.apply(l,u);g.replaceChild(l,k)}}}catch(h){}});

View file

@ -8,4 +8,3 @@
{"# participants","# المشاركين"}. {"# participants","# المشاركين"}.
{"A description of the node","وصف العقدة"}. {"A description of the node","وصف العقدة"}.
{"A Web Page","موقع الكتروني"}. {"A Web Page","موقع الكتروني"}.
{"'Displayed groups' not added (they do not exist!): ","لم تتم إضافة \"المجموعات المعروضة\" (فهي غير موجودة!): "}.

View file

@ -16,8 +16,6 @@
{"Account doesn't exist","Профилът не съществува"}. {"Account doesn't exist","Профилът не съществува"}.
{"Action on user","Действие върху потребител"}. {"Action on user","Действие върху потребител"}.
{"Add a hat to a user","Добави шапка към потребител"}. {"Add a hat to a user","Добави шапка към потребител"}.
{"Add Jabber ID","Добави Jabber ID"}.
{"Add New","Добави нов"}.
{"Add User","Добави потребител"}. {"Add User","Добави потребител"}.
{"Administration of ","Администриране на "}. {"Administration of ","Администриране на "}.
{"Administration","Администриране"}. {"Administration","Администриране"}.
@ -48,7 +46,6 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Всеки, който има абонамент за присъствие на двете или от: може да се абонира и да извлича елементи"}. {"Anyone with a presence subscription of both or from may subscribe and retrieve items","Всеки, който има абонамент за присъствие на двете или от: може да се абонира и да извлича елементи"}.
{"Anyone with Voice","Всеки, с възможност за гласово обаждане"}. {"Anyone with Voice","Всеки, с възможност за гласово обаждане"}.
{"Anyone","Всеки"}. {"Anyone","Всеки"}.
{"Apparently your account has no administration rights in this server. Please check how to grant admin rights in: https://docs.ejabberd.im/admin/installation/#administration-account","Очевидно Вашият акаунт няма административни права за този сървър. Моля, проверете как да предоставите администраторски права на: https://docs.ejabberd.im/admin/installation/#administration-account"}.
{"April","Април"}. {"April","Април"}.
{"Attribute 'channel' is required for this request","Атрибутът 'канал' е задължителен за тази заявка"}. {"Attribute 'channel' is required for this request","Атрибутът 'канал' е задължителен за тази заявка"}.
{"Attribute 'id' is mandatory for MIX messages","Атрибутът 'id' е задължителен за MIX съобщения"}. {"Attribute 'id' is mandatory for MIX messages","Атрибутът 'id' е задължителен за MIX съобщения"}.
@ -93,30 +90,20 @@
{"Conference room does not exist","Конферентната стая не съществува"}. {"Conference room does not exist","Конферентната стая не съществува"}.
{"Configuration of room ~s","Конфигурация на стая ~s"}. {"Configuration of room ~s","Конфигурация на стая ~s"}.
{"Configuration","Конфигурация"}. {"Configuration","Конфигурация"}.
{"Connected Resources:","Свързани ресурси:"}.
{"Contact Addresses (normally, room owner or owners)","Адреси за контакт (обикновено собственик или собственици на стая)"}. {"Contact Addresses (normally, room owner or owners)","Адреси за контакт (обикновено собственик или собственици на стая)"}.
{"Contrib Modules","Сътруднически модули"}.
{"Country","Държава"}. {"Country","Държава"}.
{"CPU Time:","Процесорно време:"}.
{"Current Discussion Topic","Текуща тема на дискусита"}. {"Current Discussion Topic","Текуща тема на дискусита"}.
{"Database failure","Грешка в базата данни"}. {"Database failure","Грешка в базата данни"}.
{"Database Tables at ~p","Таблици на базата данни при ~p"}.
{"Database Tables Configuration at ","Конфигурация на таблиците в базата данни при "}. {"Database Tables Configuration at ","Конфигурация на таблиците в базата данни при "}.
{"Database","База данни"}. {"Database","База данни"}.
{"December","Декември"}. {"December","Декември"}.
{"Default users as participants","Потребители по подразбиране като участници"}. {"Default users as participants","Потребители по подразбиране като участници"}.
{"Delete content","Изтрий съдържанието"}.
{"Delete message of the day on all hosts","Изтрий съобщението на деня от всички нодове"}. {"Delete message of the day on all hosts","Изтрий съобщението на деня от всички нодове"}.
{"Delete message of the day","Изтрий съобщението на деня"}. {"Delete message of the day","Изтрий съобщението на деня"}.
{"Delete Selected","Изтрий избраните"}.
{"Delete table","Изтрий таблицата"}.
{"Delete User","Изтрий потребителя"}. {"Delete User","Изтрий потребителя"}.
{"Deliver event notifications","Достави известията за събития"}. {"Deliver event notifications","Достави известията за събития"}.
{"Deliver payloads with event notifications","Достави прикачените обекти с известията за събития"}. {"Deliver payloads with event notifications","Достави прикачените обекти с известията за събития"}.
{"Description:","Описание:"}.
{"Disc only copy","Копие само на диска"}. {"Disc only copy","Копие само на диска"}.
{"'Displayed groups' not added (they do not exist!): ","'Показаните групи' не са добавени (не съществуват!): "}.
{"Displayed:","Показва се:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Не казвайте паролата си на никого, дори на администраторите на XMPP сървъра."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","Не казвайте паролата си на никого, дори на администраторите на XMPP сървъра."}.
{"Dump Backup to Text File at ","Архивиране в текстов файл при "}. {"Dump Backup to Text File at ","Архивиране в текстов файл при "}.
{"Dump to Text File","Архивиране в текстов файл"}. {"Dump to Text File","Архивиране в текстов файл"}.
@ -124,10 +111,14 @@
{"Dynamically specify a replyto of the item publisher","Динамично задаване на отговор към публикувалия елемента"}. {"Dynamically specify a replyto of the item publisher","Динамично задаване на отговор към публикувалия елемента"}.
{"Edit Properties","Редактиране на свойства"}. {"Edit Properties","Редактиране на свойства"}.
{"Either approve or decline the voice request.","Одобрете или отхвърлете заявката за гласова връзка."}. {"Either approve or decline the voice request.","Одобрете или отхвърлете заявката за гласова връзка."}.
{"ejabberd HTTP Upload service","ejabberd HTTP Upload услуга"}.
{"ejabberd MUC module","ejabberd MUC модул"}.
{"ejabberd Multicast service","ejabberd Multicast услуга"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe модул"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams модул"}.
{"ejabberd vCard module","ejabberd vCard модул"}. {"ejabberd vCard module","ejabberd vCard модул"}.
{"ejabberd Web Admin","Уеб администрация на ejabberd"}. {"ejabberd Web Admin","Уеб администрация на ejabberd"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Елементи"}.
{"Email Address","Имейл адрес"}. {"Email Address","Имейл адрес"}.
{"Email","Илейл"}. {"Email","Илейл"}.
{"Enable hats","Активиране на шапки"}. {"Enable hats","Активиране на шапки"}.
@ -142,7 +133,6 @@
{"Enter path to text file","Въведете пътя към текстовия файл"}. {"Enter path to text file","Въведете пътя към текстовия файл"}.
{"Enter the text you see","Въведете текста, който виждате"}. {"Enter the text you see","Въведете текста, който виждате"}.
{"Erlang XMPP Server","Erlang XMPP сървър"}. {"Erlang XMPP Server","Erlang XMPP сървър"}.
{"Error","Грешка"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Изключи CAPTCHA предизвикателство за следните Jabber ID-та"}. {"Exclude Jabber IDs from CAPTCHA challenge","Изключи CAPTCHA предизвикателство за следните Jabber ID-та"}.
{"Export all tables as SQL queries to a file:","Експортирай всички таблици като SQL заявки във файл:"}. {"Export all tables as SQL queries to a file:","Експортирай всички таблици като SQL заявки във файл:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Експортирай данните за всички потребители на сървъра в PIEFXIS файлове (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Експортирай данните за всички потребители на сървъра в PIEFXIS файлове (XEP-0227):"}.
@ -161,7 +151,6 @@
{"Fill in the form to search for any matching XMPP User","Попълнете формата, за да търсите съвпадащ XMPP потребител"}. {"Fill in the form to search for any matching XMPP User","Попълнете формата, за да търсите съвпадащ XMPP потребител"}.
{"Friday","Петък"}. {"Friday","Петък"}.
{"From ~ts","От ~ts"}. {"From ~ts","От ~ts"}.
{"From","От"}.
{"Full List of Room Admins","Пълен списък на администраторите на стаята"}. {"Full List of Room Admins","Пълен списък на администраторите на стаята"}.
{"Full List of Room Owners","Пълен списък на собствениците на стаята"}. {"Full List of Room Owners","Пълен списък на собствениците на стаята"}.
{"Full Name","Пълно име"}. {"Full Name","Пълно име"}.
@ -171,18 +160,19 @@
{"Get Number of Registered Users","Брой на регистрираните потребители"}. {"Get Number of Registered Users","Брой на регистрираните потребители"}.
{"Get Pending","Виж чакащи"}. {"Get Pending","Виж чакащи"}.
{"Get User Last Login Time","Покажи времето, когато потребителят е влязъл за последно"}. {"Get User Last Login Time","Покажи времето, когато потребителят е влязъл за последно"}.
{"Get User Password","Покажи паролата на потребителя"}.
{"Get User Statistics","Покажи статистика за потребителя"}. {"Get User Statistics","Покажи статистика за потребителя"}.
{"Given Name","Име"}. {"Given Name","Наименование"}.
{"Grant voice to this person?","Предоставяне на глас за потребителя?"}. {"Grant voice to this person?","Предоставяне на глас за потребителя?"}.
{"Groups that will be displayed to the members","Групи, които ще се показват на членовете"}. {"has been banned","е със забранен достъп"}.
{"Groups","Групи"}. {"has been kicked because of a system shutdown","е отстранен поради изключване на системата"}.
{"Group","Група"}. {"has been kicked because of an affiliation change","е отстранен поради промяна на принадлежността"}.
{"has been kicked because the room has been changed to members-only","е изгонен, защото стаята е променена и е само за членове"}.
{"has been kicked","е отстранен"}.
{"Hash of the vCard-temp avatar of this room","Хеш на временния vCard аватар на тази стая"}.
{"Hat title","Заглавие на шапката"}. {"Hat title","Заглавие на шапката"}.
{"Hat URI","URI адрес за шапка"}. {"Hat URI","URI адрес за шапка"}.
{"Hats limit exceeded","Превишен е лимитът за шапка"}. {"Hats limit exceeded","Превишен е лимитът за шапка"}.
{"Host unknown","Неизвестен хост"}. {"Host unknown","Неизвестен хост"}.
{"Host","Хост"}.
{"HTTP File Upload","Качване на файл по HTTP"}. {"HTTP File Upload","Качване на файл по HTTP"}.
{"Idle connection","Неактивна връзка"}. {"Idle connection","Неактивна връзка"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Ако не виждате CAPTCHA изображението, посетете уеб страницата."}. {"If you don't see the CAPTCHA image here, visit the web page.","Ако не виждате CAPTCHA изображението, посетете уеб страницата."}.
@ -196,7 +186,6 @@
{"Import Users From jabberd14 Spool Files","Импорт на потребители от jabberd14 Spool файлове"}. {"Import Users From jabberd14 Spool Files","Импорт на потребители от jabberd14 Spool файлове"}.
{"Improper domain part of 'from' attribute","Неправилна част за домейн в атрибута 'from'"}. {"Improper domain part of 'from' attribute","Неправилна част за домейн в атрибута 'from'"}.
{"Improper message type","Неправилен тип съобщение"}. {"Improper message type","Неправилен тип съобщение"}.
{"Incoming s2s Connections:","Входящи s2s връзки:"}.
{"Incorrect CAPTCHA submit","Неправилно CAPTCHA въвеждане"}. {"Incorrect CAPTCHA submit","Неправилно CAPTCHA въвеждане"}.
{"Incorrect data form","Неправилна форма на данните"}. {"Incorrect data form","Неправилна форма на данните"}.
{"Incorrect password","Грешна парола"}. {"Incorrect password","Грешна парола"}.
@ -212,6 +201,7 @@
{"Invalid 'previd' value","Невалидна стойност на 'previd'"}. {"Invalid 'previd' value","Невалидна стойност на 'previd'"}.
{"Invitations are not allowed in this conference","Поканите не са разрешени в тази конференция"}. {"Invitations are not allowed in this conference","Поканите не са разрешени в тази конференция"}.
{"IP addresses","IP адреси"}. {"IP addresses","IP адреси"}.
{"is now known as","е известен като"}.
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Не е позволено да изпращате съобщения за грешки в стаята. Участникът (~s) е изпратил съобщение за грешка (~s) и е бил отстранен от стаята"}. {"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Не е позволено да изпращате съобщения за грешки в стаята. Участникът (~s) е изпратил съобщение за грешка (~s) и е бил отстранен от стаята"}.
{"It is not allowed to send private messages of type \"groupchat\"","Изпращането на лични съобщения от тип \"групов чат\" не е разрешено"}. {"It is not allowed to send private messages of type \"groupchat\"","Изпращането на лични съобщения от тип \"групов чат\" не е разрешено"}.
{"It is not allowed to send private messages to the conference","Изпращането на лични съобщения до конференцията не е разрешено"}. {"It is not allowed to send private messages to the conference","Изпращането на лични съобщения до конференцията не е разрешено"}.
@ -221,21 +211,21 @@
{"JID normalization failed","Нормализирането на JID е неуспешно"}. {"JID normalization failed","Нормализирането на JID е неуспешно"}.
{"Joined MIX channels of ~ts","Свързани MIX канали на ~ts"}. {"Joined MIX channels of ~ts","Свързани MIX канали на ~ts"}.
{"Joined MIX channels:","Свързани MIX канали:"}. {"Joined MIX channels:","Свързани MIX канали:"}.
{"joins the room","се присъединява към стаята"}.
{"July","Юли"}. {"July","Юли"}.
{"June","Юни"}. {"June","Юни"}.
{"Just created","Току що създаден"}. {"Just created","Току що създаден"}.
{"Label:","Етикет:"}.
{"Last Activity","Последна активност"}. {"Last Activity","Последна активност"}.
{"Last login","Последно влизане"}. {"Last login","Последно влизане"}.
{"Last message","Последно съобщение"}. {"Last message","Последно съобщение"}.
{"Last month","Миналия месец"}. {"Last month","Миналия месец"}.
{"Last year","Миналата година"}. {"Last year","Миналата година"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Най-малко значимите битове SHA-256 хеш на текст трябва да са равни на шестнайсетичния етикет"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Най-малко значимите битове SHA-256 хеш на текст трябва да са равни на шестнайсетичния етикет"}.
{"List of rooms","Списък на стаите"}. {"leaves the room","напуска стаята"}.
{"List of users with hats","Списък на потребителите с шапки"}. {"List of users with hats","Списък на потребителите с шапки"}.
{"List users with hats","Избройте потребителите с шапки"}. {"List users with hats","Избройте потребителите с шапки"}.
{"Logged Out","Излязъл"}.
{"Logging","Регистриране на събития"}. {"Logging","Регистриране на събития"}.
{"Low level update script","Скрипт за актуализация на ниско ниво"}.
{"Make participants list public","Направи списъка с участниците публичен"}. {"Make participants list public","Направи списъка с участниците публичен"}.
{"Make room CAPTCHA protected","Защити стаята с CAPTCHA"}. {"Make room CAPTCHA protected","Защити стаята с CAPTCHA"}.
{"Make room members-only","Направи стаята само за членове"}. {"Make room members-only","Направи стаята само за членове"}.
@ -253,11 +243,8 @@
{"Maximum number of items to persist","Максимален брой елементи за запазване"}. {"Maximum number of items to persist","Максимален брой елементи за запазване"}.
{"Maximum Number of Occupants","Максимален брой участници"}. {"Maximum Number of Occupants","Максимален брой участници"}.
{"May","Май"}. {"May","Май"}.
{"Members not added (inexistent vhost!): ","Членовете не са добавени (несъществуващ vhost!): "}.
{"Membership is required to enter this room","Изисква се членство, за вход в тази стая"}. {"Membership is required to enter this room","Изисква се членство, за вход в тази стая"}.
{"Members:","Членове:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Запомнете паролата си или я запишете на лист хартия, поставен на сигурно място. В XMPP няма автоматичен начин за възстановяване на паролата в случай, че я забравите."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Запомнете паролата си или я запишете на лист хартия, поставен на сигурно място. В XMPP няма автоматичен начин за възстановяване на паролата в случай, че я забравите."}.
{"Memory","Памет"}.
{"Mere Availability in XMPP (No Show Value)","Наличност в XMPP (Не показвай стойност)"}. {"Mere Availability in XMPP (No Show Value)","Наличност в XMPP (Не показвай стойност)"}.
{"Message body","Текст на съобщението"}. {"Message body","Текст на съобщението"}.
{"Message not found in forwarded payload","Съобщението не е намерено в препратения прикачен елемент"}. {"Message not found in forwarded payload","Съобщението не е намерено в препратения прикачен елемент"}.
@ -269,15 +256,12 @@
{"Moderator privileges required","Изискват се права на модератор"}. {"Moderator privileges required","Изискват се права на модератор"}.
{"Moderators Only","Само модератори"}. {"Moderators Only","Само модератори"}.
{"Moderator","Модератор"}. {"Moderator","Модератор"}.
{"Modified modules","Модифицирани модули"}.
{"Module failed to handle the query","Модулът не успя да обработи заявката"}. {"Module failed to handle the query","Модулът не успя да обработи заявката"}.
{"Monday","Понеделник"}. {"Monday","Понеделник"}.
{"Multicast","Мултикаст"}. {"Multicast","Мултикаст"}.
{"Multiple <item/> elements are not allowed by RFC6121","Повече от един <item/> елемента не се разрешават от RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","Повече от един <item/> елемента не се разрешават от RFC6121"}.
{"Multi-User Chat","Групов чат (MUC)"}. {"Multi-User Chat","Групов чат (MUC)"}.
{"Name in the rosters where this group will be displayed","Име в списъците с контакти, където ще се показва тази група"}.
{"Name","Име"}. {"Name","Име"}.
{"Name:","Име:"}.
{"Natural Language for Room Discussions","Език за дискусии в стаята"}. {"Natural Language for Room Discussions","Език за дискусии в стаята"}.
{"Natural-Language Room Name","Име на стаята на предпочитания език"}. {"Natural-Language Room Name","Име на стаята на предпочитания език"}.
{"Neither 'jid' nor 'nick' attribute found","Атрибутите 'jid' и 'nick' не са намерени"}. {"Neither 'jid' nor 'nick' attribute found","Атрибутите 'jid' и 'nick' не са намерени"}.
@ -342,14 +326,10 @@
{"Occupants are allowed to query others","Участниците могат да отправят заявки към други лица"}. {"Occupants are allowed to query others","Участниците могат да отправят заявки към други лица"}.
{"Occupants May Change the Subject","Участниците могат да променят темата"}. {"Occupants May Change the Subject","Участниците могат да променят темата"}.
{"October","Октомври"}. {"October","Октомври"}.
{"Offline Messages","Офлайн съобщения"}.
{"Offline Messages:","Офлайн съобщения:"}.
{"OK","ДОБРЕ"}. {"OK","ДОБРЕ"}.
{"Old Password:","Стара парола:"}. {"Old Password:","Стара парола:"}.
{"Online Users","Онлайн потребители"}. {"Online Users","Онлайн потребители"}.
{"Online Users:","Онлайн потребители:"}.
{"Online","Онлайн"}. {"Online","Онлайн"}.
{"Only admins can see this","Само администратори могат да видят това"}.
{"Only collection node owners may associate leaf nodes with the collection","Само собственици на колекционни нодове имат право да свързват листови нодове към колекцията"}. {"Only collection node owners may associate leaf nodes with the collection","Само собственици на колекционни нодове имат право да свързват листови нодове към колекцията"}.
{"Only deliver notifications to available users","Доставяне на известия само до наличните потребители"}. {"Only deliver notifications to available users","Доставяне на известия само до наличните потребители"}.
{"Only <enable/> or <disable/> tags are allowed","Само тагове <enable/> и <disable/> са разрешени"}. {"Only <enable/> or <disable/> tags are allowed","Само тагове <enable/> и <disable/> са разрешени"}.
@ -369,10 +349,8 @@
{"Organization Unit","Отдел"}. {"Organization Unit","Отдел"}.
{"Other Modules Available:","Други налични модули:"}. {"Other Modules Available:","Други налични модули:"}.
{"Outgoing s2s Connections","Изходящи s2s връзки"}. {"Outgoing s2s Connections","Изходящи s2s връзки"}.
{"Outgoing s2s Connections:","Изходящи s2s връзки:"}.
{"Owner privileges required","Изискват се привилегии на собственик"}. {"Owner privileges required","Изискват се привилегии на собственик"}.
{"Packet relay is denied by service policy","Предаването на пакети е отказано от политиката на услугата"}. {"Packet relay is denied by service policy","Предаването на пакети е отказано от политиката на услугата"}.
{"Packet","Пакет"}.
{"Participant ID","ID на участник"}. {"Participant ID","ID на участник"}.
{"Participant","Участник"}. {"Participant","Участник"}.
{"Password Verification","Проверка на паролата"}. {"Password Verification","Проверка на паролата"}.
@ -382,7 +360,6 @@
{"Path to Dir","Път към директория"}. {"Path to Dir","Път към директория"}.
{"Path to File","Път до файл"}. {"Path to File","Път до файл"}.
{"Payload semantic type information","Информация за семантичен тип полезен товар"}. {"Payload semantic type information","Информация за семантичен тип полезен товар"}.
{"Pending","В очакване"}.
{"Period: ","Период: "}. {"Period: ","Период: "}.
{"Persist items to storage","Запазване на елементите в хранилището"}. {"Persist items to storage","Запазване на елементите в хранилището"}.
{"Persistent","Постоянен"}. {"Persistent","Постоянен"}.
@ -398,6 +375,7 @@
{"Previous session PID has exited","Предишният PID на сесията е излязъл"}. {"Previous session PID has exited","Предишният PID на сесията е излязъл"}.
{"Previous session PID is dead","PID от предишната сесия не съществува"}. {"Previous session PID is dead","PID от предишната сесия не съществува"}.
{"Previous session timed out","Времето на предишната сесия изтече"}. {"Previous session timed out","Времето на предишната сесия изтече"}.
{"private, ","частна, "}.
{"Public","Публичен"}. {"Public","Публичен"}.
{"Publish model","Модел за публикуване"}. {"Publish model","Модел за публикуване"}.
{"Publish-Subscribe","Публикуване-Абониране"}. {"Publish-Subscribe","Публикуване-Абониране"}.
@ -415,21 +393,16 @@
{"Receive notification of new nodes only","Получаване на известия само за нови нодове"}. {"Receive notification of new nodes only","Получаване на известия само за нови нодове"}.
{"Recipient is not in the conference room","Получателят не е в конферентната стая"}. {"Recipient is not in the conference room","Получателят не е в конферентната стая"}.
{"Register an XMPP account","Регистрирай XMPP акаунт"}. {"Register an XMPP account","Регистрирай XMPP акаунт"}.
{"Registered Users","Регистрирани потребители"}.
{"Registered Users:","Регистрирани потребители:"}.
{"Register","Регистрирай"}. {"Register","Регистрирай"}.
{"Remote copy","Отдалечено копие"}. {"Remote copy","Отдалечено копие"}.
{"Remove a hat from a user","Премахни шапка от потребител"}. {"Remove a hat from a user","Премахни шапка от потребител"}.
{"Remove All Offline Messages","Премахни всички офлайн съобщения"}.
{"Remove User","Премахни потребител"}. {"Remove User","Премахни потребител"}.
{"Remove","Премахни"}.
{"Replaced by new connection","Заменен от нова връзка"}. {"Replaced by new connection","Заменен от нова връзка"}.
{"Request has timed out","Времето за заявка изтече"}. {"Request has timed out","Времето за заявка изтече"}.
{"Request is ignored","Заявката е игнорирано"}. {"Request is ignored","Заявката е игнорирано"}.
{"Requested role","Заявена роля"}. {"Requested role","Заявена роля"}.
{"Resources","Ресурси"}. {"Resources","Ресурси"}.
{"Restart Service","Рестартирай услугата"}. {"Restart Service","Рестартирай услугата"}.
{"Restart","Рестартирай"}.
{"Restore Backup from File at ","Възстанови резервно копие от файл в "}. {"Restore Backup from File at ","Възстанови резервно копие от файл в "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Възстановяване на бинарно копие след следващото рестартиране на ejabberd (изисква по-малко памет):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Възстановяване на бинарно копие след следващото рестартиране на ejabberd (изисква по-малко памет):"}.
{"Restore binary backup immediately:","Възстанови незабавно двоично копие:"}. {"Restore binary backup immediately:","Възстанови незабавно двоично копие:"}.
@ -445,20 +418,15 @@
{"Room terminates","Стаята се прекратява"}. {"Room terminates","Стаята се прекратява"}.
{"Room title","Заглавие на стаята"}. {"Room title","Заглавие на стаята"}.
{"Roster groups allowed to subscribe","Групи от списъци с контакти, на които е разрешено да се абонират"}. {"Roster groups allowed to subscribe","Групи от списъци с контакти, на които е разрешено да се абонират"}.
{"Roster of ~ts","Списък с контакти на ~ts"}.
{"Roster size","Размер на списъка с контакти"}. {"Roster size","Размер на списъка с контакти"}.
{"Roster:","Списък с контакти:"}.
{"RPC Call Error","Грешка при RPC повикване"}.
{"Running Nodes","Работещи нодове"}. {"Running Nodes","Работещи нодове"}.
{"~s invites you to the room ~s","~s ви кани в стая ~s"}. {"~s invites you to the room ~s","~s ви кани в стая ~s"}.
{"Saturday","Събота"}. {"Saturday","Събота"}.
{"Script check","Проверка на скрипт"}.
{"Search from the date","Търси от дата"}. {"Search from the date","Търси от дата"}.
{"Search Results for ","Резултати от търсенето за "}. {"Search Results for ","Резултати от търсенето за "}.
{"Search the text","Търси текста"}. {"Search the text","Търси текста"}.
{"Search until the date","Търси до дата"}. {"Search until the date","Търси до дата"}.
{"Search users in ","Търси потребители в "}. {"Search users in ","Търси потребители в "}.
{"Select All","Избери всички"}.
{"Send announcement to all online users on all hosts","Изпрати съобщение до всички онлайн потребители на всички хостове"}. {"Send announcement to all online users on all hosts","Изпрати съобщение до всички онлайн потребители на всички хостове"}.
{"Send announcement to all online users","Изпрати съобщение до всички онлайн потребители"}. {"Send announcement to all online users","Изпрати съобщение до всички онлайн потребители"}.
{"Send announcement to all users on all hosts","Изпрати съобщение до всички потребители на всички хостове"}. {"Send announcement to all users on all hosts","Изпрати съобщение до всички потребители на всички хостове"}.
@ -471,6 +439,7 @@
{"Set message of the day on all hosts and send to online users","Задавай съобщение на деня на всички хостове и изпрати на онлайн потребителите"}. {"Set message of the day on all hosts and send to online users","Задавай съобщение на деня на всички хостове и изпрати на онлайн потребителите"}.
{"Shared Roster Groups","Споделени групи от списъци с контакти"}. {"Shared Roster Groups","Споделени групи от списъци с контакти"}.
{"Show Integral Table","Покажи интегрална таблица"}. {"Show Integral Table","Покажи интегрална таблица"}.
{"Show Occupants Join/Leave","Покажи участници Влязъл/Напускнал"}.
{"Show Ordinary Table","Покажи обикновена таблица"}. {"Show Ordinary Table","Покажи обикновена таблица"}.
{"Shut Down Service","Изключи услугата"}. {"Shut Down Service","Изключи услугата"}.
{"SOCKS5 Bytestreams","SOCKS5 байтови потоци"}. {"SOCKS5 Bytestreams","SOCKS5 байтови потоци"}.
@ -482,23 +451,17 @@
{"Stanza id is not valid","Невалидно ID на строфата"}. {"Stanza id is not valid","Невалидно ID на строфата"}.
{"Stanza ID","ID на строфа"}. {"Stanza ID","ID на строфа"}.
{"Statically specify a replyto of the node owner(s)","Статично задаване на replyto на собственика(ците) на нода"}. {"Statically specify a replyto of the node owner(s)","Статично задаване на replyto на собственика(ците) на нода"}.
{"Statistics of ~p","Статистики на ~p"}.
{"Statistics","Статистики"}.
{"Stopped Nodes","Спрени нодове"}. {"Stopped Nodes","Спрени нодове"}.
{"Stop","Спри"}.
{"Storage Type","Тип хранилище"}.
{"Store binary backup:","Запази бинарен архив:"}. {"Store binary backup:","Запази бинарен архив:"}.
{"Store plain text backup:","Запази архив като обикновен текст:"}. {"Store plain text backup:","Запази архив като обикновен текст:"}.
{"Stream management is already enabled","Управлението на потока вече е активирано"}. {"Stream management is already enabled","Управлението на потока вече е активирано"}.
{"Stream management is not enabled","Управлението на потока не е активирано"}. {"Stream management is not enabled","Управлението на потока не е активирано"}.
{"Subject","Тема"}. {"Subject","Тема"}.
{"Submitted","Изпратено"}. {"Submitted","Изпратено"}.
{"Submit","Изпрати"}.
{"Subscriber Address","Адрес на абоната"}. {"Subscriber Address","Адрес на абоната"}.
{"Subscribers may publish","Абонатите могат да публикуват"}. {"Subscribers may publish","Абонатите могат да публикуват"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Заявките за абонамент трябва да бъдат одобрени и само абонатите могат да извличат елементи"}. {"Subscription requests must be approved and only subscribers may retrieve items","Заявките за абонамент трябва да бъдат одобрени и само абонатите могат да извличат елементи"}.
{"Subscriptions are not allowed","Абонаментите не са разрешени"}. {"Subscriptions are not allowed","Абонаментите не са разрешени"}.
{"Subscription","Абонамент"}.
{"Sunday","Неделя"}. {"Sunday","Неделя"}.
{"Text associated with a picture","Текст, свързан със снимка"}. {"Text associated with a picture","Текст, свързан със снимка"}.
{"Text associated with a sound","Текст, свързан със звук"}. {"Text associated with a sound","Текст, свързан със звук"}.
@ -536,6 +499,7 @@
{"The number of unread or undelivered messages","Броят непрочетени или недоставени съобщения"}. {"The number of unread or undelivered messages","Броят непрочетени или недоставени съобщения"}.
{"The password contains unacceptable characters","Паролата съдържа недопустими символи"}. {"The password contains unacceptable characters","Паролата съдържа недопустими символи"}.
{"The password is too weak","Паролата е твърде слаба"}. {"The password is too weak","Паролата е твърде слаба"}.
{"the password is","паролата е"}.
{"The password of your XMPP account was successfully changed.","Паролата на вашия XMPP профил беше успешно променена."}. {"The password of your XMPP account was successfully changed.","Паролата на вашия XMPP профил беше успешно променена."}.
{"The password was not changed","Паролата не е променена"}. {"The password was not changed","Паролата не е променена"}.
{"The passwords are different","Паролите са различни"}. {"The passwords are different","Паролите са различни"}.
@ -548,7 +512,7 @@
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Строфата ТРЯБВА да съдържа само един <active/> елемент, един <default/> елемент или един <list/> елемент"}. {"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Строфата ТРЯБВА да съдържа само един <active/> елемент, един <default/> елемент или един <list/> елемент"}.
{"The subscription identifier associated with the subscription request","Идентификаторът на абонамента, свързан със заявката за абонамент"}. {"The subscription identifier associated with the subscription request","Идентификаторът на абонамента, свързан със заявката за абонамент"}.
{"The URL of an XSL transformation which can be applied to payloads in order to generate an appropriate message body element.","URL адрес на XSL трансформацията, която може да се приложи към прикачените данни, за да се генерира подходящ елемент от тялото на съобщението."}. {"The URL of an XSL transformation which can be applied to payloads in order to generate an appropriate message body element.","URL адрес на XSL трансформацията, която може да се приложи към прикачените данни, за да се генерира подходящ елемент от тялото на съобщението."}.
{"The URL of an XSL transformation which can be applied to the payload format in order to generate a valid Data Forms result that the client could display using a generic Data Forms rendering engine","URL адрес на XSL трансформацията, която може да се приложи към формата на прикачените данни, за да се генерира валиден резултат от Data Forms, който клиентът може да покаже с помощта на общ механизъм за визуализация на Data Forms."}. {"The URL of an XSL transformation which can be applied to the payload format in order to generate a valid Data Forms result that the client could display using a generic Data Forms rendering engine","URL адрес на XSL трансформацията, която може да се приложи към формата на прикачените данни, за да се генерира валиден резултат от Data Forms, който клиентът може да покаже с помощта на общ механизъм за визуализация на Data Forms"}.
{"There was an error changing the password: ","Възникна грешка при промяна на паролата: "}. {"There was an error changing the password: ","Възникна грешка при промяна на паролата: "}.
{"There was an error creating the account: ","Възникна грешка при създаването на профила: "}. {"There was an error creating the account: ","Възникна грешка при създаването на профила: "}.
{"There was an error deleting the account: ","Възникна грешка при изтриването на профила: "}. {"There was an error deleting the account: ","Възникна грешка при изтриването на профила: "}.
@ -560,7 +524,6 @@
{"Thursday","Четвъртък"}. {"Thursday","Четвъртък"}.
{"Time delay","Закъснение"}. {"Time delay","Закъснение"}.
{"Timed out waiting for stream resumption","Времето за изчакване за възобновяване на потока изтече"}. {"Timed out waiting for stream resumption","Времето за изчакване за възобновяване на потока изтече"}.
{"Time","Час"}.
{"To register, visit ~s","За да се регистрирате, посетете ~s"}. {"To register, visit ~s","За да се регистрирате, посетете ~s"}.
{"To ~ts","До ~ts"}. {"To ~ts","До ~ts"}.
{"Token TTL","Токен TTL"}. {"Token TTL","Токен TTL"}.
@ -573,13 +536,8 @@
{"Too many receiver fields were specified","Посочени са твърде много полета за получател"}. {"Too many receiver fields were specified","Посочени са твърде много полета за получател"}.
{"Too many unacked stanzas","Твърде много непотвърдени строфи"}. {"Too many unacked stanzas","Твърде много непотвърдени строфи"}.
{"Too many users in this conference","Твърде много потребители в тази конференция"}. {"Too many users in this conference","Твърде много потребители в тази конференция"}.
{"Total rooms","Общо стаи"}.
{"To","До"}.
{"Traffic rate limit is exceeded","Лимитът за трафик е надвишен"}. {"Traffic rate limit is exceeded","Лимитът за трафик е надвишен"}.
{"Transactions Aborted:","Прекратени транзакции:"}. {"~ts's MAM Archive","~ts's MAM архив"}.
{"Transactions Committed:","Извършени транзакции:"}.
{"Transactions Logged:","Регистрирани транзакции:"}.
{"Transactions Restarted:","Рестартирани транзакции:"}.
{"~ts's Offline Messages Queue","Офлайн съобщения на ~ts"}. {"~ts's Offline Messages Queue","Офлайн съобщения на ~ts"}.
{"Tuesday","Вторник"}. {"Tuesday","Вторник"}.
{"Unable to generate a CAPTCHA","Не може да се генерира CAPTCHA"}. {"Unable to generate a CAPTCHA","Не може да се генерира CAPTCHA"}.
@ -590,24 +548,20 @@
{"Uninstall","Деинсталирай"}. {"Uninstall","Деинсталирай"}.
{"Unregister an XMPP account","Дерегистрирай XMPP профил"}. {"Unregister an XMPP account","Дерегистрирай XMPP профил"}.
{"Unregister","Дерегистрирай"}. {"Unregister","Дерегистрирай"}.
{"Unselect All","Размаркирай всички"}.
{"Unsupported <index/> element","Неподдържан елемент <index/>"}. {"Unsupported <index/> element","Неподдържан елемент <index/>"}.
{"Unsupported version","Неподдържана версия"}. {"Unsupported version","Неподдържана версия"}.
{"Update message of the day (don't send)","Актуализирай съобщението на деня (не изпращай)"}. {"Update message of the day (don't send)","Актуализирай съобщението на деня (не изпращай)"}.
{"Update message of the day on all hosts (don't send)","Актуализирай съобщението на деня на всички хостове (не изпращай)"}. {"Update message of the day on all hosts (don't send)","Актуализирай съобщението на деня на всички хостове (не изпращай)"}.
{"Update plan","План за актуализация"}.
{"Update ~p","Актуализирай ~p"}.
{"Update script","Актуализиращ скрипт"}.
{"Update specs to get modules source, then install desired ones.","Актуализирайте спецификациите, за да получите източник на модули, след което инсталирайте желаните."}. {"Update specs to get modules source, then install desired ones.","Актуализирайте спецификациите, за да получите източник на модули, след което инсталирайте желаните."}.
{"Update Specs","Актуализирай спецификациите"}. {"Update Specs","Актуализирай спецификациите"}.
{"Update","Актуализирай"}. {"Updating the vCard is not supported by the vCard storage backend","Актуализирането на vCard не се поддържа от настройката за съхранение на vCard"}.
{"Upgrade","Обнови"}. {"Upgrade","Обнови"}.
{"Uptime:","Време на работа:"}.
{"URL for Archived Discussion Logs","URL адрес за дневници на архивирани дискусии"}. {"URL for Archived Discussion Logs","URL адрес за дневници на архивирани дискусии"}.
{"User already exists","Потребителят вече съществува"}. {"User already exists","Потребителят вече съществува"}.
{"User (jid)","Потребител (jid)"}. {"User (jid)","Потребител (jid)"}.
{"User JID","Потребител JID"}. {"User JID","Потребител JID"}.
{"User Management","Управление на потребители"}. {"User Management","Управление на потребители"}.
{"User not allowed to perform an IQ set on another user's vCard.","Потребителят не може да извършва IQ настрийка на vCard на друг потребител."}.
{"User removed","Потребителят е премахнат"}. {"User removed","Потребителят е премахнат"}.
{"User session not found","Потребителската сесия не е намерена"}. {"User session not found","Потребителската сесия не е намерена"}.
{"User session terminated","Потребителската сесия е прекратена"}. {"User session terminated","Потребителската сесия е прекратена"}.
@ -617,15 +571,13 @@
{"Users Last Activity","Последна активност на потребителите"}. {"Users Last Activity","Последна активност на потребителите"}.
{"Users","Потребители"}. {"Users","Потребители"}.
{"User","Потребител"}. {"User","Потребител"}.
{"Validate","Валидирай"}.
{"Value 'get' of 'type' attribute is not allowed","Стойността 'get' на атрибут 'type' не е разрешена"}. {"Value 'get' of 'type' attribute is not allowed","Стойността 'get' на атрибут 'type' не е разрешена"}.
{"Value of '~s' should be boolean","Стойността на '~s' трябва да е булева"}. {"Value of '~s' should be boolean","Стойността на '~s' трябва да е булева"}.
{"Value of '~s' should be datetime string","Стойността на '~s' трябва да бъде низ за дата и час"}. {"Value of '~s' should be datetime string","Стойността на '~s' трябва да бъде низ за дата и час"}.
{"Value of '~s' should be integer","Стойността на '~s' трябва да бъде цяло число"}. {"Value of '~s' should be integer","Стойността на '~s' трябва да бъде цяло число"}.
{"Value 'set' of 'type' attribute is not allowed","Стойността 'set' на атрибут 'type' не е разрешена"}. {"Value 'set' of 'type' attribute is not allowed","Стойността 'set' на атрибут 'type' не е разрешена"}.
{"vCard User Search","vCard търсене на потребител"}.
{"View joined MIX channels","Вижте присъединените MIX канали"}. {"View joined MIX channels","Вижте присъединените MIX канали"}.
{"View Queue","Вижте опашката"}.
{"View Roster","Преглед на списъка с контакти"}.
{"Virtual Hosts","Виртуални хостове"}. {"Virtual Hosts","Виртуални хостове"}.
{"Visitors are not allowed to change their nicknames in this room","Посетителите нямат право да променят псевдонимите си в тази стая"}. {"Visitors are not allowed to change their nicknames in this room","Посетителите нямат право да променят псевдонимите си в тази стая"}.
{"Visitors are not allowed to send messages to all occupants","На посетителите не е разрешено да изпращат съобщения до всички участници"}. {"Visitors are not allowed to send messages to all occupants","На посетителите не е разрешено да изпращат съобщения до всички участници"}.
@ -654,6 +606,7 @@
{"XMPP Show Value of Chat","XMPP покажи стойност на Чат"}. {"XMPP Show Value of Chat","XMPP покажи стойност на Чат"}.
{"XMPP Show Value of DND (Do Not Disturb)","XMPP покажи стойност на DND (Не ме безпокой)"}. {"XMPP Show Value of DND (Do Not Disturb)","XMPP покажи стойност на DND (Не ме безпокой)"}.
{"XMPP Show Value of XA (Extended Away)","XMPP покажи стойност на Продължително отсъствие"}. {"XMPP Show Value of XA (Extended Away)","XMPP покажи стойност на Продължително отсъствие"}.
{"XMPP URI of Associated Publish-Subscribe Node","XMPP URI на асоцииран Publish-Subscribe нод"}.
{"You are being removed from the room because of a system shutdown","Премахнати сте от стаята поради изключване на системата"}. {"You are being removed from the room because of a system shutdown","Премахнати сте от стаята поради изключване на системата"}.
{"You are not allowed to send private messages","Нямате право да изпращате лични съобщения"}. {"You are not allowed to send private messages","Нямате право да изпращате лични съобщения"}.
{"You are not joined to the channel","Не сте присъединени към канала"}. {"You are not joined to the channel","Не сте присъединени към канала"}.
@ -664,6 +617,9 @@
{"You need a client that supports x:data and CAPTCHA to register","За да се регистрирате Ви е нужен клиент, който поддържа x:data и CAPTCHA"}. {"You need a client that supports x:data and CAPTCHA to register","За да се регистрирате Ви е нужен клиент, който поддържа x:data и CAPTCHA"}.
{"You need a client that supports x:data to register the nickname","За да регистрирате псевдонима, Ви е необходим клиент, който поддържа x:data"}. {"You need a client that supports x:data to register the nickname","За да регистрирате псевдонима, Ви е необходим клиент, който поддържа x:data"}.
{"You need an x:data capable client to search","За да търсите, Ви е нужен клиент, който поддържа x:data"}. {"You need an x:data capable client to search","За да търсите, Ви е нужен клиент, който поддържа x:data"}.
{"Your active privacy list has denied the routing of this stanza.","Вашият активен списък за поверителност отказа маршрутизирането на тази строфа."}.
{"Your contact offline message queue is full. The message has been discarded.","Достигнат е максималният брой офлайн съобщения за вашия контакт. Съобщението е отхвърлено."}.
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Вашата заявка за абонамент и/или съобщения до ~s са блокирани. За да отблокирате заявката си за абонамент, посетете ~s"}.
{"Your XMPP account was successfully registered.","Вашият XMPP акаунт, беше регистриран успешно."}. {"Your XMPP account was successfully registered.","Вашият XMPP акаунт, беше регистриран успешно."}.
{"Your XMPP account was successfully unregistered.","Вашият XMPP акаунт, беше успешно дерегистриран."}. {"Your XMPP account was successfully unregistered.","Вашият XMPP акаунт, беше успешно дерегистриран."}.
{"You're not allowed to create nodes","Нямате право да създавате нодове"}. {"You're not allowed to create nodes","Нямате право да създавате нодове"}.

View file

@ -16,15 +16,13 @@
{"Account doesn't exist","El compte no existeix"}. {"Account doesn't exist","El compte no existeix"}.
{"Action on user","Acció en l'usuari"}. {"Action on user","Acció en l'usuari"}.
{"Add a hat to a user","Afegir un barret a un usuari"}. {"Add a hat to a user","Afegir un barret a un usuari"}.
{"Add Jabber ID","Afegir Jabber ID"}.
{"Add New","Afegir nou"}.
{"Add User","Afegir usuari"}. {"Add User","Afegir usuari"}.
{"Administration of ","Administració de "}. {"Administration of ","Administració de "}.
{"Administration","Administració"}. {"Administration","Administració"}.
{"Administrator privileges required","Es necessita tenir privilegis d'administrador"}. {"Administrator privileges required","Es necessita tenir privilegis d'administrador"}.
{"All activity","Tota l'activitat"}. {"All activity","Tota l'activitat"}.
{"All Users","Tots els usuaris"}. {"All Users","Tots els usuaris"}.
{"Allow subscription","Permetre subscripcions"}. {"Allow subscription","Permetre subscripció"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Permetre que aquesta Jabber ID es puga subscriure a aquest node pubsub?"}. {"Allow this Jabber ID to subscribe to this pubsub node?","Permetre que aquesta Jabber ID es puga subscriure a aquest node pubsub?"}.
{"Allow this person to register with the room?","Permetre a esta persona registrar-se a la sala?"}. {"Allow this person to register with the room?","Permetre a esta persona registrar-se a la sala?"}.
{"Allow users to change the subject","Permetre que els usuaris canviïn el tema"}. {"Allow users to change the subject","Permetre que els usuaris canviïn el tema"}.
@ -48,8 +46,9 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Qualsevol amb una subscripció de presencia de 'both' o 'from' pot subscriure's i publicar elements"}. {"Anyone with a presence subscription of both or from may subscribe and retrieve items","Qualsevol amb una subscripció de presencia de 'both' o 'from' pot subscriure's i publicar elements"}.
{"Anyone with Voice","Qualsevol amb Veu"}. {"Anyone with Voice","Qualsevol amb Veu"}.
{"Anyone","Qualsevol"}. {"Anyone","Qualsevol"}.
{"Apparently your account has no administration rights in this server. Please check how to grant admin rights in: https://docs.ejabberd.im/admin/installation/#administration-account","Aparentment el teu compte no te privilegis d'administrador en este servidor. Per favor consulta com obtindre privilegis d'administrador en: https://docs.ejabberd.im/admin/installation/#administration-account"}. {"API Commands","Comandaments API"}.
{"April","Abril"}. {"April","Abril"}.
{"Arguments","Arguments"}.
{"Attribute 'channel' is required for this request","L'atribut 'channel' és necessari per a aquesta petició"}. {"Attribute 'channel' is required for this request","L'atribut 'channel' és necessari per a aquesta petició"}.
{"Attribute 'id' is mandatory for MIX messages","L'atribut 'id' es necessari per a missatges MIX"}. {"Attribute 'id' is mandatory for MIX messages","L'atribut 'id' es necessari per a missatges MIX"}.
{"Attribute 'jid' is not allowed here","L'atribut 'jid' no està permès ací"}. {"Attribute 'jid' is not allowed here","L'atribut 'jid' no està permès ací"}.
@ -89,34 +88,25 @@
{"Choose whether to approve this entity's subscription.","Tria si aproves aquesta entitat de subscripció."}. {"Choose whether to approve this entity's subscription.","Tria si aproves aquesta entitat de subscripció."}.
{"City","Ciutat"}. {"City","Ciutat"}.
{"Client acknowledged more stanzas than sent by server","El client ha reconegut més paquets dels que ha enviat el servidor"}. {"Client acknowledged more stanzas than sent by server","El client ha reconegut més paquets dels que ha enviat el servidor"}.
{"Clustering","Clustering"}.
{"Commands","Comandaments"}. {"Commands","Comandaments"}.
{"Conference room does not exist","La sala de conferències no existeix"}. {"Conference room does not exist","La sala de conferències no existeix"}.
{"Configuration of room ~s","Configuració de la sala ~s"}. {"Configuration of room ~s","Configuració de la sala ~s"}.
{"Configuration","Configuració"}. {"Configuration","Configuració"}.
{"Connected Resources:","Recursos connectats:"}.
{"Contact Addresses (normally, room owner or owners)","Adreces de contacte (normalment, propietaris de la sala)"}. {"Contact Addresses (normally, room owner or owners)","Adreces de contacte (normalment, propietaris de la sala)"}.
{"Contrib Modules","Mòduls Contrib"}.
{"Country","Pais"}. {"Country","Pais"}.
{"CPU Time:","Temps de CPU:"}.
{"Current Discussion Topic","Assumpte de discussió actual"}. {"Current Discussion Topic","Assumpte de discussió actual"}.
{"Database failure","Error a la base de dades"}. {"Database failure","Error a la base de dades"}.
{"Database Tables at ~p","Taules de la base de dades en ~p"}.
{"Database Tables Configuration at ","Configuració de la base de dades en "}. {"Database Tables Configuration at ","Configuració de la base de dades en "}.
{"Database","Base de dades"}. {"Database","Base de dades"}.
{"December","Decembre"}. {"December","Decembre"}.
{"Default users as participants","Els usuaris són participants per defecte"}. {"Default users as participants","Els usuaris són participants per defecte"}.
{"Delete content","Eliminar contingut"}.
{"Delete message of the day on all hosts","Elimina el missatge del dis de tots els hosts"}. {"Delete message of the day on all hosts","Elimina el missatge del dis de tots els hosts"}.
{"Delete message of the day","Eliminar el missatge del dia"}. {"Delete message of the day","Eliminar el missatge del dia"}.
{"Delete Selected","Eliminar els seleccionats"}.
{"Delete table","Eliminar taula"}.
{"Delete User","Eliminar Usuari"}. {"Delete User","Eliminar Usuari"}.
{"Deliver event notifications","Entrega de notificacions d'events"}. {"Deliver event notifications","Entrega de notificacions d'events"}.
{"Deliver payloads with event notifications","Enviar payloads junt a les notificacions d'events"}. {"Deliver payloads with event notifications","Enviar payloads junt a les notificacions d'events"}.
{"Description:","Descripció:"}.
{"Disc only copy","Còpia sols en disc"}. {"Disc only copy","Còpia sols en disc"}.
{"'Displayed groups' not added (they do not exist!): ","'Mostrats' no afegits (no existeixen!): "}.
{"Displayed:","Mostrats:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","No li donis la teva contrasenya a ningú, ni tan sols als administradors del servidor XMPP."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","No li donis la teva contrasenya a ningú, ni tan sols als administradors del servidor XMPP."}.
{"Dump Backup to Text File at ","Exporta còpia de seguretat a fitxer de text en "}. {"Dump Backup to Text File at ","Exporta còpia de seguretat a fitxer de text en "}.
{"Dump to Text File","Exportar a fitxer de text"}. {"Dump to Text File","Exportar a fitxer de text"}.
@ -132,7 +122,6 @@
{"ejabberd vCard module","ejabberd mòdul vCard"}. {"ejabberd vCard module","ejabberd mòdul vCard"}.
{"ejabberd Web Admin","ejabberd Web d'administració"}. {"ejabberd Web Admin","ejabberd Web d'administració"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Elements"}.
{"Email Address","Adreça de correu"}. {"Email Address","Adreça de correu"}.
{"Email","Correu"}. {"Email","Correu"}.
{"Enable hats","Activar barrets"}. {"Enable hats","Activar barrets"}.
@ -147,7 +136,6 @@
{"Enter path to text file","Introdueix ruta al fitxer de text"}. {"Enter path to text file","Introdueix ruta al fitxer de text"}.
{"Enter the text you see","Introdueix el text que veus"}. {"Enter the text you see","Introdueix el text que veus"}.
{"Erlang XMPP Server","Servidor Erlang XMPP"}. {"Erlang XMPP Server","Servidor Erlang XMPP"}.
{"Error","Error"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Excloure Jabber IDs de la comprovació CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Excloure Jabber IDs de la comprovació CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Exporta totes les taules a un fitxer SQL:"}. {"Export all tables as SQL queries to a file:","Exporta totes les taules a un fitxer SQL:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar dades de tots els usuaris del servidor a arxius PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar dades de tots els usuaris del servidor a arxius PIEFXIS (XEP-0227):"}.
@ -166,7 +154,6 @@
{"Fill in the form to search for any matching XMPP User","Emplena camps per a buscar usuaris XMPP que concorden"}. {"Fill in the form to search for any matching XMPP User","Emplena camps per a buscar usuaris XMPP que concorden"}.
{"Friday","Divendres"}. {"Friday","Divendres"}.
{"From ~ts","De ~ts"}. {"From ~ts","De ~ts"}.
{"From","De"}.
{"Full List of Room Admins","Llista completa de administradors de la sala"}. {"Full List of Room Admins","Llista completa de administradors de la sala"}.
{"Full List of Room Owners","Llista completa de propietaris de la sala"}. {"Full List of Room Owners","Llista completa de propietaris de la sala"}.
{"Full Name","Nom complet"}. {"Full Name","Nom complet"}.
@ -176,23 +163,19 @@
{"Get Number of Registered Users","Obtenir Número d'Usuaris Registrats"}. {"Get Number of Registered Users","Obtenir Número d'Usuaris Registrats"}.
{"Get Pending","Obtenir Pendents"}. {"Get Pending","Obtenir Pendents"}.
{"Get User Last Login Time","Obtenir la última connexió d'Usuari"}. {"Get User Last Login Time","Obtenir la última connexió d'Usuari"}.
{"Get User Password","Obtenir Contrasenya d'usuari"}.
{"Get User Statistics","Obtenir Estadístiques d'Usuari"}. {"Get User Statistics","Obtenir Estadístiques d'Usuari"}.
{"Given Name","Nom propi"}. {"Given Name","Nom propi"}.
{"Grant voice to this person?","Concedir veu a aquesta persona?"}. {"Grant voice to this person?","Concedir veu a aquesta persona?"}.
{"Group","Grup"}.
{"Groups that will be displayed to the members","Grups que seran mostrats als membres"}.
{"Groups","Grups"}.
{"has been banned","ha sigut bloquejat"}. {"has been banned","ha sigut bloquejat"}.
{"has been kicked because of a system shutdown","ha sigut expulsat perquè el sistema va a apagar-se"}. {"has been kicked because of a system shutdown","ha sigut expulsat perquè el sistema va a apagar-se"}.
{"has been kicked because of an affiliation change","ha sigut expulsat a causa d'un canvi d'afiliació"}. {"has been kicked because of an affiliation change","ha sigut expulsat a causa d'un canvi d'afiliació"}.
{"has been kicked because the room has been changed to members-only","ha sigut expulsat perquè la sala ara és només per a membres"}. {"has been kicked because the room has been changed to members-only","ha sigut expulsat perquè la sala ara és només per a membres"}.
{"has been kicked","ha sigut expulsat"}. {"has been kicked","ha sigut expulsat"}.
{"Hash of the vCard-temp avatar of this room","Hash del avatar a vCard-temp d'esta sala"}.
{"Hat title","Títol del barret"}. {"Hat title","Títol del barret"}.
{"Hat URI","URI del barret"}. {"Hat URI","URI del barret"}.
{"Hats limit exceeded","El límit de tràfic ha sigut sobrepassat"}. {"Hats limit exceeded","El límit de tràfic ha sigut sobrepassat"}.
{"Host unknown","Host desconegut"}. {"Host unknown","Host desconegut"}.
{"Host","Host"}.
{"HTTP File Upload","HTTP File Upload"}. {"HTTP File Upload","HTTP File Upload"}.
{"Idle connection","Connexió sense us"}. {"Idle connection","Connexió sense us"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Si no veus la imatge CAPTCHA açí, visita la pàgina web."}. {"If you don't see the CAPTCHA image here, visit the web page.","Si no veus la imatge CAPTCHA açí, visita la pàgina web."}.
@ -206,7 +189,6 @@
{"Import Users From jabberd14 Spool Files","Importar usuaris de jabberd14"}. {"Import Users From jabberd14 Spool Files","Importar usuaris de jabberd14"}.
{"Improper domain part of 'from' attribute","La part de domini de l'atribut 'from' es impròpia"}. {"Improper domain part of 'from' attribute","La part de domini de l'atribut 'from' es impròpia"}.
{"Improper message type","Tipus de missatge incorrecte"}. {"Improper message type","Tipus de missatge incorrecte"}.
{"Incoming s2s Connections:","Connexions s2s d'entrada:"}.
{"Incorrect CAPTCHA submit","El CAPTCHA proporcionat és incorrecte"}. {"Incorrect CAPTCHA submit","El CAPTCHA proporcionat és incorrecte"}.
{"Incorrect data form","El formulari de dades és incorrecte"}. {"Incorrect data form","El formulari de dades és incorrecte"}.
{"Incorrect password","Contrasenya incorrecta"}. {"Incorrect password","Contrasenya incorrecta"}.
@ -236,7 +218,6 @@
{"July","Juliol"}. {"July","Juliol"}.
{"June","Juny"}. {"June","Juny"}.
{"Just created","Creació recent"}. {"Just created","Creació recent"}.
{"Label:","Etiqueta:"}.
{"Last Activity","Última activitat"}. {"Last Activity","Última activitat"}.
{"Last login","Últim login"}. {"Last login","Últim login"}.
{"Last message","Últim missatge"}. {"Last message","Últim missatge"}.
@ -244,11 +225,10 @@
{"Last year","Últim any"}. {"Last year","Últim any"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Els bits menys significants del hash SHA-256 del text deurien ser iguals a l'etiqueta hexadecimal"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Els bits menys significants del hash SHA-256 del text deurien ser iguals a l'etiqueta hexadecimal"}.
{"leaves the room","surt de la sala"}. {"leaves the room","surt de la sala"}.
{"List of rooms","Llista de sales"}.
{"List of users with hats","Llista d'usuaris amb barrets"}. {"List of users with hats","Llista d'usuaris amb barrets"}.
{"List users with hats","Llista d'usuaris amb barrets"}. {"List users with hats","Llista d'usuaris amb barrets"}.
{"Logged Out","Desconectat"}.
{"Logging","Registre"}. {"Logging","Registre"}.
{"Low level update script","Script d'actualització de baix nivell"}.
{"Make participants list public","Crear una llista de participants pública"}. {"Make participants list public","Crear una llista de participants pública"}.
{"Make room CAPTCHA protected","Crear una sala protegida per CAPTCHA"}. {"Make room CAPTCHA protected","Crear una sala protegida per CAPTCHA"}.
{"Make room members-only","Crear una sala només per a membres"}. {"Make room members-only","Crear una sala només per a membres"}.
@ -266,11 +246,8 @@
{"Maximum number of items to persist","Número màxim d'elements que persistixen"}. {"Maximum number of items to persist","Número màxim d'elements que persistixen"}.
{"Maximum Number of Occupants","Número màxim d'ocupants"}. {"Maximum Number of Occupants","Número màxim d'ocupants"}.
{"May","Maig"}. {"May","Maig"}.
{"Members not added (inexistent vhost!): ","Membres no afegits (perquè el vhost no existeix): "}.
{"Membership is required to enter this room","Necessites ser membre d'aquesta sala per a poder entrar"}. {"Membership is required to enter this room","Necessites ser membre d'aquesta sala per a poder entrar"}.
{"Members:","Membre:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memoritza la teva contrasenya, o escriu-la en un paper guardat a un lloc segur. A XMPP no hi ha una forma automatitzada de recuperar la teva contrasenya si la oblides."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memoritza la teva contrasenya, o escriu-la en un paper guardat a un lloc segur. A XMPP no hi ha una forma automatitzada de recuperar la teva contrasenya si la oblides."}.
{"Memory","Memòria"}.
{"Mere Availability in XMPP (No Show Value)","Simplement disponibilitat a XMPP (sense valor de 'show')"}. {"Mere Availability in XMPP (No Show Value)","Simplement disponibilitat a XMPP (sense valor de 'show')"}.
{"Message body","Missatge"}. {"Message body","Missatge"}.
{"Message not found in forwarded payload","Missatge no trobat al contingut reenviat"}. {"Message not found in forwarded payload","Missatge no trobat al contingut reenviat"}.
@ -282,15 +259,12 @@
{"Moderator privileges required","Es necessita tenir privilegis de moderador"}. {"Moderator privileges required","Es necessita tenir privilegis de moderador"}.
{"Moderator","Moderador"}. {"Moderator","Moderador"}.
{"Moderators Only","Només moderadors"}. {"Moderators Only","Només moderadors"}.
{"Modified modules","Mòduls modificats"}.
{"Module failed to handle the query","El modul ha fallat al gestionar la petició"}. {"Module failed to handle the query","El modul ha fallat al gestionar la petició"}.
{"Monday","Dilluns"}. {"Monday","Dilluns"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","No estan permesos múltiples elements <item/> per RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","No estan permesos múltiples elements <item/> per RFC6121"}.
{"Multi-User Chat","Multi-Usuari Converses"}. {"Multi-User Chat","Multi-Usuari Converses"}.
{"Name in the rosters where this group will be displayed","Nom a les llistes de contactes on es mostrarà aquest grup"}.
{"Name","Nom"}. {"Name","Nom"}.
{"Name:","Nom:"}.
{"Natural Language for Room Discussions","Llengua natural per a les discussions a les sales"}. {"Natural Language for Room Discussions","Llengua natural per a les discussions a les sales"}.
{"Natural-Language Room Name","Nom de la sala a la seua llengua natural"}. {"Natural-Language Room Name","Nom de la sala a la seua llengua natural"}.
{"Neither 'jid' nor 'nick' attribute found","No s'han trobat els atributs 'jid' ni 'nick'"}. {"Neither 'jid' nor 'nick' attribute found","No s'han trobat els atributs 'jid' ni 'nick'"}.
@ -355,14 +329,10 @@
{"Occupants are allowed to query others","Els ocupants poden enviar peticions a altres"}. {"Occupants are allowed to query others","Els ocupants poden enviar peticions a altres"}.
{"Occupants May Change the Subject","Els ocupants poden canviar el Tema"}. {"Occupants May Change the Subject","Els ocupants poden canviar el Tema"}.
{"October","Octubre"}. {"October","Octubre"}.
{"Offline Messages:","Missatges fora de línia:"}.
{"Offline Messages","Missatges offline"}.
{"OK","Acceptar"}. {"OK","Acceptar"}.
{"Old Password:","Antiga contrasenya:"}. {"Old Password:","Antiga contrasenya:"}.
{"Online Users","Usuaris conectats"}. {"Online Users","Usuaris conectats"}.
{"Online Users:","Usuaris en línia:"}.
{"Online","Connectat"}. {"Online","Connectat"}.
{"Only admins can see this","Només els administradors poden veure esto"}.
{"Only collection node owners may associate leaf nodes with the collection","Només els propietaris de la col·lecció de nodes poden associar nodes fulla amb la col·lecció"}. {"Only collection node owners may associate leaf nodes with the collection","Només els propietaris de la col·lecció de nodes poden associar nodes fulla amb la col·lecció"}.
{"Only deliver notifications to available users","Sols enviar notificacions als usuaris disponibles"}. {"Only deliver notifications to available users","Sols enviar notificacions als usuaris disponibles"}.
{"Only <enable/> or <disable/> tags are allowed","Només es permeten etiquetes <enable/> o <disable/>"}. {"Only <enable/> or <disable/> tags are allowed","Només es permeten etiquetes <enable/> o <disable/>"}.
@ -381,11 +351,9 @@
{"Organization Name","Nom de la organizació"}. {"Organization Name","Nom de la organizació"}.
{"Organization Unit","Unitat de la organizació"}. {"Organization Unit","Unitat de la organizació"}.
{"Other Modules Available:","Altres mòduls disponibles:"}. {"Other Modules Available:","Altres mòduls disponibles:"}.
{"Outgoing s2s Connections:","Connexions d'eixida s2s:"}.
{"Outgoing s2s Connections","Connexions s2s d'eixida"}. {"Outgoing s2s Connections","Connexions s2s d'eixida"}.
{"Owner privileges required","Es requerixen privilegis de propietari de la sala"}. {"Owner privileges required","Es requerixen privilegis de propietari de la sala"}.
{"Packet relay is denied by service policy","S'ha denegat el reenviament del paquet per política del servei"}. {"Packet relay is denied by service policy","S'ha denegat el reenviament del paquet per política del servei"}.
{"Packet","Paquet"}.
{"Participant ID","ID del Participant"}. {"Participant ID","ID del Participant"}.
{"Participant","Participant"}. {"Participant","Participant"}.
{"Password Verification","Verificació de la Contrasenya"}. {"Password Verification","Verificació de la Contrasenya"}.
@ -395,7 +363,6 @@
{"Path to Dir","Ruta al directori"}. {"Path to Dir","Ruta al directori"}.
{"Path to File","Ruta al fitxer"}. {"Path to File","Ruta al fitxer"}.
{"Payload semantic type information","Informació sobre el tipus semàntic de la carrega útil"}. {"Payload semantic type information","Informació sobre el tipus semàntic de la carrega útil"}.
{"Pending","Pendent"}.
{"Period: ","Període: "}. {"Period: ","Període: "}.
{"Persist items to storage","Persistir elements al guardar"}. {"Persist items to storage","Persistir elements al guardar"}.
{"Persistent","Persistent"}. {"Persistent","Persistent"}.
@ -429,26 +396,22 @@
{"Receive notification of new nodes only","Rebre notificació només de nous nodes"}. {"Receive notification of new nodes only","Rebre notificació només de nous nodes"}.
{"Recipient is not in the conference room","El receptor no està en la sala de conferència"}. {"Recipient is not in the conference room","El receptor no està en la sala de conferència"}.
{"Register an XMPP account","Registrar un compte XMPP"}. {"Register an XMPP account","Registrar un compte XMPP"}.
{"Registered Users","Usuaris registrats"}.
{"Registered Users:","Usuaris registrats:"}.
{"Register","Registrar"}. {"Register","Registrar"}.
{"Remote copy","Còpia remota"}. {"Remote copy","Còpia remota"}.
{"Remove a hat from a user","Eliminar un barret d'un usuari"}. {"Remove a hat from a user","Eliminar un barret d'un usuari"}.
{"Remove All Offline Messages","Eliminar tots els missatges offline"}.
{"Remove User","Eliminar usuari"}. {"Remove User","Eliminar usuari"}.
{"Remove","Borrar"}.
{"Replaced by new connection","Reemplaçat per una nova connexió"}. {"Replaced by new connection","Reemplaçat per una nova connexió"}.
{"Request has timed out","La petició ha caducat"}. {"Request has timed out","La petició ha caducat"}.
{"Request is ignored","La petició ha sigut ignorada"}. {"Request is ignored","La petició ha sigut ignorada"}.
{"Requested role","Rol sol·licitat"}. {"Requested role","Rol sol·licitat"}.
{"Resources","Recursos"}. {"Resources","Recursos"}.
{"Restart Service","Reiniciar el Servei"}. {"Restart Service","Reiniciar el Servei"}.
{"Restart","Reiniciar"}.
{"Restore Backup from File at ","Restaura còpia de seguretat des del fitxer en "}. {"Restore Backup from File at ","Restaura còpia de seguretat des del fitxer en "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar una còpia de seguretat binària després de reiniciar el ejabberd (requereix menys memòria:"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar una còpia de seguretat binària després de reiniciar el ejabberd (requereix menys memòria:"}.
{"Restore binary backup immediately:","Restaurar una còpia de seguretat binària ara mateix:"}. {"Restore binary backup immediately:","Restaurar una còpia de seguretat binària ara mateix:"}.
{"Restore plain text backup immediately:","Restaurar una còpia de seguretat en format de text pla ara mateix:"}. {"Restore plain text backup immediately:","Restaurar una còpia de seguretat en format de text pla ara mateix:"}.
{"Restore","Restaurar"}. {"Restore","Restaurar"}.
{"Result","Resultat"}.
{"Roles and Affiliations that May Retrieve Member List","Rols i Afiliacions que poden recuperar la llista de membres"}. {"Roles and Affiliations that May Retrieve Member List","Rols i Afiliacions que poden recuperar la llista de membres"}.
{"Roles for which Presence is Broadcasted","Rols per als que sí se difon la seua presencia"}. {"Roles for which Presence is Broadcasted","Rols per als que sí se difon la seua presencia"}.
{"Roles that May Send Private Messages","Rols que poden enviar missatges privats"}. {"Roles that May Send Private Messages","Rols que poden enviar missatges privats"}.
@ -459,20 +422,15 @@
{"Room terminates","La sala està terminant"}. {"Room terminates","La sala està terminant"}.
{"Room title","Títol de la sala"}. {"Room title","Títol de la sala"}.
{"Roster groups allowed to subscribe","Llista de grups que tenen permés subscriures"}. {"Roster groups allowed to subscribe","Llista de grups que tenen permés subscriures"}.
{"Roster of ~ts","Llista de contactes de ~ts"}.
{"Roster size","Mida de la llista"}. {"Roster size","Mida de la llista"}.
{"Roster:","Llista de contactes:"}.
{"RPC Call Error","Error de cridada RPC"}.
{"Running Nodes","Nodes funcionant"}. {"Running Nodes","Nodes funcionant"}.
{"~s invites you to the room ~s","~s et convida a la sala ~s"}. {"~s invites you to the room ~s","~s et convida a la sala ~s"}.
{"Saturday","Dissabte"}. {"Saturday","Dissabte"}.
{"Script check","Comprovar script"}.
{"Search from the date","Buscar des de la data"}. {"Search from the date","Buscar des de la data"}.
{"Search Results for ","Resultats de la búsqueda "}. {"Search Results for ","Resultats de la búsqueda "}.
{"Search the text","Buscar el text"}. {"Search the text","Buscar el text"}.
{"Search until the date","Buscar fins la data"}. {"Search until the date","Buscar fins la data"}.
{"Search users in ","Cerca usuaris en "}. {"Search users in ","Cerca usuaris en "}.
{"Select All","Seleccionar Tots"}.
{"Send announcement to all online users on all hosts","Enviar anunci a tots els usuaris connectats a tots els hosts"}. {"Send announcement to all online users on all hosts","Enviar anunci a tots els usuaris connectats a tots els hosts"}.
{"Send announcement to all online users","Enviar anunci a tots els usuaris connectats"}. {"Send announcement to all online users","Enviar anunci a tots els usuaris connectats"}.
{"Send announcement to all users on all hosts","Enviar anunci a tots els usuaris de tots els hosts"}. {"Send announcement to all users on all hosts","Enviar anunci a tots els usuaris de tots els hosts"}.
@ -485,6 +443,7 @@
{"Set message of the day on all hosts and send to online users","Escriure missatge del dia en tots els hosts i enviar-ho als usuaris connectats"}. {"Set message of the day on all hosts and send to online users","Escriure missatge del dia en tots els hosts i enviar-ho als usuaris connectats"}.
{"Shared Roster Groups","Grups de contactes compartits"}. {"Shared Roster Groups","Grups de contactes compartits"}.
{"Show Integral Table","Mostrar Taula Integral"}. {"Show Integral Table","Mostrar Taula Integral"}.
{"Show Occupants Join/Leave","Mostrar Entrades/Eixides dels Ocupants"}.
{"Show Ordinary Table","Mostrar Taula Ordinaria"}. {"Show Ordinary Table","Mostrar Taula Ordinaria"}.
{"Shut Down Service","Apager el Servei"}. {"Shut Down Service","Apager el Servei"}.
{"SOCKS5 Bytestreams","SOCKS5 Bytestreams"}. {"SOCKS5 Bytestreams","SOCKS5 Bytestreams"}.
@ -496,23 +455,17 @@
{"Stanza id is not valid","L'identificador del paquet no es vàlid"}. {"Stanza id is not valid","L'identificador del paquet no es vàlid"}.
{"Stanza ID","ID del paquet"}. {"Stanza ID","ID del paquet"}.
{"Statically specify a replyto of the node owner(s)","Especifica estaticament una adreça on respondre al propietari del node"}. {"Statically specify a replyto of the node owner(s)","Especifica estaticament una adreça on respondre al propietari del node"}.
{"Statistics of ~p","Estadístiques de ~p"}.
{"Statistics","Estadístiques"}.
{"Stop","Detindre"}.
{"Stopped Nodes","Nodes parats"}. {"Stopped Nodes","Nodes parats"}.
{"Storage Type","Tipus d'emmagatzematge"}.
{"Store binary backup:","Guardar una còpia de seguretat binària:"}. {"Store binary backup:","Guardar una còpia de seguretat binària:"}.
{"Store plain text backup:","Guardar una còpia de seguretat en format de text pla:"}. {"Store plain text backup:","Guardar una còpia de seguretat en format de text pla:"}.
{"Stream management is already enabled","L'administració de la connexió (stream management) ja està activada"}. {"Stream management is already enabled","L'administració de la connexió (stream management) ja està activada"}.
{"Stream management is not enabled","L'administració de la conexió (stream management) no està activada"}. {"Stream management is not enabled","L'administració de la conexió (stream management) no està activada"}.
{"Subject","Tema"}. {"Subject","Tema"}.
{"Submit","Enviar"}.
{"Submitted","Enviat"}. {"Submitted","Enviat"}.
{"Subscriber Address","Adreça del Subscriptor"}. {"Subscriber Address","Adreça del Subscriptor"}.
{"Subscribers may publish","Els subscriptors poden publicar"}. {"Subscribers may publish","Els subscriptors poden publicar"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Les peticiones de subscripció han de ser aprovades i només els subscriptors poden recuperar elements"}. {"Subscription requests must be approved and only subscribers may retrieve items","Les peticiones de subscripció han de ser aprovades i només els subscriptors poden recuperar elements"}.
{"Subscriptions are not allowed","Les subscripcions no estan permeses"}. {"Subscriptions are not allowed","Les subscripcions no estan permeses"}.
{"Subscription","Subscripció"}.
{"Sunday","Diumenge"}. {"Sunday","Diumenge"}.
{"Text associated with a picture","Text associat amb una imatge"}. {"Text associated with a picture","Text associat amb una imatge"}.
{"Text associated with a sound","Text associat amb un so"}. {"Text associated with a sound","Text associat amb un so"}.
@ -575,7 +528,6 @@
{"Thursday","Dijous"}. {"Thursday","Dijous"}.
{"Time delay","Temps de retard"}. {"Time delay","Temps de retard"}.
{"Timed out waiting for stream resumption","Massa temps esperant que es resumisca la connexió"}. {"Timed out waiting for stream resumption","Massa temps esperant que es resumisca la connexió"}.
{"Time","Data"}.
{"To register, visit ~s","Per a registrar-te, visita ~s"}. {"To register, visit ~s","Per a registrar-te, visita ~s"}.
{"To ~ts","A ~ts"}. {"To ~ts","A ~ts"}.
{"Token TTL","Token TTL"}. {"Token TTL","Token TTL"}.
@ -588,13 +540,8 @@
{"Too many receiver fields were specified","S'han especificat massa camps de receptors"}. {"Too many receiver fields were specified","S'han especificat massa camps de receptors"}.
{"Too many unacked stanzas","Massa missatges sense haver reconegut la seva recepció"}. {"Too many unacked stanzas","Massa missatges sense haver reconegut la seva recepció"}.
{"Too many users in this conference","N'hi ha massa usuaris en esta sala de conferència"}. {"Too many users in this conference","N'hi ha massa usuaris en esta sala de conferència"}.
{"To","Per a"}.
{"Total rooms","Sales totals"}.
{"Traffic rate limit is exceeded","El límit de tràfic ha sigut sobrepassat"}. {"Traffic rate limit is exceeded","El límit de tràfic ha sigut sobrepassat"}.
{"Transactions Aborted:","Transaccions Avortades:"}. {"~ts's MAM Archive","Arxiu MAM de ~ts"}.
{"Transactions Committed:","Transaccions Realitzades:"}.
{"Transactions Logged:","Transaccions registrades:"}.
{"Transactions Restarted:","Transaccions reiniciades:"}.
{"~ts's Offline Messages Queue","~ts's cua de missatges offline"}. {"~ts's Offline Messages Queue","~ts's cua de missatges offline"}.
{"Tuesday","Dimarts"}. {"Tuesday","Dimarts"}.
{"Unable to generate a CAPTCHA","No s'ha pogut generar un CAPTCHA"}. {"Unable to generate a CAPTCHA","No s'ha pogut generar un CAPTCHA"}.
@ -605,24 +552,20 @@
{"Uninstall","Desinstal·lar"}. {"Uninstall","Desinstal·lar"}.
{"Unregister an XMPP account","Anul·lar el registre d'un compte XMPP"}. {"Unregister an XMPP account","Anul·lar el registre d'un compte XMPP"}.
{"Unregister","Anul·lar el registre"}. {"Unregister","Anul·lar el registre"}.
{"Unselect All","Deseleccionar tots"}.
{"Unsupported <index/> element","Element <index/> no soportat"}. {"Unsupported <index/> element","Element <index/> no soportat"}.
{"Unsupported version","Versió no suportada"}. {"Unsupported version","Versió no suportada"}.
{"Update message of the day (don't send)","Actualitzar el missatge del dia (no enviar)"}. {"Update message of the day (don't send)","Actualitzar el missatge del dia (no enviar)"}.
{"Update message of the day on all hosts (don't send)","Actualitza el missatge del dia en tots els hosts (no enviar)"}. {"Update message of the day on all hosts (don't send)","Actualitza el missatge del dia en tots els hosts (no enviar)"}.
{"Update ~p","Actualitzar ~p"}.
{"Update plan","Pla d'actualització"}.
{"Update script","Script d'actualització"}.
{"Update specs to get modules source, then install desired ones.","Actualitza les especificacions per obtindre el codi font dels mòduls, després instal·la els que vulgues."}. {"Update specs to get modules source, then install desired ones.","Actualitza les especificacions per obtindre el codi font dels mòduls, després instal·la els que vulgues."}.
{"Update Specs","Actualitzar Especificacions"}. {"Update Specs","Actualitzar Especificacions"}.
{"Update","Actualitzar"}. {"Updating the vCard is not supported by the vCard storage backend","El sistema d'almacenament de vCard no te capacitat per a actualitzar la vCard"}.
{"Upgrade","Actualitza"}. {"Upgrade","Actualitza"}.
{"Uptime:","Temps en marxa:"}.
{"URL for Archived Discussion Logs","URL dels Arxius de Discussions"}. {"URL for Archived Discussion Logs","URL dels Arxius de Discussions"}.
{"User already exists","El usuari ja existeix"}. {"User already exists","El usuari ja existeix"}.
{"User JID","JID del usuari"}. {"User JID","JID del usuari"}.
{"User (jid)","Usuari (jid)"}. {"User (jid)","Usuari (jid)"}.
{"User Management","Gestió d'Usuaris"}. {"User Management","Gestió d'Usuaris"}.
{"User not allowed to perform an IQ set on another user's vCard.","L'usuari no te permis per a modificar la vCard d'altre usuari."}.
{"User removed","Usuari borrat"}. {"User removed","Usuari borrat"}.
{"User session not found","Sessió d'usuari no trobada"}. {"User session not found","Sessió d'usuari no trobada"}.
{"User session terminated","Sessió d'usuari terminada"}. {"User session terminated","Sessió d'usuari terminada"}.
@ -632,7 +575,6 @@
{"Users Last Activity","Última activitat d'usuari"}. {"Users Last Activity","Última activitat d'usuari"}.
{"Users","Usuaris"}. {"Users","Usuaris"}.
{"User","Usuari"}. {"User","Usuari"}.
{"Validate","Validar"}.
{"Value 'get' of 'type' attribute is not allowed","El valor 'get' a l'atribut 'type' no és permès"}. {"Value 'get' of 'type' attribute is not allowed","El valor 'get' a l'atribut 'type' no és permès"}.
{"Value of '~s' should be boolean","El valor de '~s' deuria ser booleà"}. {"Value of '~s' should be boolean","El valor de '~s' deuria ser booleà"}.
{"Value of '~s' should be datetime string","El valor de '~s' deuria ser una data"}. {"Value of '~s' should be datetime string","El valor de '~s' deuria ser una data"}.
@ -640,14 +582,13 @@
{"Value 'set' of 'type' attribute is not allowed","El valor 'set' a l'atribut 'type' no és permès"}. {"Value 'set' of 'type' attribute is not allowed","El valor 'set' a l'atribut 'type' no és permès"}.
{"vCard User Search","vCard recerca d'usuari"}. {"vCard User Search","vCard recerca d'usuari"}.
{"View joined MIX channels","Vore els canals MIX units"}. {"View joined MIX channels","Vore els canals MIX units"}.
{"View Queue","Vore Cua"}.
{"View Roster","Vore Llista de contactes"}.
{"Virtual Hosts","Hosts virtuals"}. {"Virtual Hosts","Hosts virtuals"}.
{"Visitors are not allowed to change their nicknames in this room","Els visitants no tenen permés canviar el seus Nicknames en esta sala"}. {"Visitors are not allowed to change their nicknames in this room","Els visitants no tenen permés canviar el seus Nicknames en esta sala"}.
{"Visitors are not allowed to send messages to all occupants","Els visitants no poden enviar missatges a tots els ocupants"}. {"Visitors are not allowed to send messages to all occupants","Els visitants no poden enviar missatges a tots els ocupants"}.
{"Visitor","Visitant"}. {"Visitor","Visitant"}.
{"Voice request","Petició de veu"}. {"Voice request","Petició de veu"}.
{"Voice requests are disabled in this conference","Les peticions de veu es troben desactivades en aquesta conferència"}. {"Voice requests are disabled in this conference","Les peticions de veu es troben desactivades en aquesta conferència"}.
{"Web client which allows to join the room anonymously","Client web que permet entrar a la sala anonimament"}.
{"Wednesday","Dimecres"}. {"Wednesday","Dimecres"}.
{"When a new subscription is processed and whenever a subscriber comes online","Quan es processa una nova subscripció i un subscriptor es connecta"}. {"When a new subscription is processed and whenever a subscriber comes online","Quan es processa una nova subscripció i un subscriptor es connecta"}.
{"When a new subscription is processed","Quan es processa una nova subscripció"}. {"When a new subscription is processed","Quan es processa una nova subscripció"}.
@ -657,7 +598,7 @@
{"Whether an entity wants to receive or disable notifications","Si una entitat vol rebre notificacions o no"}. {"Whether an entity wants to receive or disable notifications","Si una entitat vol rebre notificacions o no"}.
{"Whether owners or publisher should receive replies to items","Si el propietaris o publicadors deurien de rebre respostes als elements"}. {"Whether owners or publisher should receive replies to items","Si el propietaris o publicadors deurien de rebre respostes als elements"}.
{"Whether the node is a leaf (default) or a collection","Si el node es fulla (per defecte) o es una col·lecció"}. {"Whether the node is a leaf (default) or a collection","Si el node es fulla (per defecte) o es una col·lecció"}.
{"Whether to allow subscriptions","Permetre subscripcions"}. {"Whether to allow subscriptions","Si s'hauria de permetre subscripcions"}.
{"Whether to make all subscriptions temporary, based on subscriber presence","Si fer totes les subscripcions temporals, basat en la presencia del subscriptor"}. {"Whether to make all subscriptions temporary, based on subscriber presence","Si fer totes les subscripcions temporals, basat en la presencia del subscriptor"}.
{"Whether to notify owners about new subscribers and unsubscribes","Si notificar als propietaris sobre noves subscripcions i desubscripcions"}. {"Whether to notify owners about new subscribers and unsubscribes","Si notificar als propietaris sobre noves subscripcions i desubscripcions"}.
{"Who can send private messages","Qui pot enviar missatges privats"}. {"Who can send private messages","Qui pot enviar missatges privats"}.

View file

@ -9,8 +9,6 @@
{"Accept","Přijmout"}. {"Accept","Přijmout"}.
{"Access denied by service policy","Přístup byl zamítnut nastavením služby"}. {"Access denied by service policy","Přístup byl zamítnut nastavením služby"}.
{"Action on user","Akce aplikovaná na uživatele"}. {"Action on user","Akce aplikovaná na uživatele"}.
{"Add Jabber ID","Přidat Jabber ID"}.
{"Add New","Přidat nový"}.
{"Add User","Přidat uživatele"}. {"Add User","Přidat uživatele"}.
{"Administration of ","Administrace "}. {"Administration of ","Administrace "}.
{"Administration","Administrace"}. {"Administration","Administrace"}.
@ -60,22 +58,17 @@
{"Conference room does not exist","Místnost neexistuje"}. {"Conference room does not exist","Místnost neexistuje"}.
{"Configuration of room ~s","Konfigurace místnosti ~s"}. {"Configuration of room ~s","Konfigurace místnosti ~s"}.
{"Configuration","Konfigurace"}. {"Configuration","Konfigurace"}.
{"Connected Resources:","Připojené zdroje:"}.
{"Country","Země"}. {"Country","Země"}.
{"CPU Time:","Čas procesoru:"}.
{"Database failure","Chyba databáze"}. {"Database failure","Chyba databáze"}.
{"Database Tables at ~p","Databázové tabulky na ~p"}.
{"Database Tables Configuration at ","Konfigurace databázových tabulek "}. {"Database Tables Configuration at ","Konfigurace databázových tabulek "}.
{"Database","Databáze"}. {"Database","Databáze"}.
{"December",". prosince"}. {"December",". prosince"}.
{"Default users as participants","Uživatelé jsou implicitně členy"}. {"Default users as participants","Uživatelé jsou implicitně členy"}.
{"Delete message of the day on all hosts","Smazat zprávu dne na všech hostitelích"}. {"Delete message of the day on all hosts","Smazat zprávu dne na všech hostitelích"}.
{"Delete message of the day","Smazat zprávu dne"}. {"Delete message of the day","Smazat zprávu dne"}.
{"Delete Selected","Smazat vybrané"}.
{"Delete User","Smazat uživatele"}. {"Delete User","Smazat uživatele"}.
{"Deliver event notifications","Doručovat upozornění na události"}. {"Deliver event notifications","Doručovat upozornění na události"}.
{"Deliver payloads with event notifications","Doručovat náklad s upozorněním na událost"}. {"Deliver payloads with event notifications","Doručovat náklad s upozorněním na událost"}.
{"Description:","Popis:"}.
{"Disc only copy","Jen kopie disku"}. {"Disc only copy","Jen kopie disku"}.
{"Dump Backup to Text File at ","Uložit zálohu do textového souboru na "}. {"Dump Backup to Text File at ","Uložit zálohu do textového souboru na "}.
{"Dump to Text File","Uložit do textového souboru"}. {"Dump to Text File","Uložit do textového souboru"}.
@ -87,7 +80,6 @@
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams modul"}. {"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams modul"}.
{"ejabberd vCard module","ejabberd vCard modul"}. {"ejabberd vCard module","ejabberd vCard modul"}.
{"ejabberd Web Admin","Webová administrace ejabberd"}. {"ejabberd Web Admin","Webová administrace ejabberd"}.
{"Elements","Položek"}.
{"Email","E-mail"}. {"Email","E-mail"}.
{"Enable logging","Zaznamenávat konverzace"}. {"Enable logging","Zaznamenávat konverzace"}.
{"Enable message archiving","Povolit ukládání historie zpráv"}. {"Enable message archiving","Povolit ukládání historie zpráv"}.
@ -99,7 +91,6 @@
{"Enter path to jabberd14 spool file","Zadejte cestu k spool souboru jabberd14"}. {"Enter path to jabberd14 spool file","Zadejte cestu k spool souboru jabberd14"}.
{"Enter path to text file","Zadajte cestu k textovému souboru"}. {"Enter path to text file","Zadajte cestu k textovému souboru"}.
{"Enter the text you see","Zadejte text, který vidíte"}. {"Enter the text you see","Zadejte text, který vidíte"}.
{"Error","Chyba"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Vyloučit Jabber ID z procesu CAPTCHA ověřování"}. {"Exclude Jabber IDs from CAPTCHA challenge","Vyloučit Jabber ID z procesu CAPTCHA ověřování"}.
{"Export all tables as SQL queries to a file:","Zálohovat všechny tabulky jako SQL dotazy do souboru:"}. {"Export all tables as SQL queries to a file:","Zálohovat všechny tabulky jako SQL dotazy do souboru:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportovat všechny uživatele do souboru ve formátu PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportovat všechny uživatele do souboru ve formátu PIEFXIS (XEP-0227):"}.
@ -116,24 +107,19 @@
{"File larger than ~w bytes","Soubor větší než ~w bytů"}. {"File larger than ~w bytes","Soubor větší než ~w bytů"}.
{"Friday","Pátek"}. {"Friday","Pátek"}.
{"From ~ts","Od ~ts"}. {"From ~ts","Od ~ts"}.
{"From","Od"}.
{"Full Name","Celé jméno"}. {"Full Name","Celé jméno"}.
{"Get Number of Online Users","Získat počet online uživatelů"}. {"Get Number of Online Users","Získat počet online uživatelů"}.
{"Get Number of Registered Users","Získat počet registrovaných uživatelů"}. {"Get Number of Registered Users","Získat počet registrovaných uživatelů"}.
{"Get User Last Login Time","Získat čas podleního přihlášení uživatele"}. {"Get User Last Login Time","Získat čas podleního přihlášení uživatele"}.
{"Get User Password","Získat heslo uživatele"}.
{"Get User Statistics","Získat statistiky uživatele"}. {"Get User Statistics","Získat statistiky uživatele"}.
{"Given Name","Křestní jméno"}. {"Given Name","Křestní jméno"}.
{"Grant voice to this person?","Udělit voice práva této osobě?"}. {"Grant voice to this person?","Udělit voice práva této osobě?"}.
{"Group","Skupina"}.
{"Groups","Skupiny"}.
{"has been banned","byl(a) zablokován(a)"}. {"has been banned","byl(a) zablokován(a)"}.
{"has been kicked because of a system shutdown","byl(a) vyhozen(a), protože dojde k vypnutí systému"}. {"has been kicked because of a system shutdown","byl(a) vyhozen(a), protože dojde k vypnutí systému"}.
{"has been kicked because of an affiliation change","byl(a) vyhozen(a) kvůli změně přiřazení"}. {"has been kicked because of an affiliation change","byl(a) vyhozen(a) kvůli změně přiřazení"}.
{"has been kicked because the room has been changed to members-only","byl(a) vyhozen(a), protože mísnost je nyní pouze pro členy"}. {"has been kicked because the room has been changed to members-only","byl(a) vyhozen(a), protože mísnost je nyní pouze pro členy"}.
{"has been kicked","byl(a) vyhozen(a) z místnosti"}. {"has been kicked","byl(a) vyhozen(a) z místnosti"}.
{"Host unknown","Neznámý hostitel"}. {"Host unknown","Neznámý hostitel"}.
{"Host","Hostitel"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Pokud zde nevidíte obrázek CAPTCHA, přejděte na webovou stránku."}. {"If you don't see the CAPTCHA image here, visit the web page.","Pokud zde nevidíte obrázek CAPTCHA, přejděte na webovou stránku."}.
{"Import Directory","Import adresáře"}. {"Import Directory","Import adresáře"}.
{"Import File","Import souboru"}. {"Import File","Import souboru"}.
@ -145,7 +131,6 @@
{"Import Users From jabberd14 Spool Files","Importovat uživatele z jabberd14 spool souborů"}. {"Import Users From jabberd14 Spool Files","Importovat uživatele z jabberd14 spool souborů"}.
{"Improper domain part of 'from' attribute","Nesprávná část s doménou atributu 'from'"}. {"Improper domain part of 'from' attribute","Nesprávná část s doménou atributu 'from'"}.
{"Improper message type","Nesprávný typ zprávy"}. {"Improper message type","Nesprávný typ zprávy"}.
{"Incoming s2s Connections:","Příchozí s2s spojení:"}.
{"Incorrect CAPTCHA submit","Nesprávné odeslání CAPTCHA"}. {"Incorrect CAPTCHA submit","Nesprávné odeslání CAPTCHA"}.
{"Incorrect data form","Nesprávný datový formulář"}. {"Incorrect data form","Nesprávný datový formulář"}.
{"Incorrect password","Nesprávné heslo"}. {"Incorrect password","Nesprávné heslo"}.
@ -172,8 +157,6 @@
{"Last month","Poslední měsíc"}. {"Last month","Poslední měsíc"}.
{"Last year","Poslední rok"}. {"Last year","Poslední rok"}.
{"leaves the room","opustil(a) místnost"}. {"leaves the room","opustil(a) místnost"}.
{"List of rooms","Seznam místností"}.
{"Low level update script","Nízkoúrovňový aktualizační skript"}.
{"Make participants list public","Nastavit seznam účastníků jako veřejný"}. {"Make participants list public","Nastavit seznam účastníků jako veřejný"}.
{"Make room CAPTCHA protected","Chránit místnost pomocí CAPTCHA"}. {"Make room CAPTCHA protected","Chránit místnost pomocí CAPTCHA"}.
{"Make room members-only","Zpřístupnit místnost jen členům"}. {"Make room members-only","Zpřístupnit místnost jen členům"}.
@ -186,22 +169,18 @@
{"Max payload size in bytes","Maximální náklad v bajtech"}. {"Max payload size in bytes","Maximální náklad v bajtech"}.
{"Maximum Number of Occupants","Maximální počet účastníků"}. {"Maximum Number of Occupants","Maximální počet účastníků"}.
{"May",". května"}. {"May",". května"}.
{"Members:","Členové:"}.
{"Membership is required to enter this room","Pro vstup do místnosti musíte být členem"}. {"Membership is required to enter this room","Pro vstup do místnosti musíte být členem"}.
{"Memory","Paměť"}.
{"Message body","Tělo zprávy"}. {"Message body","Tělo zprávy"}.
{"Message not found in forwarded payload","Zpráva nebyla nalezena v přeposlaném obsahu"}. {"Message not found in forwarded payload","Zpráva nebyla nalezena v přeposlaném obsahu"}.
{"Middle Name","Druhé jméno"}. {"Middle Name","Druhé jméno"}.
{"Minimum interval between voice requests (in seconds)","Minimální interval mezi žádostmi o voice práva (v sekundách)"}. {"Minimum interval between voice requests (in seconds)","Minimální interval mezi žádostmi o voice práva (v sekundách)"}.
{"Moderator privileges required","Potřebujete práva moderátora"}. {"Moderator privileges required","Potřebujete práva moderátora"}.
{"Moderator","Moderátor"}. {"Moderator","Moderátor"}.
{"Modified modules","Aktualizované moduly"}.
{"Module failed to handle the query","Modul chyboval při zpracování dotazu"}. {"Module failed to handle the query","Modul chyboval při zpracování dotazu"}.
{"Monday","Pondělí"}. {"Monday","Pondělí"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multi-User Chat","Víceuživatelský chat"}. {"Multi-User Chat","Víceuživatelský chat"}.
{"Name","Jméno"}. {"Name","Jméno"}.
{"Name:","Jméno:"}.
{"Neither 'jid' nor 'nick' attribute found","Nebyl nalezen atribut 'jid' ani 'nick'"}. {"Neither 'jid' nor 'nick' attribute found","Nebyl nalezen atribut 'jid' ani 'nick'"}.
{"Neither 'role' nor 'affiliation' attribute found","Nebyl nalezen atribut 'role' ani 'affiliation'"}. {"Neither 'role' nor 'affiliation' attribute found","Nebyl nalezen atribut 'role' ani 'affiliation'"}.
{"Never","Nikdy"}. {"Never","Nikdy"}.
@ -250,12 +229,9 @@
{"Number of online users","Počet online uživatelů"}. {"Number of online users","Počet online uživatelů"}.
{"Number of registered users","Počet registrovaných uživatelů"}. {"Number of registered users","Počet registrovaných uživatelů"}.
{"October",". října"}. {"October",". října"}.
{"Offline Messages","Offline zprávy"}.
{"Offline Messages:","Offline zprávy:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Současné heslo:"}. {"Old Password:","Současné heslo:"}.
{"Online Users","Připojení uživatelé"}. {"Online Users","Připojení uživatelé"}.
{"Online Users:","Připojení uživatelé:"}.
{"Online","Online"}. {"Online","Online"}.
{"Only deliver notifications to available users","Doručovat upozornění jen právě přihlášeným uživatelům"}. {"Only deliver notifications to available users","Doručovat upozornění jen právě přihlášeným uživatelům"}.
{"Only <enable/> or <disable/> tags are allowed","Pouze značky <enable/> nebo <disable/>jsou povoleny"}. {"Only <enable/> or <disable/> tags are allowed","Pouze značky <enable/> nebo <disable/>jsou povoleny"}.
@ -271,9 +247,7 @@
{"Organization Unit","Oddělení"}. {"Organization Unit","Oddělení"}.
{"Other Modules Available:","Ostatní dostupné moduly:"}. {"Other Modules Available:","Ostatní dostupné moduly:"}.
{"Outgoing s2s Connections","Odchozí s2s spojení"}. {"Outgoing s2s Connections","Odchozí s2s spojení"}.
{"Outgoing s2s Connections:","Odchozí s2s spojení:"}.
{"Owner privileges required","Jsou vyžadována práva vlastníka"}. {"Owner privileges required","Jsou vyžadována práva vlastníka"}.
{"Packet","Paket"}.
{"Participant","Účastník"}. {"Participant","Účastník"}.
{"Password Verification","Ověření hesla"}. {"Password Verification","Ověření hesla"}.
{"Password Verification:","Ověření hesla:"}. {"Password Verification:","Ověření hesla:"}.
@ -281,7 +255,6 @@
{"Password:","Heslo:"}. {"Password:","Heslo:"}.
{"Path to Dir","Cesta k adresáři"}. {"Path to Dir","Cesta k adresáři"}.
{"Path to File","Cesta k souboru"}. {"Path to File","Cesta k souboru"}.
{"Pending","Čekající"}.
{"Period: ","Čas: "}. {"Period: ","Čas: "}.
{"Persist items to storage","Uložit položky natrvalo do úložiště"}. {"Persist items to storage","Uložit položky natrvalo do úložiště"}.
{"Ping query is incorrect","Ping dotaz je nesprávný"}. {"Ping query is incorrect","Ping dotaz je nesprávný"}.
@ -300,17 +273,12 @@
{"RAM copy","Kopie RAM"}. {"RAM copy","Kopie RAM"}.
{"Really delete message of the day?","Skutečně smazat zprávu dne?"}. {"Really delete message of the day?","Skutečně smazat zprávu dne?"}.
{"Recipient is not in the conference room","Příjemce se nenachází v místnosti"}. {"Recipient is not in the conference room","Příjemce se nenachází v místnosti"}.
{"Registered Users","Registrovaní uživatelé"}.
{"Registered Users:","Registrovaní uživatelé:"}.
{"Register","Zaregistrovat se"}. {"Register","Zaregistrovat se"}.
{"Remote copy","Vzdálená kopie"}. {"Remote copy","Vzdálená kopie"}.
{"Remove All Offline Messages","Odstranit všechny offline zprávy"}.
{"Remove User","Odstranit uživatele"}. {"Remove User","Odstranit uživatele"}.
{"Remove","Odstranit"}.
{"Replaced by new connection","Nahrazeno novým spojením"}. {"Replaced by new connection","Nahrazeno novým spojením"}.
{"Resources","Zdroje"}. {"Resources","Zdroje"}.
{"Restart Service","Restartovat službu"}. {"Restart Service","Restartovat službu"}.
{"Restart","Restart"}.
{"Restore Backup from File at ","Obnovit zálohu ze souboru na "}. {"Restore Backup from File at ","Obnovit zálohu ze souboru na "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Obnovit binární zálohu při následujícím restartu ejabberd (vyžaduje méně paměti):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Obnovit binární zálohu při následujícím restartu ejabberd (vyžaduje méně paměti):"}.
{"Restore binary backup immediately:","Okamžitě obnovit binární zálohu:"}. {"Restore binary backup immediately:","Okamžitě obnovit binární zálohu:"}.
@ -323,13 +291,9 @@
{"Room Occupants","Počet účastníků"}. {"Room Occupants","Počet účastníků"}.
{"Room title","Název místnosti"}. {"Room title","Název místnosti"}.
{"Roster groups allowed to subscribe","Skupiny kontaktů, které mohou odebírat"}. {"Roster groups allowed to subscribe","Skupiny kontaktů, které mohou odebírat"}.
{"Roster of ~ts","Seznam kontaktů ~ts"}.
{"Roster size","Velikost seznamu kontaktů"}. {"Roster size","Velikost seznamu kontaktů"}.
{"Roster:","Seznam kontaktů:"}.
{"RPC Call Error","Chyba RPC volání"}.
{"Running Nodes","Běžící uzly"}. {"Running Nodes","Běžící uzly"}.
{"Saturday","Sobota"}. {"Saturday","Sobota"}.
{"Script check","Kontrola skriptu"}.
{"Search Results for ","Výsledky hledání pro "}. {"Search Results for ","Výsledky hledání pro "}.
{"Search users in ","Hledat uživatele v "}. {"Search users in ","Hledat uživatele v "}.
{"Send announcement to all online users on all hosts","Odeslat oznámení všem online uživatelům na všech hostitelích"}. {"Send announcement to all online users on all hosts","Odeslat oznámení všem online uživatelům na všech hostitelích"}.
@ -347,18 +311,12 @@
{"Specify the access model","Uveďte přístupový model"}. {"Specify the access model","Uveďte přístupový model"}.
{"Specify the event message type","Zvolte typ zpráv pro události"}. {"Specify the event message type","Zvolte typ zpráv pro události"}.
{"Specify the publisher model","Specifikovat model pro publikování"}. {"Specify the publisher model","Specifikovat model pro publikování"}.
{"Statistics of ~p","Statistiky ~p"}.
{"Statistics","Statistiky"}.
{"Stopped Nodes","Zastavené uzly"}. {"Stopped Nodes","Zastavené uzly"}.
{"Stop","Stop"}.
{"Storage Type","Typ úložiště"}.
{"Store binary backup:","Uložit binární zálohu:"}. {"Store binary backup:","Uložit binární zálohu:"}.
{"Store plain text backup:","Uložit zálohu do textového souboru:"}. {"Store plain text backup:","Uložit zálohu do textového souboru:"}.
{"Subject","Předmět"}. {"Subject","Předmět"}.
{"Submit","Odeslat"}.
{"Submitted","Odeslané"}. {"Submitted","Odeslané"}.
{"Subscriber Address","Adresa odběratele"}. {"Subscriber Address","Adresa odběratele"}.
{"Subscription","Přihlášení"}.
{"Subscriptions are not allowed","Předplatné není povoleno"}. {"Subscriptions are not allowed","Předplatné není povoleno"}.
{"Sunday","Neděle"}. {"Sunday","Neděle"}.
{"That nickname is already in use by another occupant","Přezdívka je již používána jiným členem"}. {"That nickname is already in use by another occupant","Přezdívka je již používána jiným členem"}.
@ -381,7 +339,6 @@
{"This room is not anonymous","Tato místnost není anonymní"}. {"This room is not anonymous","Tato místnost není anonymní"}.
{"Thursday","Čtvrtek"}. {"Thursday","Čtvrtek"}.
{"Time delay","Časový posun"}. {"Time delay","Časový posun"}.
{"Time","Čas"}.
{"To register, visit ~s","Pokud se chcete zaregistrovat, navštivte ~s"}. {"To register, visit ~s","Pokud se chcete zaregistrovat, navštivte ~s"}.
{"Token TTL","Token TTL"}. {"Token TTL","Token TTL"}.
{"Too many active bytestreams","Příliš mnoho aktivních bytestreamů"}. {"Too many active bytestreams","Příliš mnoho aktivních bytestreamů"}.
@ -391,13 +348,7 @@
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Příliš mnoho (~p) chybných pokusů o přihlášení z této IP adresy (~s). Adresa bude zablokována do ~s UTC"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Příliš mnoho (~p) chybných pokusů o přihlášení z této IP adresy (~s). Adresa bude zablokována do ~s UTC"}.
{"Too many unacked stanzas","Příliš mnoho nepotvrzených stanz"}. {"Too many unacked stanzas","Příliš mnoho nepotvrzených stanz"}.
{"Too many users in this conference","Přiliš mnoho uživatelů v této místnosti"}. {"Too many users in this conference","Přiliš mnoho uživatelů v této místnosti"}.
{"To","Pro"}.
{"Total rooms","Celkem místností"}.
{"Traffic rate limit is exceeded","Byl překročen limit"}. {"Traffic rate limit is exceeded","Byl překročen limit"}.
{"Transactions Aborted:","Transakcí zrušených:"}.
{"Transactions Committed:","Transakcí potvrzených:"}.
{"Transactions Logged:","Transakcí zaznamenaných:"}.
{"Transactions Restarted:","Transakcí restartovaných:"}.
{"Tuesday","Úterý"}. {"Tuesday","Úterý"}.
{"Unable to generate a CAPTCHA","Nebylo možné vygenerovat CAPTCHA"}. {"Unable to generate a CAPTCHA","Nebylo možné vygenerovat CAPTCHA"}.
{"Unable to register route on existing local domain","Není možné zaregistrovat routu na existující místní doménu"}. {"Unable to register route on existing local domain","Není možné zaregistrovat routu na existující místní doménu"}.
@ -407,11 +358,6 @@
{"Unsupported <index/> element","Nepodporovaný <index/> element"}. {"Unsupported <index/> element","Nepodporovaný <index/> element"}.
{"Update message of the day (don't send)","Aktualizovat zprávu dne (neodesílat)"}. {"Update message of the day (don't send)","Aktualizovat zprávu dne (neodesílat)"}.
{"Update message of the day on all hosts (don't send)","Aktualizovat zprávu dne pro všechny hostitele (neodesílat)"}. {"Update message of the day on all hosts (don't send)","Aktualizovat zprávu dne pro všechny hostitele (neodesílat)"}.
{"Update ~p","Aktualizovat ~p"}.
{"Update plan","Aktualizovat plán"}.
{"Update script","Aktualizované skripty"}.
{"Update","Aktualizovat"}.
{"Uptime:","Čas běhu:"}.
{"User already exists","Uživatel již existuje"}. {"User already exists","Uživatel již existuje"}.
{"User JID","Jabber ID uživatele"}. {"User JID","Jabber ID uživatele"}.
{"User (jid)","Uživatel (JID)"}. {"User (jid)","Uživatel (JID)"}.
@ -423,7 +369,6 @@
{"Users Last Activity","Poslední aktivita uživatele"}. {"Users Last Activity","Poslední aktivita uživatele"}.
{"Users","Uživatelé"}. {"Users","Uživatelé"}.
{"User","Uživatel"}. {"User","Uživatel"}.
{"Validate","Ověřit"}.
{"Value 'get' of 'type' attribute is not allowed","Hodnota 'get' atrubutu 'type' není povolena"}. {"Value 'get' of 'type' attribute is not allowed","Hodnota 'get' atrubutu 'type' není povolena"}.
{"Value of '~s' should be boolean","Hodnota '~s' by měla být boolean"}. {"Value of '~s' should be boolean","Hodnota '~s' by měla být boolean"}.
{"Value of '~s' should be datetime string","Hodnota '~s' by měla být datetime řetězec"}. {"Value of '~s' should be datetime string","Hodnota '~s' by měla být datetime řetězec"}.

View file

@ -16,8 +16,6 @@
{"Account doesn't exist","Konto existiert nicht"}. {"Account doesn't exist","Konto existiert nicht"}.
{"Action on user","Aktion auf Benutzer"}. {"Action on user","Aktion auf Benutzer"}.
{"Add a hat to a user","Funktion zu einem Benutzer hinzufügen"}. {"Add a hat to a user","Funktion zu einem Benutzer hinzufügen"}.
{"Add Jabber ID","Jabber-ID hinzufügen"}.
{"Add New","Neue(n) hinzufügen"}.
{"Add User","Benutzer hinzufügen"}. {"Add User","Benutzer hinzufügen"}.
{"Administration of ","Administration von "}. {"Administration of ","Administration von "}.
{"Administration","Verwaltung"}. {"Administration","Verwaltung"}.
@ -48,7 +46,9 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Jeder mit einem Präsenzabonnement von beiden oder davon darf Items abonnieren oder abrufen"}. {"Anyone with a presence subscription of both or from may subscribe and retrieve items","Jeder mit einem Präsenzabonnement von beiden oder davon darf Items abonnieren oder abrufen"}.
{"Anyone with Voice","Jeder mit Stimme"}. {"Anyone with Voice","Jeder mit Stimme"}.
{"Anyone","Jeder"}. {"Anyone","Jeder"}.
{"API Commands","API Befehle"}.
{"April","April"}. {"April","April"}.
{"Arguments","Argumente"}.
{"Attribute 'channel' is required for this request","Attribut 'channel' ist für diese Anforderung erforderlich"}. {"Attribute 'channel' is required for this request","Attribut 'channel' ist für diese Anforderung erforderlich"}.
{"Attribute 'id' is mandatory for MIX messages","Attribut 'id' ist verpflichtend für MIX-Nachrichten"}. {"Attribute 'id' is mandatory for MIX messages","Attribut 'id' ist verpflichtend für MIX-Nachrichten"}.
{"Attribute 'jid' is not allowed here","Attribut 'jid' ist hier nicht erlaubt"}. {"Attribute 'jid' is not allowed here","Attribut 'jid' ist hier nicht erlaubt"}.
@ -92,29 +92,20 @@
{"Conference room does not exist","Konferenzraum existiert nicht"}. {"Conference room does not exist","Konferenzraum existiert nicht"}.
{"Configuration of room ~s","Konfiguration des Raumes ~s"}. {"Configuration of room ~s","Konfiguration des Raumes ~s"}.
{"Configuration","Konfiguration"}. {"Configuration","Konfiguration"}.
{"Connected Resources:","Verbundene Ressourcen:"}.
{"Contact Addresses (normally, room owner or owners)","Kontaktadresse (normalerweise Raumbesitzer)"}. {"Contact Addresses (normally, room owner or owners)","Kontaktadresse (normalerweise Raumbesitzer)"}.
{"Country","Land"}. {"Country","Land"}.
{"CPU Time:","CPU-Zeit:"}.
{"Current Discussion Topic","Aktuelles Diskussionsthema"}. {"Current Discussion Topic","Aktuelles Diskussionsthema"}.
{"Database failure","Datenbankfehler"}. {"Database failure","Datenbankfehler"}.
{"Database Tables at ~p","Datenbanktabellen bei ~p"}.
{"Database Tables Configuration at ","Datenbanktabellen-Konfiguration bei "}. {"Database Tables Configuration at ","Datenbanktabellen-Konfiguration bei "}.
{"Database","Datenbank"}. {"Database","Datenbank"}.
{"December","Dezember"}. {"December","Dezember"}.
{"Default users as participants","Benutzer werden standardmäßig Teilnehmer"}. {"Default users as participants","Benutzer werden standardmäßig Teilnehmer"}.
{"Delete content","Inhalt löschen"}.
{"Delete message of the day on all hosts","Lösche Nachricht des Tages auf allen Hosts"}. {"Delete message of the day on all hosts","Lösche Nachricht des Tages auf allen Hosts"}.
{"Delete message of the day","Lösche Nachricht des Tages"}. {"Delete message of the day","Lösche Nachricht des Tages"}.
{"Delete Selected","Markierte löschen"}.
{"Delete table","Tabelle löschen"}.
{"Delete User","Benutzer löschen"}. {"Delete User","Benutzer löschen"}.
{"Deliver event notifications","Ereignisbenachrichtigungen zustellen"}. {"Deliver event notifications","Ereignisbenachrichtigungen zustellen"}.
{"Deliver payloads with event notifications","Nutzdaten mit Ereignisbenachrichtigungen zustellen"}. {"Deliver payloads with event notifications","Nutzdaten mit Ereignisbenachrichtigungen zustellen"}.
{"Description:","Beschreibung:"}.
{"Disc only copy","Nur auf Festplatte"}. {"Disc only copy","Nur auf Festplatte"}.
{"'Displayed groups' not added (they do not exist!): ","'Angezeigte Gruppen' nicht hinzugefügt (sie existieren nicht!): "}.
{"Displayed:","Angezeigt:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Geben Sie niemandem Ihr Passwort, auch nicht den Administratoren des XMPP-Servers."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","Geben Sie niemandem Ihr Passwort, auch nicht den Administratoren des XMPP-Servers."}.
{"Dump Backup to Text File at ","Gib Backup in Textdatei aus bei "}. {"Dump Backup to Text File at ","Gib Backup in Textdatei aus bei "}.
{"Dump to Text File","Ausgabe in Textdatei"}. {"Dump to Text File","Ausgabe in Textdatei"}.
@ -130,7 +121,6 @@
{"ejabberd vCard module","ejabberd vCard-Modul"}. {"ejabberd vCard module","ejabberd vCard-Modul"}.
{"ejabberd Web Admin","ejabberd Web-Admin"}. {"ejabberd Web Admin","ejabberd Web-Admin"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Elemente"}.
{"Email Address","E-Mail-Adresse"}. {"Email Address","E-Mail-Adresse"}.
{"Email","E-Mail"}. {"Email","E-Mail"}.
{"Enable hats","Funktion einschalten"}. {"Enable hats","Funktion einschalten"}.
@ -145,7 +135,6 @@
{"Enter path to text file","Geben Sie den Pfad zur Textdatei ein"}. {"Enter path to text file","Geben Sie den Pfad zur Textdatei ein"}.
{"Enter the text you see","Geben Sie den Text ein den Sie sehen"}. {"Enter the text you see","Geben Sie den Text ein den Sie sehen"}.
{"Erlang XMPP Server","Erlang XMPP-Server"}. {"Erlang XMPP Server","Erlang XMPP-Server"}.
{"Error","Fehler"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Jabber-IDs von CAPTCHA-Herausforderung ausschließen"}. {"Exclude Jabber IDs from CAPTCHA challenge","Jabber-IDs von CAPTCHA-Herausforderung ausschließen"}.
{"Export all tables as SQL queries to a file:","Alle Tabellen als SQL-Abfragen in eine Datei exportieren:"}. {"Export all tables as SQL queries to a file:","Alle Tabellen als SQL-Abfragen in eine Datei exportieren:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Alle Benutzerdaten des Servers in PIEFXIS-Dateien (XEP-0227) exportieren:"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Alle Benutzerdaten des Servers in PIEFXIS-Dateien (XEP-0227) exportieren:"}.
@ -164,7 +153,6 @@
{"Fill in the form to search for any matching XMPP User","Füllen Sie das Formular aus, um nach jeglichen passenden XMPP-Benutzern zu suchen"}. {"Fill in the form to search for any matching XMPP User","Füllen Sie das Formular aus, um nach jeglichen passenden XMPP-Benutzern zu suchen"}.
{"Friday","Freitag"}. {"Friday","Freitag"}.
{"From ~ts","Von ~ts"}. {"From ~ts","Von ~ts"}.
{"From","Von"}.
{"Full List of Room Admins","Vollständige Liste der Raumadmins"}. {"Full List of Room Admins","Vollständige Liste der Raumadmins"}.
{"Full List of Room Owners","Vollständige Liste der Raumbesitzer"}. {"Full List of Room Owners","Vollständige Liste der Raumbesitzer"}.
{"Full Name","Vollständiger Name"}. {"Full Name","Vollständiger Name"}.
@ -174,23 +162,19 @@
{"Get Number of Registered Users","Anzahl der registrierten Benutzer abrufen"}. {"Get Number of Registered Users","Anzahl der registrierten Benutzer abrufen"}.
{"Get Pending","Ausstehende abrufen"}. {"Get Pending","Ausstehende abrufen"}.
{"Get User Last Login Time","letzte Anmeldezeit des Benutzers abrufen"}. {"Get User Last Login Time","letzte Anmeldezeit des Benutzers abrufen"}.
{"Get User Password","Benutzerpasswort abrufen"}.
{"Get User Statistics","Benutzerstatistiken abrufen"}. {"Get User Statistics","Benutzerstatistiken abrufen"}.
{"Given Name","Vorname"}. {"Given Name","Vorname"}.
{"Grant voice to this person?","Dieser Person Sprachrechte erteilen?"}. {"Grant voice to this person?","Dieser Person Sprachrechte erteilen?"}.
{"Group","Gruppe"}.
{"Groups that will be displayed to the members","Gruppen, die den Mitgliedern angezeigt werden"}.
{"Groups","Gruppen"}.
{"has been banned","wurde gebannt"}. {"has been banned","wurde gebannt"}.
{"has been kicked because of a system shutdown","wurde wegen einer Systemabschaltung hinausgeworfen"}. {"has been kicked because of a system shutdown","wurde wegen einer Systemabschaltung hinausgeworfen"}.
{"has been kicked because of an affiliation change","wurde wegen einer Änderung der Zugehörigkeit hinausgeworfen"}. {"has been kicked because of an affiliation change","wurde wegen einer Änderung der Zugehörigkeit hinausgeworfen"}.
{"has been kicked because the room has been changed to members-only","wurde hinausgeworfen weil der Raum zu Nur-Mitglieder geändert wurde"}. {"has been kicked because the room has been changed to members-only","wurde hinausgeworfen weil der Raum zu Nur-Mitglieder geändert wurde"}.
{"has been kicked","wurde hinausgeworfen"}. {"has been kicked","wurde hinausgeworfen"}.
{"Hash of the vCard-temp avatar of this room","Hash des vCard-temp Avatars dieses Raums"}.
{"Hat title","Funktionstitel"}. {"Hat title","Funktionstitel"}.
{"Hat URI","Funktions-URI"}. {"Hat URI","Funktions-URI"}.
{"Hats limit exceeded","Funktionslimit wurde überschritten"}. {"Hats limit exceeded","Funktionslimit wurde überschritten"}.
{"Host unknown","Host unbekannt"}. {"Host unknown","Host unbekannt"}.
{"Host","Host"}.
{"HTTP File Upload","HTTP-Dateiupload"}. {"HTTP File Upload","HTTP-Dateiupload"}.
{"Idle connection","Inaktive Verbindung"}. {"Idle connection","Inaktive Verbindung"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Wenn Sie das CAPTCHA-Bild nicht sehen, besuchen Sie die Webseite."}. {"If you don't see the CAPTCHA image here, visit the web page.","Wenn Sie das CAPTCHA-Bild nicht sehen, besuchen Sie die Webseite."}.
@ -204,7 +188,6 @@
{"Import Users From jabberd14 Spool Files","Importiere Benutzer aus jabberd14-Spooldateien"}. {"Import Users From jabberd14 Spool Files","Importiere Benutzer aus jabberd14-Spooldateien"}.
{"Improper domain part of 'from' attribute","Falscher Domänenteil des 'from'-Attributs"}. {"Improper domain part of 'from' attribute","Falscher Domänenteil des 'from'-Attributs"}.
{"Improper message type","Unzulässiger Nachrichtentyp"}. {"Improper message type","Unzulässiger Nachrichtentyp"}.
{"Incoming s2s Connections:","Eingehende s2s-Verbindungen:"}.
{"Incorrect CAPTCHA submit","Falsche CAPTCHA-Eingabe"}. {"Incorrect CAPTCHA submit","Falsche CAPTCHA-Eingabe"}.
{"Incorrect data form","Falsches Datenformular"}. {"Incorrect data form","Falsches Datenformular"}.
{"Incorrect password","Falsches Passwort"}. {"Incorrect password","Falsches Passwort"}.
@ -234,7 +217,6 @@
{"July","Juli"}. {"July","Juli"}.
{"June","Juni"}. {"June","Juni"}.
{"Just created","Gerade erstellt"}. {"Just created","Gerade erstellt"}.
{"Label:","Label:"}.
{"Last Activity","Letzte Aktivität"}. {"Last Activity","Letzte Aktivität"}.
{"Last login","Letzte Anmeldung"}. {"Last login","Letzte Anmeldung"}.
{"Last message","Letzte Nachricht"}. {"Last message","Letzte Nachricht"}.
@ -242,11 +224,10 @@
{"Last year","Letztes Jahr"}. {"Last year","Letztes Jahr"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Niederwertigstes Bit des SHA-256-Hashes des Textes sollte hexadezimalem Label gleichen"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Niederwertigstes Bit des SHA-256-Hashes des Textes sollte hexadezimalem Label gleichen"}.
{"leaves the room","verlässt den Raum"}. {"leaves the room","verlässt den Raum"}.
{"List of rooms","Liste von Räumen"}.
{"List of users with hats","Liste der Benutzer mit Funktionen"}. {"List of users with hats","Liste der Benutzer mit Funktionen"}.
{"List users with hats","Benutzer mit Funktionen auflisten"}. {"List users with hats","Benutzer mit Funktionen auflisten"}.
{"Logged Out","Abgemeldet"}.
{"Logging","Protokollierung"}. {"Logging","Protokollierung"}.
{"Low level update script","Low-Level-Aktualisierungsscript"}.
{"Make participants list public","Teilnehmerliste öffentlich machen"}. {"Make participants list public","Teilnehmerliste öffentlich machen"}.
{"Make room CAPTCHA protected","Raum mittels CAPTCHA schützen"}. {"Make room CAPTCHA protected","Raum mittels CAPTCHA schützen"}.
{"Make room members-only","Raum nur für Mitglieder zugänglich machen"}. {"Make room members-only","Raum nur für Mitglieder zugänglich machen"}.
@ -264,11 +245,8 @@
{"Maximum number of items to persist","Maximale Anzahl persistenter Items"}. {"Maximum number of items to persist","Maximale Anzahl persistenter Items"}.
{"Maximum Number of Occupants","Maximale Anzahl der Teilnehmer"}. {"Maximum Number of Occupants","Maximale Anzahl der Teilnehmer"}.
{"May","Mai"}. {"May","Mai"}.
{"Members not added (inexistent vhost!): ","Mitglieder nicht hinzugefügt (nicht existierender vhost!): "}.
{"Membership is required to enter this room","Mitgliedschaft ist erforderlich um diesen Raum zu betreten"}. {"Membership is required to enter this room","Mitgliedschaft ist erforderlich um diesen Raum zu betreten"}.
{"Members:","Mitglieder:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Merken Sie sich Ihr Passwort, oder schreiben Sie es auf einen Zettel den Sie sicher verwahren. Bei XMPP gibt es keine automatische Möglichkeit, das Passwort wiederherzustellen falls Sie es vergessen."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Merken Sie sich Ihr Passwort, oder schreiben Sie es auf einen Zettel den Sie sicher verwahren. Bei XMPP gibt es keine automatische Möglichkeit, das Passwort wiederherzustellen falls Sie es vergessen."}.
{"Memory","Speicher"}.
{"Mere Availability in XMPP (No Show Value)","Bloße Verfügbarkeit in XMPP (kein Anzeigewert)"}. {"Mere Availability in XMPP (No Show Value)","Bloße Verfügbarkeit in XMPP (kein Anzeigewert)"}.
{"Message body","Nachrichtentext"}. {"Message body","Nachrichtentext"}.
{"Message not found in forwarded payload","Nachricht nicht in weitergeleiteten Nutzdaten gefunden"}. {"Message not found in forwarded payload","Nachricht nicht in weitergeleiteten Nutzdaten gefunden"}.
@ -280,14 +258,11 @@
{"Moderator privileges required","Moderatorrechte erforderlich"}. {"Moderator privileges required","Moderatorrechte erforderlich"}.
{"Moderator","Moderator"}. {"Moderator","Moderator"}.
{"Moderators Only","nur Moderatoren"}. {"Moderators Only","nur Moderatoren"}.
{"Modified modules","Geänderte Module"}.
{"Module failed to handle the query","Modul konnte die Anfrage nicht verarbeiten"}. {"Module failed to handle the query","Modul konnte die Anfrage nicht verarbeiten"}.
{"Monday","Montag"}. {"Monday","Montag"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","Mehrere <item/>-Elemente sind laut RFC6121 nicht erlaubt"}. {"Multiple <item/> elements are not allowed by RFC6121","Mehrere <item/>-Elemente sind laut RFC6121 nicht erlaubt"}.
{"Multi-User Chat","Mehrbenutzer-Chat (MUC)"}. {"Multi-User Chat","Mehrbenutzer-Chat (MUC)"}.
{"Name in the rosters where this group will be displayed","Name in den Kontaktlisten wo diese Gruppe angezeigt werden wird"}.
{"Name:","Name:"}.
{"Name","Vorname"}. {"Name","Vorname"}.
{"Natural Language for Room Discussions","Natürliche Sprache für Raumdiskussionen"}. {"Natural Language for Room Discussions","Natürliche Sprache für Raumdiskussionen"}.
{"Natural-Language Room Name","Raumname in natürlicher Sprache"}. {"Natural-Language Room Name","Raumname in natürlicher Sprache"}.
@ -353,14 +328,10 @@
{"Occupants are allowed to query others","Teilnehmer dürfen andere abfragen"}. {"Occupants are allowed to query others","Teilnehmer dürfen andere abfragen"}.
{"Occupants May Change the Subject","Teilnehmer dürfen das Thema ändern"}. {"Occupants May Change the Subject","Teilnehmer dürfen das Thema ändern"}.
{"October","Oktober"}. {"October","Oktober"}.
{"Offline Messages","Offline-Nachrichten"}.
{"Offline Messages:","Offline-Nachrichten:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Altes Passwort:"}. {"Old Password:","Altes Passwort:"}.
{"Online Users","Angemeldete Benutzer"}. {"Online Users","Angemeldete Benutzer"}.
{"Online Users:","Angemeldete Benutzer:"}.
{"Online","Angemeldet"}. {"Online","Angemeldet"}.
{"Only admins can see this","Nur Admins können dies sehen"}.
{"Only collection node owners may associate leaf nodes with the collection","Nur Sammlungsknoten-Besitzer dürfen Blattknoten mit der Sammlung verknüpfen"}. {"Only collection node owners may associate leaf nodes with the collection","Nur Sammlungsknoten-Besitzer dürfen Blattknoten mit der Sammlung verknüpfen"}.
{"Only deliver notifications to available users","Benachrichtigungen nur an verfügbare Benutzer schicken"}. {"Only deliver notifications to available users","Benachrichtigungen nur an verfügbare Benutzer schicken"}.
{"Only <enable/> or <disable/> tags are allowed","Nur <enable/>- oder <disable/>-Tags sind erlaubt"}. {"Only <enable/> or <disable/> tags are allowed","Nur <enable/>- oder <disable/>-Tags sind erlaubt"}.
@ -380,10 +351,8 @@
{"Organization Unit","Abteilung"}. {"Organization Unit","Abteilung"}.
{"Other Modules Available:","Andere Module verfügbar:"}. {"Other Modules Available:","Andere Module verfügbar:"}.
{"Outgoing s2s Connections","Ausgehende s2s-Verbindungen"}. {"Outgoing s2s Connections","Ausgehende s2s-Verbindungen"}.
{"Outgoing s2s Connections:","Ausgehende s2s-Verbindungen:"}.
{"Owner privileges required","Besitzerrechte erforderlich"}. {"Owner privileges required","Besitzerrechte erforderlich"}.
{"Packet relay is denied by service policy","Paket-Relay aufgrund der Dienstrichtlinien verweigert"}. {"Packet relay is denied by service policy","Paket-Relay aufgrund der Dienstrichtlinien verweigert"}.
{"Packet","Paket"}.
{"Participant ID","Teilnehmer-ID"}. {"Participant ID","Teilnehmer-ID"}.
{"Participant","Teilnehmer"}. {"Participant","Teilnehmer"}.
{"Password Verification","Passwort bestätigen"}. {"Password Verification","Passwort bestätigen"}.
@ -392,7 +361,6 @@
{"Password:","Passwort:"}. {"Password:","Passwort:"}.
{"Path to Dir","Pfad zum Verzeichnis"}. {"Path to Dir","Pfad zum Verzeichnis"}.
{"Path to File","Pfad zur Datei"}. {"Path to File","Pfad zur Datei"}.
{"Pending","Ausstehend"}.
{"Period: ","Zeitraum: "}. {"Period: ","Zeitraum: "}.
{"Persist items to storage","Items dauerhaft speichern"}. {"Persist items to storage","Items dauerhaft speichern"}.
{"Persistent","Persistent"}. {"Persistent","Persistent"}.
@ -427,25 +395,21 @@
{"Recipient is not in the conference room","Empfänger ist nicht im Konferenzraum"}. {"Recipient is not in the conference room","Empfänger ist nicht im Konferenzraum"}.
{"Register an XMPP account","Ein XMPP-Konto registrieren"}. {"Register an XMPP account","Ein XMPP-Konto registrieren"}.
{"Register","Anmelden"}. {"Register","Anmelden"}.
{"Registered Users","Registrierte Benutzer"}.
{"Registered Users:","Registrierte Benutzer:"}.
{"Remote copy","Fernkopie"}. {"Remote copy","Fernkopie"}.
{"Remove a hat from a user","Eine Funktion bei einem Benutzer entfernen"}. {"Remove a hat from a user","Eine Funktion bei einem Benutzer entfernen"}.
{"Remove All Offline Messages","Alle Offline-Nachrichten löschen"}.
{"Remove User","Benutzer löschen"}. {"Remove User","Benutzer löschen"}.
{"Remove","Entfernen"}.
{"Replaced by new connection","Durch neue Verbindung ersetzt"}. {"Replaced by new connection","Durch neue Verbindung ersetzt"}.
{"Request has timed out","Zeitüberschreitung bei Anforderung"}. {"Request has timed out","Zeitüberschreitung bei Anforderung"}.
{"Request is ignored","Anforderung wird ignoriert"}. {"Request is ignored","Anforderung wird ignoriert"}.
{"Requested role","Angeforderte Rolle"}. {"Requested role","Angeforderte Rolle"}.
{"Resources","Ressourcen"}. {"Resources","Ressourcen"}.
{"Restart Service","Dienst neustarten"}. {"Restart Service","Dienst neustarten"}.
{"Restart","Neustart"}.
{"Restore Backup from File at ","Backup wiederherstellen aus Datei bei "}. {"Restore Backup from File at ","Backup wiederherstellen aus Datei bei "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Stelle binäres Backup beim nächsten ejabberd-Neustart wieder her (benötigt weniger Speicher):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Stelle binäres Backup beim nächsten ejabberd-Neustart wieder her (benötigt weniger Speicher):"}.
{"Restore binary backup immediately:","Stelle binäres Backup sofort wieder her:"}. {"Restore binary backup immediately:","Stelle binäres Backup sofort wieder her:"}.
{"Restore plain text backup immediately:","Stelle Klartext-Backup sofort wieder her:"}. {"Restore plain text backup immediately:","Stelle Klartext-Backup sofort wieder her:"}.
{"Restore","Wiederherstellung"}. {"Restore","Wiederherstellung"}.
{"Result","Ergebnis"}.
{"Roles and Affiliations that May Retrieve Member List","Rollen und Zugehörigkeiten die Mitgliederliste abrufen dürfen"}. {"Roles and Affiliations that May Retrieve Member List","Rollen und Zugehörigkeiten die Mitgliederliste abrufen dürfen"}.
{"Roles for which Presence is Broadcasted","Rollen für welche die Präsenz übertragen wird"}. {"Roles for which Presence is Broadcasted","Rollen für welche die Präsenz übertragen wird"}.
{"Roles that May Send Private Messages","Rollen die Privatnachrichten senden dürfen"}. {"Roles that May Send Private Messages","Rollen die Privatnachrichten senden dürfen"}.
@ -456,20 +420,15 @@
{"Room terminates","Raum wird beendet"}. {"Room terminates","Raum wird beendet"}.
{"Room title","Raumname"}. {"Room title","Raumname"}.
{"Roster groups allowed to subscribe","Kontaktlistengruppen die abonnieren dürfen"}. {"Roster groups allowed to subscribe","Kontaktlistengruppen die abonnieren dürfen"}.
{"Roster of ~ts","Kontaktliste von ~ts"}.
{"Roster size","Kontaktlistengröße"}. {"Roster size","Kontaktlistengröße"}.
{"Roster:","Kontaktliste:"}.
{"RPC Call Error","Fehler bei RPC-Aufruf"}.
{"Running Nodes","Laufende Knoten"}. {"Running Nodes","Laufende Knoten"}.
{"~s invites you to the room ~s","~s lädt Sie in den Raum ~s ein"}. {"~s invites you to the room ~s","~s lädt Sie in den Raum ~s ein"}.
{"Saturday","Samstag"}. {"Saturday","Samstag"}.
{"Script check","Script-Überprüfung"}.
{"Search from the date","Suche ab Datum"}. {"Search from the date","Suche ab Datum"}.
{"Search Results for ","Suchergebnisse für "}. {"Search Results for ","Suchergebnisse für "}.
{"Search the text","Text durchsuchen"}. {"Search the text","Text durchsuchen"}.
{"Search until the date","Suche bis Datum"}. {"Search until the date","Suche bis Datum"}.
{"Search users in ","Suche Benutzer in "}. {"Search users in ","Suche Benutzer in "}.
{"Select All","Alles auswählen"}.
{"Send announcement to all online users on all hosts","Ankündigung an alle angemeldeten Benutzer auf allen Hosts senden"}. {"Send announcement to all online users on all hosts","Ankündigung an alle angemeldeten Benutzer auf allen Hosts senden"}.
{"Send announcement to all online users","Ankündigung an alle angemeldeten Benutzer senden"}. {"Send announcement to all online users","Ankündigung an alle angemeldeten Benutzer senden"}.
{"Send announcement to all users on all hosts","Ankündigung an alle Benutzer auf allen Hosts senden"}. {"Send announcement to all users on all hosts","Ankündigung an alle Benutzer auf allen Hosts senden"}.
@ -493,22 +452,16 @@
{"Stanza id is not valid","Stanza-ID ist ungültig"}. {"Stanza id is not valid","Stanza-ID ist ungültig"}.
{"Stanza ID","Stanza-ID"}. {"Stanza ID","Stanza-ID"}.
{"Statically specify a replyto of the node owner(s)","Ein 'replyto' des/der Nodebesitzer(s) statisch angeben"}. {"Statically specify a replyto of the node owner(s)","Ein 'replyto' des/der Nodebesitzer(s) statisch angeben"}.
{"Statistics of ~p","Statistiken von ~p"}.
{"Statistics","Statistiken"}.
{"Stop","Anhalten"}.
{"Stopped Nodes","Angehaltene Knoten"}. {"Stopped Nodes","Angehaltene Knoten"}.
{"Storage Type","Speichertyp"}.
{"Store binary backup:","Speichere binäres Backup:"}. {"Store binary backup:","Speichere binäres Backup:"}.
{"Store plain text backup:","Speichere Klartext-Backup:"}. {"Store plain text backup:","Speichere Klartext-Backup:"}.
{"Stream management is already enabled","Stream-Verwaltung ist bereits aktiviert"}. {"Stream management is already enabled","Stream-Verwaltung ist bereits aktiviert"}.
{"Stream management is not enabled","Stream-Verwaltung ist nicht aktiviert"}. {"Stream management is not enabled","Stream-Verwaltung ist nicht aktiviert"}.
{"Subject","Betreff"}. {"Subject","Betreff"}.
{"Submit","Senden"}.
{"Submitted","Gesendet"}. {"Submitted","Gesendet"}.
{"Subscriber Address","Abonnenten-Adresse"}. {"Subscriber Address","Abonnenten-Adresse"}.
{"Subscribers may publish","Abonnenten dürfen veröffentlichen"}. {"Subscribers may publish","Abonnenten dürfen veröffentlichen"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Abonnement-Anforderungen müssen genehmigt werden und nur Abonnenten dürfen Items abrufen"}. {"Subscription requests must be approved and only subscribers may retrieve items","Abonnement-Anforderungen müssen genehmigt werden und nur Abonnenten dürfen Items abrufen"}.
{"Subscription","Abonnement"}.
{"Subscriptions are not allowed","Abonnements sind nicht erlaubt"}. {"Subscriptions are not allowed","Abonnements sind nicht erlaubt"}.
{"Sunday","Sonntag"}. {"Sunday","Sonntag"}.
{"Text associated with a picture","Text verbunden mit einem Bild"}. {"Text associated with a picture","Text verbunden mit einem Bild"}.
@ -571,10 +524,8 @@
{"Thursday","Donnerstag"}. {"Thursday","Donnerstag"}.
{"Time delay","Zeitverzögerung"}. {"Time delay","Zeitverzögerung"}.
{"Timed out waiting for stream resumption","Zeitüberschreitung beim Warten auf Streamfortsetzung"}. {"Timed out waiting for stream resumption","Zeitüberschreitung beim Warten auf Streamfortsetzung"}.
{"Time","Zeit"}.
{"To register, visit ~s","Um sich zu registrieren, besuchen Sie ~s"}. {"To register, visit ~s","Um sich zu registrieren, besuchen Sie ~s"}.
{"To ~ts","An ~ts"}. {"To ~ts","An ~ts"}.
{"To","An"}.
{"Token TTL","Token-TTL"}. {"Token TTL","Token-TTL"}.
{"Too many active bytestreams","Zu viele aktive Bytestreams"}. {"Too many active bytestreams","Zu viele aktive Bytestreams"}.
{"Too many CAPTCHA requests","Zu viele CAPTCHA-Anforderungen"}. {"Too many CAPTCHA requests","Zu viele CAPTCHA-Anforderungen"}.
@ -585,12 +536,8 @@
{"Too many receiver fields were specified","Zu viele Empfängerfelder wurden angegeben"}. {"Too many receiver fields were specified","Zu viele Empfängerfelder wurden angegeben"}.
{"Too many unacked stanzas","Zu viele unbestätigte Stanzas"}. {"Too many unacked stanzas","Zu viele unbestätigte Stanzas"}.
{"Too many users in this conference","Zu viele Benutzer in dieser Konferenz"}. {"Too many users in this conference","Zu viele Benutzer in dieser Konferenz"}.
{"Total rooms","Gesamte Räume"}.
{"Traffic rate limit is exceeded","Datenratenlimit wurde überschritten"}. {"Traffic rate limit is exceeded","Datenratenlimit wurde überschritten"}.
{"Transactions Aborted:","Abgebrochene Transaktionen:"}. {"~ts's MAM Archive","~ts's MAM Archiv"}.
{"Transactions Committed:","Übergebene Transaktionen:"}.
{"Transactions Logged:","Protokollierte Transaktionen:"}.
{"Transactions Restarted:","Neu gestartete Transaktionen:"}.
{"~ts's Offline Messages Queue","Offline-Nachrichten-Warteschlange von ~ts"}. {"~ts's Offline Messages Queue","Offline-Nachrichten-Warteschlange von ~ts"}.
{"Tuesday","Dienstag"}. {"Tuesday","Dienstag"}.
{"Unable to generate a CAPTCHA","Konnte kein CAPTCHA erstellen"}. {"Unable to generate a CAPTCHA","Konnte kein CAPTCHA erstellen"}.
@ -601,19 +548,14 @@
{"Uninstall","Deinstallieren"}. {"Uninstall","Deinstallieren"}.
{"Unregister an XMPP account","Ein XMPP-Konto entfernen"}. {"Unregister an XMPP account","Ein XMPP-Konto entfernen"}.
{"Unregister","Deregistrieren"}. {"Unregister","Deregistrieren"}.
{"Unselect All","Alle abwählen"}.
{"Unsupported <index/> element","Nicht unterstütztes <index/>-Element"}. {"Unsupported <index/> element","Nicht unterstütztes <index/>-Element"}.
{"Unsupported version","Nicht unterstützte Version"}. {"Unsupported version","Nicht unterstützte Version"}.
{"Update message of the day (don't send)","Aktualisiere Nachricht des Tages (nicht senden)"}. {"Update message of the day (don't send)","Aktualisiere Nachricht des Tages (nicht senden)"}.
{"Update message of the day on all hosts (don't send)","Aktualisiere Nachricht des Tages auf allen Hosts (nicht senden)"}. {"Update message of the day on all hosts (don't send)","Aktualisiere Nachricht des Tages auf allen Hosts (nicht senden)"}.
{"Update plan","Aktualisierungsplan"}.
{"Update ~p","~p aktualisieren"}.
{"Update script","Aktualisierungsscript"}.
{"Update specs to get modules source, then install desired ones.","Aktualisieren Sie die Spezifikationen, um den Quellcode der Module zu erhalten und installieren Sie dann die gewünschten Module."}. {"Update specs to get modules source, then install desired ones.","Aktualisieren Sie die Spezifikationen, um den Quellcode der Module zu erhalten und installieren Sie dann die gewünschten Module."}.
{"Update Specs","Spezifikationen aktualisieren"}. {"Update Specs","Spezifikationen aktualisieren"}.
{"Update","Aktualisieren"}. {"Updating the vCard is not supported by the vCard storage backend","Aktualisierung der vCard wird vom vCard-Speicher-Backend nicht unterstützt"}.
{"Upgrade","Upgrade"}. {"Upgrade","Upgrade"}.
{"Uptime:","Betriebszeit:"}.
{"URL for Archived Discussion Logs","URL für archivierte Diskussionsprotokolle"}. {"URL for Archived Discussion Logs","URL für archivierte Diskussionsprotokolle"}.
{"User already exists","Benutzer existiert bereits"}. {"User already exists","Benutzer existiert bereits"}.
{"User (jid)","Benutzer (JID)"}. {"User (jid)","Benutzer (JID)"}.
@ -628,7 +570,6 @@
{"Users are not allowed to register accounts so quickly","Benutzer dürfen Konten nicht so schnell registrieren"}. {"Users are not allowed to register accounts so quickly","Benutzer dürfen Konten nicht so schnell registrieren"}.
{"Users Last Activity","Letzte Benutzeraktivität"}. {"Users Last Activity","Letzte Benutzeraktivität"}.
{"Users","Benutzer"}. {"Users","Benutzer"}.
{"Validate","Validieren"}.
{"Value 'get' of 'type' attribute is not allowed","Wert 'get' des 'type'-Attributs ist nicht erlaubt"}. {"Value 'get' of 'type' attribute is not allowed","Wert 'get' des 'type'-Attributs ist nicht erlaubt"}.
{"Value of '~s' should be boolean","Wert von '~s' sollte boolesch sein"}. {"Value of '~s' should be boolean","Wert von '~s' sollte boolesch sein"}.
{"Value of '~s' should be datetime string","Wert von '~s' sollte DateTime-Zeichenkette sein"}. {"Value of '~s' should be datetime string","Wert von '~s' sollte DateTime-Zeichenkette sein"}.
@ -636,14 +577,13 @@
{"Value 'set' of 'type' attribute is not allowed","Wert 'set' des 'type'-Attributs ist nicht erlaubt"}. {"Value 'set' of 'type' attribute is not allowed","Wert 'set' des 'type'-Attributs ist nicht erlaubt"}.
{"vCard User Search","vCard-Benutzer-Suche"}. {"vCard User Search","vCard-Benutzer-Suche"}.
{"View joined MIX channels","Beitretene MIX-Channel ansehen"}. {"View joined MIX channels","Beitretene MIX-Channel ansehen"}.
{"View Queue","Warteschlange ansehen"}.
{"View Roster","Kontaktliste ansehen"}.
{"Virtual Hosts","Virtuelle Hosts"}. {"Virtual Hosts","Virtuelle Hosts"}.
{"Visitor","Besucher"}. {"Visitor","Besucher"}.
{"Visitors are not allowed to change their nicknames in this room","Besucher dürfen in diesem Raum ihren Spitznamen nicht ändern"}. {"Visitors are not allowed to change their nicknames in this room","Besucher dürfen in diesem Raum ihren Spitznamen nicht ändern"}.
{"Visitors are not allowed to send messages to all occupants","Besucher dürfen nicht an alle Teilnehmer Nachrichten versenden"}. {"Visitors are not allowed to send messages to all occupants","Besucher dürfen nicht an alle Teilnehmer Nachrichten versenden"}.
{"Voice requests are disabled in this conference","Sprachrecht-Anforderungen sind in diesem Raum deaktiviert"}. {"Voice requests are disabled in this conference","Sprachrecht-Anforderungen sind in diesem Raum deaktiviert"}.
{"Voice request","Sprachrecht-Anforderung"}. {"Voice request","Sprachrecht-Anforderung"}.
{"Web client which allows to join the room anonymously","Web-Client, der es ermöglicht, dem Raum anonym beizutreten"}.
{"Wednesday","Mittwoch"}. {"Wednesday","Mittwoch"}.
{"When a new subscription is processed and whenever a subscriber comes online","Sobald ein neues Abonnement verarbeitet wird und wann immer ein Abonnent sich anmeldet"}. {"When a new subscription is processed and whenever a subscriber comes online","Sobald ein neues Abonnement verarbeitet wird und wann immer ein Abonnent sich anmeldet"}.
{"When a new subscription is processed","Sobald ein neues Abonnement verarbeitet wird"}. {"When a new subscription is processed","Sobald ein neues Abonnement verarbeitet wird"}.
@ -656,6 +596,7 @@
{"Whether to allow subscriptions","Ob Abonnements erlaubt sind"}. {"Whether to allow subscriptions","Ob Abonnements erlaubt sind"}.
{"Whether to make all subscriptions temporary, based on subscriber presence","Ob alle Abonnements temporär gemacht werden sollen, basierend auf der Abonnentenpräsenz"}. {"Whether to make all subscriptions temporary, based on subscriber presence","Ob alle Abonnements temporär gemacht werden sollen, basierend auf der Abonnentenpräsenz"}.
{"Whether to notify owners about new subscribers and unsubscribes","Ob Besitzer über neue Abonnenten und Abbestellungen benachrichtigt werden sollen"}. {"Whether to notify owners about new subscribers and unsubscribes","Ob Besitzer über neue Abonnenten und Abbestellungen benachrichtigt werden sollen"}.
{"Who can send private messages","Wer kann private Nachrichten senden"}.
{"Who may associate leaf nodes with a collection","Wer Blattknoten mit einer Sammlung verknüpfen darf"}. {"Who may associate leaf nodes with a collection","Wer Blattknoten mit einer Sammlung verknüpfen darf"}.
{"Wrong parameters in the web formulary","Falsche Parameter im Webformular"}. {"Wrong parameters in the web formulary","Falsche Parameter im Webformular"}.
{"Wrong xmlns","Falscher xmlns"}. {"Wrong xmlns","Falscher xmlns"}.
@ -667,6 +608,7 @@
{"XMPP Show Value of XA (Extended Away)","XMPP-Anzeigewert von XA (Extended Away/für längere Zeit abwesend)"}. {"XMPP Show Value of XA (Extended Away)","XMPP-Anzeigewert von XA (Extended Away/für längere Zeit abwesend)"}.
{"XMPP URI of Associated Publish-Subscribe Node","XMPP-URI des verknüpften Publish-Subscribe-Knotens"}. {"XMPP URI of Associated Publish-Subscribe Node","XMPP-URI des verknüpften Publish-Subscribe-Knotens"}.
{"You are being removed from the room because of a system shutdown","Sie werden wegen einer Systemabschaltung aus dem Raum entfernt"}. {"You are being removed from the room because of a system shutdown","Sie werden wegen einer Systemabschaltung aus dem Raum entfernt"}.
{"You are not allowed to send private messages","Sie dürfen keine privaten Nachrichten senden"}.
{"You are not joined to the channel","Sie sind dem Raum nicht beigetreten"}. {"You are not joined to the channel","Sie sind dem Raum nicht beigetreten"}.
{"You can later change your password using an XMPP client.","Sie können Ihr Passwort später mit einem XMPP-Client ändern."}. {"You can later change your password using an XMPP client.","Sie können Ihr Passwort später mit einem XMPP-Client ändern."}.
{"You have been banned from this room","Sie wurden aus diesem Raum verbannt"}. {"You have been banned from this room","Sie wurden aus diesem Raum verbannt"}.

View file

@ -12,11 +12,10 @@
{"A Web Page","Μία ιστοσελίδα"}. {"A Web Page","Μία ιστοσελίδα"}.
{"Accept","Αποδοχή"}. {"Accept","Αποδοχή"}.
{"Access denied by service policy","Άρνηση πρόσβασης, λόγω τακτικής παροχής υπηρεσιών"}. {"Access denied by service policy","Άρνηση πρόσβασης, λόγω τακτικής παροχής υπηρεσιών"}.
{"Access model","Καθορίστε το μοντέλο πρόσβασης"}. {"Access model","Μοντέλο πρόσβασης"}.
{"Account doesn't exist","Ο λογαριασμός δεν υπάρχει"}. {"Account doesn't exist","Ο λογαριασμός δεν υπάρχει"}.
{"Action on user","Eνέργεια για το χρήστη"}. {"Action on user","Eνέργεια για το χρήστη"}.
{"Add Jabber ID","Προσθήκη Jabber Ταυτότητας"}. {"Add a hat to a user","Προσθέστε ένα καπέλο σε έναν χρήστη"}.
{"Add New","Προσθήκη νέου"}.
{"Add User","Προσθήκη Χρήστη"}. {"Add User","Προσθήκη Χρήστη"}.
{"Administration of ","Διαχείριση του "}. {"Administration of ","Διαχείριση του "}.
{"Administration","Διαχείριση"}. {"Administration","Διαχείριση"}.
@ -47,7 +46,9 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Όποιος έχει συνδρομή παρουσίας και των δύο ή από μπορεί να εγγραφεί και να ανακτήσει στοιχεία"}. {"Anyone with a presence subscription of both or from may subscribe and retrieve items","Όποιος έχει συνδρομή παρουσίας και των δύο ή από μπορεί να εγγραφεί και να ανακτήσει στοιχεία"}.
{"Anyone with Voice","Οποιοσδήποτε με Φωνή"}. {"Anyone with Voice","Οποιοσδήποτε με Φωνή"}.
{"Anyone","Οποιοσδήποτε"}. {"Anyone","Οποιοσδήποτε"}.
{"API Commands","Εντολές του API"}.
{"April","Απρίλιος"}. {"April","Απρίλιος"}.
{"Arguments","Επιχειρήματα"}.
{"Attribute 'channel' is required for this request","Το δηλωτικό 'channel' απαιτείται για αυτό το Ερώτημα"}. {"Attribute 'channel' is required for this request","Το δηλωτικό 'channel' απαιτείται για αυτό το Ερώτημα"}.
{"Attribute 'id' is mandatory for MIX messages","Το δηλωτικό 'id' επιτακτικό για μηνύματα MIX"}. {"Attribute 'id' is mandatory for MIX messages","Το δηλωτικό 'id' επιτακτικό για μηνύματα MIX"}.
{"Attribute 'jid' is not allowed here","Το δηλωτικό 'jid' δεν επιτρέπεται εδώ"}. {"Attribute 'jid' is not allowed here","Το δηλωτικό 'jid' δεν επιτρέπεται εδώ"}.
@ -73,6 +74,7 @@
{"Changing role/affiliation is not allowed","Η αλλαγή ρόλου/ομάδας δεν επιτρέπεται"}. {"Changing role/affiliation is not allowed","Η αλλαγή ρόλου/ομάδας δεν επιτρέπεται"}.
{"Channel already exists","Το κανάλι υπάρχει ήδη"}. {"Channel already exists","Το κανάλι υπάρχει ήδη"}.
{"Channel does not exist","Το κανάλι δεν υπάρχει"}. {"Channel does not exist","Το κανάλι δεν υπάρχει"}.
{"Channel JID","JID καναλιού"}.
{"Channels","Κανάλια"}. {"Channels","Κανάλια"}.
{"Characters not allowed:","Χαρακτήρες που δεν επιτρέπονται:"}. {"Characters not allowed:","Χαρακτήρες που δεν επιτρέπονται:"}.
{"Chatroom configuration modified","Η ρύθμιση παραμέτρων της αίθουσας σύνεδριασης τροποποιηθηκε"}. {"Chatroom configuration modified","Η ρύθμιση παραμέτρων της αίθουσας σύνεδριασης τροποποιηθηκε"}.
@ -86,33 +88,25 @@
{"Choose whether to approve this entity's subscription.","Επιλέξτε αν θα εγκρίθεί η εγγραφή αυτής της οντότητας."}. {"Choose whether to approve this entity's subscription.","Επιλέξτε αν θα εγκρίθεί η εγγραφή αυτής της οντότητας."}.
{"City","Πόλη"}. {"City","Πόλη"}.
{"Client acknowledged more stanzas than sent by server","Ο πελάτης γνωρίζει περισσότερα δωμάτια από αυτά που στάλθηκαν από τον εξυπηρετητή"}. {"Client acknowledged more stanzas than sent by server","Ο πελάτης γνωρίζει περισσότερα δωμάτια από αυτά που στάλθηκαν από τον εξυπηρετητή"}.
{"Clustering","Συσταδοποίηση"}.
{"Commands","Εντολές"}. {"Commands","Εντολές"}.
{"Conference room does not exist","Η αίθουσα σύνεδριασης δεν υπάρχει"}. {"Conference room does not exist","Η αίθουσα σύνεδριασης δεν υπάρχει"}.
{"Configuration of room ~s","Διαμόρφωση δωματίου ~ s"}. {"Configuration of room ~s","Διαμόρφωση δωματίου ~ s"}.
{"Configuration","Ρύθμιση παραμέτρων"}. {"Configuration","Ρύθμιση παραμέτρων"}.
{"Connected Resources:","Συνδεδεμένοι Πόροι:"}.
{"Contact Addresses (normally, room owner or owners)","Διευθύνσεις της Επαφής (κανονικά, ιδιοκτήτης (-ες) αίθουσας)"}. {"Contact Addresses (normally, room owner or owners)","Διευθύνσεις της Επαφής (κανονικά, ιδιοκτήτης (-ες) αίθουσας)"}.
{"Country","Χώρα"}. {"Country","Χώρα"}.
{"CPU Time:","Ώρα CPU:"}.
{"Current Discussion Topic","Τρέχων θέμα συζήτησης"}. {"Current Discussion Topic","Τρέχων θέμα συζήτησης"}.
{"Database failure","Αποτυχία βάσης δεδομένων"}. {"Database failure","Αποτυχία βάσης δεδομένων"}.
{"Database Tables at ~p","Πίνακες βάσης δεδομένων στο ~p"}.
{"Database Tables Configuration at ","Διαμόρφωση Πίνακων βάσης δεδομένων στο "}. {"Database Tables Configuration at ","Διαμόρφωση Πίνακων βάσης δεδομένων στο "}.
{"Database","Βάση δεδομένων"}. {"Database","Βάση δεδομένων"}.
{"December","Δεκέμβριος"}. {"December","Δεκέμβριος"}.
{"Default users as participants","Προρυθμισμένοι χρήστες ως συμμετέχοντες"}. {"Default users as participants","Προρυθμισμένοι χρήστες ως συμμετέχοντες"}.
{"Delete content","Διαγραφή περιεχομένων"}.
{"Delete message of the day on all hosts","Διαγράψτε το μήνυμα της ημέρας σε όλους τους κεντρικούς υπολογιστές"}. {"Delete message of the day on all hosts","Διαγράψτε το μήνυμα της ημέρας σε όλους τους κεντρικούς υπολογιστές"}.
{"Delete message of the day","Διαγράψτε το μήνυμα της ημέρας"}. {"Delete message of the day","Διαγράψτε το μήνυμα της ημέρας"}.
{"Delete Selected","Διαγραφή επιλεγμένων"}.
{"Delete table","Διαγραφή Πίνακα"}.
{"Delete User","Διαγραφή Χρήστη"}. {"Delete User","Διαγραφή Χρήστη"}.
{"Deliver event notifications","Παράδοση ειδοποιήσεων συμβάντων"}. {"Deliver event notifications","Παράδοση ειδοποιήσεων συμβάντων"}.
{"Deliver payloads with event notifications","Κοινοποίηση φόρτου εργασιών με τις ειδοποιήσεις συμβάντων"}. {"Deliver payloads with event notifications","Κοινοποίηση φόρτου εργασιών με τις ειδοποιήσεις συμβάντων"}.
{"Description:","Περιγραφή:"}.
{"Disc only copy","Αντίγραφο μόνο σε δίσκο"}. {"Disc only copy","Αντίγραφο μόνο σε δίσκο"}.
{"'Displayed groups' not added (they do not exist!): ","'Οι εμφανιζόμενες ομάδες' δεν προστέθηκαν (δεν υπάρχουν!): "}.
{"Displayed:","Απεικονίζεται:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Μην πείτε τον κωδικό πρόσβασής σας σε κανέναν, ούτε στους διαχειριστές του διακομιστή XMPP."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","Μην πείτε τον κωδικό πρόσβασής σας σε κανέναν, ούτε στους διαχειριστές του διακομιστή XMPP."}.
{"Dump Backup to Text File at ","Αποθήκευση Αντιγράφου Ασφαλείας σε αρχείο κειμένου στο "}. {"Dump Backup to Text File at ","Αποθήκευση Αντιγράφου Ασφαλείας σε αρχείο κειμένου στο "}.
{"Dump to Text File","Αποθήκευση σε αρχείο κειμένου"}. {"Dump to Text File","Αποθήκευση σε αρχείο κειμένου"}.
@ -128,9 +122,9 @@
{"ejabberd vCard module","ejabberd vCard module"}. {"ejabberd vCard module","ejabberd vCard module"}.
{"ejabberd Web Admin","ejabberd Web Admin"}. {"ejabberd Web Admin","ejabberd Web Admin"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Στοιχεία"}.
{"Email Address","Ηλεκτρονική Διεύθυνση"}. {"Email Address","Ηλεκτρονική Διεύθυνση"}.
{"Email","Ηλεκτρονικό ταχυδρομείο"}. {"Email","Ηλεκτρονικό ταχυδρομείο"}.
{"Enable hats","Ενεργοποίηση καπέλων"}.
{"Enable logging","Ενεργοποίηση καταγραφής"}. {"Enable logging","Ενεργοποίηση καταγραφής"}.
{"Enable message archiving","Ενεργοποιήστε την αρχειοθέτηση μηνυμάτων"}. {"Enable message archiving","Ενεργοποιήστε την αρχειοθέτηση μηνυμάτων"}.
{"Enabling push without 'node' attribute is not supported","Η ενεργοποίηση της ώθησης χωρίς το χαρακτηριστικό 'κόμβος' δεν υποστηρίζεται"}. {"Enabling push without 'node' attribute is not supported","Η ενεργοποίηση της ώθησης χωρίς το χαρακτηριστικό 'κόμβος' δεν υποστηρίζεται"}.
@ -142,7 +136,6 @@
{"Enter path to text file","Εισάγετε Τοποθεσία Αρχείου Κειμένου"}. {"Enter path to text file","Εισάγετε Τοποθεσία Αρχείου Κειμένου"}.
{"Enter the text you see","Πληκτρολογήστε το κείμενο που βλέπετε"}. {"Enter the text you see","Πληκτρολογήστε το κείμενο που βλέπετε"}.
{"Erlang XMPP Server","Διακομιστής Erlang XMPP"}. {"Erlang XMPP Server","Διακομιστής Erlang XMPP"}.
{"Error","Σφάλμα"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Εξαίρεσε αυτές τις ταυτότητες Jabber από την CAPTCHA πρόκληση"}. {"Exclude Jabber IDs from CAPTCHA challenge","Εξαίρεσε αυτές τις ταυτότητες Jabber από την CAPTCHA πρόκληση"}.
{"Export all tables as SQL queries to a file:","Εξαγωγή όλων των πινάκων ως ερωτημάτων SQL σε ένα αρχείο:"}. {"Export all tables as SQL queries to a file:","Εξαγωγή όλων των πινάκων ως ερωτημάτων SQL σε ένα αρχείο:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Εξαγωγή δεδομένων όλων των χρηστών του διακομιστή σε PIEFXIS αρχεία (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Εξαγωγή δεδομένων όλων των χρηστών του διακομιστή σε PIEFXIS αρχεία (XEP-0227):"}.
@ -161,28 +154,28 @@
{"Fill in the form to search for any matching XMPP User","Συμπληρώστε την φόρμα για αναζήτηση χρηστών XMPP"}. {"Fill in the form to search for any matching XMPP User","Συμπληρώστε την φόρμα για αναζήτηση χρηστών XMPP"}.
{"Friday","Παρασκευή"}. {"Friday","Παρασκευή"}.
{"From ~ts","Από ~ts"}. {"From ~ts","Από ~ts"}.
{"From","Από"}.
{"Full List of Room Admins","Πλήρης Κατάλογος Διαχειριστών αιθουσών"}. {"Full List of Room Admins","Πλήρης Κατάλογος Διαχειριστών αιθουσών"}.
{"Full List of Room Owners","Πλήρης Κατάλογος Ιδιοκτητών αιθουσών"}. {"Full List of Room Owners","Πλήρης Κατάλογος Ιδιοκτητών αιθουσών"}.
{"Full Name","Ονοματεπώνυμο"}. {"Full Name","Ονοματεπώνυμο"}.
{"Get List of Online Users","Λίστα online χρηστών"}.
{"Get List of Registered Users","Λίστα εγγεγραμμένων χρηστών"}.
{"Get Number of Online Users","Έκθεση αριθμού συνδεδεμένων χρηστών"}. {"Get Number of Online Users","Έκθεση αριθμού συνδεδεμένων χρηστών"}.
{"Get Number of Registered Users","Έκθεση αριθμού εγγεγραμμένων χρηστών"}. {"Get Number of Registered Users","Έκθεση αριθμού εγγεγραμμένων χρηστών"}.
{"Get Pending","Λήψη των εκκρεμοτήτων"}. {"Get Pending","Λήψη των εκκρεμοτήτων"}.
{"Get User Last Login Time","Έκθεση Τελευταίας Ώρας Σύνδεσης Χρήστη"}. {"Get User Last Login Time","Έκθεση Τελευταίας Ώρας Σύνδεσης Χρήστη"}.
{"Get User Password","Έκθεση Κωδικού Πρόσβασης Χρήστη"}.
{"Get User Statistics","Έκθεση Στατιστικών Χρήστη"}. {"Get User Statistics","Έκθεση Στατιστικών Χρήστη"}.
{"Given Name","Όνομα"}. {"Given Name","Όνομα"}.
{"Grant voice to this person?","Παραχώρηση φωνής σε αυτό το άτομο;"}. {"Grant voice to this person?","Παραχώρηση φωνής σε αυτό το άτομο;"}.
{"Groups that will be displayed to the members","Ομάδες που θα εμφανίζονται στα μέλη"}.
{"Groups","Ομάδες"}.
{"Group","Ομάδα"}.
{"has been banned","έχει αποβληθεί διαπαντώς"}. {"has been banned","έχει αποβληθεί διαπαντώς"}.
{"has been kicked because of a system shutdown","αποβλήθηκε λόγω τερματισμού συστήματος"}. {"has been kicked because of a system shutdown","αποβλήθηκε λόγω τερματισμού συστήματος"}.
{"has been kicked because of an affiliation change","έχει αποβληθεί λόγω αλλαγής υπαγωγής"}. {"has been kicked because of an affiliation change","έχει αποβληθεί λόγω αλλαγής υπαγωγής"}.
{"has been kicked because the room has been changed to members-only","αποβλήθηκε επειδή η αίθουσα αλλάξε γιά μέλη μόνο"}. {"has been kicked because the room has been changed to members-only","αποβλήθηκε επειδή η αίθουσα αλλάξε γιά μέλη μόνο"}.
{"has been kicked","αποβλήθηκε"}. {"has been kicked","αποβλήθηκε"}.
{"Hash of the vCard-temp avatar of this room","Hash του vCard-temp avatar αυτού του δωματίου"}.
{"Hat title","Τίτλος καπέλου"}.
{"Hat URI","Καπέλο URI"}.
{"Hats limit exceeded","Υπέρβαση του ορίου καπέλων"}.
{"Host unknown","Άγνωστος εξυπηρετητής"}. {"Host unknown","Άγνωστος εξυπηρετητής"}.
{"Host","Εξυπηρετητής"}.
{"HTTP File Upload","Ανέβασμα αρχείου"}. {"HTTP File Upload","Ανέβασμα αρχείου"}.
{"Idle connection","Αδρανής σύνδεση"}. {"Idle connection","Αδρανής σύνδεση"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Εάν δεν βλέπετε την εικόνα CAPTCHA εδώ, επισκεφθείτε την ιστοσελίδα."}. {"If you don't see the CAPTCHA image here, visit the web page.","Εάν δεν βλέπετε την εικόνα CAPTCHA εδώ, επισκεφθείτε την ιστοσελίδα."}.
@ -196,13 +189,14 @@
{"Import Users From jabberd14 Spool Files","Εισαγωγή Χρηστών από αρχεία σειράς jabberd14"}. {"Import Users From jabberd14 Spool Files","Εισαγωγή Χρηστών από αρχεία σειράς jabberd14"}.
{"Improper domain part of 'from' attribute","Ανάρμοστο τμήμα τομέα του χαρακτηριστικού 'from'"}. {"Improper domain part of 'from' attribute","Ανάρμοστο τμήμα τομέα του χαρακτηριστικού 'from'"}.
{"Improper message type","Ακατάλληλο είδος μηνύματος"}. {"Improper message type","Ακατάλληλο είδος μηνύματος"}.
{"Incoming s2s Connections:","Εισερχόμενες συνδέσεις s2s:"}.
{"Incorrect CAPTCHA submit","Λάθος υποβολή CAPTCHA"}. {"Incorrect CAPTCHA submit","Λάθος υποβολή CAPTCHA"}.
{"Incorrect data form","Εσφαλμένη φόρμα δεδομένων"}. {"Incorrect data form","Εσφαλμένη φόρμα δεδομένων"}.
{"Incorrect password","Εσφαλμένος κωδικός πρόσβασης"}. {"Incorrect password","Εσφαλμένος κωδικός πρόσβασης"}.
{"Incorrect value of 'action' attribute","Λανθασμένη τιμή του χαρακτηριστικού 'action'"}. {"Incorrect value of 'action' attribute","Λανθασμένη τιμή του χαρακτηριστικού 'action'"}.
{"Incorrect value of 'action' in data form","Λανθασμένη τιμή 'action' στη φόρμα δεδομένων"}. {"Incorrect value of 'action' in data form","Λανθασμένη τιμή 'action' στη φόρμα δεδομένων"}.
{"Incorrect value of 'path' in data form","Λανθασμένη τιμή 'path' στη φόρμα δεδομένων"}. {"Incorrect value of 'path' in data form","Λανθασμένη τιμή 'path' στη φόρμα δεδομένων"}.
{"Installed Modules:","Εγκατεστημένες ενότητες:"}.
{"Install","Εγκατάσταση"}.
{"Insufficient privilege","Ανεπαρκή προνόμια"}. {"Insufficient privilege","Ανεπαρκή προνόμια"}.
{"Internal server error","Εσωτερικό σφάλμα"}. {"Internal server error","Εσωτερικό σφάλμα"}.
{"Invalid 'from' attribute in forwarded message","Μη έγκυρο χαρακτηριστικό 'από' στο προωθούμενο μήνυμα"}. {"Invalid 'from' attribute in forwarded message","Μη έγκυρο χαρακτηριστικό 'από' στο προωθούμενο μήνυμα"}.
@ -218,11 +212,12 @@
{"January","Ιανουάριος"}. {"January","Ιανουάριος"}.
{"JID normalization denied by service policy","Απετράπη η κανονικοποίηση του JID, λόγω της τακτικής Παροχής Υπηρεσιών"}. {"JID normalization denied by service policy","Απετράπη η κανονικοποίηση του JID, λόγω της τακτικής Παροχής Υπηρεσιών"}.
{"JID normalization failed","Απετράπη η κανονικοποίηση του JID"}. {"JID normalization failed","Απετράπη η κανονικοποίηση του JID"}.
{"Joined MIX channels of ~ts","Ενσωματωμένα κανάλια MIX του ~ts"}.
{"Joined MIX channels:","Ενσωματωμένα κανάλια MIX:"}.
{"joins the room","συνδέεται στην αίθουσα"}. {"joins the room","συνδέεται στην αίθουσα"}.
{"July","Ιούλιος"}. {"July","Ιούλιος"}.
{"June","Ιούνιος"}. {"June","Ιούνιος"}.
{"Just created","Μόλις δημιουργήθηκε"}. {"Just created","Μόλις δημιουργήθηκε"}.
{"Label:","Ετικέτα:"}.
{"Last Activity","Τελευταία Δραστηριότητα"}. {"Last Activity","Τελευταία Δραστηριότητα"}.
{"Last login","Τελευταία σύνδεση"}. {"Last login","Τελευταία σύνδεση"}.
{"Last message","Τελευταίο μήνυμα"}. {"Last message","Τελευταίο μήνυμα"}.
@ -230,9 +225,10 @@
{"Last year","Πέρυσι"}. {"Last year","Πέρυσι"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Τα ψηφία μικρότερης αξίας του αθροίσματος SHA-256 του κειμένου θα έπρεπε να ισούνται με την δεκαεξαδική ετικέτα"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Τα ψηφία μικρότερης αξίας του αθροίσματος SHA-256 του κειμένου θα έπρεπε να ισούνται με την δεκαεξαδική ετικέτα"}.
{"leaves the room","εγκαταλείπει την αίθουσα"}. {"leaves the room","εγκαταλείπει την αίθουσα"}.
{"List of rooms","Κατάλογος αιθουσών"}. {"List of users with hats","Λίστα των χρηστών με καπέλα"}.
{"List users with hats","Λίστα χρηστών με καπέλα"}.
{"Logged Out","Αποσυνδεδεμένος"}.
{"Logging","Καταγραφή"}. {"Logging","Καταγραφή"}.
{"Low level update script","Προγράμα ενημέρωσης χαμηλού επίπεδου"}.
{"Make participants list public","Κάντε δημόσιο τον κατάλογο συμμετεχόντων"}. {"Make participants list public","Κάντε δημόσιο τον κατάλογο συμμετεχόντων"}.
{"Make room CAPTCHA protected","Κάντε την αίθουσα προστατεύομενη με CAPTCHA"}. {"Make room CAPTCHA protected","Κάντε την αίθουσα προστατεύομενη με CAPTCHA"}.
{"Make room members-only","Κάντε την αίθουσα μόνο για μέλη"}. {"Make room members-only","Κάντε την αίθουσα μόνο για μέλη"}.
@ -243,17 +239,15 @@
{"Malformed username","Λανθασμένη μορφή ονόματος χρήστη"}. {"Malformed username","Λανθασμένη μορφή ονόματος χρήστη"}.
{"MAM preference modification denied by service policy","Άρνηση αλλαγής προτιμήσεων MAM, λόγω της τακτικής Παροχής Υπηρεσιών"}. {"MAM preference modification denied by service policy","Άρνηση αλλαγής προτιμήσεων MAM, λόγω της τακτικής Παροχής Υπηρεσιών"}.
{"March","Μάρτιος"}. {"March","Μάρτιος"}.
{"Max # of items to persist, or `max` for no specific limit other than a server imposed maximum","Μέγιστος αριθμός στοιχείων που πρέπει να παραμείνουν, ή « Μέγιστο » για κανένα συγκεκριμένο όριο εκτός από το μέγιστο που επιβάλλει ο διακομιστής"}.
{"Max payload size in bytes","Μέγιστο μέγεθος φορτίου σε bytes"}. {"Max payload size in bytes","Μέγιστο μέγεθος φορτίου σε bytes"}.
{"Maximum file size","Μέγιστο μέγεθος αρχείου"}. {"Maximum file size","Μέγιστο μέγεθος αρχείου"}.
{"Maximum Number of History Messages Returned by Room","Μέγιστος αριθμός μηνυμάτων Ιστορικού που επιστρέφονται από την Αίθουσα"}. {"Maximum Number of History Messages Returned by Room","Μέγιστος αριθμός μηνυμάτων Ιστορικού που επιστρέφονται από την Αίθουσα"}.
{"Maximum number of items to persist","Μέγιστος αριθμός μόνιμων στοιχείων"}. {"Maximum number of items to persist","Μέγιστος αριθμός μόνιμων στοιχείων"}.
{"Maximum Number of Occupants","Μέγιστος αριθμός συμμετεχόντων"}. {"Maximum Number of Occupants","Μέγιστος αριθμός συμμετεχόντων"}.
{"May","Μάιος"}. {"May","Μάιος"}.
{"Members not added (inexistent vhost!): ","Τα μέλη δεν προστέθηκαν (ανύπαρκτος vhost!): "}.
{"Membership is required to enter this room","Απαιτείται αίτηση συμετοχής για είσοδο σε αυτή την αίθουσα"}. {"Membership is required to enter this room","Απαιτείται αίτηση συμετοχής για είσοδο σε αυτή την αίθουσα"}.
{"Members:","Μέλη:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Απομνημονεύστε τον κωδικό πρόσβασής σας ή γράψτε τον σε χαρτί που βρίσκεται σε ασφαλές μέρος. Στο XMPP δεν υπάρχει αυτοματοποιημένος τρόπος ανάκτησης του κωδικού πρόσβασής σας εάν τον ξεχάσετε."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Απομνημονεύστε τον κωδικό πρόσβασής σας ή γράψτε τον σε χαρτί που βρίσκεται σε ασφαλές μέρος. Στο XMPP δεν υπάρχει αυτοματοποιημένος τρόπος ανάκτησης του κωδικού πρόσβασής σας εάν τον ξεχάσετε."}.
{"Memory","Μνήμη"}.
{"Mere Availability in XMPP (No Show Value)","Διαθεσιμότητα στο XMPP (Χωρίς ένδειξη)"}. {"Mere Availability in XMPP (No Show Value)","Διαθεσιμότητα στο XMPP (Χωρίς ένδειξη)"}.
{"Message body","Περιεχόμενο μηνύματος"}. {"Message body","Περιεχόμενο μηνύματος"}.
{"Message not found in forwarded payload","Δεν βρέθηκε μήνυμα στον προωθημένο φόρτο εργασίας"}. {"Message not found in forwarded payload","Δεν βρέθηκε μήνυμα στον προωθημένο φόρτο εργασίας"}.
@ -265,15 +259,12 @@
{"Moderator privileges required","Aπαιτούνται προνόμια επόπτου"}. {"Moderator privileges required","Aπαιτούνται προνόμια επόπτου"}.
{"Moderators Only","Επόπτες μόμον"}. {"Moderators Only","Επόπτες μόμον"}.
{"Moderator","Επόπτης"}. {"Moderator","Επόπτης"}.
{"Modified modules","Τροποποιημένα modules"}.
{"Module failed to handle the query","Το module απέτυχε να χειριστεί το ερώτημα"}. {"Module failed to handle the query","Το module απέτυχε να χειριστεί το ερώτημα"}.
{"Monday","Δευτέρα"}. {"Monday","Δευτέρα"}.
{"Multicast","Πολλαπλή διανομή (Multicast)"}. {"Multicast","Πολλαπλή διανομή (Multicast)"}.
{"Multiple <item/> elements are not allowed by RFC6121","Πολλαπλά στοιχεία <item/> δεν επιτρέπονται από το RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","Πολλαπλά στοιχεία <item/> δεν επιτρέπονται από το RFC6121"}.
{"Multi-User Chat","Συνομιλία με πολλούς χρήστες"}. {"Multi-User Chat","Συνομιλία με πολλούς χρήστες"}.
{"Name in the rosters where this group will be displayed","Όνομα στις λίστες όπου αυτή η ομάδα θα εμφανίζεται"}.
{"Name","Όνομα"}. {"Name","Όνομα"}.
{"Name:","Όνομα:"}.
{"Natural Language for Room Discussions","Μητρική Γλώσσα για τις Συζητήσεις Αιθουσών"}. {"Natural Language for Room Discussions","Μητρική Γλώσσα για τις Συζητήσεις Αιθουσών"}.
{"Natural-Language Room Name","Αίθουσα Μητρικής Γλώσσας"}. {"Natural-Language Room Name","Αίθουσα Μητρικής Γλώσσας"}.
{"Neither 'jid' nor 'nick' attribute found","Δεν βρέθηκε κανένα χαρακτηριστικό 'jid' ούτε 'nick'"}. {"Neither 'jid' nor 'nick' attribute found","Δεν βρέθηκε κανένα χαρακτηριστικό 'jid' ούτε 'nick'"}.
@ -319,6 +310,7 @@
{"Node ~p","Κόμβος ~p"}. {"Node ~p","Κόμβος ~p"}.
{"Nodeprep has failed","Το Nodeprep απέτυχε"}. {"Nodeprep has failed","Το Nodeprep απέτυχε"}.
{"Nodes","Κόμβοι"}. {"Nodes","Κόμβοι"}.
{"Node","Κόμβος"}.
{"None","Κανένα"}. {"None","Κανένα"}.
{"Not allowed","Δεν επιτρέπεται"}. {"Not allowed","Δεν επιτρέπεται"}.
{"Not Found","Δε βρέθηκε"}. {"Not Found","Δε βρέθηκε"}.
@ -332,17 +324,15 @@
{"Number of Offline Messages","Πλήθος μηνυμάτων Χωρίς Σύνδεση"}. {"Number of Offline Messages","Πλήθος μηνυμάτων Χωρίς Σύνδεση"}.
{"Number of online users","Αριθμός συνδεδεμένων χρηστών"}. {"Number of online users","Αριθμός συνδεδεμένων χρηστών"}.
{"Number of registered users","Αριθμός εγγεγραμμένων χρηστών"}. {"Number of registered users","Αριθμός εγγεγραμμένων χρηστών"}.
{"Number of seconds after which to automatically purge items, or `max` for no specific limit other than a server imposed maximum","Αριθμός δευτερολέπτων μετά από τα οποία θα καθαρίζονται αυτόματα τα στοιχεία, ή `max` για κανένα συγκεκριμένο όριο εκτός από το μέγιστο που επιβάλλει ο διακομιστής"}.
{"Occupants are allowed to invite others","Οι συμμετέχοντες μπορούν να προσκαλέσουν και άλλους"}. {"Occupants are allowed to invite others","Οι συμμετέχοντες μπορούν να προσκαλέσουν και άλλους"}.
{"Occupants are allowed to query others","Οι κάτοικοι επιτρέπεται να ρωτούν άλλους"}.
{"Occupants May Change the Subject","Επιτρέψτε στους χρήστες να αλλάζουν το Θέμα"}. {"Occupants May Change the Subject","Επιτρέψτε στους χρήστες να αλλάζουν το Θέμα"}.
{"October","Οκτώβριος"}. {"October","Οκτώβριος"}.
{"Offline Messages","Χωρίς Σύνδεση Μηνύματα"}.
{"Offline Messages:","Χωρίς Σύνδεση Μηνύματα:"}.
{"OK","Εντάξει"}. {"OK","Εντάξει"}.
{"Old Password:","Παλαιός κωδικός πρόσβασης:"}. {"Old Password:","Παλαιός κωδικός πρόσβασης:"}.
{"Online Users:","Online Χρήστες:"}.
{"Online Users","Συνδεμένοι χρήστες"}. {"Online Users","Συνδεμένοι χρήστες"}.
{"Online","Συνδεδεμένο"}. {"Online","Συνδεδεμένο"}.
{"Only admins can see this","Μόνον οι διαχειριστές μπορούν να το δουν αυτό"}.
{"Only collection node owners may associate leaf nodes with the collection","Μόνον οι ιδιοκτήτες των κόμβων μπορούν να συσχετίσουν leaf nodes με την Συλλογή"}. {"Only collection node owners may associate leaf nodes with the collection","Μόνον οι ιδιοκτήτες των κόμβων μπορούν να συσχετίσουν leaf nodes με την Συλλογή"}.
{"Only deliver notifications to available users","Παράδοση ειδοποιήσεων μόνο σε διαθέσιμους χρήστες"}. {"Only deliver notifications to available users","Παράδοση ειδοποιήσεων μόνο σε διαθέσιμους χρήστες"}.
{"Only <enable/> or <disable/> tags are allowed","Επιτρέπονται μόνο tags <enable /> ή <disable />"}. {"Only <enable/> or <disable/> tags are allowed","Επιτρέπονται μόνο tags <enable /> ή <disable />"}.
@ -350,6 +340,7 @@
{"Only members may query archives of this room","Μόνο μέλη μπορούν να δούνε τα αρχεία αυτής της αίθουσας"}. {"Only members may query archives of this room","Μόνο μέλη μπορούν να δούνε τα αρχεία αυτής της αίθουσας"}.
{"Only moderators and participants are allowed to change the subject in this room","Μόνο οι συντονιστές και οι συμμετέχοντες μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}. {"Only moderators and participants are allowed to change the subject in this room","Μόνο οι συντονιστές και οι συμμετέχοντες μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}.
{"Only moderators are allowed to change the subject in this room","Μόνο οι συντονιστές μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}. {"Only moderators are allowed to change the subject in this room","Μόνο οι συντονιστές μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}.
{"Only moderators are allowed to retract messages","Μόνο οι συντονιστές επιτρέπεται να αποσύρουν μηνύματα"}.
{"Only moderators can approve voice requests","Μόνο οι συντονιστές μπορούν να εγκρίνουν τις αιτήσεις φωνής"}. {"Only moderators can approve voice requests","Μόνο οι συντονιστές μπορούν να εγκρίνουν τις αιτήσεις φωνής"}.
{"Only occupants are allowed to send messages to the conference","Μόνο οι συμμετέχοντες επιτρέπεται να στέλνουν μηνύματα στο συνέδριο"}. {"Only occupants are allowed to send messages to the conference","Μόνο οι συμμετέχοντες επιτρέπεται να στέλνουν μηνύματα στο συνέδριο"}.
{"Only occupants are allowed to send queries to the conference","Μόνο οι συμμετέχοντες επιτρέπεται να στείλουν ερωτήματα στη διάσκεψη"}. {"Only occupants are allowed to send queries to the conference","Μόνο οι συμμετέχοντες επιτρέπεται να στείλουν ερωτήματα στη διάσκεψη"}.
@ -359,11 +350,11 @@
{"Only those on a whitelist may subscribe and retrieve items","Μόνο όσοι βρίσκονται στη λίστα επιτρεπόμενων μπορούν να εγγραφούν και να ανακτήσουν αντικείμενα"}. {"Only those on a whitelist may subscribe and retrieve items","Μόνο όσοι βρίσκονται στη λίστα επιτρεπόμενων μπορούν να εγγραφούν και να ανακτήσουν αντικείμενα"}.
{"Organization Name","Όνομα Οργανισμού"}. {"Organization Name","Όνομα Οργανισμού"}.
{"Organization Unit","Μονάδα Οργανισμού"}. {"Organization Unit","Μονάδα Οργανισμού"}.
{"Other Modules Available:","Διαθέσιμες άλλες ενότητες:"}.
{"Outgoing s2s Connections","Εξερχόμενες S2S Συνδέσεις"}. {"Outgoing s2s Connections","Εξερχόμενες S2S Συνδέσεις"}.
{"Outgoing s2s Connections:","Εξερχόμενες S2S Συνδέσεις:"}.
{"Owner privileges required","Aπαιτούνται προνόμια ιδιοκτήτη"}. {"Owner privileges required","Aπαιτούνται προνόμια ιδιοκτήτη"}.
{"Packet relay is denied by service policy","Απαγορεύεται η αναμετάδοση πακέτων, λόγω της τακτικής Παροχής Υπηρεσιών"}. {"Packet relay is denied by service policy","Απαγορεύεται η αναμετάδοση πακέτων, λόγω της τακτικής Παροχής Υπηρεσιών"}.
{"Packet","Πακέτο"}. {"Participant ID","ID συμμετέχοντος"}.
{"Participant","Συμμετέχων"}. {"Participant","Συμμετέχων"}.
{"Password Verification","Επαλήθευση κωδικού πρόσβασης"}. {"Password Verification","Επαλήθευση κωδικού πρόσβασης"}.
{"Password Verification:","Επαλήθευση κωδικού πρόσβασης:"}. {"Password Verification:","Επαλήθευση κωδικού πρόσβασης:"}.
@ -371,7 +362,7 @@
{"Password:","Κωδικός πρόσβασης:"}. {"Password:","Κωδικός πρόσβασης:"}.
{"Path to Dir","Τοποθεσία κατάλογου αρχείων"}. {"Path to Dir","Τοποθεσία κατάλογου αρχείων"}.
{"Path to File","Τοποθεσία Αρχείου"}. {"Path to File","Τοποθεσία Αρχείου"}.
{"Pending","Εκκρεμεί"}. {"Payload semantic type information","Πληροφορίες σημασιολογικού τύπου ωφέλιμου φορτίου"}.
{"Period: ","Περίοδος: "}. {"Period: ","Περίοδος: "}.
{"Persist items to storage","Μόνιμη αποθήκευση στοιχείων"}. {"Persist items to storage","Μόνιμη αποθήκευση στοιχείων"}.
{"Persistent","Μόνιμη"}. {"Persistent","Μόνιμη"}.
@ -405,25 +396,22 @@
{"Receive notification of new nodes only","Λάβετε ειδοποίηση μόνο από νέους κόμβους"}. {"Receive notification of new nodes only","Λάβετε ειδοποίηση μόνο από νέους κόμβους"}.
{"Recipient is not in the conference room","Ο παραλήπτης δεν είναι στην αίθουσα συνεδριάσεων"}. {"Recipient is not in the conference room","Ο παραλήπτης δεν είναι στην αίθουσα συνεδριάσεων"}.
{"Register an XMPP account","Καταχωρείστε έναν XMPP λογαριασμό χρήστη"}. {"Register an XMPP account","Καταχωρείστε έναν XMPP λογαριασμό χρήστη"}.
{"Registered Users","Εγγεγραμμένοι Χρήστες"}.
{"Registered Users:","Εγγεγραμμένοι Χρήστες:"}.
{"Register","Καταχωρήστε"}. {"Register","Καταχωρήστε"}.
{"Remote copy","Εξ αποστάσεως αντίγραφο"}. {"Remote copy","Εξ αποστάσεως αντίγραφο"}.
{"Remove All Offline Messages","Αφαίρεση όλων των μηνυμάτων χωρίς σύνδεση"}. {"Remove a hat from a user","Αφαίρεση ενός καπέλου από έναν χρήστη"}.
{"Remove User","Αφαίρεση χρήστη"}. {"Remove User","Αφαίρεση χρήστη"}.
{"Remove","Αφαίρεση"}.
{"Replaced by new connection","Αντικαταστάθηκε από μια νέα σύνδεση"}. {"Replaced by new connection","Αντικαταστάθηκε από μια νέα σύνδεση"}.
{"Request has timed out","Το αίτημα έληξε"}. {"Request has timed out","Το αίτημα έληξε"}.
{"Request is ignored","Το αίτημα θα αγνοηθεί"}. {"Request is ignored","Το αίτημα θα αγνοηθεί"}.
{"Requested role","Αιτούμενος ρόλος"}. {"Requested role","Αιτούμενος ρόλος"}.
{"Resources","Πόροι"}. {"Resources","Πόροι"}.
{"Restart Service","Επανεκκίνηση Υπηρεσίας"}. {"Restart Service","Επανεκκίνηση Υπηρεσίας"}.
{"Restart","Επανεκκίνηση"}.
{"Restore Backup from File at ","Επαναφορά Αντιγράφου Ασφαλείας από αρχείο στο "}. {"Restore Backup from File at ","Επαναφορά Αντιγράφου Ασφαλείας από αρχείο στο "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Επαναφορά δυαδικού αντιγράφου ασφαλείας μετά την επόμενη επανεκκίνηση του ejabberd (απαιτεί λιγότερη μνήμη):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Επαναφορά δυαδικού αντιγράφου ασφαλείας μετά την επόμενη επανεκκίνηση του ejabberd (απαιτεί λιγότερη μνήμη):"}.
{"Restore binary backup immediately:","Επαναφορά δυαδικού αντιγράφου ασφαλείας αμέσως:"}. {"Restore binary backup immediately:","Επαναφορά δυαδικού αντιγράφου ασφαλείας αμέσως:"}.
{"Restore plain text backup immediately:","Επαναφορά αντιγράφου ασφαλείας από αρχείο κειμένου αμέσως:"}. {"Restore plain text backup immediately:","Επαναφορά αντιγράφου ασφαλείας από αρχείο κειμένου αμέσως:"}.
{"Restore","Επαναφορά Αντιγράφου Ασφαλείας"}. {"Restore","Επαναφορά Αντιγράφου Ασφαλείας"}.
{"Result","Αποτέλεσμα"}.
{"Roles and Affiliations that May Retrieve Member List","Ρόλοι και δεσμοί που μπορούν να λάβουν την λίστα μελών"}. {"Roles and Affiliations that May Retrieve Member List","Ρόλοι και δεσμοί που μπορούν να λάβουν την λίστα μελών"}.
{"Roles for which Presence is Broadcasted","Ρόλοι των οποίων η παρουσία δηλώνεται δημόσια"}. {"Roles for which Presence is Broadcasted","Ρόλοι των οποίων η παρουσία δηλώνεται δημόσια"}.
{"Roles that May Send Private Messages","Ρόλοι που επιτρέπεται να αποστέλλουν ιδιωτικά μηνύματα"}. {"Roles that May Send Private Messages","Ρόλοι που επιτρέπεται να αποστέλλουν ιδιωτικά μηνύματα"}.
@ -434,20 +422,15 @@
{"Room terminates","Τερματισμός Αίθουσας"}. {"Room terminates","Τερματισμός Αίθουσας"}.
{"Room title","Τίτλος Αίθουσας"}. {"Room title","Τίτλος Αίθουσας"}.
{"Roster groups allowed to subscribe","Ομάδες Καταλόγου Επαφών μπορούν να εγγραφούν"}. {"Roster groups allowed to subscribe","Ομάδες Καταλόγου Επαφών μπορούν να εγγραφούν"}.
{"Roster of ~ts","Καταλόγου Επαφών του ~ts"}.
{"Roster size","Μέγεθος Καταλόγου Επαφών"}. {"Roster size","Μέγεθος Καταλόγου Επαφών"}.
{"Roster:","Καταλόγος Επαφών:"}.
{"RPC Call Error","Σφάλμα RPC Κλήσης"}.
{"Running Nodes","Ενεργοί Κόμβοι"}. {"Running Nodes","Ενεργοί Κόμβοι"}.
{"~s invites you to the room ~s","~s Σας καλεί στο δωμάτιο ~s"}. {"~s invites you to the room ~s","~s Σας καλεί στο δωμάτιο ~s"}.
{"Saturday","Σάββατο"}. {"Saturday","Σάββατο"}.
{"Script check","Script ελέγχου"}.
{"Search from the date","Αναζήτηση από της"}. {"Search from the date","Αναζήτηση από της"}.
{"Search Results for ","Αποτελέσματα αναζήτησης για "}. {"Search Results for ","Αποτελέσματα αναζήτησης για "}.
{"Search the text","Αναζήτηση του κειμένου"}. {"Search the text","Αναζήτηση του κειμένου"}.
{"Search until the date","Αναζήτηση μέχρι της"}. {"Search until the date","Αναζήτηση μέχρι της"}.
{"Search users in ","Αναζήτηση χρηστών στο "}. {"Search users in ","Αναζήτηση χρηστών στο "}.
{"Select All","Επιλογή όλων"}.
{"Send announcement to all online users on all hosts","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες σε όλους τους κεντρικούς υπολογιστές"}. {"Send announcement to all online users on all hosts","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
{"Send announcement to all online users","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες"}. {"Send announcement to all online users","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες"}.
{"Send announcement to all users on all hosts","Αποστολή ανακοίνωσης σε όλους τους χρήστες σε όλους τους κεντρικούς υπολογιστές"}. {"Send announcement to all users on all hosts","Αποστολή ανακοίνωσης σε όλους τους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
@ -460,32 +443,29 @@
{"Set message of the day on all hosts and send to online users","Ορίστε μήνυμα ημέρας και άμεση αποστολή στους συνδεδεμένους χρήστες σε όλους τους κεντρικούς υπολογιστές"}. {"Set message of the day on all hosts and send to online users","Ορίστε μήνυμα ημέρας και άμεση αποστολή στους συνδεδεμένους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
{"Shared Roster Groups","Κοινές Ομάδες Καταλόγων Επαφών"}. {"Shared Roster Groups","Κοινές Ομάδες Καταλόγων Επαφών"}.
{"Show Integral Table","Δείτε Ολοκληρωτικό Πίνακα"}. {"Show Integral Table","Δείτε Ολοκληρωτικό Πίνακα"}.
{"Show Occupants Join/Leave","Εμφάνιση ενοίκων Join/Leave"}.
{"Show Ordinary Table","Δείτε Κοινό Πίνακα"}. {"Show Ordinary Table","Δείτε Κοινό Πίνακα"}.
{"Shut Down Service","Τερματισμός Υπηρεσίας"}. {"Shut Down Service","Τερματισμός Υπηρεσίας"}.
{"SOCKS5 Bytestreams","Bytestreams του SOCKS5"}. {"SOCKS5 Bytestreams","Bytestreams του SOCKS5"}.
{"Some XMPP clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Ορισμένοι πελάτες XMPP μπορούν να αποθηκεύσουν τον κωδικό πρόσβασής σας στον υπολογιστή, αλλά θα πρέπει να το κάνετε μόνο στον προσωπικό σας υπολογιστή για λόγους ασφαλείας."}. {"Some XMPP clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Ορισμένοι πελάτες XMPP μπορούν να αποθηκεύσουν τον κωδικό πρόσβασής σας στον υπολογιστή, αλλά θα πρέπει να το κάνετε μόνο στον προσωπικό σας υπολογιστή για λόγους ασφαλείας."}.
{"Sources Specs:","Πηγές Προδιαγραφές:"}.
{"Specify the access model","Καθορίστε το μοντέλο πρόσβασης"}. {"Specify the access model","Καθορίστε το μοντέλο πρόσβασης"}.
{"Specify the event message type","Καθορίστε τον τύπο μηνύματος συμβάντος"}. {"Specify the event message type","Καθορίστε τον τύπο μηνύματος συμβάντος"}.
{"Specify the publisher model","Καθορίστε το μοντέλο εκδότη"}. {"Specify the publisher model","Καθορίστε το μοντέλο εκδότη"}.
{"Stanza id is not valid","Το Stanza id δεν είναι έγκυρο"}.
{"Stanza ID","Ταυτότητα Δωματίου"}. {"Stanza ID","Ταυτότητα Δωματίου"}.
{"Statically specify a replyto of the node owner(s)","Προσδιορίστε (στατικά) το Απάντηση Προς του ιδιοκτήτη-ων του κόμβου"}. {"Statically specify a replyto of the node owner(s)","Προσδιορίστε (στατικά) το Απάντηση Προς του ιδιοκτήτη-ων του κόμβου"}.
{"Statistics of ~p","Στατιστικές του ~p"}.
{"Statistics","Στατιστικές"}.
{"Stopped Nodes","Σταματημένοι Κόμβοι"}. {"Stopped Nodes","Σταματημένοι Κόμβοι"}.
{"Stop","Σταμάτημα"}.
{"Storage Type","Τύπος Αποθήκευσης"}.
{"Store binary backup:","Αποθηκεύση δυαδικού αντιγράφου ασφαλείας:"}. {"Store binary backup:","Αποθηκεύση δυαδικού αντιγράφου ασφαλείας:"}.
{"Store plain text backup:","Αποθηκεύση αντιγράφου ασφαλείας σε αρχείο κειμένου:"}. {"Store plain text backup:","Αποθηκεύση αντιγράφου ασφαλείας σε αρχείο κειμένου:"}.
{"Stream management is already enabled","Η διαχείριση Ροών επιτρέπεται ηδη"}. {"Stream management is already enabled","Η διαχείριση Ροών επιτρέπεται ηδη"}.
{"Stream management is not enabled","Η διαχείριση Ροών δεν είναι ενεργοποιημένη"}. {"Stream management is not enabled","Η διαχείριση Ροών δεν είναι ενεργοποιημένη"}.
{"Subject","Θέμα"}. {"Subject","Θέμα"}.
{"Submitted","Υποβλήθηκε"}. {"Submitted","Υποβλήθηκε"}.
{"Submit","Υποβολή"}.
{"Subscriber Address","Διεύθυνση Συνδρομητή"}. {"Subscriber Address","Διεύθυνση Συνδρομητή"}.
{"Subscribers may publish","Οι συνδρομητές μπορούν να δημοσιεύσουν"}. {"Subscribers may publish","Οι συνδρομητές μπορούν να δημοσιεύσουν"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Τα αιτήματα για συνδρομή πρέπει να εγκριθούν και μόνο οι συνδρομητές μπορούν να λάβουν αντικείμενα"}. {"Subscription requests must be approved and only subscribers may retrieve items","Τα αιτήματα για συνδρομή πρέπει να εγκριθούν και μόνο οι συνδρομητές μπορούν να λάβουν αντικείμενα"}.
{"Subscriptions are not allowed","Οι συνδρομές δεν επιτρέπονται"}. {"Subscriptions are not allowed","Οι συνδρομές δεν επιτρέπονται"}.
{"Subscription","Συνδρομή"}.
{"Sunday","Κυριακή"}. {"Sunday","Κυριακή"}.
{"Text associated with a picture","Το κείμενο σχετίστηκε με μία εικόνα"}. {"Text associated with a picture","Το κείμενο σχετίστηκε με μία εικόνα"}.
{"Text associated with a sound","Το κείμενο σχετίστηκε με έναν ήχο"}. {"Text associated with a sound","Το κείμενο σχετίστηκε με έναν ήχο"}.
@ -509,7 +489,10 @@
{"The JIDs of those to contact with questions","Το JID αυτών με τους οποίους θα επικοινωνήσετε με ερωτήσεις"}. {"The JIDs of those to contact with questions","Το JID αυτών με τους οποίους θα επικοινωνήσετε με ερωτήσεις"}.
{"The JIDs of those with an affiliation of owner","Το JID αυτών που σχετίζονται με τον ιδιοκτήτη"}. {"The JIDs of those with an affiliation of owner","Το JID αυτών που σχετίζονται με τον ιδιοκτήτη"}.
{"The JIDs of those with an affiliation of publisher","Το JID αυτών που σχετίζονται με τον εκδότη"}. {"The JIDs of those with an affiliation of publisher","Το JID αυτών που σχετίζονται με τον εκδότη"}.
{"The list of all online users","Ο κατάλογος όλων των online χρηστών"}.
{"The list of all users","Ο κατάλογος όλων των χρηστών"}.
{"The list of JIDs that may associate leaf nodes with a collection","Λίστα των JIDs που μπορούν να σχετίζουν leaf κόμβους με μια Συλλογή"}. {"The list of JIDs that may associate leaf nodes with a collection","Λίστα των JIDs που μπορούν να σχετίζουν leaf κόμβους με μια Συλλογή"}.
{"The maximum number of child nodes that can be associated with a collection, or `max` for no specific limit other than a server imposed maximum","Ο μέγιστος αριθμός των παιδικών κόμβων που μπορούν να συσχετιστούν με μια συλλογή, ή `max` για κανένα συγκεκριμένο όριο εκτός από το μέγιστο που επιβάλλει ο διακομιστής"}.
{"The minimum number of milliseconds between sending any two notification digests","Το ελάχιστο πλήθος χιλιοστών του δευτερολέπτου μεταξύ της αποστολής δύο συγχωνεύσεων ειδοποιήσεων"}. {"The minimum number of milliseconds between sending any two notification digests","Το ελάχιστο πλήθος χιλιοστών του δευτερολέπτου μεταξύ της αποστολής δύο συγχωνεύσεων ειδοποιήσεων"}.
{"The name of the node","Το όνομα του κόμβου"}. {"The name of the node","Το όνομα του κόμβου"}.
{"The node is a collection node","Ο κόμβος είναι κόμβος Συλλογής"}. {"The node is a collection node","Ο κόμβος είναι κόμβος Συλλογής"}.
@ -528,6 +511,7 @@
{"The query is only allowed from local users","Το ερώτημα επιτρέπεται μόνο από τοπικούς χρήστες"}. {"The query is only allowed from local users","Το ερώτημα επιτρέπεται μόνο από τοπικούς χρήστες"}.
{"The query must not contain <item/> elements","Το ερώτημα δεν πρέπει να περιέχει στοιχείο <item/>"}. {"The query must not contain <item/> elements","Το ερώτημα δεν πρέπει να περιέχει στοιχείο <item/>"}.
{"The room subject can be modified by participants","Το θέμα μπορεί να τροποποιηθεί από τους συμμετέχοντες"}. {"The room subject can be modified by participants","Το θέμα μπορεί να τροποποιηθεί από τους συμμετέχοντες"}.
{"The semantic type information of data in the node, usually specified by the namespace of the payload (if any)","Οι πληροφορίες σημασιολογικού τύπου των δεδομένων στον κόμβο, που συνήθως καθορίζονται από το χώρο ονομάτων του ωφέλιμου φορτίου (εάν υπάρχει)"}.
{"The sender of the last received message","Ο αποστολέας του τελευταίου εισερχομένου μηνύματος"}. {"The sender of the last received message","Ο αποστολέας του τελευταίου εισερχομένου μηνύματος"}.
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Η stanza ΠΡΕΠΕΙ να περιέχει μόνο ένα στοιχείο <active />, ένα στοιχείο <default /> ή ένα στοιχείο <list />"}. {"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Η stanza ΠΡΕΠΕΙ να περιέχει μόνο ένα στοιχείο <active />, ένα στοιχείο <default /> ή ένα στοιχείο <list />"}.
{"The subscription identifier associated with the subscription request","Το αναγνωριστικό συνδρομής συσχετίστηκε με το αίτημα συνδρομής"}. {"The subscription identifier associated with the subscription request","Το αναγνωριστικό συνδρομής συσχετίστηκε με το αίτημα συνδρομής"}.
@ -544,7 +528,6 @@
{"Thursday","Πέμπτη"}. {"Thursday","Πέμπτη"}.
{"Time delay","Χρόνος καθυστέρησης"}. {"Time delay","Χρόνος καθυστέρησης"}.
{"Timed out waiting for stream resumption","Υπερέβην το όριο αναμονής για επανασύνδεση της Ροής"}. {"Timed out waiting for stream resumption","Υπερέβην το όριο αναμονής για επανασύνδεση της Ροής"}.
{"Time","Χρόνος"}.
{"To register, visit ~s","Για να εγγραφείτε, επισκεφθείτε το ~s"}. {"To register, visit ~s","Για να εγγραφείτε, επισκεφθείτε το ~s"}.
{"To ~ts","Προς ~ts"}. {"To ~ts","Προς ~ts"}.
{"Token TTL","Διακριτικό TTL"}. {"Token TTL","Διακριτικό TTL"}.
@ -557,13 +540,8 @@
{"Too many receiver fields were specified","Πάρα πολλά πεδία δεκτών προσδιορίστηκαν"}. {"Too many receiver fields were specified","Πάρα πολλά πεδία δεκτών προσδιορίστηκαν"}.
{"Too many unacked stanzas","Πάρα πολλές μη αναγνωρισμένες stanzas"}. {"Too many unacked stanzas","Πάρα πολλές μη αναγνωρισμένες stanzas"}.
{"Too many users in this conference","Πάρα πολλοί χρήστες σε αυτή τη διάσκεψη"}. {"Too many users in this conference","Πάρα πολλοί χρήστες σε αυτή τη διάσκεψη"}.
{"Total rooms","Συνολικές Αίθουσες σύνεδριασης"}.
{"To","Προς"}.
{"Traffic rate limit is exceeded","Υπέρφορτωση"}. {"Traffic rate limit is exceeded","Υπέρφορτωση"}.
{"Transactions Aborted:","Αποτυχημένες συναλλαγές:"}. {"~ts's MAM Archive","Αρχείο MAM του ~ts"}.
{"Transactions Committed:","Παραδοθείσες συναλλαγές:"}.
{"Transactions Logged:","Καταγεγραμμένες συναλλαγές:"}.
{"Transactions Restarted:","Επανειλημμένες συναλλαγές:"}.
{"~ts's Offline Messages Queue","~ts's Χωρίς Σύνδεση Μηνύματα"}. {"~ts's Offline Messages Queue","~ts's Χωρίς Σύνδεση Μηνύματα"}.
{"Tuesday","Τρίτη"}. {"Tuesday","Τρίτη"}.
{"Unable to generate a CAPTCHA","Αδύνατη η δημιουργία CAPTCHA"}. {"Unable to generate a CAPTCHA","Αδύνατη η δημιουργία CAPTCHA"}.
@ -571,23 +549,23 @@
{"Unauthorized","Χωρίς Εξουσιοδότηση"}. {"Unauthorized","Χωρίς Εξουσιοδότηση"}.
{"Unexpected action","Απροσδόκητη ενέργεια"}. {"Unexpected action","Απροσδόκητη ενέργεια"}.
{"Unexpected error condition: ~p","Απροσδόκητες συνθήκες σφάλματος: ~p"}. {"Unexpected error condition: ~p","Απροσδόκητες συνθήκες σφάλματος: ~p"}.
{"Uninstall","Απεγκατάσταση"}.
{"Unregister an XMPP account","Καταργήση λογαριασμού XMPP"}. {"Unregister an XMPP account","Καταργήση λογαριασμού XMPP"}.
{"Unregister","Καταργήση εγγραφής"}. {"Unregister","Καταργήση εγγραφής"}.
{"Unselect All","Αποεπιλογή όλων"}.
{"Unsupported <index/> element","Μη υποστηριζόμενο στοιχείο <index />"}. {"Unsupported <index/> element","Μη υποστηριζόμενο στοιχείο <index />"}.
{"Unsupported version","Μη υποστηριζόμενη έκδοση"}. {"Unsupported version","Μη υποστηριζόμενη έκδοση"}.
{"Update message of the day (don't send)","Ενημέρωση μηνύματος ημέρας (χωρίς άμεση αποστολή)"}. {"Update message of the day (don't send)","Ενημέρωση μηνύματος ημέρας (χωρίς άμεση αποστολή)"}.
{"Update message of the day on all hosts (don't send)","Ενημέρωση μηνύματος ημέρας σε όλους τους κεντρικούς υπολογιστές (χωρίς άμεση αποστολή)"}. {"Update message of the day on all hosts (don't send)","Ενημέρωση μηνύματος ημέρας σε όλους τους κεντρικούς υπολογιστές (χωρίς άμεση αποστολή)"}.
{"Update plan","Σχέδιο ενημέρωσης"}. {"Update specs to get modules source, then install desired ones.","Ενημερώστε τις προδιαγραφές για να λάβετε την πηγή των ενοτήτων και, στη συνέχεια, εγκαταστήστε τις επιθυμητές."}.
{"Update ~p","Ενημέρωση ~p"}. {"Update Specs","Προδιαγραφές ενημέρωσης"}.
{"Update script","Προγράμα ενημέρωσης"}. {"Updating the vCard is not supported by the vCard storage backend","Η ενημέρωση της vCard δεν υποστηρίζεται από το backend αποθήκευσης vCard"}.
{"Update","Ενημέρωση"}. {"Upgrade","Αναβάθμιση"}.
{"Uptime:","Χρόνος σε λειτουργία:"}.
{"URL for Archived Discussion Logs","URL αρχειοθετημένων καταγραφών συζητήσεων"}. {"URL for Archived Discussion Logs","URL αρχειοθετημένων καταγραφών συζητήσεων"}.
{"User already exists","Ο χρήστης υπάρχει ήδη"}. {"User already exists","Ο χρήστης υπάρχει ήδη"}.
{"User JID","JID Χρήστη"}. {"User JID","JID Χρήστη"}.
{"User (jid)","Χρήστης (jid)"}. {"User (jid)","Χρήστης (jid)"}.
{"User Management","Διαχείριση χρηστών"}. {"User Management","Διαχείριση χρηστών"}.
{"User not allowed to perform an IQ set on another user's vCard.","Ο χρήστης δεν επιτρέπεται να εκτελέσει ένα σετ IQ στην vCard ενός άλλου χρήστη."}.
{"User removed","Ο Χρήστης αφαιρέθηκε"}. {"User removed","Ο Χρήστης αφαιρέθηκε"}.
{"User session not found","Η περίοδος σύνδεσης χρήστη δεν βρέθηκε"}. {"User session not found","Η περίοδος σύνδεσης χρήστη δεν βρέθηκε"}.
{"User session terminated","Η περίοδος σύνδεσης χρήστη τερματίστηκε"}. {"User session terminated","Η περίοδος σύνδεσης χρήστη τερματίστηκε"}.
@ -597,21 +575,20 @@
{"Users Last Activity","Τελευταία Δραστηριότητα Χρήστη"}. {"Users Last Activity","Τελευταία Δραστηριότητα Χρήστη"}.
{"Users","Χρήστες"}. {"Users","Χρήστες"}.
{"User","Χρήστης"}. {"User","Χρήστης"}.
{"Validate","Επαληθεύστε"}.
{"Value 'get' of 'type' attribute is not allowed","Η τιμή 'get' του 'type' δεν επιτρέπεται"}. {"Value 'get' of 'type' attribute is not allowed","Η τιμή 'get' του 'type' δεν επιτρέπεται"}.
{"Value of '~s' should be boolean","Η τιμή του '~s' πρέπει να είναι boolean"}. {"Value of '~s' should be boolean","Η τιμή του '~s' πρέπει να είναι boolean"}.
{"Value of '~s' should be datetime string","Η τιμή του '~s' θα πρέπει να είναι χρονοσειρά"}. {"Value of '~s' should be datetime string","Η τιμή του '~s' θα πρέπει να είναι χρονοσειρά"}.
{"Value of '~s' should be integer","Η τιμή του '~s' θα πρέπει να είναι ακέραιος"}. {"Value of '~s' should be integer","Η τιμή του '~s' θα πρέπει να είναι ακέραιος"}.
{"Value 'set' of 'type' attribute is not allowed","Δεν επιτρέπεται η παράμετρος 'set' του 'type'"}. {"Value 'set' of 'type' attribute is not allowed","Δεν επιτρέπεται η παράμετρος 'set' του 'type'"}.
{"vCard User Search","vCard Αναζήτηση χρηστών"}. {"vCard User Search","vCard Αναζήτηση χρηστών"}.
{"View Queue","Εμφάνιση λίστας αναμονής"}. {"View joined MIX channels","Προβολή ενταγμένων καναλιών MIX"}.
{"View Roster","Εμφάνιση λίστας Επαφών"}.
{"Virtual Hosts","Eικονικοί κεντρικοί υπολογιστές"}. {"Virtual Hosts","Eικονικοί κεντρικοί υπολογιστές"}.
{"Visitors are not allowed to change their nicknames in this room","Οι επισκέπτες δεν επιτρέπεται να αλλάξουν τα ψευδώνυμα τους σε αυτή την αίθουσα"}. {"Visitors are not allowed to change their nicknames in this room","Οι επισκέπτες δεν επιτρέπεται να αλλάξουν τα ψευδώνυμα τους σε αυτή την αίθουσα"}.
{"Visitors are not allowed to send messages to all occupants","Οι επισκέπτες δεν επιτρέπεται να στείλουν μηνύματα σε όλους τους συμμετέχοντες"}. {"Visitors are not allowed to send messages to all occupants","Οι επισκέπτες δεν επιτρέπεται να στείλουν μηνύματα σε όλους τους συμμετέχοντες"}.
{"Visitor","Επισκέπτης"}. {"Visitor","Επισκέπτης"}.
{"Voice requests are disabled in this conference","Τα αιτήματα φωνής είναι απενεργοποιημένα, σε αυτό το συνέδριο"}. {"Voice requests are disabled in this conference","Τα αιτήματα φωνής είναι απενεργοποιημένα, σε αυτό το συνέδριο"}.
{"Voice request","Αίτημα φωνής"}. {"Voice request","Αίτημα φωνής"}.
{"Web client which allows to join the room anonymously","Web client που επιτρέπει την ανώνυμη είσοδο στην αίθουσα"}.
{"Wednesday","Τετάρτη"}. {"Wednesday","Τετάρτη"}.
{"When a new subscription is processed and whenever a subscriber comes online","Όταν μία νέα συνδρομή βρίσκεται εν επεξεργασία και όποτε ένας συνδρομητής συνδεθεί"}. {"When a new subscription is processed and whenever a subscriber comes online","Όταν μία νέα συνδρομή βρίσκεται εν επεξεργασία και όποτε ένας συνδρομητής συνδεθεί"}.
{"When a new subscription is processed","Όταν μία νέα συνδρομή βρίσκεται εν επεξεργασία"}. {"When a new subscription is processed","Όταν μία νέα συνδρομή βρίσκεται εν επεξεργασία"}.
@ -624,6 +601,7 @@
{"Whether to allow subscriptions","Εάν επιτρέπονται συνδρομές"}. {"Whether to allow subscriptions","Εάν επιτρέπονται συνδρομές"}.
{"Whether to make all subscriptions temporary, based on subscriber presence","Αν επιτρέπεται να γίνουν όλες οι συνδρομές προσωρινές, βασιζόμενοι στην παρουσία του συνδρομητή"}. {"Whether to make all subscriptions temporary, based on subscriber presence","Αν επιτρέπεται να γίνουν όλες οι συνδρομές προσωρινές, βασιζόμενοι στην παρουσία του συνδρομητή"}.
{"Whether to notify owners about new subscribers and unsubscribes","Αν πρέπει να ειδοποιούνται οι ιδιοκτήτες για νέους συνδρομητές και αποχωρήσεις"}. {"Whether to notify owners about new subscribers and unsubscribes","Αν πρέπει να ειδοποιούνται οι ιδιοκτήτες για νέους συνδρομητές και αποχωρήσεις"}.
{"Who can send private messages","Ποιος μπορεί να στείλει ιδιωτικά μηνύματα"}.
{"Who may associate leaf nodes with a collection","Ποιός μπορεί να συσχετίζει leaf nodes με μία συλλογή"}. {"Who may associate leaf nodes with a collection","Ποιός μπορεί να συσχετίζει leaf nodes με μία συλλογή"}.
{"Wrong parameters in the web formulary","Εσφαλμένες παράμετροι στην διαμόρφωση τυπικότητας του δυκτίου"}. {"Wrong parameters in the web formulary","Εσφαλμένες παράμετροι στην διαμόρφωση τυπικότητας του δυκτίου"}.
{"Wrong xmlns","Εσφαλμένο xmlns"}. {"Wrong xmlns","Εσφαλμένο xmlns"}.
@ -635,6 +613,7 @@
{"XMPP Show Value of XA (Extended Away)","Δείξε τιμή XMPP Αξία του Λίαν Απομακρυσμένος"}. {"XMPP Show Value of XA (Extended Away)","Δείξε τιμή XMPP Αξία του Λίαν Απομακρυσμένος"}.
{"XMPP URI of Associated Publish-Subscribe Node","XMPP URI του συσχετισμένου κόμβου Δημοσίευσης-Εγγραφής"}. {"XMPP URI of Associated Publish-Subscribe Node","XMPP URI του συσχετισμένου κόμβου Δημοσίευσης-Εγγραφής"}.
{"You are being removed from the room because of a system shutdown","Απαιτείται η απομάκρυνσή σας από την αίθουσα, λόγω τερματισμού συστήματος"}. {"You are being removed from the room because of a system shutdown","Απαιτείται η απομάκρυνσή σας από την αίθουσα, λόγω τερματισμού συστήματος"}.
{"You are not allowed to send private messages","Δεν επιτρέπεται η αποστολή ιδιωτικών μηνυμάτων"}.
{"You are not joined to the channel","Δεν λαμβάνετε μέρος στο κανάλι"}. {"You are not joined to the channel","Δεν λαμβάνετε μέρος στο κανάλι"}.
{"You can later change your password using an XMPP client.","Μπορείτε αργότερα να αλλάξετε τον κωδικό πρόσβασής σας χρησιμοποιώντας ένα πρόγραμμα-πελάτη XMPP."}. {"You can later change your password using an XMPP client.","Μπορείτε αργότερα να αλλάξετε τον κωδικό πρόσβασής σας χρησιμοποιώντας ένα πρόγραμμα-πελάτη XMPP."}.
{"You have been banned from this room","Σας έχει απαγορευθεί η είσοδος σε αυτή την αίθουσα"}. {"You have been banned from this room","Σας έχει απαγορευθεί η είσοδος σε αυτή την αίθουσα"}.

View file

@ -15,8 +15,6 @@
{"Access model","Atingomodelo"}. {"Access model","Atingomodelo"}.
{"Account doesn't exist","Konto ne ekzistas"}. {"Account doesn't exist","Konto ne ekzistas"}.
{"Action on user","Ago je uzanto"}. {"Action on user","Ago je uzanto"}.
{"Add Jabber ID","Aldonu Jabber ID"}.
{"Add New","Aldonu novan"}.
{"Add User","Aldonu Uzanton"}. {"Add User","Aldonu Uzanton"}.
{"Administration of ","Mastrumado de "}. {"Administration of ","Mastrumado de "}.
{"Administration","Administro"}. {"Administration","Administro"}.
@ -76,22 +74,17 @@
{"Conference room does not exist","Babilejo ne ekzistas"}. {"Conference room does not exist","Babilejo ne ekzistas"}.
{"Configuration of room ~s","Agordo de babilejo ~s"}. {"Configuration of room ~s","Agordo de babilejo ~s"}.
{"Configuration","Agordo"}. {"Configuration","Agordo"}.
{"Connected Resources:","Konektataj risurcoj:"}.
{"Country","Lando"}. {"Country","Lando"}.
{"CPU Time:","CPU-tempo"}.
{"Current Discussion Topic","Aktuala Diskuta Temo"}. {"Current Discussion Topic","Aktuala Diskuta Temo"}.
{"Database Tables at ~p","Datumbaz-tabeloj je ~p"}.
{"Database Tables Configuration at ","Agordo de datumbaz-tabeloj je "}. {"Database Tables Configuration at ","Agordo de datumbaz-tabeloj je "}.
{"Database","Datumbazo"}. {"Database","Datumbazo"}.
{"December","Decembro"}. {"December","Decembro"}.
{"Default users as participants","Kutime farigu uzantojn kiel partpoprenantoj"}. {"Default users as participants","Kutime farigu uzantojn kiel partpoprenantoj"}.
{"Delete message of the day on all hosts","Forigu mesaĝo de la tago je ĉiu gastigo"}. {"Delete message of the day on all hosts","Forigu mesaĝo de la tago je ĉiu gastigo"}.
{"Delete message of the day","Forigu mesaĝo de la tago"}. {"Delete message of the day","Forigu mesaĝo de la tago"}.
{"Delete Selected","Forigu elektata(j)n"}.
{"Delete User","Forigu Uzanton"}. {"Delete User","Forigu Uzanton"}.
{"Deliver event notifications","Liveru event-sciigojn"}. {"Deliver event notifications","Liveru event-sciigojn"}.
{"Deliver payloads with event notifications","Liveru aĵojn de event-sciigoj"}. {"Deliver payloads with event notifications","Liveru aĵojn de event-sciigoj"}.
{"Description:","Priskribo:"}.
{"Disc only copy","Nur disk-kopio"}. {"Disc only copy","Nur disk-kopio"}.
{"Dump Backup to Text File at ","Skribu sekurkopion en plata teksto al "}. {"Dump Backup to Text File at ","Skribu sekurkopion en plata teksto al "}.
{"Dump to Text File","Skribu en plata tekst-dosiero"}. {"Dump to Text File","Skribu en plata tekst-dosiero"}.
@ -105,7 +98,6 @@
{"ejabberd vCard module","ejabberd vCard-modulo"}. {"ejabberd vCard module","ejabberd vCard-modulo"}.
{"ejabberd Web Admin","ejabberd Teksaĵa Administro"}. {"ejabberd Web Admin","ejabberd Teksaĵa Administro"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Eroj"}.
{"Email Address","Retpoŝta Adreso"}. {"Email Address","Retpoŝta Adreso"}.
{"Email","Retpoŝto"}. {"Email","Retpoŝto"}.
{"Enable logging","Ŝaltu protokoladon"}. {"Enable logging","Ŝaltu protokoladon"}.
@ -117,7 +109,6 @@
{"Enter path to jabberd14 spool file","Enmetu vojon al jabberd14-uzantdosiero"}. {"Enter path to jabberd14 spool file","Enmetu vojon al jabberd14-uzantdosiero"}.
{"Enter path to text file","Enmetu vojon al plata teksto"}. {"Enter path to text file","Enmetu vojon al plata teksto"}.
{"Enter the text you see","Enmetu montrita teksto"}. {"Enter the text you see","Enmetu montrita teksto"}.
{"Error","Eraro"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Esceptu Ĵabber-identigilojn je CAPTCHA-defio"}. {"Exclude Jabber IDs from CAPTCHA challenge","Esceptu Ĵabber-identigilojn je CAPTCHA-defio"}.
{"Export all tables as SQL queries to a file:","Eksportu ĉiuj tabeloj kiel SQL-informmendo al dosierujo:"}. {"Export all tables as SQL queries to a file:","Eksportu ĉiuj tabeloj kiel SQL-informmendo al dosierujo:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksportu datumojn de ĉiuj uzantoj en servilo al PIEFXIS dosieroj (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksportu datumojn de ĉiuj uzantoj en servilo al PIEFXIS dosieroj (XEP-0227):"}.
@ -127,23 +118,18 @@
{"February","Februaro"}. {"February","Februaro"}.
{"File larger than ~w bytes","Dosiero pli granda ol ~w bajtoj"}. {"File larger than ~w bytes","Dosiero pli granda ol ~w bajtoj"}.
{"Friday","Vendredo"}. {"Friday","Vendredo"}.
{"From","De"}.
{"Full Name","Plena Nomo"}. {"Full Name","Plena Nomo"}.
{"Get Number of Online Users","Montru nombron de konektataj uzantoj"}. {"Get Number of Online Users","Montru nombron de konektataj uzantoj"}.
{"Get Number of Registered Users","Montru nombron de registritaj uzantoj"}. {"Get Number of Registered Users","Montru nombron de registritaj uzantoj"}.
{"Get User Last Login Time","Montru tempon de lasta ensaluto"}. {"Get User Last Login Time","Montru tempon de lasta ensaluto"}.
{"Get User Password","Montru pasvorton de uzanto"}.
{"Get User Statistics","Montru statistikojn de uzanto"}. {"Get User Statistics","Montru statistikojn de uzanto"}.
{"Given Name","Persona Nomo"}. {"Given Name","Persona Nomo"}.
{"Grant voice to this person?","Koncedu voĉon al ĉi-persono?"}. {"Grant voice to this person?","Koncedu voĉon al ĉi-persono?"}.
{"Group","Grupo"}.
{"Groups","Grupoj"}.
{"has been banned","estas forbarita"}. {"has been banned","estas forbarita"}.
{"has been kicked because of a system shutdown","estas forpelita pro sistem-haltigo"}. {"has been kicked because of a system shutdown","estas forpelita pro sistem-haltigo"}.
{"has been kicked because of an affiliation change","estas forpelita pro aparteneca ŝanĝo"}. {"has been kicked because of an affiliation change","estas forpelita pro aparteneca ŝanĝo"}.
{"has been kicked because the room has been changed to members-only","estas forpelita ĉar la babilejo fariĝis sole por membroj"}. {"has been kicked because the room has been changed to members-only","estas forpelita ĉar la babilejo fariĝis sole por membroj"}.
{"has been kicked","estas forpelita"}. {"has been kicked","estas forpelita"}.
{"Host","Gastigo"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Se vi ne vidas la CAPTCHA-imagon jene, vizitu la teksaĵ-paĝon."}. {"If you don't see the CAPTCHA image here, visit the web page.","Se vi ne vidas la CAPTCHA-imagon jene, vizitu la teksaĵ-paĝon."}.
{"Import Directory","Importu dosierujo"}. {"Import Directory","Importu dosierujo"}.
{"Import File","Importu dosieron"}. {"Import File","Importu dosieron"}.
@ -166,14 +152,11 @@
{"July","Julio"}. {"July","Julio"}.
{"June","Junio"}. {"June","Junio"}.
{"Just created","Ĵus kreita"}. {"Just created","Ĵus kreita"}.
{"Label:","Etikedo:"}.
{"Last Activity","Lasta aktiveco"}. {"Last Activity","Lasta aktiveco"}.
{"Last login","Lasta ensaluto"}. {"Last login","Lasta ensaluto"}.
{"Last month","Lasta monato"}. {"Last month","Lasta monato"}.
{"Last year","Lasta jaro"}. {"Last year","Lasta jaro"}.
{"leaves the room","eliras la babilejo"}. {"leaves the room","eliras la babilejo"}.
{"List of rooms","Listo de babilejoj"}.
{"Low level update script","Bazanivela ĝisdatigo-skripto"}.
{"Make participants list public","Farigu partoprento-liston publika"}. {"Make participants list public","Farigu partoprento-liston publika"}.
{"Make room CAPTCHA protected","Protektu babilejon per CAPTCHA"}. {"Make room CAPTCHA protected","Protektu babilejon per CAPTCHA"}.
{"Make room members-only","Farigu babilejon sole por membroj"}. {"Make room members-only","Farigu babilejon sole por membroj"}.
@ -187,20 +170,16 @@
{"Maximum Number of Occupants","Limigo de nombro de partoprenantoj"}. {"Maximum Number of Occupants","Limigo de nombro de partoprenantoj"}.
{"May","Majo"}. {"May","Majo"}.
{"Membership is required to enter this room","Membreco estas bezonata por eniri ĉi tiun babilejon"}. {"Membership is required to enter this room","Membreco estas bezonata por eniri ĉi tiun babilejon"}.
{"Members:","Membroj:"}.
{"Memory","Memoro"}.
{"Message body","Teksto de mesaĝo"}. {"Message body","Teksto de mesaĝo"}.
{"Middle Name","Meza Nomo"}. {"Middle Name","Meza Nomo"}.
{"Minimum interval between voice requests (in seconds)","Minimuma intervalo inter voĉ-petoj (je sekundoj)"}. {"Minimum interval between voice requests (in seconds)","Minimuma intervalo inter voĉ-petoj (je sekundoj)"}.
{"Moderator privileges required","Moderantaj rajtoj bezonata"}. {"Moderator privileges required","Moderantaj rajtoj bezonata"}.
{"Modified modules","Ĝisdatigitaj moduloj"}.
{"Module failed to handle the query","Modulo malsukcesis trakti la informpeton"}. {"Module failed to handle the query","Modulo malsukcesis trakti la informpeton"}.
{"Monday","Lundo"}. {"Monday","Lundo"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","RFC 6121 ne permesas plurajn <item/>-elementojn"}. {"Multiple <item/> elements are not allowed by RFC6121","RFC 6121 ne permesas plurajn <item/>-elementojn"}.
{"Multi-User Chat","Grupbabilado"}. {"Multi-User Chat","Grupbabilado"}.
{"Name","Nomo"}. {"Name","Nomo"}.
{"Name:","Nomo:"}.
{"Natural Language for Room Discussions","Homa Lingvo por Diskutoj en Babilejo"}. {"Natural Language for Room Discussions","Homa Lingvo por Diskutoj en Babilejo"}.
{"Never","Neniam"}. {"Never","Neniam"}.
{"New Password:","Nova Pasvorto:"}. {"New Password:","Nova Pasvorto:"}.
@ -232,11 +211,8 @@
{"Number of online users","Nombro de konektataj uzantoj"}. {"Number of online users","Nombro de konektataj uzantoj"}.
{"Number of registered users","Nombro de registritaj uzantoj"}. {"Number of registered users","Nombro de registritaj uzantoj"}.
{"October","Oktobro"}. {"October","Oktobro"}.
{"Offline Messages","Liverontaj mesaĝoj"}.
{"Offline Messages:","Liverontaj mesaĝoj"}.
{"OK","Bone"}. {"OK","Bone"}.
{"Old Password:","Malnova Pasvorto:"}. {"Old Password:","Malnova Pasvorto:"}.
{"Online Users:","Konektataj uzantoj:"}.
{"Online Users","Konektataj Uzantoj"}. {"Online Users","Konektataj Uzantoj"}.
{"Online","Konektata"}. {"Online","Konektata"}.
{"Only deliver notifications to available users","Nur liveru sciigojn al konektataj uzantoj"}. {"Only deliver notifications to available users","Nur liveru sciigojn al konektataj uzantoj"}.
@ -253,16 +229,13 @@
{"Organization Name","Organiz-nomo"}. {"Organization Name","Organiz-nomo"}.
{"Organization Unit","Organiz-parto"}. {"Organization Unit","Organiz-parto"}.
{"Outgoing s2s Connections","Elirantaj s-al-s-konektoj"}. {"Outgoing s2s Connections","Elirantaj s-al-s-konektoj"}.
{"Outgoing s2s Connections:","Elirantaj s-al-s-konektoj:"}.
{"Owner privileges required","Mastraj rajtoj bezonata"}. {"Owner privileges required","Mastraj rajtoj bezonata"}.
{"Packet","Pakaĵo"}.
{"Password Verification","Pasvortkontrolo"}. {"Password Verification","Pasvortkontrolo"}.
{"Password Verification:","Pasvortkontrolo:"}. {"Password Verification:","Pasvortkontrolo:"}.
{"Password","Pasvorto"}. {"Password","Pasvorto"}.
{"Password:","Pasvorto:"}. {"Password:","Pasvorto:"}.
{"Path to Dir","Vojo al dosierujo"}. {"Path to Dir","Vojo al dosierujo"}.
{"Path to File","Voje de dosiero"}. {"Path to File","Voje de dosiero"}.
{"Pending","Atendanta"}.
{"Period: ","Periodo: "}. {"Period: ","Periodo: "}.
{"Persist items to storage","Savu erojn en konservado"}. {"Persist items to storage","Savu erojn en konservado"}.
{"Ping","Sondaĵo"}. {"Ping","Sondaĵo"}.
@ -281,17 +254,12 @@
{"RAM copy","RAM-kopio"}. {"RAM copy","RAM-kopio"}.
{"Really delete message of the day?","Ĉu vere forigi mesaĝon de la tago?"}. {"Really delete message of the day?","Ĉu vere forigi mesaĝon de la tago?"}.
{"Recipient is not in the conference room","Ricevanto ne ĉeestas en la babilejo"}. {"Recipient is not in the conference room","Ricevanto ne ĉeestas en la babilejo"}.
{"Registered Users","Registritaj uzantoj"}.
{"Registered Users:","Registritaj uzantoj:"}.
{"Register","Registru"}. {"Register","Registru"}.
{"Remote copy","Fora kopio"}. {"Remote copy","Fora kopio"}.
{"Remove All Offline Messages","Forigu ĉiujn liverontajn mesaĝojn"}.
{"Remove User","Forigu uzanton"}. {"Remove User","Forigu uzanton"}.
{"Remove","Forigu"}.
{"Replaced by new connection","Anstataŭigita je nova konekto"}. {"Replaced by new connection","Anstataŭigita je nova konekto"}.
{"Resources","Risurcoj"}. {"Resources","Risurcoj"}.
{"Restart Service","Restartu Servon"}. {"Restart Service","Restartu Servon"}.
{"Restart","Restartu"}.
{"Restore Backup from File at ","Restaŭrigu de dosiero el "}. {"Restore Backup from File at ","Restaŭrigu de dosiero el "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaŭrigu duuman sekurkopion post sekvonta ejabberd-restarto"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Restaŭrigu duuman sekurkopion post sekvonta ejabberd-restarto"}.
{"Restore binary backup immediately:","Restaŭrigu duuman sekurkopion tuj:"}. {"Restore binary backup immediately:","Restaŭrigu duuman sekurkopion tuj:"}.
@ -304,10 +272,8 @@
{"Room title","Babilejo-nomo"}. {"Room title","Babilejo-nomo"}.
{"Roster groups allowed to subscribe","Kontaktlist-grupoj kiuj rajtas aboni"}. {"Roster groups allowed to subscribe","Kontaktlist-grupoj kiuj rajtas aboni"}.
{"Roster size","Kontaktlist-grando"}. {"Roster size","Kontaktlist-grando"}.
{"RPC Call Error","Eraro de RPC-alvoko"}.
{"Running Nodes","Funkciantaj Nodoj"}. {"Running Nodes","Funkciantaj Nodoj"}.
{"Saturday","Sabato"}. {"Saturday","Sabato"}.
{"Script check","Skript-kontrolo"}.
{"Search Results for ","Serĉ-rezultoj de "}. {"Search Results for ","Serĉ-rezultoj de "}.
{"Search users in ","Serĉu uzantojn en "}. {"Search users in ","Serĉu uzantojn en "}.
{"Send announcement to all online users on all hosts","Sendu anoncon al ĉiu konektata uzanto de ĉiu gastigo"}. {"Send announcement to all online users on all hosts","Sendu anoncon al ĉiu konektata uzanto de ĉiu gastigo"}.
@ -325,19 +291,13 @@
{"Specify the access model","Specifu atingo-modelon"}. {"Specify the access model","Specifu atingo-modelon"}.
{"Specify the event message type","Specifu tipo de event-mesaĝo"}. {"Specify the event message type","Specifu tipo de event-mesaĝo"}.
{"Specify the publisher model","Enmetu publikadan modelon"}. {"Specify the publisher model","Enmetu publikadan modelon"}.
{"Statistics of ~p","Statistikoj de ~p"}.
{"Statistics","Statistikoj"}.
{"Stop","Haltigu"}.
{"Stopped Nodes","Neaktivaj Nodoj"}. {"Stopped Nodes","Neaktivaj Nodoj"}.
{"Storage Type","Konserv-tipo"}.
{"Store binary backup:","Konservu duuman sekurkopion:"}. {"Store binary backup:","Konservu duuman sekurkopion:"}.
{"Store plain text backup:","Skribu sekurkopion en plata tekstdosiero"}. {"Store plain text backup:","Skribu sekurkopion en plata tekstdosiero"}.
{"Subject","Temo"}. {"Subject","Temo"}.
{"Submit","Sendu"}.
{"Submitted","Sendita"}. {"Submitted","Sendita"}.
{"Subscriber Address","Abonanta adreso"}. {"Subscriber Address","Abonanta adreso"}.
{"Subscribers may publish","Abonantoj rajtas publici"}. {"Subscribers may publish","Abonantoj rajtas publici"}.
{"Subscription","Abono"}.
{"Sunday","Dimanĉo"}. {"Sunday","Dimanĉo"}.
{"That nickname is already in use by another occupant","Tiu kaŝnomo jam estas uzata de alia partoprenanto"}. {"That nickname is already in use by another occupant","Tiu kaŝnomo jam estas uzata de alia partoprenanto"}.
{"That nickname is registered by another person","Kaŝnomo estas registrita de alia persono"}. {"That nickname is registered by another person","Kaŝnomo estas registrita de alia persono"}.
@ -354,28 +314,16 @@
{"This room is not anonymous","Ĉi tiu babilejo ne estas anonima"}. {"This room is not anonymous","Ĉi tiu babilejo ne estas anonima"}.
{"Thursday","Ĵaŭdo"}. {"Thursday","Ĵaŭdo"}.
{"Time delay","Prokrasto"}. {"Time delay","Prokrasto"}.
{"Time","Tempo"}.
{"To","Ĝis"}.
{"Too many CAPTCHA requests","Tro multaj CAPTCHA-petoj"}. {"Too many CAPTCHA requests","Tro multaj CAPTCHA-petoj"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Tro da malsukcesaj aŭtentprovoj (~p) de ĉi tiu IP-adreso (~s). La adreso estos malbarata je ~s UTC."}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Tro da malsukcesaj aŭtentprovoj (~p) de ĉi tiu IP-adreso (~s). La adreso estos malbarata je ~s UTC."}.
{"Too many unacked stanzas","Tro da neagnoskitaj stancoj"}. {"Too many unacked stanzas","Tro da neagnoskitaj stancoj"}.
{"Total rooms","Babilejoj"}.
{"Traffic rate limit is exceeded","Trafikrapida limigo superita"}. {"Traffic rate limit is exceeded","Trafikrapida limigo superita"}.
{"Transactions Aborted:","Transakcioj nuligitaj"}.
{"Transactions Committed:","Transakcioj enmetitaj"}.
{"Transactions Logged:","Transakcioj protokolitaj"}.
{"Transactions Restarted:","Transakcioj restartitaj"}.
{"Tuesday","Mardo"}. {"Tuesday","Mardo"}.
{"Unable to generate a CAPTCHA","Ne eblis krei CAPTCHA"}. {"Unable to generate a CAPTCHA","Ne eblis krei CAPTCHA"}.
{"Unauthorized","Nepermesita"}. {"Unauthorized","Nepermesita"}.
{"Unregister","Malregistru"}. {"Unregister","Malregistru"}.
{"Update message of the day (don't send)","Ŝanĝu mesaĝon de la tago (ne sendu)"}. {"Update message of the day (don't send)","Ŝanĝu mesaĝon de la tago (ne sendu)"}.
{"Update message of the day on all hosts (don't send)","Ŝanĝu mesaĝon de la tago je ĉiu gastigo (ne sendu)"}. {"Update message of the day on all hosts (don't send)","Ŝanĝu mesaĝon de la tago je ĉiu gastigo (ne sendu)"}.
{"Update ~p","Ĝisdatigu ~p-n"}.
{"Update plan","Ĝisdatigo-plano"}.
{"Update script","Ĝisdatigo-skripto"}.
{"Update","Ĝisdatigu"}.
{"Uptime:","Daŭro de funkciado"}.
{"URL for Archived Discussion Logs","Retpaĝa adreso de Enarkivigitaj Diskutprotokoloj"}. {"URL for Archived Discussion Logs","Retpaĝa adreso de Enarkivigitaj Diskutprotokoloj"}.
{"User JID","Uzant-JID"}. {"User JID","Uzant-JID"}.
{"User Management","Uzanto-administrado"}. {"User Management","Uzanto-administrado"}.
@ -384,7 +332,6 @@
{"Users Last Activity","Lasta aktiveco de uzanto"}. {"Users Last Activity","Lasta aktiveco de uzanto"}.
{"Users","Uzantoj"}. {"Users","Uzantoj"}.
{"User","Uzanto"}. {"User","Uzanto"}.
{"Validate","Validigu"}.
{"vCard User Search","Serĉado de vizitkartoj"}. {"vCard User Search","Serĉado de vizitkartoj"}.
{"Virtual Hosts","Virtual-gastigoj"}. {"Virtual Hosts","Virtual-gastigoj"}.
{"Visitors are not allowed to change their nicknames in this room","Ne estas permesata al vizitantoj ŝanĝi siajn kaŝnomojn en ĉi tiu ĉambro"}. {"Visitors are not allowed to change their nicknames in this room","Ne estas permesata al vizitantoj ŝanĝi siajn kaŝnomojn en ĉi tiu ĉambro"}.

View file

@ -16,8 +16,6 @@
{"Account doesn't exist","La cuenta no existe"}. {"Account doesn't exist","La cuenta no existe"}.
{"Action on user","Acción en el usuario"}. {"Action on user","Acción en el usuario"}.
{"Add a hat to a user","Añade un sombrero a un usuario"}. {"Add a hat to a user","Añade un sombrero a un usuario"}.
{"Add Jabber ID","Añadir Jabber ID"}.
{"Add New","Añadir nuevo"}.
{"Add User","Añadir usuario"}. {"Add User","Añadir usuario"}.
{"Administration of ","Administración de "}. {"Administration of ","Administración de "}.
{"Administration","Administración"}. {"Administration","Administración"}.
@ -48,8 +46,9 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Cualquiera con una suscripción a la presencia de 'ambos' o 'de' puede suscribirse y recibir elementos"}. {"Anyone with a presence subscription of both or from may subscribe and retrieve items","Cualquiera con una suscripción a la presencia de 'ambos' o 'de' puede suscribirse y recibir elementos"}.
{"Anyone with Voice","Cualquiera con Voz"}. {"Anyone with Voice","Cualquiera con Voz"}.
{"Anyone","Cualquiera"}. {"Anyone","Cualquiera"}.
{"Apparently your account has no administration rights in this server. Please check how to grant admin rights in: https://docs.ejabberd.im/admin/installation/#administration-account","Aparentemente tu cuenta no tiene permisos de administración en este servidor. Por favor consulta cómo concederle privilegios de administrador en: https://docs.ejabberd.im/admin/installation/#administration-account"}. {"API Commands","Comandos API"}.
{"April","Abril"}. {"April","Abril"}.
{"Arguments","Argumentos"}.
{"Attribute 'channel' is required for this request","El atributo 'channel' es necesario para esta petición"}. {"Attribute 'channel' is required for this request","El atributo 'channel' es necesario para esta petición"}.
{"Attribute 'id' is mandatory for MIX messages","El atributo 'id' es necesario para mensajes MIX"}. {"Attribute 'id' is mandatory for MIX messages","El atributo 'id' es necesario para mensajes MIX"}.
{"Attribute 'jid' is not allowed here","El atributo 'jid' no está permitido aqui"}. {"Attribute 'jid' is not allowed here","El atributo 'jid' no está permitido aqui"}.
@ -89,34 +88,25 @@
{"Choose whether to approve this entity's subscription.","Decidir si aprobar la subscripción de esta entidad."}. {"Choose whether to approve this entity's subscription.","Decidir si aprobar la subscripción de esta entidad."}.
{"City","Ciudad"}. {"City","Ciudad"}.
{"Client acknowledged more stanzas than sent by server","El cliente ha reconocido más paquetes de los que el servidor ha enviado"}. {"Client acknowledged more stanzas than sent by server","El cliente ha reconocido más paquetes de los que el servidor ha enviado"}.
{"Clustering","Clustering"}.
{"Commands","Comandos"}. {"Commands","Comandos"}.
{"Conference room does not exist","La sala de conferencias no existe"}. {"Conference room does not exist","La sala de conferencias no existe"}.
{"Configuration of room ~s","Configuración para la sala ~s"}. {"Configuration of room ~s","Configuración para la sala ~s"}.
{"Configuration","Configuración"}. {"Configuration","Configuración"}.
{"Connected Resources:","Recursos conectados:"}.
{"Contact Addresses (normally, room owner or owners)","Direcciones de contacto (normalmente la del dueño o dueños de la sala)"}. {"Contact Addresses (normally, room owner or owners)","Direcciones de contacto (normalmente la del dueño o dueños de la sala)"}.
{"Contrib Modules","Módulos Contrib"}.
{"Country","País"}. {"Country","País"}.
{"CPU Time:","Tiempo consumido de CPU:"}.
{"Current Discussion Topic","Tema de discusión actual"}. {"Current Discussion Topic","Tema de discusión actual"}.
{"Database failure","Error en la base de datos"}. {"Database failure","Error en la base de datos"}.
{"Database Tables at ~p","Tablas de la base de datos en ~p"}.
{"Database Tables Configuration at ","Configuración de tablas de la base de datos en "}. {"Database Tables Configuration at ","Configuración de tablas de la base de datos en "}.
{"Database","Base de datos"}. {"Database","Base de datos"}.
{"December","Diciembre"}. {"December","Diciembre"}.
{"Default users as participants","Los usuarios son participantes por defecto"}. {"Default users as participants","Los usuarios son participantes por defecto"}.
{"Delete content","Borrar contenido"}.
{"Delete message of the day on all hosts","Borrar el mensaje del día en todos los dominios"}. {"Delete message of the day on all hosts","Borrar el mensaje del día en todos los dominios"}.
{"Delete message of the day","Borrar mensaje del dia"}. {"Delete message of the day","Borrar mensaje del dia"}.
{"Delete Selected","Borrar los seleccionados"}.
{"Delete table","Borrar tabla"}.
{"Delete User","Borrar usuario"}. {"Delete User","Borrar usuario"}.
{"Deliver event notifications","Entregar notificaciones de eventos"}. {"Deliver event notifications","Entregar notificaciones de eventos"}.
{"Deliver payloads with event notifications","Enviar contenidos junto con las notificaciones de eventos"}. {"Deliver payloads with event notifications","Enviar contenidos junto con las notificaciones de eventos"}.
{"Description:","Descripción:"}.
{"Disc only copy","Copia en disco solamente"}. {"Disc only copy","Copia en disco solamente"}.
{"'Displayed groups' not added (they do not exist!): ","'Mostrados' que no han sido añadidos (¡no existen!): "}.
{"Displayed:","Mostrados:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","No le digas tu contraseña a nadie, ni siquiera a los administradores del servidor XMPP."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","No le digas tu contraseña a nadie, ni siquiera a los administradores del servidor XMPP."}.
{"Dump Backup to Text File at ","Exporta copia de seguridad a fichero de texto en "}. {"Dump Backup to Text File at ","Exporta copia de seguridad a fichero de texto en "}.
{"Dump to Text File","Exportar a fichero de texto"}. {"Dump to Text File","Exportar a fichero de texto"}.
@ -132,7 +122,6 @@
{"ejabberd vCard module","Módulo vCard para ejabberd"}. {"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","ejabberd Web Admin"}. {"ejabberd Web Admin","ejabberd Web Admin"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Elementos"}.
{"Email Address","Dirección de correo electrónico"}. {"Email Address","Dirección de correo electrónico"}.
{"Email","Correo electrónico"}. {"Email","Correo electrónico"}.
{"Enable hats","Activar sombreros"}. {"Enable hats","Activar sombreros"}.
@ -147,7 +136,6 @@
{"Enter path to text file","Introduce ruta al fichero de texto"}. {"Enter path to text file","Introduce ruta al fichero de texto"}.
{"Enter the text you see","Teclea el texto que ves"}. {"Enter the text you see","Teclea el texto que ves"}.
{"Erlang XMPP Server","Servidor XMPP en Erlang"}. {"Erlang XMPP Server","Servidor XMPP en Erlang"}.
{"Error","Error"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Excluir Jabber IDs de las pruebas de CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Excluir Jabber IDs de las pruebas de CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Exportar todas las tablas a un fichero SQL:"}. {"Export all tables as SQL queries to a file:","Exportar todas las tablas a un fichero SQL:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar datos de todos los usuarios del servidor a ficheros PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar datos de todos los usuarios del servidor a ficheros PIEFXIS (XEP-0227):"}.
@ -166,7 +154,6 @@
{"Fill in the form to search for any matching XMPP User","Rellena campos para buscar usuarios XMPP que concuerden"}. {"Fill in the form to search for any matching XMPP User","Rellena campos para buscar usuarios XMPP que concuerden"}.
{"Friday","Viernes"}. {"Friday","Viernes"}.
{"From ~ts","De ~ts"}. {"From ~ts","De ~ts"}.
{"From","De"}.
{"Full List of Room Admins","Lista completa de administradores de la sala"}. {"Full List of Room Admins","Lista completa de administradores de la sala"}.
{"Full List of Room Owners","Lista completa de dueños de la sala"}. {"Full List of Room Owners","Lista completa de dueños de la sala"}.
{"Full Name","Nombre completo"}. {"Full Name","Nombre completo"}.
@ -176,23 +163,19 @@
{"Get Number of Registered Users","Ver número de usuarios registrados"}. {"Get Number of Registered Users","Ver número de usuarios registrados"}.
{"Get Pending","Obtener pendientes"}. {"Get Pending","Obtener pendientes"}.
{"Get User Last Login Time","Ver fecha de la última conexión de usuario"}. {"Get User Last Login Time","Ver fecha de la última conexión de usuario"}.
{"Get User Password","Ver contraseña de usuario"}.
{"Get User Statistics","Ver estadísticas de usuario"}. {"Get User Statistics","Ver estadísticas de usuario"}.
{"Given Name","Nombre"}. {"Given Name","Nombre de pila"}.
{"Grant voice to this person?","¿Conceder voz a esta persona?"}. {"Grant voice to this person?","¿Conceder voz a esta persona?"}.
{"Group","Grupo"}.
{"Groups that will be displayed to the members","Grupos que se mostrarán a los miembros"}.
{"Groups","Grupos"}.
{"has been banned","ha sido bloqueado"}. {"has been banned","ha sido bloqueado"}.
{"has been kicked because of a system shutdown","ha sido expulsado porque el sistema se va a detener"}. {"has been kicked because of a system shutdown","ha sido expulsado porque el sistema se va a detener"}.
{"has been kicked because of an affiliation change","ha sido expulsado por un cambio de su afiliación"}. {"has been kicked because of an affiliation change","ha sido expulsado por un cambio de su afiliación"}.
{"has been kicked because the room has been changed to members-only","ha sido expulsado porque la sala es ahora solo para miembros"}. {"has been kicked because the room has been changed to members-only","ha sido expulsado porque la sala es ahora solo para miembros"}.
{"has been kicked","ha sido expulsado"}. {"has been kicked","ha sido expulsado"}.
{"Hash of the vCard-temp avatar of this room","Hash del avatar vCard-temp de esta sala"}.
{"Hat title","Título del sombrero"}. {"Hat title","Título del sombrero"}.
{"Hat URI","Dirección del sombrero"}. {"Hat URI","Dirección del sombrero"}.
{"Hats limit exceeded","Se ha excedido el límite de sombreros"}. {"Hats limit exceeded","Se ha excedido el límite de sombreros"}.
{"Host unknown","Dominio desconocido"}. {"Host unknown","Dominio desconocido"}.
{"Host","Dominio"}.
{"HTTP File Upload","Subir fichero por HTTP"}. {"HTTP File Upload","Subir fichero por HTTP"}.
{"Idle connection","Conexión sin uso"}. {"Idle connection","Conexión sin uso"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Si no ves la imagen CAPTCHA aquí, visita la página web."}. {"If you don't see the CAPTCHA image here, visit the web page.","Si no ves la imagen CAPTCHA aquí, visita la página web."}.
@ -206,7 +189,6 @@
{"Import Users From jabberd14 Spool Files","Importar usuarios de ficheros spool de jabberd-1.4"}. {"Import Users From jabberd14 Spool Files","Importar usuarios de ficheros spool de jabberd-1.4"}.
{"Improper domain part of 'from' attribute","Parte de dominio impropia en el atributo 'from'"}. {"Improper domain part of 'from' attribute","Parte de dominio impropia en el atributo 'from'"}.
{"Improper message type","Tipo de mensaje incorrecto"}. {"Improper message type","Tipo de mensaje incorrecto"}.
{"Incoming s2s Connections:","Conexiones S2S entrantes:"}.
{"Incorrect CAPTCHA submit","El CAPTCHA proporcionado es incorrecto"}. {"Incorrect CAPTCHA submit","El CAPTCHA proporcionado es incorrecto"}.
{"Incorrect data form","Formulario de datos incorrecto"}. {"Incorrect data form","Formulario de datos incorrecto"}.
{"Incorrect password","Contraseña incorrecta"}. {"Incorrect password","Contraseña incorrecta"}.
@ -236,7 +218,6 @@
{"July","Julio"}. {"July","Julio"}.
{"June","Junio"}. {"June","Junio"}.
{"Just created","Recién creada"}. {"Just created","Recién creada"}.
{"Label:","Etiqueta:"}.
{"Last Activity","Última actividad"}. {"Last Activity","Última actividad"}.
{"Last login","Última conexión"}. {"Last login","Última conexión"}.
{"Last message","Último mensaje"}. {"Last message","Último mensaje"}.
@ -244,11 +225,10 @@
{"Last year","Último año"}. {"Last year","Último año"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Los bits menos significativos del hash SHA-256 del texto deberían ser iguales a la etiqueta hexadecimal"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Los bits menos significativos del hash SHA-256 del texto deberían ser iguales a la etiqueta hexadecimal"}.
{"leaves the room","sale de la sala"}. {"leaves the room","sale de la sala"}.
{"List of rooms","Lista de salas"}.
{"List of users with hats","Lista de usuarios con sombreros"}. {"List of users with hats","Lista de usuarios con sombreros"}.
{"List users with hats","Listar usuarios con sombreros"}. {"List users with hats","Listar usuarios con sombreros"}.
{"Logged Out","Desconectad@"}.
{"Logging","Histórico de mensajes"}. {"Logging","Histórico de mensajes"}.
{"Low level update script","Script de actualización a bajo nivel"}.
{"Make participants list public","La lista de participantes es pública"}. {"Make participants list public","La lista de participantes es pública"}.
{"Make room CAPTCHA protected","Proteger la sala con CAPTCHA"}. {"Make room CAPTCHA protected","Proteger la sala con CAPTCHA"}.
{"Make room members-only","Sala sólo para miembros"}. {"Make room members-only","Sala sólo para miembros"}.
@ -266,11 +246,8 @@
{"Maximum number of items to persist","Máximo número de elementos que persisten"}. {"Maximum number of items to persist","Máximo número de elementos que persisten"}.
{"Maximum Number of Occupants","Número máximo de ocupantes"}. {"Maximum Number of Occupants","Número máximo de ocupantes"}.
{"May","Mayo"}. {"May","Mayo"}.
{"Members not added (inexistent vhost!): ","Miembros no añadidos (el vhost no existe): "}.
{"Membership is required to enter this room","Necesitas ser miembro de esta sala para poder entrar"}. {"Membership is required to enter this room","Necesitas ser miembro de esta sala para poder entrar"}.
{"Members:","Miembros:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memoriza tu contraseña, o apúntala en un papel en un lugar seguro. En XMPP no hay un método automatizado para recuperar la contraseña si la olvidas."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memoriza tu contraseña, o apúntala en un papel en un lugar seguro. En XMPP no hay un método automatizado para recuperar la contraseña si la olvidas."}.
{"Memory","Memoria"}.
{"Mere Availability in XMPP (No Show Value)","Disponible en XMPP (sin valor de Mostrado)"}. {"Mere Availability in XMPP (No Show Value)","Disponible en XMPP (sin valor de Mostrado)"}.
{"Message body","Cuerpo del mensaje"}. {"Message body","Cuerpo del mensaje"}.
{"Message not found in forwarded payload","Mensaje no encontrado en el contenido reenviado"}. {"Message not found in forwarded payload","Mensaje no encontrado en el contenido reenviado"}.
@ -282,15 +259,12 @@
{"Moderator privileges required","Se necesita privilegios de moderador"}. {"Moderator privileges required","Se necesita privilegios de moderador"}.
{"Moderator","Moderador"}. {"Moderator","Moderador"}.
{"Moderators Only","Solo moderadores"}. {"Moderators Only","Solo moderadores"}.
{"Modified modules","Módulos modificados"}.
{"Module failed to handle the query","El módulo falló al gestionar la petición"}. {"Module failed to handle the query","El módulo falló al gestionar la petición"}.
{"Monday","Lunes"}. {"Monday","Lunes"}.
{"Multicast","Multidifusión"}. {"Multicast","Multidifusión"}.
{"Multiple <item/> elements are not allowed by RFC6121","No se permiten múltiples elementos <item/> en RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","No se permiten múltiples elementos <item/> en RFC6121"}.
{"Multi-User Chat","Salas de Charla"}. {"Multi-User Chat","Salas de Charla"}.
{"Name in the rosters where this group will be displayed","Nombre del grupo con que aparecerá en las listas de contactos"}.
{"Name","Nombre"}. {"Name","Nombre"}.
{"Name:","Nombre:"}.
{"Natural Language for Room Discussions","Idioma natural en las charlas de la sala"}. {"Natural Language for Room Discussions","Idioma natural en las charlas de la sala"}.
{"Natural-Language Room Name","Nombre de la sala en el idioma natural de la sala"}. {"Natural-Language Room Name","Nombre de la sala en el idioma natural de la sala"}.
{"Neither 'jid' nor 'nick' attribute found","No se encontraron los atributos 'jid' ni 'nick'"}. {"Neither 'jid' nor 'nick' attribute found","No se encontraron los atributos 'jid' ni 'nick'"}.
@ -355,14 +329,10 @@
{"Occupants are allowed to query others","Los ocupantes pueden enviar peticiones a otros"}. {"Occupants are allowed to query others","Los ocupantes pueden enviar peticiones a otros"}.
{"Occupants May Change the Subject","Los ocupantes pueden cambiar el Asunto"}. {"Occupants May Change the Subject","Los ocupantes pueden cambiar el Asunto"}.
{"October","Octubre"}. {"October","Octubre"}.
{"Offline Messages","Mensajes diferidos"}.
{"Offline Messages:","Mensajes diferidos:"}.
{"OK","Aceptar"}. {"OK","Aceptar"}.
{"Old Password:","Contraseña antigua:"}. {"Old Password:","Contraseña antigua:"}.
{"Online Users","Usuarios conectados"}. {"Online Users","Usuarios conectados"}.
{"Online Users:","Usuarios conectados:"}.
{"Online","Conectado"}. {"Online","Conectado"}.
{"Only admins can see this","Solo los administradores pueden ver esto"}.
{"Only collection node owners may associate leaf nodes with the collection","Solo los dueños e la colección de nodos pueden asociar nodos hoja a la colección"}. {"Only collection node owners may associate leaf nodes with the collection","Solo los dueños e la colección de nodos pueden asociar nodos hoja a la colección"}.
{"Only deliver notifications to available users","Solo enviar notificaciones a los usuarios disponibles"}. {"Only deliver notifications to available users","Solo enviar notificaciones a los usuarios disponibles"}.
{"Only <enable/> or <disable/> tags are allowed","Solo se permiten las etiquetas <enable/> o <disable/>"}. {"Only <enable/> or <disable/> tags are allowed","Solo se permiten las etiquetas <enable/> o <disable/>"}.
@ -382,10 +352,8 @@
{"Organization Unit","Unidad de la organización"}. {"Organization Unit","Unidad de la organización"}.
{"Other Modules Available:","Otros módulos disponibles:"}. {"Other Modules Available:","Otros módulos disponibles:"}.
{"Outgoing s2s Connections","Conexiones S2S salientes"}. {"Outgoing s2s Connections","Conexiones S2S salientes"}.
{"Outgoing s2s Connections:","Conexiones S2S salientes:"}.
{"Owner privileges required","Se requieren privilegios de propietario de la sala"}. {"Owner privileges required","Se requieren privilegios de propietario de la sala"}.
{"Packet relay is denied by service policy","Se ha denegado el reenvío del paquete por política del servicio"}. {"Packet relay is denied by service policy","Se ha denegado el reenvío del paquete por política del servicio"}.
{"Packet","Paquete"}.
{"Participant ID","ID del Participante"}. {"Participant ID","ID del Participante"}.
{"Participant","Participante"}. {"Participant","Participante"}.
{"Password Verification","Verificación de la contraseña"}. {"Password Verification","Verificación de la contraseña"}.
@ -395,7 +363,6 @@
{"Path to Dir","Ruta al directorio"}. {"Path to Dir","Ruta al directorio"}.
{"Path to File","Ruta al fichero"}. {"Path to File","Ruta al fichero"}.
{"Payload semantic type information","Información sobre el tipo semántico de la carga útil"}. {"Payload semantic type information","Información sobre el tipo semántico de la carga útil"}.
{"Pending","Pendiente"}.
{"Period: ","Periodo: "}. {"Period: ","Periodo: "}.
{"Persist items to storage","Persistir elementos al almacenar"}. {"Persist items to storage","Persistir elementos al almacenar"}.
{"Persistent","Permanente"}. {"Persistent","Permanente"}.
@ -429,26 +396,22 @@
{"Receive notification of new nodes only","Recibir notificaciones solo de nuevos nodos"}. {"Receive notification of new nodes only","Recibir notificaciones solo de nuevos nodos"}.
{"Recipient is not in the conference room","El receptor no está en la sala de conferencia"}. {"Recipient is not in the conference room","El receptor no está en la sala de conferencia"}.
{"Register an XMPP account","Registrar una cuenta XMPP"}. {"Register an XMPP account","Registrar una cuenta XMPP"}.
{"Registered Users","Usuarios registrados"}.
{"Registered Users:","Usuarios registrados:"}.
{"Register","Registrar"}. {"Register","Registrar"}.
{"Remote copy","Copia remota"}. {"Remote copy","Copia remota"}.
{"Remove a hat from a user","Quitarle un sombrero a un usuario"}. {"Remove a hat from a user","Quitarle un sombrero a un usuario"}.
{"Remove All Offline Messages","Borrar todos los mensajes diferidos"}.
{"Remove User","Eliminar usuario"}. {"Remove User","Eliminar usuario"}.
{"Remove","Borrar"}.
{"Replaced by new connection","Reemplazado por una nueva conexión"}. {"Replaced by new connection","Reemplazado por una nueva conexión"}.
{"Request has timed out","La petición ha caducado"}. {"Request has timed out","La petición ha caducado"}.
{"Request is ignored","La petición ha sido ignorada"}. {"Request is ignored","La petición ha sido ignorada"}.
{"Requested role","Rol solicitado"}. {"Requested role","Rol solicitado"}.
{"Resources","Recursos"}. {"Resources","Recursos"}.
{"Restart Service","Reiniciar el servicio"}. {"Restart Service","Reiniciar el servicio"}.
{"Restart","Reiniciar"}.
{"Restore Backup from File at ","Restaura copia de seguridad desde el fichero en "}. {"Restore Backup from File at ","Restaura copia de seguridad desde el fichero en "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar copia de seguridad binaria en el siguiente reinicio de ejabberd (requiere menos memoria que si instantánea):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar copia de seguridad binaria en el siguiente reinicio de ejabberd (requiere menos memoria que si instantánea):"}.
{"Restore binary backup immediately:","Restaurar inmediatamente copia de seguridad binaria:"}. {"Restore binary backup immediately:","Restaurar inmediatamente copia de seguridad binaria:"}.
{"Restore plain text backup immediately:","Restaurar copias de seguridad de texto plano inmediatamente:"}. {"Restore plain text backup immediately:","Restaurar copias de seguridad de texto plano inmediatamente:"}.
{"Restore","Restaurar"}. {"Restore","Restaurar"}.
{"Result","Resultado"}.
{"Roles and Affiliations that May Retrieve Member List","Roles y Afiliaciones que pueden obtener la lista de miembros"}. {"Roles and Affiliations that May Retrieve Member List","Roles y Afiliaciones que pueden obtener la lista de miembros"}.
{"Roles for which Presence is Broadcasted","Roles para los que sí se difunde su Presencia"}. {"Roles for which Presence is Broadcasted","Roles para los que sí se difunde su Presencia"}.
{"Roles that May Send Private Messages","Roles que pueden enviar mensajes privados"}. {"Roles that May Send Private Messages","Roles que pueden enviar mensajes privados"}.
@ -459,20 +422,15 @@
{"Room terminates","Cerrando la sala"}. {"Room terminates","Cerrando la sala"}.
{"Room title","Título de la sala"}. {"Room title","Título de la sala"}.
{"Roster groups allowed to subscribe","Grupos de contactos que pueden suscribirse"}. {"Roster groups allowed to subscribe","Grupos de contactos que pueden suscribirse"}.
{"Roster of ~ts","Lista de contactos de ~ts"}.
{"Roster size","Tamaño de la lista de contactos"}. {"Roster size","Tamaño de la lista de contactos"}.
{"Roster:","Lista de contactos:"}.
{"RPC Call Error","Error en la llamada RPC"}.
{"Running Nodes","Nodos funcionando"}. {"Running Nodes","Nodos funcionando"}.
{"~s invites you to the room ~s","~s te invita a la sala ~s"}. {"~s invites you to the room ~s","~s te invita a la sala ~s"}.
{"Saturday","Sábado"}. {"Saturday","Sábado"}.
{"Script check","Comprobación de script"}.
{"Search from the date","Buscar desde la fecha"}. {"Search from the date","Buscar desde la fecha"}.
{"Search Results for ","Buscar resultados por "}. {"Search Results for ","Buscar resultados por "}.
{"Search the text","Buscar el texto"}. {"Search the text","Buscar el texto"}.
{"Search until the date","Buscar hasta la fecha"}. {"Search until the date","Buscar hasta la fecha"}.
{"Search users in ","Buscar usuarios en "}. {"Search users in ","Buscar usuarios en "}.
{"Select All","Seleccionar todo"}.
{"Send announcement to all online users on all hosts","Enviar anuncio a todos los usuarios conectados en todos los dominios"}. {"Send announcement to all online users on all hosts","Enviar anuncio a todos los usuarios conectados en todos los dominios"}.
{"Send announcement to all online users","Enviar anuncio a todos los usuarios conectados"}. {"Send announcement to all online users","Enviar anuncio a todos los usuarios conectados"}.
{"Send announcement to all users on all hosts","Enviar anuncio a todos los usuarios en todos los dominios"}. {"Send announcement to all users on all hosts","Enviar anuncio a todos los usuarios en todos los dominios"}.
@ -485,6 +443,7 @@
{"Set message of the day on all hosts and send to online users","Poner mensaje del día en todos los dominios y enviar a los usuarios conectados"}. {"Set message of the day on all hosts and send to online users","Poner mensaje del día en todos los dominios y enviar a los usuarios conectados"}.
{"Shared Roster Groups","Grupos Compartidos"}. {"Shared Roster Groups","Grupos Compartidos"}.
{"Show Integral Table","Mostrar Tabla Integral"}. {"Show Integral Table","Mostrar Tabla Integral"}.
{"Show Occupants Join/Leave","Mostrar personas activas Entrar/Salir"}.
{"Show Ordinary Table","Mostrar Tabla Ordinaria"}. {"Show Ordinary Table","Mostrar Tabla Ordinaria"}.
{"Shut Down Service","Detener el servicio"}. {"Shut Down Service","Detener el servicio"}.
{"SOCKS5 Bytestreams","SOCKS5 Bytestreams"}. {"SOCKS5 Bytestreams","SOCKS5 Bytestreams"}.
@ -496,23 +455,17 @@
{"Stanza id is not valid","El identificador de la estrofa no es válido"}. {"Stanza id is not valid","El identificador de la estrofa no es válido"}.
{"Stanza ID","ID del paquete"}. {"Stanza ID","ID del paquete"}.
{"Statically specify a replyto of the node owner(s)","Especificar de forma estática un 'replyto' de dueño(s) del nodo"}. {"Statically specify a replyto of the node owner(s)","Especificar de forma estática un 'replyto' de dueño(s) del nodo"}.
{"Statistics of ~p","Estadísticas de ~p"}.
{"Statistics","Estadísticas"}.
{"Stop","Detener"}.
{"Stopped Nodes","Nodos detenidos"}. {"Stopped Nodes","Nodos detenidos"}.
{"Storage Type","Tipo de almacenamiento"}.
{"Store binary backup:","Guardar copia de seguridad binaria:"}. {"Store binary backup:","Guardar copia de seguridad binaria:"}.
{"Store plain text backup:","Guardar copia de seguridad en texto plano:"}. {"Store plain text backup:","Guardar copia de seguridad en texto plano:"}.
{"Stream management is already enabled","Ya está activada la administración de la conexión"}. {"Stream management is already enabled","Ya está activada la administración de la conexión"}.
{"Stream management is not enabled","No está activada la administración de la conexión"}. {"Stream management is not enabled","No está activada la administración de la conexión"}.
{"Subject","Asunto"}. {"Subject","Asunto"}.
{"Submit","Enviar"}.
{"Submitted","Enviado"}. {"Submitted","Enviado"}.
{"Subscriber Address","Dirección del subscriptor"}. {"Subscriber Address","Dirección del subscriptor"}.
{"Subscribers may publish","Los suscriptores pueden publicar"}. {"Subscribers may publish","Los suscriptores pueden publicar"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Las peticiones de suscripción deben ser aprobadas y solo los suscriptores pueden obtener elementos"}. {"Subscription requests must be approved and only subscribers may retrieve items","Las peticiones de suscripción deben ser aprobadas y solo los suscriptores pueden obtener elementos"}.
{"Subscriptions are not allowed","Las subscripciones no están permitidas"}. {"Subscriptions are not allowed","Las subscripciones no están permitidas"}.
{"Subscription","Subscripción"}.
{"Sunday","Domingo"}. {"Sunday","Domingo"}.
{"Text associated with a picture","Texto asociado con una imagen"}. {"Text associated with a picture","Texto asociado con una imagen"}.
{"Text associated with a sound","Texto asociado con un sonido"}. {"Text associated with a sound","Texto asociado con un sonido"}.
@ -575,7 +528,6 @@
{"Thursday","Jueves"}. {"Thursday","Jueves"}.
{"Time delay","Retraso temporal"}. {"Time delay","Retraso temporal"}.
{"Timed out waiting for stream resumption","Ha pasado demasiado tiempo esperando que la conexión se restablezca"}. {"Timed out waiting for stream resumption","Ha pasado demasiado tiempo esperando que la conexión se restablezca"}.
{"Time","Fecha"}.
{"To register, visit ~s","Para registrarte, visita ~s"}. {"To register, visit ~s","Para registrarte, visita ~s"}.
{"To ~ts","A ~ts"}. {"To ~ts","A ~ts"}.
{"Token TTL","Token TTL"}. {"Token TTL","Token TTL"}.
@ -588,13 +540,8 @@
{"Too many receiver fields were specified","Se han especificado demasiados campos de destinatario"}. {"Too many receiver fields were specified","Se han especificado demasiados campos de destinatario"}.
{"Too many unacked stanzas","Demasiados mensajes sin haber reconocido recibirlos"}. {"Too many unacked stanzas","Demasiados mensajes sin haber reconocido recibirlos"}.
{"Too many users in this conference","Demasiados usuarios en esta sala"}. {"Too many users in this conference","Demasiados usuarios en esta sala"}.
{"To","Para"}.
{"Total rooms","Salas totales"}.
{"Traffic rate limit is exceeded","Se ha excedido el límite de tráfico"}. {"Traffic rate limit is exceeded","Se ha excedido el límite de tráfico"}.
{"Transactions Aborted:","Transacciones abortadas:"}. {"~ts's MAM Archive","Archivo MAM de ~ts"}.
{"Transactions Committed:","Transacciones finalizadas:"}.
{"Transactions Logged:","Transacciones registradas:"}.
{"Transactions Restarted:","Transacciones reiniciadas:"}.
{"~ts's Offline Messages Queue","Cola de mensajes diferidos de ~ts"}. {"~ts's Offline Messages Queue","Cola de mensajes diferidos de ~ts"}.
{"Tuesday","Martes"}. {"Tuesday","Martes"}.
{"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}. {"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}.
@ -605,24 +552,20 @@
{"Uninstall","Desinstalar"}. {"Uninstall","Desinstalar"}.
{"Unregister an XMPP account","Borrar una cuenta XMPP"}. {"Unregister an XMPP account","Borrar una cuenta XMPP"}.
{"Unregister","Borrar"}. {"Unregister","Borrar"}.
{"Unselect All","Deseleccionar todo"}.
{"Unsupported <index/> element","Elemento <index/> no soportado"}. {"Unsupported <index/> element","Elemento <index/> no soportado"}.
{"Unsupported version","Versión no soportada"}. {"Unsupported version","Versión no soportada"}.
{"Update message of the day (don't send)","Actualizar mensaje del dia, pero no enviarlo"}. {"Update message of the day (don't send)","Actualizar mensaje del dia, pero no enviarlo"}.
{"Update message of the day on all hosts (don't send)","Actualizar el mensaje del día en todos los dominos (pero no enviarlo)"}. {"Update message of the day on all hosts (don't send)","Actualizar el mensaje del día en todos los dominos (pero no enviarlo)"}.
{"Update ~p","Actualizar ~p"}.
{"Update plan","Plan de actualización"}.
{"Update script","Script de actualización"}.
{"Update specs to get modules source, then install desired ones.","Actualizar Especificaciones para conseguir el código fuente de los módulos, luego instala los que quieras."}. {"Update specs to get modules source, then install desired ones.","Actualizar Especificaciones para conseguir el código fuente de los módulos, luego instala los que quieras."}.
{"Update Specs","Actualizar Especificaciones"}. {"Update Specs","Actualizar Especificaciones"}.
{"Update","Actualizar"}. {"Updating the vCard is not supported by the vCard storage backend","La actualización de la vCard no es compatible con el vCard almacenamiento backend"}.
{"Upgrade","Actualizar"}. {"Upgrade","Actualizar"}.
{"Uptime:","Tiempo desde el inicio:"}.
{"URL for Archived Discussion Logs","URL del registro de discusiones archivadas"}. {"URL for Archived Discussion Logs","URL del registro de discusiones archivadas"}.
{"User already exists","El usuario ya existe"}. {"User already exists","El usuario ya existe"}.
{"User JID","Jabber ID del usuario"}. {"User JID","Jabber ID del usuario"}.
{"User (jid)","Usuario (jid)"}. {"User (jid)","Usuario (jid)"}.
{"User Management","Administración de usuarios"}. {"User Management","Administración de usuarios"}.
{"User not allowed to perform an IQ set on another user's vCard.","No se permite al usuario realizar un IQ establecido en la vCard de otro usuario."}.
{"User removed","Usuario eliminado"}. {"User removed","Usuario eliminado"}.
{"User session not found","Sesión de usuario no encontrada"}. {"User session not found","Sesión de usuario no encontrada"}.
{"User session terminated","Sesión de usuario terminada"}. {"User session terminated","Sesión de usuario terminada"}.
@ -632,7 +575,6 @@
{"Users Last Activity","Última actividad de los usuarios"}. {"Users Last Activity","Última actividad de los usuarios"}.
{"Users","Usuarios"}. {"Users","Usuarios"}.
{"User","Usuario"}. {"User","Usuario"}.
{"Validate","Validar"}.
{"Value 'get' of 'type' attribute is not allowed","El valor 'get' del atributo 'type' no está permitido"}. {"Value 'get' of 'type' attribute is not allowed","El valor 'get' del atributo 'type' no está permitido"}.
{"Value of '~s' should be boolean","El valor de '~s' debería ser booleano"}. {"Value of '~s' should be boolean","El valor de '~s' debería ser booleano"}.
{"Value of '~s' should be datetime string","El valor de '~s' debería ser una fecha"}. {"Value of '~s' should be datetime string","El valor de '~s' debería ser una fecha"}.
@ -640,14 +582,13 @@
{"Value 'set' of 'type' attribute is not allowed","El valor 'set' del atributo 'type' no está permitido"}. {"Value 'set' of 'type' attribute is not allowed","El valor 'set' del atributo 'type' no está permitido"}.
{"vCard User Search","Búsqueda de vCard de usuarios"}. {"vCard User Search","Búsqueda de vCard de usuarios"}.
{"View joined MIX channels","Ver los canales MIX unidos"}. {"View joined MIX channels","Ver los canales MIX unidos"}.
{"View Queue","Ver Cola"}.
{"View Roster","Ver Lista de contactos"}.
{"Virtual Hosts","Dominios Virtuales"}. {"Virtual Hosts","Dominios Virtuales"}.
{"Visitors are not allowed to change their nicknames in this room","Los visitantes no tienen permitido cambiar sus apodos en esta sala"}. {"Visitors are not allowed to change their nicknames in this room","Los visitantes no tienen permitido cambiar sus apodos en esta sala"}.
{"Visitors are not allowed to send messages to all occupants","Los visitantes no pueden enviar mensajes a todos los ocupantes"}. {"Visitors are not allowed to send messages to all occupants","Los visitantes no pueden enviar mensajes a todos los ocupantes"}.
{"Visitor","Visitante"}. {"Visitor","Visitante"}.
{"Voice request","Petición de voz"}. {"Voice request","Petición de voz"}.
{"Voice requests are disabled in this conference","Las peticiones de voz están desactivadas en esta sala"}. {"Voice requests are disabled in this conference","Las peticiones de voz están desactivadas en esta sala"}.
{"Web client which allows to join the room anonymously","Cliente web que permite entrar en la sala anonimamente"}.
{"Wednesday","Miércoles"}. {"Wednesday","Miércoles"}.
{"When a new subscription is processed and whenever a subscriber comes online","Cuando se procesa una nueva suscripción y cuando un suscriptor se conecta"}. {"When a new subscription is processed and whenever a subscriber comes online","Cuando se procesa una nueva suscripción y cuando un suscriptor se conecta"}.
{"When a new subscription is processed","Cuando se procesa una nueva suscripción"}. {"When a new subscription is processed","Cuando se procesa una nueva suscripción"}.

View file

@ -15,8 +15,6 @@
{"Access model","Modèle daccès"}. {"Access model","Modèle daccès"}.
{"Account doesn't exist","Le compte nexiste pas"}. {"Account doesn't exist","Le compte nexiste pas"}.
{"Action on user","Action sur l'utilisateur"}. {"Action on user","Action sur l'utilisateur"}.
{"Add Jabber ID","Ajouter un Jabber ID"}.
{"Add New","Ajouter"}.
{"Add User","Ajouter un utilisateur"}. {"Add User","Ajouter un utilisateur"}.
{"Administration of ","Administration de "}. {"Administration of ","Administration de "}.
{"Administration","Administration"}. {"Administration","Administration"}.
@ -90,29 +88,20 @@
{"Conference room does not exist","Le salon de discussion n'existe pas"}. {"Conference room does not exist","Le salon de discussion n'existe pas"}.
{"Configuration of room ~s","Configuration pour le salon ~s"}. {"Configuration of room ~s","Configuration pour le salon ~s"}.
{"Configuration","Configuration"}. {"Configuration","Configuration"}.
{"Connected Resources:","Ressources connectées :"}.
{"Contact Addresses (normally, room owner or owners)","Adresses de contact (normalement les administrateurs du salon)"}. {"Contact Addresses (normally, room owner or owners)","Adresses de contact (normalement les administrateurs du salon)"}.
{"Country","Pays"}. {"Country","Pays"}.
{"CPU Time:","Temps CPU :"}.
{"Current Discussion Topic","Sujet de discussion courant"}. {"Current Discussion Topic","Sujet de discussion courant"}.
{"Database failure","Échec sur la base de données"}. {"Database failure","Échec sur la base de données"}.
{"Database Tables at ~p","Tables de base de données sur ~p"}.
{"Database Tables Configuration at ","Configuration des tables de base de données sur "}. {"Database Tables Configuration at ","Configuration des tables de base de données sur "}.
{"Database","Base de données"}. {"Database","Base de données"}.
{"December","Décembre"}. {"December","Décembre"}.
{"Default users as participants","Les utilisateurs sont participant par défaut"}. {"Default users as participants","Les utilisateurs sont participant par défaut"}.
{"Delete content","Supprimer le contenu"}.
{"Delete message of the day on all hosts","Supprimer le message du jour sur tous les domaines"}. {"Delete message of the day on all hosts","Supprimer le message du jour sur tous les domaines"}.
{"Delete message of the day","Supprimer le message du jour"}. {"Delete message of the day","Supprimer le message du jour"}.
{"Delete Selected","Suppression des éléments sélectionnés"}.
{"Delete table","Supprimer la table"}.
{"Delete User","Supprimer l'utilisateur"}. {"Delete User","Supprimer l'utilisateur"}.
{"Deliver event notifications","Envoyer les notifications d'événement"}. {"Deliver event notifications","Envoyer les notifications d'événement"}.
{"Deliver payloads with event notifications","Inclure le contenu du message avec la notification"}. {"Deliver payloads with event notifications","Inclure le contenu du message avec la notification"}.
{"Description:","Description :"}.
{"Disc only copy","Copie sur disque uniquement"}. {"Disc only copy","Copie sur disque uniquement"}.
{"'Displayed groups' not added (they do not exist!): ","«Groupes affichés» non ajoutés (ils nexistent pas!) : "}.
{"Displayed:","Affichés :"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Ne révélez votre mot de passe à personne, pas même aux administrateurs du serveur XMPP."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","Ne révélez votre mot de passe à personne, pas même aux administrateurs du serveur XMPP."}.
{"Dump Backup to Text File at ","Enregistrer la sauvegarde dans un fichier texte sur "}. {"Dump Backup to Text File at ","Enregistrer la sauvegarde dans un fichier texte sur "}.
{"Dump to Text File","Sauvegarder dans un fichier texte"}. {"Dump to Text File","Sauvegarder dans un fichier texte"}.
@ -127,7 +116,6 @@
{"ejabberd vCard module","Module vCard ejabberd"}. {"ejabberd vCard module","Module vCard ejabberd"}.
{"ejabberd Web Admin","Console Web d'administration de ejabberd"}. {"ejabberd Web Admin","Console Web d'administration de ejabberd"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Éléments"}.
{"Email Address","Adresse courriel"}. {"Email Address","Adresse courriel"}.
{"Email","Courriel"}. {"Email","Courriel"}.
{"Enable logging","Activer l'archivage"}. {"Enable logging","Activer l'archivage"}.
@ -141,7 +129,6 @@
{"Enter path to text file","Entrez le chemin vers le fichier texte"}. {"Enter path to text file","Entrez le chemin vers le fichier texte"}.
{"Enter the text you see","Tapez le texte que vous voyez"}. {"Enter the text you see","Tapez le texte que vous voyez"}.
{"Erlang XMPP Server","Serveur XMPP Erlang"}. {"Erlang XMPP Server","Serveur XMPP Erlang"}.
{"Error","Erreur"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Exempter des Jabberd IDs du test CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Exempter des Jabberd IDs du test CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Exporter toutes les tables vers un fichier SQL :"}. {"Export all tables as SQL queries to a file:","Exporter toutes les tables vers un fichier SQL :"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exporter les données de tous les utilisateurs du serveur vers un fichier PIEFXIS (XEP-0227) :"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exporter les données de tous les utilisateurs du serveur vers un fichier PIEFXIS (XEP-0227) :"}.
@ -160,7 +147,6 @@
{"Fill in the form to search for any matching XMPP User","Complétez le formulaire pour rechercher un utilisateur XMPP correspondant"}. {"Fill in the form to search for any matching XMPP User","Complétez le formulaire pour rechercher un utilisateur XMPP correspondant"}.
{"Friday","Vendredi"}. {"Friday","Vendredi"}.
{"From ~ts","De ~ts"}. {"From ~ts","De ~ts"}.
{"From","De"}.
{"Full List of Room Admins","Liste complète des administrateurs des salons"}. {"Full List of Room Admins","Liste complète des administrateurs des salons"}.
{"Full List of Room Owners","Liste complète des propriétaires des salons"}. {"Full List of Room Owners","Liste complète des propriétaires des salons"}.
{"Full Name","Nom complet"}. {"Full Name","Nom complet"}.
@ -169,13 +155,9 @@
{"Get Number of Online Users","Récupérer le nombre d'utilisateurs en ligne"}. {"Get Number of Online Users","Récupérer le nombre d'utilisateurs en ligne"}.
{"Get Number of Registered Users","Récupérer le nombre d'utilisateurs enregistrés"}. {"Get Number of Registered Users","Récupérer le nombre d'utilisateurs enregistrés"}.
{"Get User Last Login Time","Récupérer la dernière date de connexion de l'utilisateur"}. {"Get User Last Login Time","Récupérer la dernière date de connexion de l'utilisateur"}.
{"Get User Password","Récupérer le mot de passe de l'utilisateur"}.
{"Get User Statistics","Récupérer les statistiques de l'utilisateur"}. {"Get User Statistics","Récupérer les statistiques de l'utilisateur"}.
{"Given Name","Nom"}. {"Given Name","Nom"}.
{"Grant voice to this person?","Accorder le droit de parole à cet utilisateur ?"}. {"Grant voice to this person?","Accorder le droit de parole à cet utilisateur ?"}.
{"Group","Groupe"}.
{"Groups that will be displayed to the members","Groupes qui seront affichés aux membres"}.
{"Groups","Groupes"}.
{"has been banned","a été banni"}. {"has been banned","a été banni"}.
{"has been kicked because of a system shutdown","a été éjecté en raison de l'arrêt du système"}. {"has been kicked because of a system shutdown","a été éjecté en raison de l'arrêt du système"}.
{"has been kicked because of an affiliation change","a été éjecté à cause d'un changement d'autorisation"}. {"has been kicked because of an affiliation change","a été éjecté à cause d'un changement d'autorisation"}.
@ -183,7 +165,6 @@
{"has been kicked","a été expulsé"}. {"has been kicked","a été expulsé"}.
{"Hats limit exceeded","La limite a été dépassée"}. {"Hats limit exceeded","La limite a été dépassée"}.
{"Host unknown","Serveur inconnu"}. {"Host unknown","Serveur inconnu"}.
{"Host","Serveur"}.
{"HTTP File Upload","Téléversement de fichier HTTP"}. {"HTTP File Upload","Téléversement de fichier HTTP"}.
{"Idle connection","Connexion inactive"}. {"Idle connection","Connexion inactive"}.
{"If you don't see the CAPTCHA image here, visit the web page.","SI vous ne voyez pas l'image CAPTCHA ici, visitez la page web."}. {"If you don't see the CAPTCHA image here, visit the web page.","SI vous ne voyez pas l'image CAPTCHA ici, visitez la page web."}.
@ -197,13 +178,13 @@
{"Import Users From jabberd14 Spool Files","Importer des utilisateurs depuis un fichier spool Jabberd 1.4"}. {"Import Users From jabberd14 Spool Files","Importer des utilisateurs depuis un fichier spool Jabberd 1.4"}.
{"Improper domain part of 'from' attribute","Le domaine de l'attribut 'from' est incorrect"}. {"Improper domain part of 'from' attribute","Le domaine de l'attribut 'from' est incorrect"}.
{"Improper message type","Mauvais type de message"}. {"Improper message type","Mauvais type de message"}.
{"Incoming s2s Connections:","Connexions s2s entrantes :"}.
{"Incorrect CAPTCHA submit","Entrée CAPTCHA incorrecte"}. {"Incorrect CAPTCHA submit","Entrée CAPTCHA incorrecte"}.
{"Incorrect data form","Formulaire incorrect"}. {"Incorrect data form","Formulaire incorrect"}.
{"Incorrect password","Mot de passe incorrect"}. {"Incorrect password","Mot de passe incorrect"}.
{"Incorrect value of 'action' attribute","Valeur de l'attribut 'action' incorrecte"}. {"Incorrect value of 'action' attribute","Valeur de l'attribut 'action' incorrecte"}.
{"Incorrect value of 'action' in data form","Valeur de l'attribut 'action' incorrecte dans le formulaire"}. {"Incorrect value of 'action' in data form","Valeur de l'attribut 'action' incorrecte dans le formulaire"}.
{"Incorrect value of 'path' in data form","Valeur de l'attribut 'path' incorrecte dans le formulaire"}. {"Incorrect value of 'path' in data form","Valeur de l'attribut 'path' incorrecte dans le formulaire"}.
{"Install","Installer"}.
{"Insufficient privilege","Droits insuffisants"}. {"Insufficient privilege","Droits insuffisants"}.
{"Internal server error","Erreur interne du serveur"}. {"Internal server error","Erreur interne du serveur"}.
{"Invalid 'from' attribute in forwarded message","L'attribut 'from' du message transféré est incorrect"}. {"Invalid 'from' attribute in forwarded message","L'attribut 'from' du message transféré est incorrect"}.
@ -221,15 +202,12 @@
{"July","Juillet"}. {"July","Juillet"}.
{"June","Juin"}. {"June","Juin"}.
{"Just created","Vient d'être créé"}. {"Just created","Vient d'être créé"}.
{"Label:","Étiquette :"}.
{"Last Activity","Dernière activité"}. {"Last Activity","Dernière activité"}.
{"Last login","Dernière connexion"}. {"Last login","Dernière connexion"}.
{"Last message","Dernier message"}. {"Last message","Dernier message"}.
{"Last month","Dernier mois"}. {"Last month","Dernier mois"}.
{"Last year","Dernière année"}. {"Last year","Dernière année"}.
{"leaves the room","quitte le salon"}. {"leaves the room","quitte le salon"}.
{"List of rooms","Liste des salons"}.
{"Low level update script","Script de mise à jour de bas-niveau"}.
{"Make participants list public","Rendre la liste des participants publique"}. {"Make participants list public","Rendre la liste des participants publique"}.
{"Make room CAPTCHA protected","Protéger le salon par un CAPTCHA"}. {"Make room CAPTCHA protected","Protéger le salon par un CAPTCHA"}.
{"Make room members-only","Réserver le salon aux membres uniquement"}. {"Make room members-only","Réserver le salon aux membres uniquement"}.
@ -246,9 +224,7 @@
{"Maximum Number of Occupants","Nombre maximal d'occupants"}. {"Maximum Number of Occupants","Nombre maximal d'occupants"}.
{"May","Mai"}. {"May","Mai"}.
{"Membership is required to enter this room","Vous devez être membre pour accèder à ce salon"}. {"Membership is required to enter this room","Vous devez être membre pour accèder à ce salon"}.
{"Members:","Membres :"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Mémorisez votre mot de passe, ou écrivez-le sur un papier conservé dans un endroit secret. Dans XMPP il n'y a pas de mécanisme pour retrouver votre mot de passe si vous l'avez oublié."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Mémorisez votre mot de passe, ou écrivez-le sur un papier conservé dans un endroit secret. Dans XMPP il n'y a pas de mécanisme pour retrouver votre mot de passe si vous l'avez oublié."}.
{"Memory","Mémoire"}.
{"Message body","Corps du message"}. {"Message body","Corps du message"}.
{"Message not found in forwarded payload","Message non trouvé dans l'enveloppe transférée"}. {"Message not found in forwarded payload","Message non trouvé dans l'enveloppe transférée"}.
{"Messages from strangers are rejected","Les messages d'étrangers sont rejetés"}. {"Messages from strangers are rejected","Les messages d'étrangers sont rejetés"}.
@ -259,14 +235,12 @@
{"Moderator privileges required","Les droits de modérateur sont nécessaires"}. {"Moderator privileges required","Les droits de modérateur sont nécessaires"}.
{"Moderator","Modérateur"}. {"Moderator","Modérateur"}.
{"Moderators Only","Modérateurs uniquement"}. {"Moderators Only","Modérateurs uniquement"}.
{"Modified modules","Modules mis à jour"}.
{"Module failed to handle the query","Échec de traitement de la demande"}. {"Module failed to handle the query","Échec de traitement de la demande"}.
{"Monday","Lundi"}. {"Monday","Lundi"}.
{"Multicast","Multidiffusion"}. {"Multicast","Multidiffusion"}.
{"Multiple <item/> elements are not allowed by RFC6121","Les multiples éléments <item/> ne sont pas autorisés avec RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","Les multiples éléments <item/> ne sont pas autorisés avec RFC6121"}.
{"Multi-User Chat","Discussion de groupe"}. {"Multi-User Chat","Discussion de groupe"}.
{"Name","Nom"}. {"Name","Nom"}.
{"Name:","Nom :"}.
{"Natural Language for Room Discussions","Langue naturelle pour les discussions en salle"}. {"Natural Language for Room Discussions","Langue naturelle pour les discussions en salle"}.
{"Natural-Language Room Name","Nom de la salle en langue naturelle"}. {"Natural-Language Room Name","Nom de la salle en langue naturelle"}.
{"Neither 'jid' nor 'nick' attribute found","Attribut 'jid' ou 'nick' absent"}. {"Neither 'jid' nor 'nick' attribute found","Attribut 'jid' ou 'nick' absent"}.
@ -329,14 +303,10 @@
{"Occupants are allowed to invite others","Les occupants sont autorisés à inviter dautres personnes"}. {"Occupants are allowed to invite others","Les occupants sont autorisés à inviter dautres personnes"}.
{"Occupants May Change the Subject","Les occupants peuvent changer le sujet"}. {"Occupants May Change the Subject","Les occupants peuvent changer le sujet"}.
{"October","Octobre"}. {"October","Octobre"}.
{"Offline Messages","Messages en attente"}.
{"Offline Messages:","Messages hors ligne :"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Ancien mot de passe :"}. {"Old Password:","Ancien mot de passe :"}.
{"Online Users:","Utilisateurs connectés :"}.
{"Online Users","Utilisateurs en ligne"}. {"Online Users","Utilisateurs en ligne"}.
{"Online","En ligne"}. {"Online","En ligne"}.
{"Only admins can see this","Seuls les administrateurs peuvent voir cela"}.
{"Only deliver notifications to available users","Envoyer les notifications uniquement aux utilisateurs disponibles"}. {"Only deliver notifications to available users","Envoyer les notifications uniquement aux utilisateurs disponibles"}.
{"Only <enable/> or <disable/> tags are allowed","Seul le tag <enable/> ou <disable/> est autorisé"}. {"Only <enable/> or <disable/> tags are allowed","Seul le tag <enable/> ou <disable/> est autorisé"}.
{"Only <list/> element is allowed in this query","Seul l'élément <list/> est autorisé dans cette requête"}. {"Only <list/> element is allowed in this query","Seul l'élément <list/> est autorisé dans cette requête"}.
@ -351,9 +321,7 @@
{"Organization Name","Nom de l'organisation"}. {"Organization Name","Nom de l'organisation"}.
{"Organization Unit","Unité de l'organisation"}. {"Organization Unit","Unité de l'organisation"}.
{"Outgoing s2s Connections","Connexions s2s sortantes"}. {"Outgoing s2s Connections","Connexions s2s sortantes"}.
{"Outgoing s2s Connections:","Connexions s2s sortantes :"}.
{"Owner privileges required","Les droits de propriétaire sont nécessaires"}. {"Owner privileges required","Les droits de propriétaire sont nécessaires"}.
{"Packet","Paquet"}.
{"Participant","Participant"}. {"Participant","Participant"}.
{"Password Verification","Vérification du mot de passe"}. {"Password Verification","Vérification du mot de passe"}.
{"Password Verification:","Vérification du mot de passe :"}. {"Password Verification:","Vérification du mot de passe :"}.
@ -361,7 +329,6 @@
{"Password:","Mot de passe :"}. {"Password:","Mot de passe :"}.
{"Path to Dir","Chemin vers le répertoire"}. {"Path to Dir","Chemin vers le répertoire"}.
{"Path to File","Chemin vers le fichier"}. {"Path to File","Chemin vers le fichier"}.
{"Pending","En suspens"}.
{"Period: ","Période : "}. {"Period: ","Période : "}.
{"Persist items to storage","Stockage persistant des éléments"}. {"Persist items to storage","Stockage persistant des éléments"}.
{"Persistent","Persistant"}. {"Persistent","Persistant"}.
@ -393,20 +360,15 @@
{"Receive notification of new nodes only","Recevoir les notifications de tous les nouveaux nœuds descendants"}. {"Receive notification of new nodes only","Recevoir les notifications de tous les nouveaux nœuds descendants"}.
{"Recipient is not in the conference room","Le destinataire n'est pas dans la conférence"}. {"Recipient is not in the conference room","Le destinataire n'est pas dans la conférence"}.
{"Register an XMPP account","Inscrire un compte XMPP"}. {"Register an XMPP account","Inscrire un compte XMPP"}.
{"Registered Users","Utilisateurs enregistrés"}.
{"Registered Users:","Utilisateurs enregistrés :"}.
{"Register","Enregistrer"}. {"Register","Enregistrer"}.
{"Remote copy","Copie distante"}. {"Remote copy","Copie distante"}.
{"Remove All Offline Messages","Effacer tous les messages hors ligne"}.
{"Remove User","Supprimer l'utilisateur"}. {"Remove User","Supprimer l'utilisateur"}.
{"Remove","Supprimer"}.
{"Replaced by new connection","Remplacé par une nouvelle connexion"}. {"Replaced by new connection","Remplacé par une nouvelle connexion"}.
{"Request has timed out","La demande a expiré"}. {"Request has timed out","La demande a expiré"}.
{"Request is ignored","La demande est ignorée"}. {"Request is ignored","La demande est ignorée"}.
{"Requested role","Rôle demandé"}. {"Requested role","Rôle demandé"}.
{"Resources","Ressources"}. {"Resources","Ressources"}.
{"Restart Service","Redémarrer le service"}. {"Restart Service","Redémarrer le service"}.
{"Restart","Redémarrer"}.
{"Restore Backup from File at ","Restaurer la sauvegarde depuis le fichier sur "}. {"Restore Backup from File at ","Restaurer la sauvegarde depuis le fichier sur "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restauration de la sauvegarde binaire après redémarrage (nécessite moins de mémoire) :"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Restauration de la sauvegarde binaire après redémarrage (nécessite moins de mémoire) :"}.
{"Restore binary backup immediately:","Restauration immédiate d'une sauvegarde binaire :"}. {"Restore binary backup immediately:","Restauration immédiate d'une sauvegarde binaire :"}.
@ -418,19 +380,14 @@
{"Room Occupants","Occupants du salon"}. {"Room Occupants","Occupants du salon"}.
{"Room title","Titre du salon"}. {"Room title","Titre du salon"}.
{"Roster groups allowed to subscribe","Groupes de liste de contact autorisés à s'abonner"}. {"Roster groups allowed to subscribe","Groupes de liste de contact autorisés à s'abonner"}.
{"Roster of ~ts","Liste de contacts de ~ts"}.
{"Roster size","Taille de la liste de contacts"}. {"Roster size","Taille de la liste de contacts"}.
{"Roster:","Liste de contacts :"}.
{"RPC Call Error","Erreur d'appel RPC"}.
{"Running Nodes","Nœuds actifs"}. {"Running Nodes","Nœuds actifs"}.
{"~s invites you to the room ~s","~s vous invite dans la salle de discussion ~s"}. {"~s invites you to the room ~s","~s vous invite dans la salle de discussion ~s"}.
{"Saturday","Samedi"}. {"Saturday","Samedi"}.
{"Script check","Validation du script"}.
{"Search Results for ","Résultats de recherche pour "}. {"Search Results for ","Résultats de recherche pour "}.
{"Search the text","Recherche le texte"}. {"Search the text","Recherche le texte"}.
{"Search until the date","Rechercher jusquà la date"}. {"Search until the date","Rechercher jusquà la date"}.
{"Search users in ","Rechercher des utilisateurs "}. {"Search users in ","Rechercher des utilisateurs "}.
{"Select All","Tout sélectionner"}.
{"Send announcement to all online users on all hosts","Envoyer l'annonce à tous les utilisateurs en ligne sur tous les serveurs"}. {"Send announcement to all online users on all hosts","Envoyer l'annonce à tous les utilisateurs en ligne sur tous les serveurs"}.
{"Send announcement to all online users","Envoyer l'annonce à tous les utilisateurs en ligne"}. {"Send announcement to all online users","Envoyer l'annonce à tous les utilisateurs en ligne"}.
{"Send announcement to all users on all hosts","Envoyer une annonce à tous les utilisateurs de tous les domaines"}. {"Send announcement to all users on all hosts","Envoyer une annonce à tous les utilisateurs de tous les domaines"}.
@ -450,20 +407,14 @@
{"Specify the event message type","Définir le type de message d'événement"}. {"Specify the event message type","Définir le type de message d'événement"}.
{"Specify the publisher model","Définir le modèle de publication"}. {"Specify the publisher model","Définir le modèle de publication"}.
{"Stanza ID","Identifiant Stanza"}. {"Stanza ID","Identifiant Stanza"}.
{"Statistics of ~p","Statistiques de ~p"}.
{"Statistics","Statistiques"}.
{"Stop","Arrêter"}.
{"Stopped Nodes","Nœuds arrêtés"}. {"Stopped Nodes","Nœuds arrêtés"}.
{"Storage Type","Type de stockage"}.
{"Store binary backup:","Sauvegarde binaire :"}. {"Store binary backup:","Sauvegarde binaire :"}.
{"Store plain text backup:","Sauvegarde texte :"}. {"Store plain text backup:","Sauvegarde texte :"}.
{"Stream management is already enabled","La gestion des flux est déjà activée"}. {"Stream management is already enabled","La gestion des flux est déjà activée"}.
{"Subject","Sujet"}. {"Subject","Sujet"}.
{"Submit","Soumettre"}.
{"Submitted","Soumis"}. {"Submitted","Soumis"}.
{"Subscriber Address","Adresse de l'abonné"}. {"Subscriber Address","Adresse de l'abonné"}.
{"Subscribers may publish","Les souscripteurs peuvent publier"}. {"Subscribers may publish","Les souscripteurs peuvent publier"}.
{"Subscription","Abonnement"}.
{"Subscriptions are not allowed","Les abonnement ne sont pas autorisés"}. {"Subscriptions are not allowed","Les abonnement ne sont pas autorisés"}.
{"Sunday","Dimanche"}. {"Sunday","Dimanche"}.
{"Text associated with a picture","Texte associé à une image"}. {"Text associated with a picture","Texte associé à une image"}.
@ -512,10 +463,8 @@
{"Thursday","Jeudi"}. {"Thursday","Jeudi"}.
{"Time delay","Délais"}. {"Time delay","Délais"}.
{"Timed out waiting for stream resumption","Expiration du délai dattente pour la reprise du flux"}. {"Timed out waiting for stream resumption","Expiration du délai dattente pour la reprise du flux"}.
{"Time","Heure"}.
{"To register, visit ~s","Pour vous enregistrer, visitez ~s"}. {"To register, visit ~s","Pour vous enregistrer, visitez ~s"}.
{"To ~ts","À ~ts"}. {"To ~ts","À ~ts"}.
{"To","A"}.
{"Token TTL","Jeton TTL"}. {"Token TTL","Jeton TTL"}.
{"Too many active bytestreams","Trop de flux SOCKS5 actifs"}. {"Too many active bytestreams","Trop de flux SOCKS5 actifs"}.
{"Too many CAPTCHA requests","Trop de requêtes CAPTCHA"}. {"Too many CAPTCHA requests","Trop de requêtes CAPTCHA"}.
@ -525,30 +474,21 @@
{"Too many receiver fields were specified","Trop de champs de récepteurs ont été spécifiés"}. {"Too many receiver fields were specified","Trop de champs de récepteurs ont été spécifiés"}.
{"Too many unacked stanzas","Trop de stanzas sans accusé de réception (ack)"}. {"Too many unacked stanzas","Trop de stanzas sans accusé de réception (ack)"}.
{"Too many users in this conference","Trop d'utilisateurs dans cette conférence"}. {"Too many users in this conference","Trop d'utilisateurs dans cette conférence"}.
{"Total rooms","Nombre de salons"}.
{"Traffic rate limit is exceeded","La limite de trafic a été dépassée"}. {"Traffic rate limit is exceeded","La limite de trafic a été dépassée"}.
{"Transactions Aborted:","Transactions annulées :"}.
{"Transactions Committed:","Transactions commitées :"}.
{"Transactions Logged:","Transactions journalisées :"}.
{"Transactions Restarted:","Transactions redémarrées :"}.
{"Tuesday","Mardi"}. {"Tuesday","Mardi"}.
{"Unable to generate a CAPTCHA","Impossible de générer le CAPTCHA"}. {"Unable to generate a CAPTCHA","Impossible de générer le CAPTCHA"}.
{"Unable to register route on existing local domain","Impossible d'enregistrer la route sur un domaine locale existant"}. {"Unable to register route on existing local domain","Impossible d'enregistrer la route sur un domaine locale existant"}.
{"Unauthorized","Non autorisé"}. {"Unauthorized","Non autorisé"}.
{"Unexpected action","Action inattendu"}. {"Unexpected action","Action inattendu"}.
{"Unexpected error condition: ~p","Condition derreur inattendue : ~p"}. {"Unexpected error condition: ~p","Condition derreur inattendue : ~p"}.
{"Uninstall","Désinstaller"}.
{"Unregister an XMPP account","Annuler lenregistrement dun compte XMPP"}. {"Unregister an XMPP account","Annuler lenregistrement dun compte XMPP"}.
{"Unregister","Désinscrire"}. {"Unregister","Désinscrire"}.
{"Unselect All","Tout désélectionner"}.
{"Unsupported <index/> element","Elément <index/> non supporté"}. {"Unsupported <index/> element","Elément <index/> non supporté"}.
{"Unsupported version","Version non prise en charge"}. {"Unsupported version","Version non prise en charge"}.
{"Update message of the day (don't send)","Mise à jour du message du jour (pas d'envoi)"}. {"Update message of the day (don't send)","Mise à jour du message du jour (pas d'envoi)"}.
{"Update message of the day on all hosts (don't send)","Mettre à jour le message du jour sur tous les domaines (ne pas envoyer)"}. {"Update message of the day on all hosts (don't send)","Mettre à jour le message du jour sur tous les domaines (ne pas envoyer)"}.
{"Update plan","Plan de mise à jour"}. {"Upgrade","Mise à niveau"}.
{"Update ~p","Mise à jour de ~p"}.
{"Update script","Script de mise à jour"}.
{"Update","Mettre à jour"}.
{"Uptime:","Temps depuis le démarrage :"}.
{"URL for Archived Discussion Logs","URL des journaux de discussion archivés"}. {"URL for Archived Discussion Logs","URL des journaux de discussion archivés"}.
{"User already exists","L'utilisateur existe déjà"}. {"User already exists","L'utilisateur existe déjà"}.
{"User JID","JID de l'utilisateur"}. {"User JID","JID de l'utilisateur"}.
@ -563,14 +503,12 @@
{"Users Last Activity","Dernière activité des utilisateurs"}. {"Users Last Activity","Dernière activité des utilisateurs"}.
{"Users","Utilisateurs"}. {"Users","Utilisateurs"}.
{"User","Utilisateur"}. {"User","Utilisateur"}.
{"Validate","Valider"}.
{"Value 'get' of 'type' attribute is not allowed","La valeur de l'attribut 'type' ne peut être 'get'"}. {"Value 'get' of 'type' attribute is not allowed","La valeur de l'attribut 'type' ne peut être 'get'"}.
{"Value of '~s' should be boolean","La valeur de '~s' ne peut être booléen"}. {"Value of '~s' should be boolean","La valeur de '~s' ne peut être booléen"}.
{"Value of '~s' should be datetime string","La valeur de '~s' doit être une chaine datetime"}. {"Value of '~s' should be datetime string","La valeur de '~s' doit être une chaine datetime"}.
{"Value of '~s' should be integer","La valeur de '~s' doit être un entier"}. {"Value of '~s' should be integer","La valeur de '~s' doit être un entier"}.
{"Value 'set' of 'type' attribute is not allowed","La valeur de l'attribut 'type' ne peut être 'set'"}. {"Value 'set' of 'type' attribute is not allowed","La valeur de l'attribut 'type' ne peut être 'set'"}.
{"vCard User Search","Recherche dans l'annnuaire"}. {"vCard User Search","Recherche dans l'annnuaire"}.
{"View Queue","Afficher la file dattente"}.
{"Virtual Hosts","Serveurs virtuels"}. {"Virtual Hosts","Serveurs virtuels"}.
{"Visitors are not allowed to change their nicknames in this room","Les visiteurs ne sont pas autorisés à changer de pseudo dans ce salon"}. {"Visitors are not allowed to change their nicknames in this room","Les visiteurs ne sont pas autorisés à changer de pseudo dans ce salon"}.
{"Visitors are not allowed to send messages to all occupants","Les visiteurs ne sont pas autorisés à envoyer des messages à tout les occupants"}. {"Visitors are not allowed to send messages to all occupants","Les visiteurs ne sont pas autorisés à envoyer des messages à tout les occupants"}.

View file

@ -9,8 +9,6 @@
{"Accept","Aceptar"}. {"Accept","Aceptar"}.
{"Access denied by service policy","Acceso denegado pola política do servizo"}. {"Access denied by service policy","Acceso denegado pola política do servizo"}.
{"Action on user","Acción no usuario"}. {"Action on user","Acción no usuario"}.
{"Add Jabber ID","Engadir ID Jabber"}.
{"Add New","Engadir novo"}.
{"Add User","Engadir usuario"}. {"Add User","Engadir usuario"}.
{"Administration of ","Administración de "}. {"Administration of ","Administración de "}.
{"Administration","Administración"}. {"Administration","Administración"}.
@ -60,22 +58,17 @@
{"Conference room does not exist","A sala de conferencias non existe"}. {"Conference room does not exist","A sala de conferencias non existe"}.
{"Configuration of room ~s","Configuración para a sala ~s"}. {"Configuration of room ~s","Configuración para a sala ~s"}.
{"Configuration","Configuración"}. {"Configuration","Configuración"}.
{"Connected Resources:","Recursos conectados:"}.
{"Country","País"}. {"Country","País"}.
{"CPU Time:","Tempo da CPU:"}.
{"Database failure","Erro na base de datos"}. {"Database failure","Erro na base de datos"}.
{"Database Tables at ~p","Táboas da base de datos en ~p"}.
{"Database Tables Configuration at ","Configuración de táboas da base de datos en "}. {"Database Tables Configuration at ","Configuración de táboas da base de datos en "}.
{"Database","Base de datos"}. {"Database","Base de datos"}.
{"December","Decembro"}. {"December","Decembro"}.
{"Default users as participants","Os usuarios son participantes por defecto"}. {"Default users as participants","Os usuarios son participantes por defecto"}.
{"Delete message of the day on all hosts","Borrar a mensaxe do día en todos os dominios"}. {"Delete message of the day on all hosts","Borrar a mensaxe do día en todos os dominios"}.
{"Delete message of the day","Borrar mensaxe do dia"}. {"Delete message of the day","Borrar mensaxe do dia"}.
{"Delete Selected","Eliminar os seleccionados"}.
{"Delete User","Borrar usuario"}. {"Delete User","Borrar usuario"}.
{"Deliver event notifications","Entregar notificacións de eventos"}. {"Deliver event notifications","Entregar notificacións de eventos"}.
{"Deliver payloads with event notifications","Enviar payloads xunto coas notificacións de eventos"}. {"Deliver payloads with event notifications","Enviar payloads xunto coas notificacións de eventos"}.
{"Description:","Descrición:"}.
{"Disc only copy","Copia en disco soamente"}. {"Disc only copy","Copia en disco soamente"}.
{"Dump Backup to Text File at ","Exporta copia de seguridade a ficheiro de texto en "}. {"Dump Backup to Text File at ","Exporta copia de seguridade a ficheiro de texto en "}.
{"Dump to Text File","Exportar a ficheiro de texto"}. {"Dump to Text File","Exportar a ficheiro de texto"}.
@ -87,7 +80,6 @@
{"ejabberd SOCKS5 Bytestreams module","Módulo SOCKS5 Bytestreams para ejabberd"}. {"ejabberd SOCKS5 Bytestreams module","Módulo SOCKS5 Bytestreams para ejabberd"}.
{"ejabberd vCard module","Módulo vCard para ejabberd"}. {"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","ejabberd Administrador Web"}. {"ejabberd Web Admin","ejabberd Administrador Web"}.
{"Elements","Elementos"}.
{"Email","Email"}. {"Email","Email"}.
{"Enable logging","Gardar históricos"}. {"Enable logging","Gardar históricos"}.
{"Enable message archiving","Activar o almacenamento de mensaxes"}. {"Enable message archiving","Activar o almacenamento de mensaxes"}.
@ -99,7 +91,6 @@
{"Enter path to jabberd14 spool file","Introduce ruta ao ficheiro jabberd14 spool"}. {"Enter path to jabberd14 spool file","Introduce ruta ao ficheiro jabberd14 spool"}.
{"Enter path to text file","Introduce ruta ao ficheiro de texto"}. {"Enter path to text file","Introduce ruta ao ficheiro de texto"}.
{"Enter the text you see","Introduza o texto que ves"}. {"Enter the text you see","Introduza o texto que ves"}.
{"Error","Erro"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Excluír Jabber IDs das probas de CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Excluír Jabber IDs das probas de CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Exportar todas as táboas a un ficheiro SQL:"}. {"Export all tables as SQL queries to a file:","Exportar todas as táboas a un ficheiro SQL:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar datos de todos os usuarios do servidor a ficheros PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar datos de todos os usuarios do servidor a ficheros PIEFXIS (XEP-0227):"}.
@ -115,24 +106,19 @@
{"February","Febreiro"}. {"February","Febreiro"}.
{"File larger than ~w bytes","O ficheiro é maior que ~w bytes"}. {"File larger than ~w bytes","O ficheiro é maior que ~w bytes"}.
{"Friday","Venres"}. {"Friday","Venres"}.
{"From","De"}.
{"Full Name","Nome completo"}. {"Full Name","Nome completo"}.
{"Get Number of Online Users","Ver número de usuarios conectados"}. {"Get Number of Online Users","Ver número de usuarios conectados"}.
{"Get Number of Registered Users","Ver número de usuarios rexistrados"}. {"Get Number of Registered Users","Ver número de usuarios rexistrados"}.
{"Get User Last Login Time","Ver data da última conexión de usuario"}. {"Get User Last Login Time","Ver data da última conexión de usuario"}.
{"Get User Password","Ver contrasinal de usuario"}.
{"Get User Statistics","Ver estatísticas de usuario"}. {"Get User Statistics","Ver estatísticas de usuario"}.
{"Given Name","Nome"}. {"Given Name","Nome"}.
{"Grant voice to this person?","¿Conceder voz a esta persoa?"}. {"Grant voice to this person?","¿Conceder voz a esta persoa?"}.
{"Group","Grupo"}.
{"Groups","Grupos"}.
{"has been banned","foi bloqueado"}. {"has been banned","foi bloqueado"}.
{"has been kicked because of a system shutdown","foi expulsado porque o sistema vaise a deter"}. {"has been kicked because of a system shutdown","foi expulsado porque o sistema vaise a deter"}.
{"has been kicked because of an affiliation change","foi expulsado debido a un cambio de afiliación"}. {"has been kicked because of an affiliation change","foi expulsado debido a un cambio de afiliación"}.
{"has been kicked because the room has been changed to members-only","foi expulsado, porque a sala cambiouse a só-membros"}. {"has been kicked because the room has been changed to members-only","foi expulsado, porque a sala cambiouse a só-membros"}.
{"has been kicked","foi expulsado"}. {"has been kicked","foi expulsado"}.
{"Host unknown","Dominio descoñecido"}. {"Host unknown","Dominio descoñecido"}.
{"Host","Host"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Si non ves a imaxe CAPTCHA aquí, visita a páxina web."}. {"If you don't see the CAPTCHA image here, visit the web page.","Si non ves a imaxe CAPTCHA aquí, visita a páxina web."}.
{"Import Directory","Importar directorio"}. {"Import Directory","Importar directorio"}.
{"Import File","Importar ficheiro"}. {"Import File","Importar ficheiro"}.
@ -144,7 +130,6 @@
{"Import Users From jabberd14 Spool Files","Importar usuarios de ficheiros spool de jabberd-1.4"}. {"Import Users From jabberd14 Spool Files","Importar usuarios de ficheiros spool de jabberd-1.4"}.
{"Improper domain part of 'from' attribute","Parte de dominio impropio no atributo 'from'"}. {"Improper domain part of 'from' attribute","Parte de dominio impropio no atributo 'from'"}.
{"Improper message type","Tipo de mensaxe incorrecta"}. {"Improper message type","Tipo de mensaxe incorrecta"}.
{"Incoming s2s Connections:","Conexións S2S saíntes:"}.
{"Incorrect CAPTCHA submit","O CAPTCHA proporcionado é incorrecto"}. {"Incorrect CAPTCHA submit","O CAPTCHA proporcionado é incorrecto"}.
{"Incorrect data form","Formulario de datos incorrecto"}. {"Incorrect data form","Formulario de datos incorrecto"}.
{"Incorrect password","Contrasinal incorrecta"}. {"Incorrect password","Contrasinal incorrecta"}.
@ -169,8 +154,6 @@
{"Last month","Último mes"}. {"Last month","Último mes"}.
{"Last year","Último ano"}. {"Last year","Último ano"}.
{"leaves the room","sae da sala"}. {"leaves the room","sae da sala"}.
{"List of rooms","Lista de salas"}.
{"Low level update script","Script de actualización a baixo nivel"}.
{"Make participants list public","A lista de participantes é pública"}. {"Make participants list public","A lista de participantes é pública"}.
{"Make room CAPTCHA protected","Protexer a sala con CAPTCHA"}. {"Make room CAPTCHA protected","Protexer a sala con CAPTCHA"}.
{"Make room members-only","Sala só para membros"}. {"Make room members-only","Sala só para membros"}.
@ -184,21 +167,17 @@
{"Maximum Number of Occupants","Número máximo de ocupantes"}. {"Maximum Number of Occupants","Número máximo de ocupantes"}.
{"May","Maio"}. {"May","Maio"}.
{"Membership is required to enter this room","Necesitas ser membro desta sala para poder entrar"}. {"Membership is required to enter this room","Necesitas ser membro desta sala para poder entrar"}.
{"Members:","Membros:"}.
{"Memory","Memoria"}.
{"Message body","Corpo da mensaxe"}. {"Message body","Corpo da mensaxe"}.
{"Message not found in forwarded payload","Mensaxe non atopada no contido reenviado"}. {"Message not found in forwarded payload","Mensaxe non atopada no contido reenviado"}.
{"Middle Name","Segundo nome"}. {"Middle Name","Segundo nome"}.
{"Minimum interval between voice requests (in seconds)","Intervalo mínimo entre peticións de voz (en segundos)"}. {"Minimum interval between voice requests (in seconds)","Intervalo mínimo entre peticións de voz (en segundos)"}.
{"Moderator privileges required","Necesítase privilexios de moderador"}. {"Moderator privileges required","Necesítase privilexios de moderador"}.
{"Moderator","Moderator"}. {"Moderator","Moderator"}.
{"Modified modules","Módulos Modificados"}.
{"Module failed to handle the query","O módulo non puido xestionar a consulta"}. {"Module failed to handle the query","O módulo non puido xestionar a consulta"}.
{"Monday","Luns"}. {"Monday","Luns"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multi-User Chat","Salas de Charla"}. {"Multi-User Chat","Salas de Charla"}.
{"Name","Nome"}. {"Name","Nome"}.
{"Name:","Nome:"}.
{"Neither 'jid' nor 'nick' attribute found","Non se atopou o atributo 'jid' nin 'nick'"}. {"Neither 'jid' nor 'nick' attribute found","Non se atopou o atributo 'jid' nin 'nick'"}.
{"Neither 'role' nor 'affiliation' attribute found","Non se atopou o atributo 'role' nin 'affiliation'"}. {"Neither 'role' nor 'affiliation' attribute found","Non se atopou o atributo 'role' nin 'affiliation'"}.
{"Never","Nunca"}. {"Never","Nunca"}.
@ -247,12 +226,9 @@
{"Number of online users","Número de usuarios conectados"}. {"Number of online users","Número de usuarios conectados"}.
{"Number of registered users","Número de usuarios rexistrados"}. {"Number of registered users","Número de usuarios rexistrados"}.
{"October","Outubro"}. {"October","Outubro"}.
{"Offline Messages","Mensaxes diferidas"}.
{"Offline Messages:","Mensaxes sen conexión:"}.
{"OK","Aceptar"}. {"OK","Aceptar"}.
{"Old Password:","Contrasinal anterior:"}. {"Old Password:","Contrasinal anterior:"}.
{"Online Users","Usuarios conectados"}. {"Online Users","Usuarios conectados"}.
{"Online Users:","Usuarios conectados:"}.
{"Online","Conectado"}. {"Online","Conectado"}.
{"Only deliver notifications to available users","Só enviar notificacións aos usuarios dispoñibles"}. {"Only deliver notifications to available users","Só enviar notificacións aos usuarios dispoñibles"}.
{"Only <enable/> or <disable/> tags are allowed","Só se permiten etiquetas <enable/> ou <disable/>"}. {"Only <enable/> or <disable/> tags are allowed","Só se permiten etiquetas <enable/> ou <disable/>"}.
@ -267,9 +243,7 @@
{"Organization Name","Nome da organización"}. {"Organization Name","Nome da organización"}.
{"Organization Unit","Unidade da organización"}. {"Organization Unit","Unidade da organización"}.
{"Outgoing s2s Connections","Conexións S2S saíntes"}. {"Outgoing s2s Connections","Conexións S2S saíntes"}.
{"Outgoing s2s Connections:","Conexións S2S saíntes:"}.
{"Owner privileges required","Requírense privilexios de propietario da sala"}. {"Owner privileges required","Requírense privilexios de propietario da sala"}.
{"Packet","Paquete"}.
{"Participant","Participante"}. {"Participant","Participante"}.
{"Password Verification","Verificación da contrasinal"}. {"Password Verification","Verificación da contrasinal"}.
{"Password Verification:","Verificación da Contrasinal:"}. {"Password Verification:","Verificación da Contrasinal:"}.
@ -277,7 +251,6 @@
{"Password:","Contrasinal:"}. {"Password:","Contrasinal:"}.
{"Path to Dir","Ruta ao directorio"}. {"Path to Dir","Ruta ao directorio"}.
{"Path to File","Ruta ao ficheiro"}. {"Path to File","Ruta ao ficheiro"}.
{"Pending","Pendente"}.
{"Period: ","Periodo: "}. {"Period: ","Periodo: "}.
{"Persist items to storage","Persistir elementos ao almacenar"}. {"Persist items to storage","Persistir elementos ao almacenar"}.
{"Ping query is incorrect","A solicitude de Ping é incorrecta"}. {"Ping query is incorrect","A solicitude de Ping é incorrecta"}.
@ -296,17 +269,12 @@
{"RAM copy","Copia en RAM"}. {"RAM copy","Copia en RAM"}.
{"Really delete message of the day?","¿Está seguro que quere borrar a mensaxe do dia?"}. {"Really delete message of the day?","¿Está seguro que quere borrar a mensaxe do dia?"}.
{"Recipient is not in the conference room","O receptor non está na sala de conferencia"}. {"Recipient is not in the conference room","O receptor non está na sala de conferencia"}.
{"Registered Users","Usuarios rexistrados"}.
{"Registered Users:","Usuarios rexistrados:"}.
{"Register","Rexistrar"}. {"Register","Rexistrar"}.
{"Remote copy","Copia remota"}. {"Remote copy","Copia remota"}.
{"Remove All Offline Messages","Borrar Todas as Mensaxes Sen conexión"}.
{"Remove User","Eliminar usuario"}. {"Remove User","Eliminar usuario"}.
{"Remove","Borrar"}.
{"Replaced by new connection","Substituído por unha nova conexión"}. {"Replaced by new connection","Substituído por unha nova conexión"}.
{"Resources","Recursos"}. {"Resources","Recursos"}.
{"Restart Service","Reiniciar o servizo"}. {"Restart Service","Reiniciar o servizo"}.
{"Restart","Reiniciar"}.
{"Restore Backup from File at ","Restaura copia de seguridade desde o ficheiro en "}. {"Restore Backup from File at ","Restaura copia de seguridade desde o ficheiro en "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar copia de seguridade binaria no seguinte reinicio de ejabberd (require menos memoria):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar copia de seguridade binaria no seguinte reinicio de ejabberd (require menos memoria):"}.
{"Restore binary backup immediately:","Restaurar inmediatamente copia de seguridade binaria:"}. {"Restore binary backup immediately:","Restaurar inmediatamente copia de seguridade binaria:"}.
@ -320,10 +288,8 @@
{"Room title","Título da sala"}. {"Room title","Título da sala"}.
{"Roster groups allowed to subscribe","Lista de grupos autorizados a subscribir"}. {"Roster groups allowed to subscribe","Lista de grupos autorizados a subscribir"}.
{"Roster size","Tamaño da lista de contactos"}. {"Roster size","Tamaño da lista de contactos"}.
{"RPC Call Error","Erro na chamada RPC"}.
{"Running Nodes","Nodos funcionando"}. {"Running Nodes","Nodos funcionando"}.
{"Saturday","Sábado"}. {"Saturday","Sábado"}.
{"Script check","Comprobación de script"}.
{"Search Results for ","Buscar resultados por "}. {"Search Results for ","Buscar resultados por "}.
{"Search users in ","Buscar usuarios en "}. {"Search users in ","Buscar usuarios en "}.
{"Send announcement to all online users on all hosts","Enviar anuncio a todos os usuarios conectados en todos os dominios"}. {"Send announcement to all online users on all hosts","Enviar anuncio a todos os usuarios conectados en todos os dominios"}.
@ -341,19 +307,13 @@
{"Specify the access model","Especifica o modelo de acceso"}. {"Specify the access model","Especifica o modelo de acceso"}.
{"Specify the event message type","Especifica o tipo da mensaxe de evento"}. {"Specify the event message type","Especifica o tipo da mensaxe de evento"}.
{"Specify the publisher model","Especificar o modelo do publicante"}. {"Specify the publisher model","Especificar o modelo do publicante"}.
{"Statistics of ~p","Estatísticas de ~p"}.
{"Statistics","Estatísticas"}.
{"Stop","Deter"}.
{"Stopped Nodes","Nodos detidos"}. {"Stopped Nodes","Nodos detidos"}.
{"Storage Type","Tipo de almacenamento"}.
{"Store binary backup:","Gardar copia de seguridade binaria:"}. {"Store binary backup:","Gardar copia de seguridade binaria:"}.
{"Store plain text backup:","Gardar copia de seguridade en texto plano:"}. {"Store plain text backup:","Gardar copia de seguridade en texto plano:"}.
{"Subject","Asunto"}. {"Subject","Asunto"}.
{"Submit","Enviar"}.
{"Submitted","Enviado"}. {"Submitted","Enviado"}.
{"Subscriber Address","Dirección do subscriptor"}. {"Subscriber Address","Dirección do subscriptor"}.
{"Subscriptions are not allowed","Non se permiten subscricións"}. {"Subscriptions are not allowed","Non se permiten subscricións"}.
{"Subscription","Subscripción"}.
{"Sunday","Domingo"}. {"Sunday","Domingo"}.
{"That nickname is already in use by another occupant","Ese alcume xa está a ser usado por outro ocupante"}. {"That nickname is already in use by another occupant","Ese alcume xa está a ser usado por outro ocupante"}.
{"That nickname is registered by another person","O alcume xa está rexistrado por outra persoa"}. {"That nickname is registered by another person","O alcume xa está rexistrado por outra persoa"}.
@ -372,7 +332,6 @@
{"This room is not anonymous","Sala non anónima"}. {"This room is not anonymous","Sala non anónima"}.
{"Thursday","Xoves"}. {"Thursday","Xoves"}.
{"Time delay","Atraso temporal"}. {"Time delay","Atraso temporal"}.
{"Time","Data"}.
{"To register, visit ~s","Para rexistrarse, visita ~s"}. {"To register, visit ~s","Para rexistrarse, visita ~s"}.
{"Token TTL","Token TTL"}. {"Token TTL","Token TTL"}.
{"Too many active bytestreams","Demasiados bytestreams activos"}. {"Too many active bytestreams","Demasiados bytestreams activos"}.
@ -382,13 +341,7 @@
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Demasiados (~p) fallou autenticaciones desde esta dirección IP (~s). A dirección será desbloqueada as ~s UTC"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Demasiados (~p) fallou autenticaciones desde esta dirección IP (~s). A dirección será desbloqueada as ~s UTC"}.
{"Too many unacked stanzas","Demasiadas mensaxes sen recoñecer recibilos"}. {"Too many unacked stanzas","Demasiadas mensaxes sen recoñecer recibilos"}.
{"Too many users in this conference","Demasiados usuarios nesta sala"}. {"Too many users in this conference","Demasiados usuarios nesta sala"}.
{"To","Para"}.
{"Total rooms","Salas totais"}.
{"Traffic rate limit is exceeded","Hase exedido o límite de tráfico"}. {"Traffic rate limit is exceeded","Hase exedido o límite de tráfico"}.
{"Transactions Aborted:","Transaccións abortadas:"}.
{"Transactions Committed:","Transaccións finalizadas:"}.
{"Transactions Logged:","Transaccións rexistradas:"}.
{"Transactions Restarted:","Transaccións reiniciadas:"}.
{"Tuesday","Martes"}. {"Tuesday","Martes"}.
{"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}. {"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}.
{"Unable to register route on existing local domain","Non se pode rexistrar a ruta no dominio local existente"}. {"Unable to register route on existing local domain","Non se pode rexistrar a ruta no dominio local existente"}.
@ -398,11 +351,6 @@
{"Unsupported <index/> element","Elemento <index/> non soportado"}. {"Unsupported <index/> element","Elemento <index/> non soportado"}.
{"Update message of the day (don't send)","Actualizar mensaxe do dia, pero non envialo"}. {"Update message of the day (don't send)","Actualizar mensaxe do dia, pero non envialo"}.
{"Update message of the day on all hosts (don't send)","Actualizar a mensaxe do día en todos os dominos (pero non envialo)"}. {"Update message of the day on all hosts (don't send)","Actualizar a mensaxe do día en todos os dominos (pero non envialo)"}.
{"Update ~p","Actualizar ~p"}.
{"Update plan","Plan de actualización"}.
{"Update script","Script de actualización"}.
{"Update","Actualizar"}.
{"Uptime:","Tempo desde o inicio:"}.
{"User already exists","O usuario xa existe"}. {"User already exists","O usuario xa existe"}.
{"User JID","Jabber ID do usuario"}. {"User JID","Jabber ID do usuario"}.
{"User (jid)","Usuario (jid)"}. {"User (jid)","Usuario (jid)"}.
@ -414,7 +362,6 @@
{"Users Last Activity","Última actividade dos usuarios"}. {"Users Last Activity","Última actividade dos usuarios"}.
{"Users","Usuarios"}. {"Users","Usuarios"}.
{"User","Usuario"}. {"User","Usuario"}.
{"Validate","Validar"}.
{"Value 'get' of 'type' attribute is not allowed","O valor \"get\" do atributo 'type' non está permitido"}. {"Value 'get' of 'type' attribute is not allowed","O valor \"get\" do atributo 'type' non está permitido"}.
{"Value of '~s' should be boolean","O valor de '~s' debería ser booleano"}. {"Value of '~s' should be boolean","O valor de '~s' debería ser booleano"}.
{"Value of '~s' should be datetime string","O valor de '~s' debería ser unha data"}. {"Value of '~s' should be datetime string","O valor de '~s' debería ser unha data"}.

View file

@ -9,8 +9,6 @@
{"Accept","קבל"}. {"Accept","קבל"}.
{"Access denied by service policy","גישה נדחתה על ידי פוליסת שירות"}. {"Access denied by service policy","גישה נדחתה על ידי פוליסת שירות"}.
{"Action on user","פעולה על משתמש"}. {"Action on user","פעולה על משתמש"}.
{"Add Jabber ID","הוסף מזהה Jabber"}.
{"Add New","הוסף חדש"}.
{"Add User","הוסף משתמש"}. {"Add User","הוסף משתמש"}.
{"Administration of ","ניהול של "}. {"Administration of ","ניהול של "}.
{"Administration","הנהלה"}. {"Administration","הנהלה"}.
@ -58,22 +56,17 @@
{"Conference room does not exist","חדר ועידה לא קיים"}. {"Conference room does not exist","חדר ועידה לא קיים"}.
{"Configuration of room ~s","תצורת חדר ~s"}. {"Configuration of room ~s","תצורת חדר ~s"}.
{"Configuration","תצורה"}. {"Configuration","תצורה"}.
{"Connected Resources:","משאבים מחוברים:"}.
{"Country","ארץ"}. {"Country","ארץ"}.
{"CPU Time:","זמן מחשב (CPU):"}.
{"Database failure","כשל מסד נתונים"}. {"Database failure","כשל מסד נתונים"}.
{"Database Tables at ~p","טבלאות מסד נתונים אצל ~p"}.
{"Database Tables Configuration at ","תצורת טבלאות מסד נתונים אצל "}. {"Database Tables Configuration at ","תצורת טבלאות מסד נתונים אצל "}.
{"Database","מסד נתונים"}. {"Database","מסד נתונים"}.
{"December","דצמבר"}. {"December","דצמבר"}.
{"Default users as participants","משתמשים שגרתיים כמשתתפים"}. {"Default users as participants","משתמשים שגרתיים כמשתתפים"}.
{"Delete message of the day on all hosts","מחק את בשורת היום בכל המארחים"}. {"Delete message of the day on all hosts","מחק את בשורת היום בכל המארחים"}.
{"Delete message of the day","מחק את בשורת היום"}. {"Delete message of the day","מחק את בשורת היום"}.
{"Delete Selected","מחק נבחרות"}.
{"Delete User","מחק משתמש"}. {"Delete User","מחק משתמש"}.
{"Deliver event notifications","מסור התראות אירוע"}. {"Deliver event notifications","מסור התראות אירוע"}.
{"Deliver payloads with event notifications","מסור מטעני ייעוד (מטע״ד) יחד עם התראות אירוע"}. {"Deliver payloads with event notifications","מסור מטעני ייעוד (מטע״ד) יחד עם התראות אירוע"}.
{"Description:","תיאור:"}.
{"Disc only copy","העתק של תקליטור בלבד"}. {"Disc only copy","העתק של תקליטור בלבד"}.
{"Dump Backup to Text File at ","השלך גיבוי לקובץ טקסט אצל "}. {"Dump Backup to Text File at ","השלך גיבוי לקובץ טקסט אצל "}.
{"Dump to Text File","השלך לקובץ טקסט"}. {"Dump to Text File","השלך לקובץ טקסט"}.
@ -85,7 +78,6 @@
{"ejabberd SOCKS5 Bytestreams module","מודול SOCKS5 Bytestreams של ejabberd"}. {"ejabberd SOCKS5 Bytestreams module","מודול SOCKS5 Bytestreams של ejabberd"}.
{"ejabberd vCard module","מודול vCard של ejabberd"}. {"ejabberd vCard module","מודול vCard של ejabberd"}.
{"ejabberd Web Admin","מנהל רשת ejabberd"}. {"ejabberd Web Admin","מנהל רשת ejabberd"}.
{"Elements","אלמנטים"}.
{"Email","דוא״ל"}. {"Email","דוא״ל"}.
{"Enable logging","אפשר רישום פעילות"}. {"Enable logging","אפשר רישום פעילות"}.
{"Enable message archiving","אפשר אחסון הודעות"}. {"Enable message archiving","אפשר אחסון הודעות"}.
@ -96,7 +88,6 @@
{"Enter path to jabberd14 spool file","הזן נתיב לקובץ סליל (spool file) של jabberd14"}. {"Enter path to jabberd14 spool file","הזן נתיב לקובץ סליל (spool file) של jabberd14"}.
{"Enter path to text file","הזן נתיב לקובץ טקסט"}. {"Enter path to text file","הזן נתיב לקובץ טקסט"}.
{"Enter the text you see","הזן את הכיתוב שאתה רואה"}. {"Enter the text you see","הזן את הכיתוב שאתה רואה"}.
{"Error","שגיאה"}.
{"Exclude Jabber IDs from CAPTCHA challenge","הוצא כתובות Jabber מתוך אתגר CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","הוצא כתובות Jabber מתוך אתגר CAPTCHA"}.
{"Export all tables as SQL queries to a file:","יצא את כל הטבלאות בתור שאילתות SQL לתוך קובץ:"}. {"Export all tables as SQL queries to a file:","יצא את כל הטבלאות בתור שאילתות SQL לתוך קובץ:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","יצא מידע של כל המשתמשים שבתוך שרת זה לתוך קבצי PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","יצא מידע של כל המשתמשים שבתוך שרת זה לתוך קבצי PIEFXIS (XEP-0227):"}.
@ -109,24 +100,19 @@
{"February","פברואר"}. {"February","פברואר"}.
{"File larger than ~w bytes","קובץ גדול יותר משיעור של ~w בייטים"}. {"File larger than ~w bytes","קובץ גדול יותר משיעור של ~w בייטים"}.
{"Friday","יום שישי"}. {"Friday","יום שישי"}.
{"From","מאת"}.
{"Full Name","שם מלא"}. {"Full Name","שם מלא"}.
{"Get Number of Online Users","השג מספר של משתמשים מקוונים"}. {"Get Number of Online Users","השג מספר של משתמשים מקוונים"}.
{"Get Number of Registered Users","השג מספר של משתמשים רשומים"}. {"Get Number of Registered Users","השג מספר של משתמשים רשומים"}.
{"Get User Last Login Time","השג זמן כניסה אחרון של משתמש"}. {"Get User Last Login Time","השג זמן כניסה אחרון של משתמש"}.
{"Get User Password","השג סיסמת משתמש"}.
{"Get User Statistics","השג סטטיסטיקת משתמש"}. {"Get User Statistics","השג סטטיסטיקת משתמש"}.
{"Given Name","שם פרטי"}. {"Given Name","שם פרטי"}.
{"Grant voice to this person?","להעניק ביטוי לאישיות זו?"}. {"Grant voice to this person?","להעניק ביטוי לאישיות זו?"}.
{"Groups","קבוצות"}.
{"Group","קבוצה"}.
{"has been banned","נאסר/ה"}. {"has been banned","נאסר/ה"}.
{"has been kicked because of a system shutdown","נבעט/ה משום כיבוי מערכת"}. {"has been kicked because of a system shutdown","נבעט/ה משום כיבוי מערכת"}.
{"has been kicked because of an affiliation change","נבעט/ה משום שינוי סינוף"}. {"has been kicked because of an affiliation change","נבעט/ה משום שינוי סינוף"}.
{"has been kicked because the room has been changed to members-only","נבעט/ה משום שהחדר שונה אל חברים-בלבד"}. {"has been kicked because the room has been changed to members-only","נבעט/ה משום שהחדר שונה אל חברים-בלבד"}.
{"has been kicked","נבעט/ה"}. {"has been kicked","נבעט/ה"}.
{"Host unknown","מארח לא ידוע"}. {"Host unknown","מארח לא ידוע"}.
{"Host","מארח"}.
{"If you don't see the CAPTCHA image here, visit the web page.","אם אינך רואה תמונת CAPTCHA כאן, בקר בעמוד רשת."}. {"If you don't see the CAPTCHA image here, visit the web page.","אם אינך רואה תמונת CAPTCHA כאן, בקר בעמוד רשת."}.
{"Import Directory","ייבוא מדור"}. {"Import Directory","ייבוא מדור"}.
{"Import File","ייבוא קובץ"}. {"Import File","ייבוא קובץ"}.
@ -137,7 +123,6 @@
{"Import Users from Dir at ","ייבוא משתמשים מתוך מדור אצל "}. {"Import Users from Dir at ","ייבוא משתמשים מתוך מדור אצל "}.
{"Import Users From jabberd14 Spool Files","יבא משתמשים מתוך קבצי סליל (Spool Files) של jabberd14"}. {"Import Users From jabberd14 Spool Files","יבא משתמשים מתוך קבצי סליל (Spool Files) של jabberd14"}.
{"Improper message type","טיפוס הודעה לא מתאים"}. {"Improper message type","טיפוס הודעה לא מתאים"}.
{"Incoming s2s Connections:","חיבורי s2s נכנסים:"}.
{"Incorrect CAPTCHA submit","נשלחה CAPTCHA שגויה"}. {"Incorrect CAPTCHA submit","נשלחה CAPTCHA שגויה"}.
{"Incorrect data form","טופס מידע לא תקין"}. {"Incorrect data form","טופס מידע לא תקין"}.
{"Incorrect password","מילת מעבר שגויה"}. {"Incorrect password","מילת מעבר שגויה"}.
@ -158,8 +143,6 @@
{"Last month","חודש אחרון"}. {"Last month","חודש אחרון"}.
{"Last year","שנה אחרונה"}. {"Last year","שנה אחרונה"}.
{"leaves the room","עוזב/ת את החדר"}. {"leaves the room","עוזב/ת את החדר"}.
{"List of rooms","רשימה של חדרים"}.
{"Low level update script","תסריט עדכון Low level"}.
{"Make participants list public","הפוך רשימת משתתפים לפומבית"}. {"Make participants list public","הפוך רשימת משתתפים לפומבית"}.
{"Make room CAPTCHA protected","הפוך חדר לחדר מוגן CAPTCHA"}. {"Make room CAPTCHA protected","הפוך חדר לחדר מוגן CAPTCHA"}.
{"Make room members-only","הפוך חדר לחדר עבור חברים-בלבד"}. {"Make room members-only","הפוך חדר לחדר עבור חברים-בלבד"}.
@ -173,20 +156,16 @@
{"Maximum Number of Occupants","מספר מרבי של נוכחים"}. {"Maximum Number of Occupants","מספר מרבי של נוכחים"}.
{"May","מאי"}. {"May","מאי"}.
{"Membership is required to enter this room","נדרשת חברות כדי להיכנס אל חדר זה"}. {"Membership is required to enter this room","נדרשת חברות כדי להיכנס אל חדר זה"}.
{"Members:","חברים:"}.
{"Memory","זיכרון"}.
{"Message body","גוף הודעה"}. {"Message body","גוף הודעה"}.
{"Middle Name","שם אמצעי"}. {"Middle Name","שם אמצעי"}.
{"Minimum interval between voice requests (in seconds)","תדירות מינימלית בין בקשות ביטוי (בשניות)"}. {"Minimum interval between voice requests (in seconds)","תדירות מינימלית בין בקשות ביטוי (בשניות)"}.
{"Moderator privileges required","נדרשות הרשאות אחראי"}. {"Moderator privileges required","נדרשות הרשאות אחראי"}.
{"Moderator","אחראי"}. {"Moderator","אחראי"}.
{"Modified modules","מודולים שהותאמו"}.
{"Module failed to handle the query","מודול נכשל לטפל בשאילתא"}. {"Module failed to handle the query","מודול נכשל לטפל בשאילתא"}.
{"Monday","יום שני"}. {"Monday","יום שני"}.
{"Multicast","שידור מרובב"}. {"Multicast","שידור מרובב"}.
{"Multi-User Chat","שיחה מרובת משתמשים"}. {"Multi-User Chat","שיחה מרובת משתמשים"}.
{"Name","שם"}. {"Name","שם"}.
{"Name:","שם:"}.
{"Never","אף פעם"}. {"Never","אף פעם"}.
{"New Password:","סיסמה חדשה:"}. {"New Password:","סיסמה חדשה:"}.
{"Nickname Registration at ","רישום שם כינוי אצל "}. {"Nickname Registration at ","רישום שם כינוי אצל "}.
@ -223,12 +202,9 @@
{"Number of online users","מספר של משתמשים מקוונים"}. {"Number of online users","מספר של משתמשים מקוונים"}.
{"Number of registered users","מספר של משתמשים רשומים"}. {"Number of registered users","מספר של משתמשים רשומים"}.
{"October","אוקטובר"}. {"October","אוקטובר"}.
{"Offline Messages","הודעות לא מקוונות"}.
{"Offline Messages:","הודעות לא מקוונות:"}.
{"OK","אישור"}. {"OK","אישור"}.
{"Old Password:","סיסמה ישנה:"}. {"Old Password:","סיסמה ישנה:"}.
{"Online Users","משתמשים מקוונים"}. {"Online Users","משתמשים מקוונים"}.
{"Online Users:","משתמשים מקוונים:"}.
{"Online","מקוון"}. {"Online","מקוון"}.
{"Only deliver notifications to available users","מסור התראות למשתמשים זמינים בלבד"}. {"Only deliver notifications to available users","מסור התראות למשתמשים זמינים בלבד"}.
{"Only <enable/> or <disable/> tags are allowed","רק תגיות <enable/> או <disable/> הינן מורשות"}. {"Only <enable/> or <disable/> tags are allowed","רק תגיות <enable/> או <disable/> הינן מורשות"}.
@ -242,9 +218,7 @@
{"Organization Name","שם ארגון"}. {"Organization Name","שם ארגון"}.
{"Organization Unit","יחידת איגוד"}. {"Organization Unit","יחידת איגוד"}.
{"Outgoing s2s Connections","חיבורי s2s יוצאים"}. {"Outgoing s2s Connections","חיבורי s2s יוצאים"}.
{"Outgoing s2s Connections:","חיבורי s2s יוצאים:"}.
{"Owner privileges required","נדרשות הרשאות בעלים"}. {"Owner privileges required","נדרשות הרשאות בעלים"}.
{"Packet","חבילת מידע"}.
{"Participant","משתתף"}. {"Participant","משתתף"}.
{"Password Verification","אימות סיסמה"}. {"Password Verification","אימות סיסמה"}.
{"Password Verification:","אימות סיסמה:"}. {"Password Verification:","אימות סיסמה:"}.
@ -252,7 +226,6 @@
{"Password:","סיסמה:"}. {"Password:","סיסמה:"}.
{"Path to Dir","נתיב למדור"}. {"Path to Dir","נתיב למדור"}.
{"Path to File","נתיב לקובץ"}. {"Path to File","נתיב לקובץ"}.
{"Pending","ממתינות"}.
{"Period: ","משך זמן: "}. {"Period: ","משך זמן: "}.
{"Persist items to storage","פריטים קבועים לאחסון"}. {"Persist items to storage","פריטים קבועים לאחסון"}.
{"Ping query is incorrect","שאילתת פינג הינה שגויה"}. {"Ping query is incorrect","שאילתת פינג הינה שגויה"}.
@ -270,17 +243,12 @@
{"RAM copy","העתק RAM"}. {"RAM copy","העתק RAM"}.
{"Really delete message of the day?","באמת למחוק את בשורת היום?"}. {"Really delete message of the day?","באמת למחוק את בשורת היום?"}.
{"Recipient is not in the conference room","מקבל אינו מצוי בחדר הועידה"}. {"Recipient is not in the conference room","מקבל אינו מצוי בחדר הועידה"}.
{"Registered Users","משתמשים רשומים"}.
{"Registered Users:","משתמשים רשומים:"}.
{"Register","הרשם"}. {"Register","הרשם"}.
{"Remote copy","העתק מרוחק"}. {"Remote copy","העתק מרוחק"}.
{"Remove All Offline Messages","הסר את כל ההודעות הלא מקוונות"}.
{"Remove User","הסר משתמש"}. {"Remove User","הסר משתמש"}.
{"Remove","הסר"}.
{"Replaced by new connection","הוחלף בחיבור חדש"}. {"Replaced by new connection","הוחלף בחיבור חדש"}.
{"Resources","משאבים"}. {"Resources","משאבים"}.
{"Restart Service","אתחל שירות"}. {"Restart Service","אתחל שירות"}.
{"Restart","אתחל"}.
{"Restore Backup from File at ","שחזר גיבוי מתוך קובץ אצל "}. {"Restore Backup from File at ","שחזר גיבוי מתוך קובץ אצל "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","שחזר גיבוי בינארי לאחר האתחול הבא של ejabberd (מצריך פחות זיכרון):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","שחזר גיבוי בינארי לאחר האתחול הבא של ejabberd (מצריך פחות זיכרון):"}.
{"Restore binary backup immediately:","שחזר גיבוי בינארי לאלתר:"}. {"Restore binary backup immediately:","שחזר גיבוי בינארי לאלתר:"}.
@ -294,10 +262,8 @@
{"Room title","כותרת חדר"}. {"Room title","כותרת חדר"}.
{"Roster groups allowed to subscribe","קבוצות רשימה מורשות להירשם"}. {"Roster groups allowed to subscribe","קבוצות רשימה מורשות להירשם"}.
{"Roster size","גודל רשימה"}. {"Roster size","גודל רשימה"}.
{"RPC Call Error","שגיאת קריאת RPC"}.
{"Running Nodes","צמתים מורצים"}. {"Running Nodes","צמתים מורצים"}.
{"Saturday","יום שבת"}. {"Saturday","יום שבת"}.
{"Script check","בדיקת תסריט"}.
{"Search Results for ","תוצאות חיפוש עבור "}. {"Search Results for ","תוצאות חיפוש עבור "}.
{"Search users in ","חיפוש משתמשים אצל "}. {"Search users in ","חיפוש משתמשים אצל "}.
{"Send announcement to all online users on all hosts","שלח בשורה לכל המשתמשים המקוונים בכל המארחים"}. {"Send announcement to all online users on all hosts","שלח בשורה לכל המשתמשים המקוונים בכל המארחים"}.
@ -315,19 +281,13 @@
{"Specify the access model","ציין מודל גישה"}. {"Specify the access model","ציין מודל גישה"}.
{"Specify the event message type","ציין טיפוס הודעת אירוע"}. {"Specify the event message type","ציין טיפוס הודעת אירוע"}.
{"Specify the publisher model","ציין מודל פרסום"}. {"Specify the publisher model","ציין מודל פרסום"}.
{"Statistics of ~p","סטטיסטיקות של ~p"}.
{"Statistics","סטטיסטיקה"}.
{"Stopped Nodes","צמתים שנפסקו"}. {"Stopped Nodes","צמתים שנפסקו"}.
{"Stop","הפסק"}.
{"Storage Type","טיפוס אחסון"}.
{"Store binary backup:","אחסן גיבוי בינארי:"}. {"Store binary backup:","אחסן גיבוי בינארי:"}.
{"Store plain text backup:","אחסן גיבוי טקסט גלוי (plain text):"}. {"Store plain text backup:","אחסן גיבוי טקסט גלוי (plain text):"}.
{"Subject","נושא"}. {"Subject","נושא"}.
{"Submitted","נשלח"}. {"Submitted","נשלח"}.
{"Submit","שלח"}.
{"Subscriber Address","כתובת מנוי"}. {"Subscriber Address","כתובת מנוי"}.
{"Subscriptions are not allowed","הרשמות אינן מורשות"}. {"Subscriptions are not allowed","הרשמות אינן מורשות"}.
{"Subscription","הרשמה"}.
{"Sunday","יום ראשון"}. {"Sunday","יום ראשון"}.
{"That nickname is already in use by another occupant","שם כינוי זה כבר מצוי בשימוש על ידי נוכח אחר"}. {"That nickname is already in use by another occupant","שם כינוי זה כבר מצוי בשימוש על ידי נוכח אחר"}.
{"That nickname is registered by another person","שם כינוי זה הינו רשום על ידי מישהו אחר"}. {"That nickname is registered by another person","שם כינוי זה הינו רשום על ידי מישהו אחר"}.
@ -341,7 +301,6 @@
{"This room is not anonymous","חדר זה אינו אנונימי"}. {"This room is not anonymous","חדר זה אינו אנונימי"}.
{"Thursday","יום חמישי"}. {"Thursday","יום חמישי"}.
{"Time delay","זמן שיהוי"}. {"Time delay","זמן שיהוי"}.
{"Time","זמן"}.
{"To register, visit ~s","כדי להירשם, בקרו ~s"}. {"To register, visit ~s","כדי להירשם, בקרו ~s"}.
{"Token TTL","סימן TTL"}. {"Token TTL","סימן TTL"}.
{"Too many active bytestreams","יותר מדי יחידות bytestream פעילות"}. {"Too many active bytestreams","יותר מדי יחידות bytestream פעילות"}.
@ -349,13 +308,7 @@
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","יותר מדי (~p) אימותים כושלים מתוך כתובת IP זו (~s). הכתובת תורשה לקבל גישה בשעה ~s UTC"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","יותר מדי (~p) אימותים כושלים מתוך כתובת IP זו (~s). הכתובת תורשה לקבל גישה בשעה ~s UTC"}.
{"Too many unacked stanzas","יותר מדי סטנזות בלי אישורי קבלה"}. {"Too many unacked stanzas","יותר מדי סטנזות בלי אישורי קבלה"}.
{"Too many users in this conference","יותר מדי משתמשים בועידה זו"}. {"Too many users in this conference","יותר מדי משתמשים בועידה זו"}.
{"Total rooms","חדרים סה״כ"}.
{"To","לכבוד"}.
{"Traffic rate limit is exceeded","מגבלת שיעור תעבורה נחצתה"}. {"Traffic rate limit is exceeded","מגבלת שיעור תעבורה נחצתה"}.
{"Transactions Aborted:","טרנזקציות שבוטלו:"}.
{"Transactions Committed:","טרנזקציות שבוצעו:"}.
{"Transactions Logged:","טרנזקציות שנרשמו:"}.
{"Transactions Restarted:","טרנזקציות שהותחלו מחדש:"}.
{"Tuesday","יום שלישי"}. {"Tuesday","יום שלישי"}.
{"Unable to generate a CAPTCHA","אין אפשרות להפיק CAPTCHA"}. {"Unable to generate a CAPTCHA","אין אפשרות להפיק CAPTCHA"}.
{"Unauthorized","לא מורשה"}. {"Unauthorized","לא מורשה"}.
@ -363,11 +316,6 @@
{"Unregister","בטל רישום"}. {"Unregister","בטל רישום"}.
{"Update message of the day (don't send)","עדכן את בשורת היום (אל תשלח)"}. {"Update message of the day (don't send)","עדכן את בשורת היום (אל תשלח)"}.
{"Update message of the day on all hosts (don't send)","עדכן את בשורת היום בכל המארחים (אל תשלח)"}. {"Update message of the day on all hosts (don't send)","עדכן את בשורת היום בכל המארחים (אל תשלח)"}.
{"Update plan","תכנית עדכון"}.
{"Update ~p","עדכון ~p"}.
{"Update script","תסריט עדכון"}.
{"Update","עדכן"}.
{"Uptime:","זמן פעילות:"}.
{"User already exists","משתמש כבר קיים"}. {"User already exists","משתמש כבר קיים"}.
{"User JID","JID משתמש"}. {"User JID","JID משתמש"}.
{"User (jid)","משתמש (jid)"}. {"User (jid)","משתמש (jid)"}.
@ -379,7 +327,6 @@
{"Users Last Activity","פעילות משתמשים אחרונה"}. {"Users Last Activity","פעילות משתמשים אחרונה"}.
{"Users","משתמשים"}. {"Users","משתמשים"}.
{"User","משתמש"}. {"User","משתמש"}.
{"Validate","הענק תוקף"}.
{"Value of '~s' should be boolean","ערך של '~s' צריך להיות boolean"}. {"Value of '~s' should be boolean","ערך של '~s' צריך להיות boolean"}.
{"Value of '~s' should be datetime string","ערך של '~s' צריך להיות מחרוזת datetime"}. {"Value of '~s' should be datetime string","ערך של '~s' צריך להיות מחרוזת datetime"}.
{"Value of '~s' should be integer","ערך של '~s' צריך להיות integer"}. {"Value of '~s' should be integer","ערך של '~s' צריך להיות integer"}.

View file

@ -10,8 +10,6 @@
{"Access denied by service policy","Hozzáférés megtagadva a szolgáltatási irányelv miatt"}. {"Access denied by service policy","Hozzáférés megtagadva a szolgáltatási irányelv miatt"}.
{"Account doesn't exist","A fiók nem létezik"}. {"Account doesn't exist","A fiók nem létezik"}.
{"Action on user","Művelet a felhasználón"}. {"Action on user","Művelet a felhasználón"}.
{"Add Jabber ID","Jabber-azonosító hozzáadása"}.
{"Add New","Új hozzáadása"}.
{"Add User","Felhasználó hozzáadása"}. {"Add User","Felhasználó hozzáadása"}.
{"Administration of ","Adminisztrációja ennek: "}. {"Administration of ","Adminisztrációja ennek: "}.
{"Administration","Adminisztráció"}. {"Administration","Adminisztráció"}.
@ -66,22 +64,15 @@
{"Conference room does not exist","A konferenciaszoba nem létezik"}. {"Conference room does not exist","A konferenciaszoba nem létezik"}.
{"Configuration of room ~s","A(z) ~s szoba beállítása"}. {"Configuration of room ~s","A(z) ~s szoba beállítása"}.
{"Configuration","Beállítás"}. {"Configuration","Beállítás"}.
{"Connected Resources:","Kapcsolódott erőforrások:"}.
{"Country","Ország"}. {"Country","Ország"}.
{"CPU Time:","Processzoridő:"}.
{"Database failure","Adatbázishiba"}. {"Database failure","Adatbázishiba"}.
{"Database Tables at ~p","Adatbázistáblák itt: ~p"}.
{"Database Tables Configuration at ","Adatbázistáblák beállítása itt: "}. {"Database Tables Configuration at ","Adatbázistáblák beállítása itt: "}.
{"Database","Adatbázis"}. {"Database","Adatbázis"}.
{"December","december"}. {"December","december"}.
{"Default users as participants","Alapértelmezett felhasználók mint résztvevők"}. {"Default users as participants","Alapértelmezett felhasználók mint résztvevők"}.
{"Delete content","Tartalom törlése"}.
{"Delete message of the day on all hosts","Napi üzenet törlése az összes gépen"}. {"Delete message of the day on all hosts","Napi üzenet törlése az összes gépen"}.
{"Delete message of the day","Napi üzenet törlése"}. {"Delete message of the day","Napi üzenet törlése"}.
{"Delete Selected","Kijelöltek törlése"}.
{"Delete table","Tábla törlése"}.
{"Delete User","Felhasználó törlése"}. {"Delete User","Felhasználó törlése"}.
{"Description:","Leírás:"}.
{"Disc only copy","Csak lemez másolása"}. {"Disc only copy","Csak lemez másolása"}.
{"Dump Backup to Text File at ","Biztonsági mentés kiírása szövegfájlba itt: "}. {"Dump Backup to Text File at ","Biztonsági mentés kiírása szövegfájlba itt: "}.
{"Dump to Text File","Kiírás szövegfájlba"}. {"Dump to Text File","Kiírás szövegfájlba"}.
@ -95,7 +86,6 @@
{"ejabberd vCard module","ejabberd vCard modul"}. {"ejabberd vCard module","ejabberd vCard modul"}.
{"ejabberd Web Admin","ejabberd webes adminisztráció"}. {"ejabberd Web Admin","ejabberd webes adminisztráció"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Elemek"}.
{"Email","E-mail"}. {"Email","E-mail"}.
{"Enable logging","Naplózás engedélyezése"}. {"Enable logging","Naplózás engedélyezése"}.
{"Enabling push without 'node' attribute is not supported","A „node” attribútum nélküli felküldés engedélyezése nem támogatott"}. {"Enabling push without 'node' attribute is not supported","A „node” attribútum nélküli felküldés engedélyezése nem támogatott"}.
@ -106,7 +96,6 @@
{"Enter path to jabberd14 spool file","Adja meg a jabberd14 tárolófájl útvonalát"}. {"Enter path to jabberd14 spool file","Adja meg a jabberd14 tárolófájl útvonalát"}.
{"Enter path to text file","Adja meg a szövegfájl útvonalát"}. {"Enter path to text file","Adja meg a szövegfájl útvonalát"}.
{"Enter the text you see","Írja be a látott szöveget"}. {"Enter the text you see","Írja be a látott szöveget"}.
{"Error","Hiba"}.
{"Export all tables as SQL queries to a file:","Összes tábla exportálása SQL-lekérdezésekként egy fájlba:"}. {"Export all tables as SQL queries to a file:","Összes tábla exportálása SQL-lekérdezésekként egy fájlba:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","A kiszolgálón lévő összes felhasználó adatainak exportálása PIEFXIS-fájlokba (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","A kiszolgálón lévő összes felhasználó adatainak exportálása PIEFXIS-fájlokba (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Egy gépen lévő felhasználók adatainak exportálása PIEFXIS-fájlokba (XEP-0227):"}. {"Export data of users in a host to PIEFXIS files (XEP-0227):","Egy gépen lévő felhasználók adatainak exportálása PIEFXIS-fájlokba (XEP-0227):"}.
@ -121,24 +110,19 @@
{"File larger than ~w bytes","A fájl nagyobb ~w bájtnál"}. {"File larger than ~w bytes","A fájl nagyobb ~w bájtnál"}.
{"Friday","péntek"}. {"Friday","péntek"}.
{"From ~ts","Feladó: ~ts"}. {"From ~ts","Feladó: ~ts"}.
{"From","Feladó"}.
{"Full Name","Teljes név"}. {"Full Name","Teljes név"}.
{"Get Number of Online Users","Elérhető felhasználók számának lekérése"}. {"Get Number of Online Users","Elérhető felhasználók számának lekérése"}.
{"Get Number of Registered Users","Regisztrált felhasználók számának lekérése"}. {"Get Number of Registered Users","Regisztrált felhasználók számának lekérése"}.
{"Get Pending","Függőben lévő lekérése"}. {"Get Pending","Függőben lévő lekérése"}.
{"Get User Last Login Time","Felhasználó legutolsó bejelentkezési idejének lekérése"}. {"Get User Last Login Time","Felhasználó legutolsó bejelentkezési idejének lekérése"}.
{"Get User Password","Felhasználó jelszavának lekérése"}.
{"Get User Statistics","Felhasználói statisztikák lekérése"}. {"Get User Statistics","Felhasználói statisztikák lekérése"}.
{"Given Name","Keresztnév"}. {"Given Name","Keresztnév"}.
{"Group","Csoport"}.
{"Groups","Csoportok"}.
{"has been banned","ki lett tiltva"}. {"has been banned","ki lett tiltva"}.
{"has been kicked because of a system shutdown","ki lett rúgva egy rendszerleállítás miatt"}. {"has been kicked because of a system shutdown","ki lett rúgva egy rendszerleállítás miatt"}.
{"has been kicked because of an affiliation change","ki lett rúgva egy hovatartozás megváltozása miatt"}. {"has been kicked because of an affiliation change","ki lett rúgva egy hovatartozás megváltozása miatt"}.
{"has been kicked because the room has been changed to members-only","ki lett rúgva, mert a szobát megváltoztatták csak tagok részére"}. {"has been kicked because the room has been changed to members-only","ki lett rúgva, mert a szobát megváltoztatták csak tagok részére"}.
{"has been kicked","ki lett rúgva"}. {"has been kicked","ki lett rúgva"}.
{"Host unknown","Gép ismeretlen"}. {"Host unknown","Gép ismeretlen"}.
{"Host","Gép"}.
{"HTTP File Upload","HTTP fájlfeltöltés"}. {"HTTP File Upload","HTTP fájlfeltöltés"}.
{"Idle connection","Tétlen kapcsolat"}. {"Idle connection","Tétlen kapcsolat"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Ha nem látja itt a CAPTCHA képet, akkor látogassa meg a weboldalt."}. {"If you don't see the CAPTCHA image here, visit the web page.","Ha nem látja itt a CAPTCHA képet, akkor látogassa meg a weboldalt."}.
@ -152,7 +136,6 @@
{"Import Users From jabberd14 Spool Files","Felhasználók importálása jabberd14 tárolófájlokból"}. {"Import Users From jabberd14 Spool Files","Felhasználók importálása jabberd14 tárolófájlokból"}.
{"Improper domain part of 'from' attribute","A „from” attribútum tartományrésze helytelen"}. {"Improper domain part of 'from' attribute","A „from” attribútum tartományrésze helytelen"}.
{"Improper message type","Helytelen üzenettípus"}. {"Improper message type","Helytelen üzenettípus"}.
{"Incoming s2s Connections:","Bejövő s2s kapcsolatok:"}.
{"Incorrect CAPTCHA submit","Hibás CAPTCHA beküldés"}. {"Incorrect CAPTCHA submit","Hibás CAPTCHA beküldés"}.
{"Incorrect data form","Hibás adatűrlap"}. {"Incorrect data form","Hibás adatűrlap"}.
{"Incorrect password","Hibás jelszó"}. {"Incorrect password","Hibás jelszó"}.
@ -182,8 +165,6 @@
{"Last month","Múlt hónap"}. {"Last month","Múlt hónap"}.
{"Last year","Múlt év"}. {"Last year","Múlt év"}.
{"leaves the room","elhagyta a szobát"}. {"leaves the room","elhagyta a szobát"}.
{"List of rooms","Szobák listája"}.
{"Low level update script","Alacsony szintű frissítő parancsfájl"}.
{"Make participants list public","Résztvevőlista nyilvánossá tétele"}. {"Make participants list public","Résztvevőlista nyilvánossá tétele"}.
{"Make room CAPTCHA protected","Szoba CAPTCHA-védetté tétele"}. {"Make room CAPTCHA protected","Szoba CAPTCHA-védetté tétele"}.
{"Make room members-only","Szoba beállítása csak tagoknak"}. {"Make room members-only","Szoba beállítása csak tagoknak"}.
@ -197,20 +178,16 @@
{"Maximum Number of Occupants","Résztvevők legnagyobb száma"}. {"Maximum Number of Occupants","Résztvevők legnagyobb száma"}.
{"May","május"}. {"May","május"}.
{"Membership is required to enter this room","Tagság szükséges a szobába lépéshez"}. {"Membership is required to enter this room","Tagság szükséges a szobába lépéshez"}.
{"Members:","Tagok:"}.
{"Memory","Memória"}.
{"Message body","Üzenettörzs"}. {"Message body","Üzenettörzs"}.
{"Message not found in forwarded payload","Nem található üzenet a továbbított adatokban"}. {"Message not found in forwarded payload","Nem található üzenet a továbbított adatokban"}.
{"Messages from strangers are rejected","Idegenektől származó üzenetek vissza vannak utasítva"}. {"Messages from strangers are rejected","Idegenektől származó üzenetek vissza vannak utasítva"}.
{"Middle Name","Középső név"}. {"Middle Name","Középső név"}.
{"Moderator privileges required","Moderátori jogosultságok szükségesek"}. {"Moderator privileges required","Moderátori jogosultságok szükségesek"}.
{"Modified modules","Módosított modulok"}.
{"Module failed to handle the query","A modul nem tudta kezelni a lekérdezést"}. {"Module failed to handle the query","A modul nem tudta kezelni a lekérdezést"}.
{"Monday","hétfő"}. {"Monday","hétfő"}.
{"Multicast","Csoportcímzés"}. {"Multicast","Csoportcímzés"}.
{"Multi-User Chat","Többfelhasználós csevegés"}. {"Multi-User Chat","Többfelhasználós csevegés"}.
{"Name","Név"}. {"Name","Név"}.
{"Name:","Név:"}.
{"Neither 'jid' nor 'nick' attribute found","Sem a „jid”, sem a „nick” attribútum nem található"}. {"Neither 'jid' nor 'nick' attribute found","Sem a „jid”, sem a „nick” attribútum nem található"}.
{"Neither 'role' nor 'affiliation' attribute found","Sem a „role”, sem az „affiliation” attribútum nem található"}. {"Neither 'role' nor 'affiliation' attribute found","Sem a „role”, sem az „affiliation” attribútum nem található"}.
{"Never","Soha"}. {"Never","Soha"}.
@ -259,12 +236,9 @@
{"Number of online users","Elérhető felhasználók száma"}. {"Number of online users","Elérhető felhasználók száma"}.
{"Number of registered users","Regisztrált felhasználók száma"}. {"Number of registered users","Regisztrált felhasználók száma"}.
{"October","október"}. {"October","október"}.
{"Offline Messages","Kapcsolat nélküli üzenetek"}.
{"Offline Messages:","Kapcsolat nélküli üzenetek:"}.
{"OK","Rendben"}. {"OK","Rendben"}.
{"Old Password:","Régi jelszó:"}. {"Old Password:","Régi jelszó:"}.
{"Online Users","Elérhető felhasználók"}. {"Online Users","Elérhető felhasználók"}.
{"Online Users:","Elérhető felhasználók:"}.
{"Online","Elérhető"}. {"Online","Elérhető"}.
{"Only <enable/> or <disable/> tags are allowed","Csak az <enable/> vagy <disable/> címkék engedélyezettek"}. {"Only <enable/> or <disable/> tags are allowed","Csak az <enable/> vagy <disable/> címkék engedélyezettek"}.
{"Only <list/> element is allowed in this query","Csak a <list/> elem engedélyezett ebben a lekérdezésben"}. {"Only <list/> element is allowed in this query","Csak a <list/> elem engedélyezett ebben a lekérdezésben"}.
@ -278,17 +252,14 @@
{"Organization Name","Szervezet neve"}. {"Organization Name","Szervezet neve"}.
{"Organization Unit","Szervezeti egység"}. {"Organization Unit","Szervezeti egység"}.
{"Outgoing s2s Connections","Kimenő s2s kapcsolatok"}. {"Outgoing s2s Connections","Kimenő s2s kapcsolatok"}.
{"Outgoing s2s Connections:","Kimenő s2s kapcsolatok:"}.
{"Owner privileges required","Tulajdonosi jogosultságok szükségesek"}. {"Owner privileges required","Tulajdonosi jogosultságok szükségesek"}.
{"Packet relay is denied by service policy","Csomagátjátszás megtagadva a szolgáltatási irányelv miatt"}. {"Packet relay is denied by service policy","Csomagátjátszás megtagadva a szolgáltatási irányelv miatt"}.
{"Packet","Csomag"}.
{"Password Verification","Jelszó ellenőrzése"}. {"Password Verification","Jelszó ellenőrzése"}.
{"Password Verification:","Jelszó ellenőrzése:"}. {"Password Verification:","Jelszó ellenőrzése:"}.
{"Password","Jelszó"}. {"Password","Jelszó"}.
{"Password:","Jelszó:"}. {"Password:","Jelszó:"}.
{"Path to Dir","Útvonal a könyvtárhoz"}. {"Path to Dir","Útvonal a könyvtárhoz"}.
{"Path to File","Útvonal a fájlhoz"}. {"Path to File","Útvonal a fájlhoz"}.
{"Pending","Függőben"}.
{"Period: ","Időszak: "}. {"Period: ","Időszak: "}.
{"Ping query is incorrect","A lekérdezés pingelése hibás"}. {"Ping query is incorrect","A lekérdezés pingelése hibás"}.
{"Ping","Ping"}. {"Ping","Ping"}.
@ -310,19 +281,14 @@
{"RAM copy","RAM másolás"}. {"RAM copy","RAM másolás"}.
{"Really delete message of the day?","Valóban törli a napi üzenetet?"}. {"Really delete message of the day?","Valóban törli a napi üzenetet?"}.
{"Recipient is not in the conference room","A címzett nincs a konferenciaszobában"}. {"Recipient is not in the conference room","A címzett nincs a konferenciaszobában"}.
{"Registered Users","Regisztrált felhasználók"}.
{"Registered Users:","Regisztrált felhasználók:"}.
{"Register","Regisztráció"}. {"Register","Regisztráció"}.
{"Remote copy","Távoli másolás"}. {"Remote copy","Távoli másolás"}.
{"Remove All Offline Messages","Összes kapcsolat nélküli üzenet eltávolítása"}.
{"Remove User","Felhasználó eltávolítása"}. {"Remove User","Felhasználó eltávolítása"}.
{"Remove","Eltávolítás"}.
{"Replaced by new connection","Kicserélve egy új kapcsolattal"}. {"Replaced by new connection","Kicserélve egy új kapcsolattal"}.
{"Request has timed out","A kérés túllépte az időkorlátot"}. {"Request has timed out","A kérés túllépte az időkorlátot"}.
{"Request is ignored","A kérés mellőzve lett"}. {"Request is ignored","A kérés mellőzve lett"}.
{"Resources","Erőforrások"}. {"Resources","Erőforrások"}.
{"Restart Service","Szolgáltatás újraindítása"}. {"Restart Service","Szolgáltatás újraindítása"}.
{"Restart","Újraindítás"}.
{"Restore Backup from File at ","Biztonsági mentés visszaállítása fájlból itt: "}. {"Restore Backup from File at ","Biztonsági mentés visszaállítása fájlból itt: "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Bináris biztonsági mentés visszaállítása az ejabberd következő újraindítása után (kevesebb memóriát igényel):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Bináris biztonsági mentés visszaállítása az ejabberd következő újraindítása után (kevesebb memóriát igényel):"}.
{"Restore binary backup immediately:","Bináris biztonsági mentés visszaállítása azonnal:"}. {"Restore binary backup immediately:","Bináris biztonsági mentés visszaállítása azonnal:"}.
@ -334,15 +300,11 @@
{"Room Occupants","Szoba résztvevői"}. {"Room Occupants","Szoba résztvevői"}.
{"Room terminates","Szoba megszűnik"}. {"Room terminates","Szoba megszűnik"}.
{"Room title","Szoba címe"}. {"Room title","Szoba címe"}.
{"Roster of ~ts","~ts névsora"}.
{"Roster size","Névsor mérete"}. {"Roster size","Névsor mérete"}.
{"RPC Call Error","RPC hívási hiba"}.
{"Running Nodes","Futó csomópontok"}. {"Running Nodes","Futó csomópontok"}.
{"Saturday","szombat"}. {"Saturday","szombat"}.
{"Script check","Parancsfájl-ellenőrzés"}.
{"Search Results for ","Keresési eredménye ennek: "}. {"Search Results for ","Keresési eredménye ennek: "}.
{"Search users in ","Felhasználók keresése ebben: "}. {"Search users in ","Felhasználók keresése ebben: "}.
{"Select All","Összes kijelölése"}.
{"Send announcement to all online users on all hosts","Közlemény küldése az összes elérhető felhasználónak az összes gépen"}. {"Send announcement to all online users on all hosts","Közlemény küldése az összes elérhető felhasználónak az összes gépen"}.
{"Send announcement to all online users","Közlemény küldése az összes elérhető felhasználónak"}. {"Send announcement to all online users","Közlemény küldése az összes elérhető felhasználónak"}.
{"Send announcement to all users on all hosts","Közlemény küldése az összes felhasználónak az összes gépen"}. {"Send announcement to all users on all hosts","Közlemény küldése az összes felhasználónak az összes gépen"}.
@ -357,19 +319,13 @@
{"Show Ordinary Table","Szokásos táblázat megjelenítése"}. {"Show Ordinary Table","Szokásos táblázat megjelenítése"}.
{"Shut Down Service","Szolgáltatás leállítása"}. {"Shut Down Service","Szolgáltatás leállítása"}.
{"SOCKS5 Bytestreams","SOCKS5 bájtfolyamok"}. {"SOCKS5 Bytestreams","SOCKS5 bájtfolyamok"}.
{"Statistics of ~p","~p statisztikái"}.
{"Statistics","Statisztikák"}.
{"Stop","Leállítás"}.
{"Stopped Nodes","Leállított csomópontok"}. {"Stopped Nodes","Leállított csomópontok"}.
{"Storage Type","Tárolótípus"}.
{"Store binary backup:","Bináris biztonsági mentés tárolása:"}. {"Store binary backup:","Bináris biztonsági mentés tárolása:"}.
{"Store plain text backup:","Egyszerű szöveges biztonsági mentés tárolása:"}. {"Store plain text backup:","Egyszerű szöveges biztonsági mentés tárolása:"}.
{"Stream management is already enabled","A folyamkezelés már engedélyezve van"}. {"Stream management is already enabled","A folyamkezelés már engedélyezve van"}.
{"Stream management is not enabled","A folyamkezelés nincs engedélyezve"}. {"Stream management is not enabled","A folyamkezelés nincs engedélyezve"}.
{"Subject","Tárgy"}. {"Subject","Tárgy"}.
{"Submit","Elküldés"}.
{"Submitted","Elküldve"}. {"Submitted","Elküldve"}.
{"Subscription","Feliratkozás"}.
{"Subscriptions are not allowed","Feliratkozások nem engedélyezettek"}. {"Subscriptions are not allowed","Feliratkozások nem engedélyezettek"}.
{"Sunday","vasárnap"}. {"Sunday","vasárnap"}.
{"That nickname is already in use by another occupant","Ezt a becenevet már használja egy másik résztvevő"}. {"That nickname is already in use by another occupant","Ezt a becenevet már használja egy másik résztvevő"}.
@ -394,26 +350,19 @@
{"Thursday","csütörtök"}. {"Thursday","csütörtök"}.
{"Time delay","Időkésleltetés"}. {"Time delay","Időkésleltetés"}.
{"Timed out waiting for stream resumption","Időtúllépés a folyam újrakezdésére várakozásnál"}. {"Timed out waiting for stream resumption","Időtúllépés a folyam újrakezdésére várakozásnál"}.
{"Time","Idő"}.
{"To register, visit ~s","Regisztráláshoz látogassa meg ezt az oldalt: ~s"}. {"To register, visit ~s","Regisztráláshoz látogassa meg ezt az oldalt: ~s"}.
{"To ~ts","Címzett: ~ts"}. {"To ~ts","Címzett: ~ts"}.
{"To","Címzett"}.
{"Token TTL","Token élettartama"}. {"Token TTL","Token élettartama"}.
{"Too many active bytestreams","Túl sok aktív bájtfolyam"}. {"Too many active bytestreams","Túl sok aktív bájtfolyam"}.
{"Too many CAPTCHA requests","Túl sok CAPTCHA kérés"}. {"Too many CAPTCHA requests","Túl sok CAPTCHA kérés"}.
{"Too many child elements","Túl sok gyermekelem"}. {"Too many child elements","Túl sok gyermekelem"}.
{"Too many <item/> elements","Túl sok <item/> elem"}. {"Too many <item/> elements","Túl sok <item/> elem"}.
{"Too many <list/> elements","Túl sok <list/> elem"}. {"Too many <list/> elements","Túl sok <list/> elem"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Túl sok (~p) sikertelen hitelesítés erről az IP-címről (~ts) A cím ~ts-kor lesz feloldva UTC szerint"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Túl sok (~p) sikertelen hitelesítés erről az IP-címről (~s) A cím ~s-kor lesz feloldva UTC szerint"}.
{"Too many receiver fields were specified","Túl sok fogadómező lett meghatározva"}. {"Too many receiver fields were specified","Túl sok fogadómező lett meghatározva"}.
{"Too many unacked stanzas","Túl sok nyugtázatlan stanza"}. {"Too many unacked stanzas","Túl sok nyugtázatlan stanza"}.
{"Too many users in this conference","Túl sok felhasználó ebben a konferenciában"}. {"Too many users in this conference","Túl sok felhasználó ebben a konferenciában"}.
{"Total rooms","Szobák összesen"}.
{"Traffic rate limit is exceeded","Forgalom sebességkorlátja elérve"}. {"Traffic rate limit is exceeded","Forgalom sebességkorlátja elérve"}.
{"Transactions Aborted:","Megszakított tranzakciók:"}.
{"Transactions Committed:","Véglegesített tranzakciók:"}.
{"Transactions Logged:","Naplózott tranzakciók:"}.
{"Transactions Restarted:","Újraindított tranzakciók:"}.
{"~ts's Offline Messages Queue","~ts kapcsolat nélküli üzeneteinek tárolója"}. {"~ts's Offline Messages Queue","~ts kapcsolat nélküli üzeneteinek tárolója"}.
{"Tuesday","kedd"}. {"Tuesday","kedd"}.
{"Unable to generate a CAPTCHA","Nem lehet előállítani CAPTCHA-t"}. {"Unable to generate a CAPTCHA","Nem lehet előállítani CAPTCHA-t"}.
@ -422,16 +371,10 @@
{"Unexpected action","Váratlan művelet"}. {"Unexpected action","Váratlan művelet"}.
{"Unexpected error condition: ~p","Váratlan hibafeltétel: ~p"}. {"Unexpected error condition: ~p","Váratlan hibafeltétel: ~p"}.
{"Unregister","Regisztráció törlése"}. {"Unregister","Regisztráció törlése"}.
{"Unselect All","Összes kijelölésének megszüntetése"}.
{"Unsupported <index/> element","Nem támogatott <index/> elem"}. {"Unsupported <index/> element","Nem támogatott <index/> elem"}.
{"Unsupported version","Nem támogatott verzió"}. {"Unsupported version","Nem támogatott verzió"}.
{"Update message of the day (don't send)","Napi üzenet frissítése (ne küldje el)"}. {"Update message of the day (don't send)","Napi üzenet frissítése (ne küldje el)"}.
{"Update message of the day on all hosts (don't send)","Napi üzenet frissítése az összes gépen (ne küldje el)"}. {"Update message of the day on all hosts (don't send)","Napi üzenet frissítése az összes gépen (ne küldje el)"}.
{"Update plan","Frissítési terv"}.
{"Update ~p","~p frissítése"}.
{"Update script","Frissítő parancsfájl"}.
{"Update","Frissítés"}.
{"Uptime:","Működési idő:"}.
{"User already exists","A felhasználó már létezik"}. {"User already exists","A felhasználó már létezik"}.
{"User (jid)","Felhasználó (JID)"}. {"User (jid)","Felhasználó (JID)"}.
{"User Management","Felhasználó-kezelés"}. {"User Management","Felhasználó-kezelés"}.
@ -444,7 +387,6 @@
{"Users are not allowed to register accounts so quickly","A felhasználóknak nem engedélyezett fiókokat regisztrálni ilyen gyorsan"}. {"Users are not allowed to register accounts so quickly","A felhasználóknak nem engedélyezett fiókokat regisztrálni ilyen gyorsan"}.
{"Users Last Activity","Felhasználók utolsó tevékenysége"}. {"Users Last Activity","Felhasználók utolsó tevékenysége"}.
{"Users","Felhasználók"}. {"Users","Felhasználók"}.
{"Validate","Ellenőrzés"}.
{"Value 'get' of 'type' attribute is not allowed","A „type” attribútum „get” értéke nem engedélyezett"}. {"Value 'get' of 'type' attribute is not allowed","A „type” attribútum „get” értéke nem engedélyezett"}.
{"Value of '~s' should be boolean","A(z) „~s” értéke csak logikai lehet"}. {"Value of '~s' should be boolean","A(z) „~s” értéke csak logikai lehet"}.
{"Value of '~s' should be datetime string","A(z) „~s” értéke csak dátum és idő karakterlánc lehet"}. {"Value of '~s' should be datetime string","A(z) „~s” értéke csak dátum és idő karakterlánc lehet"}.

View file

@ -15,8 +15,6 @@
{"Access model","Model akses"}. {"Access model","Model akses"}.
{"Account doesn't exist","Akun tidak ada"}. {"Account doesn't exist","Akun tidak ada"}.
{"Action on user","Tindakan pada pengguna"}. {"Action on user","Tindakan pada pengguna"}.
{"Add Jabber ID","Tambah Jabber ID"}.
{"Add New","Tambah Baru"}.
{"Add User","Tambah Pengguna"}. {"Add User","Tambah Pengguna"}.
{"Administration of ","Administrasi "}. {"Administration of ","Administrasi "}.
{"Administration","Administrasi"}. {"Administration","Administrasi"}.
@ -87,28 +85,20 @@
{"Conference room does not exist","Ruang Konferensi tidak ada"}. {"Conference room does not exist","Ruang Konferensi tidak ada"}.
{"Configuration of room ~s","Pengaturan ruangan ~s"}. {"Configuration of room ~s","Pengaturan ruangan ~s"}.
{"Configuration","Pengaturan"}. {"Configuration","Pengaturan"}.
{"Connected Resources:","Sumber Daya Terhubung:"}.
{"Contact Addresses (normally, room owner or owners)","Alamat Kontak (biasanya, pemilik atau pemilik kamar)"}. {"Contact Addresses (normally, room owner or owners)","Alamat Kontak (biasanya, pemilik atau pemilik kamar)"}.
{"Country","Negara"}. {"Country","Negara"}.
{"CPU Time:","Waktu CPU:"}.
{"Current Discussion Topic","Topik diskusi saat ini"}. {"Current Discussion Topic","Topik diskusi saat ini"}.
{"Database failure","Kegagalan database"}. {"Database failure","Kegagalan database"}.
{"Database Tables at ~p","Tabel Database pada ~p"}.
{"Database Tables Configuration at ","Konfigurasi Tabel Database pada "}. {"Database Tables Configuration at ","Konfigurasi Tabel Database pada "}.
{"Database","Database"}. {"Database","Database"}.
{"December","Desember"}. {"December","Desember"}.
{"Default users as participants","pengguna pertama kali masuk sebagai participant"}. {"Default users as participants","pengguna pertama kali masuk sebagai participant"}.
{"Delete content","Hapus isi"}.
{"Delete message of the day on all hosts","Hapus pesan harian pada semua host"}. {"Delete message of the day on all hosts","Hapus pesan harian pada semua host"}.
{"Delete message of the day","Hapus pesan harian"}. {"Delete message of the day","Hapus pesan harian"}.
{"Delete Selected","Hapus Yang Terpilih"}.
{"Delete table","Hapus tabel"}.
{"Delete User","Hapus Pengguna"}. {"Delete User","Hapus Pengguna"}.
{"Deliver event notifications","Memberikan pemberitahuan acara"}. {"Deliver event notifications","Memberikan pemberitahuan acara"}.
{"Deliver payloads with event notifications","Memberikan muatan dengan pemberitahuan acara"}. {"Deliver payloads with event notifications","Memberikan muatan dengan pemberitahuan acara"}.
{"Description:","Keterangan:"}.
{"Disc only copy","Hanya salinan dari disc"}. {"Disc only copy","Hanya salinan dari disc"}.
{"Displayed:","Tampilkan:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Jangan beritahukan kata sandi Anda ke siapapun, bahkan ke administrator layanan XMPP."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","Jangan beritahukan kata sandi Anda ke siapapun, bahkan ke administrator layanan XMPP."}.
{"Dump Backup to Text File at ","Dump Backup menjadi File Teks di "}. {"Dump Backup to Text File at ","Dump Backup menjadi File Teks di "}.
{"Dump to Text File","Dump menjadi File Teks"}. {"Dump to Text File","Dump menjadi File Teks"}.
@ -123,7 +113,6 @@
{"ejabberd vCard module","Modul ejabberd vCard"}. {"ejabberd vCard module","Modul ejabberd vCard"}.
{"ejabberd Web Admin","Admin Web ejabberd"}. {"ejabberd Web Admin","Admin Web ejabberd"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Elemen-elemen"}.
{"Email Address","Alamat email"}. {"Email Address","Alamat email"}.
{"Email","Email"}. {"Email","Email"}.
{"Enable logging","Aktifkan log"}. {"Enable logging","Aktifkan log"}.
@ -137,7 +126,6 @@
{"Enter path to text file","Masukkan path ke file teks"}. {"Enter path to text file","Masukkan path ke file teks"}.
{"Enter the text you see","Masukkan teks yang Anda lihat"}. {"Enter the text you see","Masukkan teks yang Anda lihat"}.
{"Erlang XMPP Server","Server Erlang XMPP"}. {"Erlang XMPP Server","Server Erlang XMPP"}.
{"Error","Kesalahan"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Kecualikan Jabber IDs dari tantangan CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Kecualikan Jabber IDs dari tantangan CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Ekspor semua tabel sebagai kueri SQL ke file:"}. {"Export all tables as SQL queries to a file:","Ekspor semua tabel sebagai kueri SQL ke file:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Ekspor data dari semua pengguna pada layanan ke berkas PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Ekspor data dari semua pengguna pada layanan ke berkas PIEFXIS (XEP-0227):"}.
@ -155,7 +143,6 @@
{"Fill in the form to search for any matching XMPP User","Isi kolom untuk mencari pengguna XMPP"}. {"Fill in the form to search for any matching XMPP User","Isi kolom untuk mencari pengguna XMPP"}.
{"Friday","Jumat"}. {"Friday","Jumat"}.
{"From ~ts","Dari ~ts"}. {"From ~ts","Dari ~ts"}.
{"From","Dari"}.
{"Full List of Room Admins","Daftar Lengkap Admin Kamar"}. {"Full List of Room Admins","Daftar Lengkap Admin Kamar"}.
{"Full List of Room Owners","Daftar Lengkap Pemilik Kamar"}. {"Full List of Room Owners","Daftar Lengkap Pemilik Kamar"}.
{"Full Name","Nama Lengkap"}. {"Full Name","Nama Lengkap"}.
@ -163,20 +150,15 @@
{"Get Number of Registered Users","Dapatkan Jumlah Pengguna Yang Terdaftar"}. {"Get Number of Registered Users","Dapatkan Jumlah Pengguna Yang Terdaftar"}.
{"Get Pending","Lihat yang tertunda"}. {"Get Pending","Lihat yang tertunda"}.
{"Get User Last Login Time","Lihat Waktu Login Terakhir Pengguna"}. {"Get User Last Login Time","Lihat Waktu Login Terakhir Pengguna"}.
{"Get User Password","Dapatkan User Password"}.
{"Get User Statistics","Dapatkan Statistik Pengguna"}. {"Get User Statistics","Dapatkan Statistik Pengguna"}.
{"Given Name","Nama"}. {"Given Name","Nama"}.
{"Grant voice to this person?","Ijinkan akses suara kepadanya?"}. {"Grant voice to this person?","Ijinkan akses suara kepadanya?"}.
{"Group","Grup"}.
{"Groups that will be displayed to the members","Grup yang akan ditampilkan kepada anggota"}.
{"Groups","Grup"}.
{"has been banned","telah dibanned"}. {"has been banned","telah dibanned"}.
{"has been kicked because of a system shutdown","telah dikick karena sistem shutdown"}. {"has been kicked because of a system shutdown","telah dikick karena sistem shutdown"}.
{"has been kicked because of an affiliation change","telah dikick karena perubahan afiliasi"}. {"has been kicked because of an affiliation change","telah dikick karena perubahan afiliasi"}.
{"has been kicked because the room has been changed to members-only","telah dikick karena ruangan telah diubah menjadi hanya untuk member"}. {"has been kicked because the room has been changed to members-only","telah dikick karena ruangan telah diubah menjadi hanya untuk member"}.
{"has been kicked","telah dikick"}. {"has been kicked","telah dikick"}.
{"Host unknown","Host tidak dikenal"}. {"Host unknown","Host tidak dikenal"}.
{"Host","Host"}.
{"HTTP File Upload","Unggah Berkas HTTP"}. {"HTTP File Upload","Unggah Berkas HTTP"}.
{"Idle connection","Koneksi menganggur"}. {"Idle connection","Koneksi menganggur"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Jika Anda tidak melihat gambar CAPTCHA disini, silahkan kunjungi halaman web."}. {"If you don't see the CAPTCHA image here, visit the web page.","Jika Anda tidak melihat gambar CAPTCHA disini, silahkan kunjungi halaman web."}.
@ -189,7 +171,6 @@
{"Import Users from Dir at ","Impor Pengguna dari Dir di "}. {"Import Users from Dir at ","Impor Pengguna dari Dir di "}.
{"Import Users From jabberd14 Spool Files","Impor Pengguna Dari jabberd14 Spool File"}. {"Import Users From jabberd14 Spool Files","Impor Pengguna Dari jabberd14 Spool File"}.
{"Improper message type","Jenis pesan yang tidak benar"}. {"Improper message type","Jenis pesan yang tidak benar"}.
{"Incoming s2s Connections:","Koneksi s2s masuk:"}.
{"Incorrect CAPTCHA submit","Isian CAPTCHA salah"}. {"Incorrect CAPTCHA submit","Isian CAPTCHA salah"}.
{"Incorrect data form","Formulir data salah"}. {"Incorrect data form","Formulir data salah"}.
{"Incorrect password","Kata sandi salah"}. {"Incorrect password","Kata sandi salah"}.
@ -212,7 +193,6 @@
{"Last month","Akhir bulan"}. {"Last month","Akhir bulan"}.
{"Last year","Akhir tahun"}. {"Last year","Akhir tahun"}.
{"leaves the room","meninggalkan ruangan"}. {"leaves the room","meninggalkan ruangan"}.
{"Low level update script","Perbaruan naskah tingkat rendah"}.
{"Make participants list public","Buat daftar participant diketahui oleh public"}. {"Make participants list public","Buat daftar participant diketahui oleh public"}.
{"Make room CAPTCHA protected","Buat ruangan dilindungi dengan CAPTCHA"}. {"Make room CAPTCHA protected","Buat ruangan dilindungi dengan CAPTCHA"}.
{"Make room members-only","Buat ruangan hanya untuk member saja"}. {"Make room members-only","Buat ruangan hanya untuk member saja"}.
@ -224,17 +204,13 @@
{"Max payload size in bytes","Max kapasitas ukuran dalam bytes"}. {"Max payload size in bytes","Max kapasitas ukuran dalam bytes"}.
{"Maximum Number of Occupants","Maksimum Jumlah Penghuni"}. {"Maximum Number of Occupants","Maksimum Jumlah Penghuni"}.
{"May","Mei"}. {"May","Mei"}.
{"Members:","Anggota:"}.
{"Membership is required to enter this room","Hanya Member yang dapat masuk ruangan ini"}. {"Membership is required to enter this room","Hanya Member yang dapat masuk ruangan ini"}.
{"Memory","Memori"}.
{"Message body","Isi Pesan"}. {"Message body","Isi Pesan"}.
{"Middle Name","Nama Tengah"}. {"Middle Name","Nama Tengah"}.
{"Moderator privileges required","Hak istimewa moderator dibutuhkan"}. {"Moderator privileges required","Hak istimewa moderator dibutuhkan"}.
{"Modified modules","Modifikasi modul-modul"}.
{"Monday","Senin"}. {"Monday","Senin"}.
{"Multiple <item/> elements are not allowed by RFC6121","Beberapa elemen <item/> tidak diizinkan oleh RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","Beberapa elemen <item/> tidak diizinkan oleh RFC6121"}.
{"Name","Nama"}. {"Name","Nama"}.
{"Name:","Nama:"}.
{"Never","Tidak Pernah"}. {"Never","Tidak Pernah"}.
{"New Password:","Password Baru:"}. {"New Password:","Password Baru:"}.
{"Nickname Registration at ","Pendaftaran Julukan pada "}. {"Nickname Registration at ","Pendaftaran Julukan pada "}.
@ -257,11 +233,8 @@
{"Number of online users","Jumlah pengguna online"}. {"Number of online users","Jumlah pengguna online"}.
{"Number of registered users","Jumlah pengguna terdaftar"}. {"Number of registered users","Jumlah pengguna terdaftar"}.
{"October","Oktober"}. {"October","Oktober"}.
{"Offline Messages","Pesan Offline"}.
{"Offline Messages:","Pesan Offline:"}.
{"OK","YA"}. {"OK","YA"}.
{"Old Password:","Password Lama:"}. {"Old Password:","Password Lama:"}.
{"Online Users:","Pengguna Online:"}.
{"Online Users","Pengguna Yang Online"}. {"Online Users","Pengguna Yang Online"}.
{"Online","Online"}. {"Online","Online"}.
{"Only deliver notifications to available users","Hanya mengirimkan pemberitahuan kepada pengguna yang tersedia"}. {"Only deliver notifications to available users","Hanya mengirimkan pemberitahuan kepada pengguna yang tersedia"}.
@ -273,9 +246,7 @@
{"Organization Name","Nama Organisasi"}. {"Organization Name","Nama Organisasi"}.
{"Organization Unit","Unit Organisasi"}. {"Organization Unit","Unit Organisasi"}.
{"Outgoing s2s Connections","Koneksi Keluar s2s"}. {"Outgoing s2s Connections","Koneksi Keluar s2s"}.
{"Outgoing s2s Connections:","Koneksi s2s yang keluar:"}.
{"Owner privileges required","Hak istimewa owner dibutuhkan"}. {"Owner privileges required","Hak istimewa owner dibutuhkan"}.
{"Packet","Paket"}.
{"Participant","Partisipan"}. {"Participant","Partisipan"}.
{"Password Verification:","Verifikasi Kata Sandi:"}. {"Password Verification:","Verifikasi Kata Sandi:"}.
{"Password Verification","Verifikasi Sandi"}. {"Password Verification","Verifikasi Sandi"}.
@ -283,7 +254,6 @@
{"Password","Sandi"}. {"Password","Sandi"}.
{"Path to Dir","Jalur ke Dir"}. {"Path to Dir","Jalur ke Dir"}.
{"Path to File","Jalur ke File"}. {"Path to File","Jalur ke File"}.
{"Pending","Tertunda"}.
{"Period: ","Periode: "}. {"Period: ","Periode: "}.
{"Persist items to storage","Pertahankan item ke penyimpanan"}. {"Persist items to storage","Pertahankan item ke penyimpanan"}.
{"Persistent","Persisten"}. {"Persistent","Persisten"}.
@ -314,20 +284,15 @@
{"Receive notification of new nodes only","Terima notifikasi dari node baru saja"}. {"Receive notification of new nodes only","Terima notifikasi dari node baru saja"}.
{"Recipient is not in the conference room","Penerima tidak berada di ruangan konferensi"}. {"Recipient is not in the conference room","Penerima tidak berada di ruangan konferensi"}.
{"Register an XMPP account","Daftarkan sebuah akun XMPP"}. {"Register an XMPP account","Daftarkan sebuah akun XMPP"}.
{"Registered Users","Pengguna Terdaftar"}.
{"Registered Users:","Pengguna Terdaftar:"}.
{"Register","Mendaftar"}. {"Register","Mendaftar"}.
{"Remote copy","Salinan Remote"}. {"Remote copy","Salinan Remote"}.
{"Remove All Offline Messages","Hapus Semua Pesan Offline"}.
{"Remove User","Hapus Pengguna"}. {"Remove User","Hapus Pengguna"}.
{"Remove","Menghapus"}.
{"Replaced by new connection","Diganti dengan koneksi baru"}. {"Replaced by new connection","Diganti dengan koneksi baru"}.
{"Request has timed out","Waktu permintaan telah habis"}. {"Request has timed out","Waktu permintaan telah habis"}.
{"Request is ignored","Permintaan diabaikan"}. {"Request is ignored","Permintaan diabaikan"}.
{"Requested role","Peran yang diminta"}. {"Requested role","Peran yang diminta"}.
{"Resources","Sumber daya"}. {"Resources","Sumber daya"}.
{"Restart Service","Restart Layanan"}. {"Restart Service","Restart Layanan"}.
{"Restart","Jalankan Ulang"}.
{"Restore Backup from File at ","Kembalikan Backup dari File pada "}. {"Restore Backup from File at ","Kembalikan Backup dari File pada "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Mengembalikan cadangan yang berpasanagn setelah ejabberd berikutnya dijalankan ulang (memerlukan memori lebih sedikit):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Mengembalikan cadangan yang berpasanagn setelah ejabberd berikutnya dijalankan ulang (memerlukan memori lebih sedikit):"}.
{"Restore binary backup immediately:","Segera mengembalikan cadangan yang berpasangan:"}. {"Restore binary backup immediately:","Segera mengembalikan cadangan yang berpasangan:"}.
@ -341,20 +306,15 @@
{"Room terminates","Ruang dihentikan"}. {"Room terminates","Ruang dihentikan"}.
{"Room title","Nama Ruangan"}. {"Room title","Nama Ruangan"}.
{"Roster groups allowed to subscribe","Kelompok kontak yang diizinkan untuk berlangganan"}. {"Roster groups allowed to subscribe","Kelompok kontak yang diizinkan untuk berlangganan"}.
{"Roster of ~ts","Daftar ~ts"}.
{"Roster size","Ukuran Daftar Kontak"}. {"Roster size","Ukuran Daftar Kontak"}.
{"Roster:","Daftar:"}.
{"RPC Call Error","Panggilan Kesalahan RPC"}.
{"Running Nodes","Menjalankan Node"}. {"Running Nodes","Menjalankan Node"}.
{"~s invites you to the room ~s","~s mengundang anda masuk kamar ~s"}. {"~s invites you to the room ~s","~s mengundang anda masuk kamar ~s"}.
{"Saturday","Sabtu"}. {"Saturday","Sabtu"}.
{"Script check","Periksa naskah"}.
{"Search from the date","Cari dari tanggal"}. {"Search from the date","Cari dari tanggal"}.
{"Search Results for ","Hasil Pencarian untuk "}. {"Search Results for ","Hasil Pencarian untuk "}.
{"Search the text","Cari teks"}. {"Search the text","Cari teks"}.
{"Search until the date","Cari sampai tanggal"}. {"Search until the date","Cari sampai tanggal"}.
{"Search users in ","Pencarian pengguna dalam "}. {"Search users in ","Pencarian pengguna dalam "}.
{"Select All","Pilih Semua"}.
{"Send announcement to all online users on all hosts","Kirim pengumuman untuk semua pengguna yang online pada semua host"}. {"Send announcement to all online users on all hosts","Kirim pengumuman untuk semua pengguna yang online pada semua host"}.
{"Send announcement to all online users","Kirim pengumuman untuk semua pengguna yang online"}. {"Send announcement to all online users","Kirim pengumuman untuk semua pengguna yang online"}.
{"Send announcement to all users on all hosts","Kirim pengumuman untuk semua pengguna pada semua host"}. {"Send announcement to all users on all hosts","Kirim pengumuman untuk semua pengguna pada semua host"}.
@ -372,21 +332,15 @@
{"Specify the event message type","Tentukan jenis acara pesan"}. {"Specify the event message type","Tentukan jenis acara pesan"}.
{"Specify the publisher model","Tentukan model penerbitan"}. {"Specify the publisher model","Tentukan model penerbitan"}.
{"Stanza ID","ID Stanza"}. {"Stanza ID","ID Stanza"}.
{"Statistics of ~p","statistik dari ~p"}.
{"Statistics","Statistik"}.
{"Stop","Hentikan"}.
{"Stopped Nodes","Menghentikan node"}. {"Stopped Nodes","Menghentikan node"}.
{"Storage Type","Jenis Penyimpanan"}.
{"Store binary backup:","Penyimpanan cadangan yang berpasangan:"}. {"Store binary backup:","Penyimpanan cadangan yang berpasangan:"}.
{"Store plain text backup:","Simpan cadangan teks biasa:"}. {"Store plain text backup:","Simpan cadangan teks biasa:"}.
{"Stream management is already enabled","Manajemen stream sudah diaktifkan"}. {"Stream management is already enabled","Manajemen stream sudah diaktifkan"}.
{"Stream management is not enabled","Manajemen stream tidak diaktifkan"}. {"Stream management is not enabled","Manajemen stream tidak diaktifkan"}.
{"Subject","Subyek"}. {"Subject","Subyek"}.
{"Submit","Serahkan"}.
{"Submitted","Ulangi masukan"}. {"Submitted","Ulangi masukan"}.
{"Subscriber Address","Alamat Pertemanan"}. {"Subscriber Address","Alamat Pertemanan"}.
{"Subscribers may publish","Pelanggan dapat mempublikasikan"}. {"Subscribers may publish","Pelanggan dapat mempublikasikan"}.
{"Subscription","Berlangganan"}.
{"Subscriptions are not allowed","Langganan tidak diperbolehkan"}. {"Subscriptions are not allowed","Langganan tidak diperbolehkan"}.
{"Sunday","Minggu"}. {"Sunday","Minggu"}.
{"Text associated with a picture","Teks yang terkait dengan gambar"}. {"Text associated with a picture","Teks yang terkait dengan gambar"}.
@ -422,11 +376,9 @@
{"This service can not process the address: ~s","Layanan ini tidak dapat memproses alamat: ~s"}. {"This service can not process the address: ~s","Layanan ini tidak dapat memproses alamat: ~s"}.
{"Thursday","Kamis"}. {"Thursday","Kamis"}.
{"Time delay","Waktu tunda"}. {"Time delay","Waktu tunda"}.
{"Time","Waktu"}.
{"To register, visit ~s","Untuk mendaftar, kunjungi ~s"}. {"To register, visit ~s","Untuk mendaftar, kunjungi ~s"}.
{"To ~ts","Kepada ~ts"}. {"To ~ts","Kepada ~ts"}.
{"Token TTL","TTL Token"}. {"Token TTL","TTL Token"}.
{"To","Kepada"}.
{"Too many active bytestreams","Terlalu banyak bytestream aktif"}. {"Too many active bytestreams","Terlalu banyak bytestream aktif"}.
{"Too many CAPTCHA requests","Terlalu banyak permintaan CAPTCHA"}. {"Too many CAPTCHA requests","Terlalu banyak permintaan CAPTCHA"}.
{"Too many child elements","Terlalu banyak elemen turunan"}. {"Too many child elements","Terlalu banyak elemen turunan"}.
@ -435,12 +387,7 @@
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Terlalu banyak (~p) percobaan otentifikasi yang gagal dari alamat IP (~s). Alamat akan di unblok pada ~s UTC"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Terlalu banyak (~p) percobaan otentifikasi yang gagal dari alamat IP (~s). Alamat akan di unblok pada ~s UTC"}.
{"Too many receiver fields were specified","Terlalu banyak bidang penerima yang ditentukan"}. {"Too many receiver fields were specified","Terlalu banyak bidang penerima yang ditentukan"}.
{"Too many users in this conference","Terlalu banyak pengguna di grup ini"}. {"Too many users in this conference","Terlalu banyak pengguna di grup ini"}.
{"Total rooms","Total kamar"}.
{"Traffic rate limit is exceeded","Batas tingkat lalu lintas terlampaui"}. {"Traffic rate limit is exceeded","Batas tingkat lalu lintas terlampaui"}.
{"Transactions Aborted:","Transaksi dibatalkan:"}.
{"Transactions Committed:","Transaksi yang dilakukan:"}.
{"Transactions Logged:","Transaksi yang ditempuh:"}.
{"Transactions Restarted:","Transaksi yang dijalankan ulang:"}.
{"~ts's Offline Messages Queue","~ts's antrian Pesan Offline"}. {"~ts's Offline Messages Queue","~ts's antrian Pesan Offline"}.
{"Tuesday","Selasa"}. {"Tuesday","Selasa"}.
{"Unable to generate a CAPTCHA","Tidak dapat menghasilkan CAPTCHA"}. {"Unable to generate a CAPTCHA","Tidak dapat menghasilkan CAPTCHA"}.
@ -450,16 +397,10 @@
{"Unexpected error condition: ~p","Kondisi kerusakan yang tidak diduga: ~p"}. {"Unexpected error condition: ~p","Kondisi kerusakan yang tidak diduga: ~p"}.
{"Unregister an XMPP account","Nonaktifkan akun XMPP"}. {"Unregister an XMPP account","Nonaktifkan akun XMPP"}.
{"Unregister","Nonaktifkan"}. {"Unregister","Nonaktifkan"}.
{"Unselect All","Batalkan semua"}.
{"Unsupported <index/> element","Elemen <index/> tidak didukung"}. {"Unsupported <index/> element","Elemen <index/> tidak didukung"}.
{"Unsupported version","Versi tidak didukung"}. {"Unsupported version","Versi tidak didukung"}.
{"Update message of the day (don't send)","Rubah pesan harian (tidak dikirim)"}. {"Update message of the day (don't send)","Rubah pesan harian (tidak dikirim)"}.
{"Update message of the day on all hosts (don't send)","Rubah pesan harian pada semua host (tidak dikirim)"}. {"Update message of the day on all hosts (don't send)","Rubah pesan harian pada semua host (tidak dikirim)"}.
{"Update plan","Rencana Perubahan"}.
{"Update ~p","Memperbaharui ~p"}.
{"Update script","Perbarui naskah"}.
{"Update","Memperbarui"}.
{"Uptime:","Sampai saat:"}.
{"User already exists","Pengguna sudah ada"}. {"User already exists","Pengguna sudah ada"}.
{"User (jid)","Pengguna (jid)"}. {"User (jid)","Pengguna (jid)"}.
{"User JID","Pengguna JID"}. {"User JID","Pengguna JID"}.
@ -473,15 +414,12 @@
{"Users are not allowed to register accounts so quickly","Pengguna tidak diperkenankan untuk mendaftar akun begitu cepat"}. {"Users are not allowed to register accounts so quickly","Pengguna tidak diperkenankan untuk mendaftar akun begitu cepat"}.
{"Users Last Activity","Aktifitas terakhir para pengguna"}. {"Users Last Activity","Aktifitas terakhir para pengguna"}.
{"Users","Pengguna"}. {"Users","Pengguna"}.
{"Validate","Mengesahkan"}.
{"Value 'get' of 'type' attribute is not allowed","Nilai 'get' dari 'type' atribut tidak diperbolehkan"}. {"Value 'get' of 'type' attribute is not allowed","Nilai 'get' dari 'type' atribut tidak diperbolehkan"}.
{"Value of '~s' should be boolean","Nilai '~ s' harus boolean"}. {"Value of '~s' should be boolean","Nilai '~ s' harus boolean"}.
{"Value of '~s' should be datetime string","Nilai '~s' harus string datetime"}. {"Value of '~s' should be datetime string","Nilai '~s' harus string datetime"}.
{"Value of '~s' should be integer","Nilai '~ s' harus integer"}. {"Value of '~s' should be integer","Nilai '~ s' harus integer"}.
{"Value 'set' of 'type' attribute is not allowed","Nilai 'set' dari 'type' atribut tidak diperbolehkan"}. {"Value 'set' of 'type' attribute is not allowed","Nilai 'set' dari 'type' atribut tidak diperbolehkan"}.
{"vCard User Search","vCard Pencarian Pengguna"}. {"vCard User Search","vCard Pencarian Pengguna"}.
{"View Queue","Lihat antrian"}.
{"View Roster","Lihat daftar kontak"}.
{"Virtual Hosts","Host Virtual"}. {"Virtual Hosts","Host Virtual"}.
{"Visitors are not allowed to change their nicknames in this room","Tamu tidak diperbolehkan untuk mengubah nama panggilan di ruangan ini"}. {"Visitors are not allowed to change their nicknames in this room","Tamu tidak diperbolehkan untuk mengubah nama panggilan di ruangan ini"}.
{"Visitors are not allowed to send messages to all occupants","Tamu tidak diperbolehkan untuk mengirim pesan ke semua penghuni"}. {"Visitors are not allowed to send messages to all occupants","Tamu tidak diperbolehkan untuk mengirim pesan ke semua penghuni"}.

View file

@ -9,21 +9,19 @@
{"A description of the node","Una descrizione del nodo"}. {"A description of the node","Una descrizione del nodo"}.
{"A friendly name for the node","Un nome comodo per il nodo"}. {"A friendly name for the node","Un nome comodo per il nodo"}.
{"A password is required to enter this room","Per entrare in questa stanza è necessaria una password"}. {"A password is required to enter this room","Per entrare in questa stanza è necessaria una password"}.
{"A Web Page","Un Pagina Web"}. {"A Web Page","Una pagina web"}.
{"Accept","Accettare"}. {"Accept","Accettare"}.
{"Access denied by service policy","Accesso impedito dalle politiche del servizio"}. {"Access denied by service policy","Accesso negato dalle politiche del servizio"}.
{"Access model","Modello di accesso"}. {"Access model","Modello di accesso"}.
{"Account doesn't exist","L'account non esiste"}. {"Account doesn't exist","L'account non esiste"}.
{"Action on user","Azione sull'utente"}. {"Action on user","Azione sull'utente"}.
{"Add a hat to a user","Aggiungere un cappello a un utente"}. {"Add a hat to a user","Aggiungere un cappello a un utente"}.
{"Add Jabber ID","Aggiungere un Jabber ID"}. {"Add User","Aggiungere un utente"}.
{"Add New","Aggiungere Nuovo"}.
{"Add User","Aggiungere un Utente"}.
{"Administration of ","Amministrazione di "}. {"Administration of ","Amministrazione di "}.
{"Administration","Amministrazione"}. {"Administration","Amministrazione"}.
{"Administrator privileges required","Sono richiesti privilegi di amministratore"}. {"Administrator privileges required","Sono richiesti privilegi di amministratore"}.
{"All activity","Tutta l'attività"}. {"All activity","Tutta l'attività"}.
{"All Users","Tutti gli Utenti"}. {"All Users","Tutti gli utenti"}.
{"Allow subscription","Consenti iscrizione"}. {"Allow subscription","Consenti iscrizione"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Consentire a questo ID Jabber di iscriversi a questo nodo pubsub?"}. {"Allow this Jabber ID to subscribe to this pubsub node?","Consentire a questo ID Jabber di iscriversi a questo nodo pubsub?"}.
{"Allow this person to register with the room?","Permettere a questa persona di registrarsi con la stanza?"}. {"Allow this person to register with the room?","Permettere a questa persona di registrarsi con la stanza?"}.
@ -48,7 +46,6 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Chiunque abbia un abbonamento di presenza di entrambi o di può sottoscrivere e recuperare elementi"}. {"Anyone with a presence subscription of both or from may subscribe and retrieve items","Chiunque abbia un abbonamento di presenza di entrambi o di può sottoscrivere e recuperare elementi"}.
{"Anyone with Voice","Chiunque abbia la Voce"}. {"Anyone with Voice","Chiunque abbia la Voce"}.
{"Anyone","Chiunque"}. {"Anyone","Chiunque"}.
{"Apparently your account has no administration rights in this server. Please check how to grant admin rights in: https://docs.ejabberd.im/admin/installation/#administration-account","A quanto pare il tuo account non ha diritti di amministrazione su questo server. Controlla come concedere i diritti di amministratore in: https://docs.ejabberd.im/admin/installation/#administration-account"}.
{"April","Aprile"}. {"April","Aprile"}.
{"Attribute 'channel' is required for this request","Per questa richiesta è richiesto l'attributo 'canale'"}. {"Attribute 'channel' is required for this request","Per questa richiesta è richiesto l'attributo 'canale'"}.
{"Attribute 'id' is mandatory for MIX messages","L'attributo 'id' è obbligatorio per i messaggi MIX"}. {"Attribute 'id' is mandatory for MIX messages","L'attributo 'id' è obbligatorio per i messaggi MIX"}.
@ -93,30 +90,20 @@
{"Conference room does not exist","La stanza per conferenze non esiste"}. {"Conference room does not exist","La stanza per conferenze non esiste"}.
{"Configuration of room ~s","Configurazione per la stanza ~s"}. {"Configuration of room ~s","Configurazione per la stanza ~s"}.
{"Configuration","Configurazione"}. {"Configuration","Configurazione"}.
{"Connected Resources:","Risorse connesse:"}.
{"Contact Addresses (normally, room owner or owners)","Indirizzi di contatto (normalmente, proprietario o proprietari della stanza)"}. {"Contact Addresses (normally, room owner or owners)","Indirizzi di contatto (normalmente, proprietario o proprietari della stanza)"}.
{"Contrib Modules","Moduli di Contributo"}.
{"Country","Paese"}. {"Country","Paese"}.
{"CPU Time:","Tempo CPU:"}.
{"Current Discussion Topic","Argomento di discussione attuale"}. {"Current Discussion Topic","Argomento di discussione attuale"}.
{"Database failure","Errore del database"}. {"Database failure","Errore del database"}.
{"Database Tables at ~p","Tabelle del database a ~p"}.
{"Database Tables Configuration at ","Configurazione delle tabelle del database su "}. {"Database Tables Configuration at ","Configurazione delle tabelle del database su "}.
{"Database","Database"}. {"Database","Database"}.
{"December","Dicembre"}. {"December","Dicembre"}.
{"Default users as participants","Definire per default gli utenti come partecipanti"}. {"Default users as participants","Definire per default gli utenti come partecipanti"}.
{"Delete content","Elimina contenuto"}.
{"Delete message of the day on all hosts","Eliminare il messaggio del giorno (MOTD) su tutti gli host"}. {"Delete message of the day on all hosts","Eliminare il messaggio del giorno (MOTD) su tutti gli host"}.
{"Delete message of the day","Eliminare il messaggio del giorno (MOTD)"}. {"Delete message of the day","Eliminare il messaggio del giorno (MOTD)"}.
{"Delete Selected","Elimina Selezionato"}.
{"Delete table","Elimina tabella"}.
{"Delete User","Eliminare l'utente"}. {"Delete User","Eliminare l'utente"}.
{"Deliver event notifications","Inviare notifiche degli eventi"}. {"Deliver event notifications","Inviare notifiche degli eventi"}.
{"Deliver payloads with event notifications","Inviare il contenuto del messaggio con la notifica dell'evento"}. {"Deliver payloads with event notifications","Inviare il contenuto del messaggio con la notifica dell'evento"}.
{"Description:","Descrizione:"}.
{"Disc only copy","Copia solo su disco"}. {"Disc only copy","Copia solo su disco"}.
{"'Displayed groups' not added (they do not exist!): ","'Gruppi visualizzati' non aggiunti (non esistono!): "}.
{"Displayed:","Visualizzato:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Non rivelare la tua password a nessuno, nemmeno agli amministratori del server XMPP."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","Non rivelare la tua password a nessuno, nemmeno agli amministratori del server XMPP."}.
{"Dump Backup to Text File at ","Trascrivere il salvataggio sul file di testo "}. {"Dump Backup to Text File at ","Trascrivere il salvataggio sul file di testo "}.
{"Dump to Text File","Trascrivere su file di testo"}. {"Dump to Text File","Trascrivere su file di testo"}.
@ -132,7 +119,6 @@
{"ejabberd vCard module","Modulo vCard per ejabberd"}. {"ejabberd vCard module","Modulo vCard per ejabberd"}.
{"ejabberd Web Admin","Amministrazione web ejabberd"}. {"ejabberd Web Admin","Amministrazione web ejabberd"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Elementi"}.
{"Email Address","Indirizzo di Posta Elettronica"}. {"Email Address","Indirizzo di Posta Elettronica"}.
{"Email","E-mail"}. {"Email","E-mail"}.
{"Enable hats","Abilitare i cappelli"}. {"Enable hats","Abilitare i cappelli"}.
@ -147,7 +133,6 @@
{"Enter path to text file","Immettere il percorso del file di testo"}. {"Enter path to text file","Immettere il percorso del file di testo"}.
{"Enter the text you see","Immettere il testo visibile"}. {"Enter the text you see","Immettere il testo visibile"}.
{"Erlang XMPP Server","Server XMPP Erlang"}. {"Erlang XMPP Server","Server XMPP Erlang"}.
{"Error","Errore"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Escludi degli ID Jabber dal passaggio CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Escludi degli ID Jabber dal passaggio CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Esporta tutte le tabelle come query SQL in un file:"}. {"Export all tables as SQL queries to a file:","Esporta tutte le tabelle come query SQL in un file:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Esportare i dati di tutti gli utenti nel server in file PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Esportare i dati di tutti gli utenti nel server in file PIEFXIS (XEP-0227):"}.
@ -166,7 +151,6 @@
{"Fill in the form to search for any matching XMPP User","Compila il modulo per cercare qualsiasi utente XMPP corrispondente"}. {"Fill in the form to search for any matching XMPP User","Compila il modulo per cercare qualsiasi utente XMPP corrispondente"}.
{"Friday","Venerdì"}. {"Friday","Venerdì"}.
{"From ~ts","Da ~ts"}. {"From ~ts","Da ~ts"}.
{"From","Da"}.
{"Full List of Room Admins","Elenco Completo degli Amministratori delle Stanze"}. {"Full List of Room Admins","Elenco Completo degli Amministratori delle Stanze"}.
{"Full List of Room Owners","Elenco Completo dei Proprietari delle Stanze"}. {"Full List of Room Owners","Elenco Completo dei Proprietari delle Stanze"}.
{"Full Name","Nome completo"}. {"Full Name","Nome completo"}.
@ -176,23 +160,19 @@
{"Get Number of Registered Users","Ottenere il numero di utenti registrati"}. {"Get Number of Registered Users","Ottenere il numero di utenti registrati"}.
{"Get Pending","Ottieni in sospeso"}. {"Get Pending","Ottieni in sospeso"}.
{"Get User Last Login Time","Ottenere la data di ultimo accesso dell'utente"}. {"Get User Last Login Time","Ottenere la data di ultimo accesso dell'utente"}.
{"Get User Password","Ottenere la password dell'utente"}.
{"Get User Statistics","Ottenere le statistiche dell'utente"}. {"Get User Statistics","Ottenere le statistiche dell'utente"}.
{"Given Name","Nome di battesimo"}. {"Given Name","Nome di battesimo"}.
{"Grant voice to this person?","Dare parola a questa persona?"}. {"Grant voice to this person?","Dare parola a questa persona?"}.
{"Group","Gruppo"}.
{"Groups that will be displayed to the members","Gruppi che verranno visualizzati ai membri"}.
{"Groups","Gruppi"}.
{"has been banned","è stata/o bandita/o"}. {"has been banned","è stata/o bandita/o"}.
{"has been kicked because of a system shutdown","è stato espulso a causa dello spegnimento del sistema"}. {"has been kicked because of a system shutdown","è stato espulso a causa dello spegnimento del sistema"}.
{"has been kicked because of an affiliation change","è stato espulso a causa di un cambiamento di appartenenza"}. {"has been kicked because of an affiliation change","è stato espulso a causa di un cambiamento di appartenenza"}.
{"has been kicked because the room has been changed to members-only","è stato espulso per la limitazione della stanza ai soli membri"}. {"has been kicked because the room has been changed to members-only","è stato espulso per la limitazione della stanza ai soli membri"}.
{"has been kicked","è stata/o espulsa/o"}. {"has been kicked","è stata/o espulsa/o"}.
{"Hash of the vCard-temp avatar of this room","Hash dell'avatar vCard-temp di questa stanza"}.
{"Hat title","Titolo del Cappello"}. {"Hat title","Titolo del Cappello"}.
{"Hat URI","URI Cappello"}. {"Hat URI","URI Cappello"}.
{"Hats limit exceeded","Limite di cappelli superato"}. {"Hats limit exceeded","Limite di cappelli superato"}.
{"Host unknown","Host sconosciuto"}. {"Host unknown","Host sconosciuto"}.
{"Host","Host"}.
{"HTTP File Upload","Caricamento file HTTP"}. {"HTTP File Upload","Caricamento file HTTP"}.
{"Idle connection","Connessione inattiva"}. {"Idle connection","Connessione inattiva"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Se qui non vedi l'immagine CAPTCHA, visita la pagina web."}. {"If you don't see the CAPTCHA image here, visit the web page.","Se qui non vedi l'immagine CAPTCHA, visita la pagina web."}.
@ -206,7 +186,6 @@
{"Import Users From jabberd14 Spool Files","Importare utenti da file di spool di jabberd14"}. {"Import Users From jabberd14 Spool Files","Importare utenti da file di spool di jabberd14"}.
{"Improper domain part of 'from' attribute","Parte del dominio non corretta dell'attributo 'da'"}. {"Improper domain part of 'from' attribute","Parte del dominio non corretta dell'attributo 'da'"}.
{"Improper message type","Tipo di messaggio non corretto"}. {"Improper message type","Tipo di messaggio non corretto"}.
{"Incoming s2s Connections:","Connessioni s2s in Entrata:"}.
{"Incorrect CAPTCHA submit","Invio CAPTCHA errato"}. {"Incorrect CAPTCHA submit","Invio CAPTCHA errato"}.
{"Incorrect data form","Modulo dati errato"}. {"Incorrect data form","Modulo dati errato"}.
{"Incorrect password","Password non esatta"}. {"Incorrect password","Password non esatta"}.
@ -236,7 +215,6 @@
{"July","Luglio"}. {"July","Luglio"}.
{"June","Giugno"}. {"June","Giugno"}.
{"Just created","Appena creato"}. {"Just created","Appena creato"}.
{"Label:","Etichetta:"}.
{"Last Activity","Ultima attività"}. {"Last Activity","Ultima attività"}.
{"Last login","Ultimo accesso"}. {"Last login","Ultimo accesso"}.
{"Last message","Ultimo messaggio"}. {"Last message","Ultimo messaggio"}.
@ -244,11 +222,10 @@
{"Last year","Ultimo anno"}. {"Last year","Ultimo anno"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","I bit meno significativi dell'hash di testo SHA-256 devono corrispondere all'etichetta esadecimale"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","I bit meno significativi dell'hash di testo SHA-256 devono corrispondere all'etichetta esadecimale"}.
{"leaves the room","esce dalla stanza"}. {"leaves the room","esce dalla stanza"}.
{"List of rooms","Elenco delle stanze"}.
{"List of users with hats","Elenco degli utenti con cappelli"}. {"List of users with hats","Elenco degli utenti con cappelli"}.
{"List users with hats","Elenca gli utenti con cappelli"}. {"List users with hats","Elenca gli utenti con cappelli"}.
{"Logged Out","Disconnesso"}.
{"Logging","Registrazione"}. {"Logging","Registrazione"}.
{"Low level update script","Script di aggiornamento di basso livello"}.
{"Make participants list public","Rendere pubblica la lista dei partecipanti"}. {"Make participants list public","Rendere pubblica la lista dei partecipanti"}.
{"Make room CAPTCHA protected","Rendere la stanza protetta da CAPTCHA"}. {"Make room CAPTCHA protected","Rendere la stanza protetta da CAPTCHA"}.
{"Make room members-only","Rendere la stanza riservata ai membri"}. {"Make room members-only","Rendere la stanza riservata ai membri"}.
@ -266,11 +243,8 @@
{"Maximum number of items to persist","Numero massimo di elementi da persistere"}. {"Maximum number of items to persist","Numero massimo di elementi da persistere"}.
{"Maximum Number of Occupants","Numero massimo di occupanti"}. {"Maximum Number of Occupants","Numero massimo di occupanti"}.
{"May","Maggio"}. {"May","Maggio"}.
{"Members not added (inexistent vhost!): ","Membri non aggiunti (vhost inesistente!): "}.
{"Membership is required to enter this room","Per entrare in questa stanza è necessario essere membro"}. {"Membership is required to enter this room","Per entrare in questa stanza è necessario essere membro"}.
{"Members:","Membri:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memorizza la tua password, oppure scrivila su un foglio riposto in un luogo sicuro. In XMPP non esiste un modo automatico per recuperare la password se la dimentichi."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memorizza la tua password, oppure scrivila su un foglio riposto in un luogo sicuro. In XMPP non esiste un modo automatico per recuperare la password se la dimentichi."}.
{"Memory","Memoria"}.
{"Mere Availability in XMPP (No Show Value)","Mera disponibilità in XMPP (Nessun Valore Mostrato)"}. {"Mere Availability in XMPP (No Show Value)","Mera disponibilità in XMPP (Nessun Valore Mostrato)"}.
{"Message body","Corpo del messaggio"}. {"Message body","Corpo del messaggio"}.
{"Message not found in forwarded payload","Messaggio non trovato nel payload inoltrato"}. {"Message not found in forwarded payload","Messaggio non trovato nel payload inoltrato"}.
@ -282,15 +256,12 @@
{"Moderator privileges required","Necessari i privilegi di moderatore"}. {"Moderator privileges required","Necessari i privilegi di moderatore"}.
{"Moderator","Moderatore/Moderatrice"}. {"Moderator","Moderatore/Moderatrice"}.
{"Moderators Only","Solo i Moderatori"}. {"Moderators Only","Solo i Moderatori"}.
{"Modified modules","Moduli modificati"}.
{"Module failed to handle the query","Il modulo non è riuscito a gestire la query"}. {"Module failed to handle the query","Il modulo non è riuscito a gestire la query"}.
{"Monday","Lunedì"}. {"Monday","Lunedì"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","Più elementi <item/> non sono consentiti da RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","Più elementi <item/> non sono consentiti da RFC6121"}.
{"Multi-User Chat","Chat Multiutente"}. {"Multi-User Chat","Chat Multiutente"}.
{"Name in the rosters where this group will be displayed","Nome nei roster in cui verrà visualizzato questo gruppo"}.
{"Name","Nome"}. {"Name","Nome"}.
{"Name:","Nome:"}.
{"Natural Language for Room Discussions","Linguaggio Naturale per le Discussioni in Sala"}. {"Natural Language for Room Discussions","Linguaggio Naturale per le Discussioni in Sala"}.
{"Natural-Language Room Name","Nome della Stanza in Linguaggio Naturale"}. {"Natural-Language Room Name","Nome della Stanza in Linguaggio Naturale"}.
{"Neither 'jid' nor 'nick' attribute found","Né l'attributo 'jid' né quello 'nick' sono stati trovati"}. {"Neither 'jid' nor 'nick' attribute found","Né l'attributo 'jid' né quello 'nick' sono stati trovati"}.
@ -355,14 +326,10 @@
{"Occupants are allowed to query others","Gli occupanti possono interrogare gli altri"}. {"Occupants are allowed to query others","Gli occupanti possono interrogare gli altri"}.
{"Occupants May Change the Subject","Gli Occupanti Possono Cambiare il Soggetto"}. {"Occupants May Change the Subject","Gli Occupanti Possono Cambiare il Soggetto"}.
{"October","Ottobre"}. {"October","Ottobre"}.
{"Offline Messages","Messaggi offline"}.
{"Offline Messages:","Messaggi offline:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Vecchia password:"}. {"Old Password:","Vecchia password:"}.
{"Online Users:","Utenti connessi:"}.
{"Online Users","Utenti online"}. {"Online Users","Utenti online"}.
{"Online","Online"}. {"Online","Online"}.
{"Only admins can see this","Solo gli amministratori possono vedere questo"}.
{"Only collection node owners may associate leaf nodes with the collection","Solo i proprietari dei nodi di raccolta possono associare i nodi foglia alla collezione"}. {"Only collection node owners may associate leaf nodes with the collection","Solo i proprietari dei nodi di raccolta possono associare i nodi foglia alla collezione"}.
{"Only deliver notifications to available users","Inviare le notifiche solamente agli utenti disponibili"}. {"Only deliver notifications to available users","Inviare le notifiche solamente agli utenti disponibili"}.
{"Only <enable/> or <disable/> tags are allowed","Sono consentiti solo i tag <enable/> o <disable/>"}. {"Only <enable/> or <disable/> tags are allowed","Sono consentiti solo i tag <enable/> o <disable/>"}.
@ -382,10 +349,8 @@
{"Organization Unit","Unità dell'organizzazione"}. {"Organization Unit","Unità dell'organizzazione"}.
{"Other Modules Available:","Altri Moduli Disponibili:"}. {"Other Modules Available:","Altri Moduli Disponibili:"}.
{"Outgoing s2s Connections","Connessioni s2s in uscita"}. {"Outgoing s2s Connections","Connessioni s2s in uscita"}.
{"Outgoing s2s Connections:","Connessioni s2s in uscita:"}.
{"Owner privileges required","Necessari i privilegi di proprietario"}. {"Owner privileges required","Necessari i privilegi di proprietario"}.
{"Packet relay is denied by service policy","Il relay dei pacchetti è negato dalla politica di servizio"}. {"Packet relay is denied by service policy","Il relay dei pacchetti è negato dalla politica di servizio"}.
{"Packet","Pacchetto"}.
{"Participant ID","ID Partecipante"}. {"Participant ID","ID Partecipante"}.
{"Participant","Partecipante"}. {"Participant","Partecipante"}.
{"Password Verification","Verifica della password"}. {"Password Verification","Verifica della password"}.
@ -395,7 +360,6 @@
{"Path to Dir","Percorso della directory"}. {"Path to Dir","Percorso della directory"}.
{"Path to File","Percorso del file"}. {"Path to File","Percorso del file"}.
{"Payload semantic type information","Informazioni sul tipo semantico del payload"}. {"Payload semantic type information","Informazioni sul tipo semantico del payload"}.
{"Pending","Pendente"}.
{"Period: ","Periodo: "}. {"Period: ","Periodo: "}.
{"Persist items to storage","Conservazione persistente degli elementi"}. {"Persist items to storage","Conservazione persistente degli elementi"}.
{"Persistent","Persistente"}. {"Persistent","Persistente"}.
@ -429,21 +393,16 @@
{"Receive notification of new nodes only","Ricevere solo la notifica di nuovi nodi"}. {"Receive notification of new nodes only","Ricevere solo la notifica di nuovi nodi"}.
{"Recipient is not in the conference room","Il destinatario non è nella stanza per conferenze"}. {"Recipient is not in the conference room","Il destinatario non è nella stanza per conferenze"}.
{"Register an XMPP account","Registra un account XMPP"}. {"Register an XMPP account","Registra un account XMPP"}.
{"Registered Users","Utenti registrati"}.
{"Registered Users:","Utenti registrati:"}.
{"Register","Registra"}. {"Register","Registra"}.
{"Remote copy","Copia remota"}. {"Remote copy","Copia remota"}.
{"Remove a hat from a user","Rimuovere un cappello da un utente"}. {"Remove a hat from a user","Rimuovere un cappello da un utente"}.
{"Remove All Offline Messages","Eliminare Tutti i Messaggi Offline"}.
{"Remove User","Rimuovere l'utente"}. {"Remove User","Rimuovere l'utente"}.
{"Remove","Eliminare"}.
{"Replaced by new connection","Sostituito da una nuova connessione"}. {"Replaced by new connection","Sostituito da una nuova connessione"}.
{"Request has timed out","La richiesta è scaduta"}. {"Request has timed out","La richiesta è scaduta"}.
{"Request is ignored","La richiesta viene ignorata"}. {"Request is ignored","La richiesta viene ignorata"}.
{"Requested role","Ruolo richiesto"}. {"Requested role","Ruolo richiesto"}.
{"Resources","Risorse"}. {"Resources","Risorse"}.
{"Restart Service","Riavviare il servizio"}. {"Restart Service","Riavviare il servizio"}.
{"Restart","Riavviare"}.
{"Restore Backup from File at ","Recuperare il salvataggio dal file "}. {"Restore Backup from File at ","Recuperare il salvataggio dal file "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Recuperare un salvataggio binario dopo il prossimo riavvio di ejabberd (necessita di meno memoria):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Recuperare un salvataggio binario dopo il prossimo riavvio di ejabberd (necessita di meno memoria):"}.
{"Restore binary backup immediately:","Recuperare un salvataggio binario adesso:"}. {"Restore binary backup immediately:","Recuperare un salvataggio binario adesso:"}.
@ -459,20 +418,15 @@
{"Room terminates","La stanza termina"}. {"Room terminates","La stanza termina"}.
{"Room title","Titolo della stanza"}. {"Room title","Titolo della stanza"}.
{"Roster groups allowed to subscribe","Gruppi roster abilitati alla registrazione"}. {"Roster groups allowed to subscribe","Gruppi roster abilitati alla registrazione"}.
{"Roster of ~ts","Roster di ~ts"}.
{"Roster size","Dimensione della lista dei contatti"}. {"Roster size","Dimensione della lista dei contatti"}.
{"Roster:","Lista dei contatti:"}.
{"RPC Call Error","Errore di chiamata RPC"}.
{"Running Nodes","Nodi attivi"}. {"Running Nodes","Nodi attivi"}.
{"~s invites you to the room ~s","~s ti invita nella stanza ~s"}. {"~s invites you to the room ~s","~s ti invita nella stanza ~s"}.
{"Saturday","Sabato"}. {"Saturday","Sabato"}.
{"Script check","Verifica dello script"}.
{"Search from the date","Cerca dalla data"}. {"Search from the date","Cerca dalla data"}.
{"Search Results for ","Risultati della ricerca per "}. {"Search Results for ","Risultati della ricerca per "}.
{"Search the text","Cerca nel testo"}. {"Search the text","Cerca nel testo"}.
{"Search until the date","Cerca fino alla data"}. {"Search until the date","Cerca fino alla data"}.
{"Search users in ","Cercare utenti in "}. {"Search users in ","Cercare utenti in "}.
{"Select All","Seleziona tutto"}.
{"Send announcement to all online users on all hosts","Inviare l'annuncio a tutti gli utenti online su tutti gli host"}. {"Send announcement to all online users on all hosts","Inviare l'annuncio a tutti gli utenti online su tutti gli host"}.
{"Send announcement to all online users","Inviare l'annuncio a tutti gli utenti online"}. {"Send announcement to all online users","Inviare l'annuncio a tutti gli utenti online"}.
{"Send announcement to all users on all hosts","Inviare l'annuncio a tutti gli utenti su tutti gli host"}. {"Send announcement to all users on all hosts","Inviare l'annuncio a tutti gli utenti su tutti gli host"}.
@ -485,6 +439,7 @@
{"Set message of the day on all hosts and send to online users","Impostare il messaggio del giorno (MOTD) su tutti gli host e inviarlo agli utenti online"}. {"Set message of the day on all hosts and send to online users","Impostare il messaggio del giorno (MOTD) su tutti gli host e inviarlo agli utenti online"}.
{"Shared Roster Groups","Gruppi di liste di contatti comuni"}. {"Shared Roster Groups","Gruppi di liste di contatti comuni"}.
{"Show Integral Table","Mostrare la tabella integrale"}. {"Show Integral Table","Mostrare la tabella integrale"}.
{"Show Occupants Join/Leave","Mostra gli occupanti che si uniscono/escono"}.
{"Show Ordinary Table","Mostrare la tabella normale"}. {"Show Ordinary Table","Mostrare la tabella normale"}.
{"Shut Down Service","Terminare il servizio"}. {"Shut Down Service","Terminare il servizio"}.
{"SOCKS5 Bytestreams","SOCKS5 flussi di byte"}. {"SOCKS5 Bytestreams","SOCKS5 flussi di byte"}.
@ -496,22 +451,16 @@
{"Stanza id is not valid","L'id della stanza non è valido"}. {"Stanza id is not valid","L'id della stanza non è valido"}.
{"Stanza ID","Stanza ID"}. {"Stanza ID","Stanza ID"}.
{"Statically specify a replyto of the node owner(s)","Specificare staticamente una risposta del proprietario(i) del nodo"}. {"Statically specify a replyto of the node owner(s)","Specificare staticamente una risposta del proprietario(i) del nodo"}.
{"Statistics of ~p","Statistiche di ~p"}.
{"Statistics","Statistiche"}.
{"Stop","Arrestare"}.
{"Stopped Nodes","Nodi arrestati"}. {"Stopped Nodes","Nodi arrestati"}.
{"Storage Type","Tipo di conservazione"}.
{"Store binary backup:","Conservare un salvataggio binario:"}. {"Store binary backup:","Conservare un salvataggio binario:"}.
{"Store plain text backup:","Conservare un salvataggio come semplice testo:"}. {"Store plain text backup:","Conservare un salvataggio come semplice testo:"}.
{"Stream management is already enabled","La gestione del flusso è già abilitata"}. {"Stream management is already enabled","La gestione del flusso è già abilitata"}.
{"Stream management is not enabled","La gestione del flusso non è abilitata"}. {"Stream management is not enabled","La gestione del flusso non è abilitata"}.
{"Subject","Oggetto"}. {"Subject","Oggetto"}.
{"Submit","Inviare"}.
{"Submitted","Inviato"}. {"Submitted","Inviato"}.
{"Subscriber Address","Indirizzo dell'iscritta/o"}. {"Subscriber Address","Indirizzo dell'iscritta/o"}.
{"Subscribers may publish","I sottoscrittori possono pubblicare"}. {"Subscribers may publish","I sottoscrittori possono pubblicare"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Le richieste di sottoscrizione devono essere approvate e solo i sottoscrittori possono recuperare le voci"}. {"Subscription requests must be approved and only subscribers may retrieve items","Le richieste di sottoscrizione devono essere approvate e solo i sottoscrittori possono recuperare le voci"}.
{"Subscription","Iscrizione"}.
{"Subscriptions are not allowed","Le sottoscrizioni non sono consentite"}. {"Subscriptions are not allowed","Le sottoscrizioni non sono consentite"}.
{"Sunday","Domenica"}. {"Sunday","Domenica"}.
{"Text associated with a picture","Testo associato a un'immagine"}. {"Text associated with a picture","Testo associato a un'immagine"}.
@ -575,10 +524,8 @@
{"Thursday","Giovedì"}. {"Thursday","Giovedì"}.
{"Time delay","Ritardo"}. {"Time delay","Ritardo"}.
{"Timed out waiting for stream resumption","Timed out in attesa della ripresa dello stream"}. {"Timed out waiting for stream resumption","Timed out in attesa della ripresa dello stream"}.
{"Time","Ora"}.
{"To register, visit ~s","Per registrarsi, visita ~s"}. {"To register, visit ~s","Per registrarsi, visita ~s"}.
{"To ~ts","A ~ts"}. {"To ~ts","A ~ts"}.
{"To","A"}.
{"Token TTL","Gettone TTL"}. {"Token TTL","Gettone TTL"}.
{"Too many active bytestreams","Troppi bytestream attivi"}. {"Too many active bytestreams","Troppi bytestream attivi"}.
{"Too many CAPTCHA requests","Troppe richieste CAPTCHA"}. {"Too many CAPTCHA requests","Troppe richieste CAPTCHA"}.
@ -587,13 +534,10 @@
{"Too many <list/> elements","Troppi elementi <list/>"}. {"Too many <list/> elements","Troppi elementi <list/>"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Troppe (~p) autenticazioni non riuscite da questo indirizzo IP (~s). L'indirizzo verrà sbloccato alle ~s UTC"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Troppe (~p) autenticazioni non riuscite da questo indirizzo IP (~s). L'indirizzo verrà sbloccato alle ~s UTC"}.
{"Too many receiver fields were specified","Sono stati specificati troppi campi del ricevitore"}. {"Too many receiver fields were specified","Sono stati specificati troppi campi del ricevitore"}.
{"Too many unacked stanzas","Troppe stanze non riconosciute"}.
{"Too many users in this conference","Troppi utenti in questa conferenza"}. {"Too many users in this conference","Troppi utenti in questa conferenza"}.
{"Total rooms","Stanze totali"}.
{"Traffic rate limit is exceeded","Limite di traffico superato"}. {"Traffic rate limit is exceeded","Limite di traffico superato"}.
{"Transactions Aborted:","Transazioni abortite:"}. {"~ts's MAM Archive","Archivio MAM di ~ts"}.
{"Transactions Committed:","Transazioni avvenute:"}.
{"Transactions Logged:","Transazioni con log:"}.
{"Transactions Restarted:","Transazioni riavviate:"}.
{"~ts's Offline Messages Queue","La Coda dei Messaggi Offline di ~ts"}. {"~ts's Offline Messages Queue","La Coda dei Messaggi Offline di ~ts"}.
{"Tuesday","Martedì"}. {"Tuesday","Martedì"}.
{"Unable to generate a CAPTCHA","Impossibile generare un CAPTCHA"}. {"Unable to generate a CAPTCHA","Impossibile generare un CAPTCHA"}.
@ -604,24 +548,20 @@
{"Uninstall","Disinstallare"}. {"Uninstall","Disinstallare"}.
{"Unregister an XMPP account","Disregistrare un account XMPP"}. {"Unregister an XMPP account","Disregistrare un account XMPP"}.
{"Unregister","Elimina"}. {"Unregister","Elimina"}.
{"Unselect All","Deseleziona Tutto"}.
{"Unsupported <index/> element","Elemento <index/> non supportato"}. {"Unsupported <index/> element","Elemento <index/> non supportato"}.
{"Unsupported version","Versione non supportata"}. {"Unsupported version","Versione non supportata"}.
{"Update message of the day (don't send)","Aggiornare il messaggio del giorno (MOTD) (non inviarlo)"}. {"Update message of the day (don't send)","Aggiornare il messaggio del giorno (MOTD) (non inviarlo)"}.
{"Update message of the day on all hosts (don't send)","Aggiornare il messaggio del giorno (MOTD) su tutti gli host (non inviarlo)"}. {"Update message of the day on all hosts (don't send)","Aggiornare il messaggio del giorno (MOTD) su tutti gli host (non inviarlo)"}.
{"Update ~p","Aggiorna ~p"}.
{"Update plan","Piano di aggiornamento"}.
{"Update script","Script di aggiornamento"}.
{"Update specs to get modules source, then install desired ones.","Aggiorna le specifiche per ottenere il sorgente dei moduli, quindi installa quelli desiderati."}. {"Update specs to get modules source, then install desired ones.","Aggiorna le specifiche per ottenere il sorgente dei moduli, quindi installa quelli desiderati."}.
{"Update Specs","Aggiorna Specifiche"}. {"Update Specs","Aggiorna Specifiche"}.
{"Update","Aggiornare"}. {"Updating the vCard is not supported by the vCard storage backend","L'aggiornamento della vCard non è supportato dal backend di archiviazione vCard"}.
{"Upgrade","Aggiornamento"}. {"Upgrade","Aggiornamento"}.
{"Uptime:","Tempo dall'avvio:"}.
{"URL for Archived Discussion Logs","URL per i Registri delle Discussioni Archiviati"}. {"URL for Archived Discussion Logs","URL per i Registri delle Discussioni Archiviati"}.
{"User already exists","L'utente esiste già"}. {"User already exists","L'utente esiste già"}.
{"User JID","JID utente"}. {"User JID","JID utente"}.
{"User (jid)","Utente (jid)"}. {"User (jid)","Utente (jid)"}.
{"User Management","Gestione degli utenti"}. {"User Management","Gestione degli utenti"}.
{"User not allowed to perform an IQ set on another user's vCard.","L'utente non è autorizzato a eseguire un set IQ sulla vCard di un altro utente."}.
{"User removed","Utente rimosso"}. {"User removed","Utente rimosso"}.
{"User session not found","Sessione utente non trovata"}. {"User session not found","Sessione utente non trovata"}.
{"User session terminated","Sessione utente terminata"}. {"User session terminated","Sessione utente terminata"}.
@ -631,7 +571,6 @@
{"Users Last Activity","Ultima attività degli utenti"}. {"Users Last Activity","Ultima attività degli utenti"}.
{"Users","Utenti"}. {"Users","Utenti"}.
{"User","Utente"}. {"User","Utente"}.
{"Validate","Validare"}.
{"Value 'get' of 'type' attribute is not allowed","Il valore 'get' dell'attributo 'type' non è consentito"}. {"Value 'get' of 'type' attribute is not allowed","Il valore 'get' dell'attributo 'type' non è consentito"}.
{"Value of '~s' should be boolean","Il valore di '~s' dovrebbe essere booleano"}. {"Value of '~s' should be boolean","Il valore di '~s' dovrebbe essere booleano"}.
{"Value of '~s' should be datetime string","Il valore di '~s' deve essere una stringa dataora"}. {"Value of '~s' should be datetime string","Il valore di '~s' deve essere una stringa dataora"}.
@ -639,8 +578,6 @@
{"Value 'set' of 'type' attribute is not allowed","Il valore 'set' dell'attributo 'type' non è consentito"}. {"Value 'set' of 'type' attribute is not allowed","Il valore 'set' dell'attributo 'type' non è consentito"}.
{"vCard User Search","Ricerca di utenti per vCard"}. {"vCard User Search","Ricerca di utenti per vCard"}.
{"View joined MIX channels","Visualizza i canali MIX uniti"}. {"View joined MIX channels","Visualizza i canali MIX uniti"}.
{"View Queue","Visualizza Coda"}.
{"View Roster","Visualizza il Roster"}.
{"Virtual Hosts","Host Virtuali"}. {"Virtual Hosts","Host Virtuali"}.
{"Visitors are not allowed to change their nicknames in this room","Non è consentito ai visitatori cambiare il nickname in questa stanza"}. {"Visitors are not allowed to change their nicknames in this room","Non è consentito ai visitatori cambiare il nickname in questa stanza"}.
{"Visitors are not allowed to send messages to all occupants","Non è consentito ai visitatori l'invio di messaggi a tutti i presenti"}. {"Visitors are not allowed to send messages to all occupants","Non è consentito ai visitatori l'invio di messaggi a tutti i presenti"}.

View file

@ -14,8 +14,6 @@
{"Access model","アクセスモデル"}. {"Access model","アクセスモデル"}.
{"Account doesn't exist","アカウントは存在しません"}. {"Account doesn't exist","アカウントは存在しません"}.
{"Action on user","ユーザー操作"}. {"Action on user","ユーザー操作"}.
{"Add Jabber ID","Jabber ID を追加"}.
{"Add New","新規追加"}.
{"Add User","ユーザーを追加"}. {"Add User","ユーザーを追加"}.
{"Administration of ","管理: "}. {"Administration of ","管理: "}.
{"Administration","管理"}. {"Administration","管理"}.
@ -68,26 +66,19 @@
{"Conference room does not exist","会議室は存在しません"}. {"Conference room does not exist","会議室は存在しません"}.
{"Configuration of room ~s","チャットルーム ~s の設定"}. {"Configuration of room ~s","チャットルーム ~s の設定"}.
{"Configuration","設定"}. {"Configuration","設定"}.
{"Connected Resources:","接続リソース:"}.
{"Contact Addresses (normally, room owner or owners)","連絡先 (通常は会議室の主宰者またはその複数)"}. {"Contact Addresses (normally, room owner or owners)","連絡先 (通常は会議室の主宰者またはその複数)"}.
{"Country","国"}. {"Country","国"}.
{"CPU Time:","CPU時間:"}.
{"Current Discussion Topic","現在の話題"}. {"Current Discussion Topic","現在の話題"}.
{"Database failure","データーベース障害"}. {"Database failure","データーベース障害"}.
{"Database Tables at ~p","データーベーステーブル: ~p"}.
{"Database Tables Configuration at ","データーベーステーブル設定 "}. {"Database Tables Configuration at ","データーベーステーブル設定 "}.
{"Database","データーベース"}. {"Database","データーベース"}.
{"December","12月"}. {"December","12月"}.
{"Default users as participants","デフォルトのユーザーは参加者"}. {"Default users as participants","デフォルトのユーザーは参加者"}.
{"Delete content","内容を削除"}.
{"Delete message of the day on all hosts","全ホストのお知らせメッセージを削除"}. {"Delete message of the day on all hosts","全ホストのお知らせメッセージを削除"}.
{"Delete message of the day","お知らせメッセージを削除"}. {"Delete message of the day","お知らせメッセージを削除"}.
{"Delete Selected","選択した項目を削除"}.
{"Delete table","テーブルを削除"}.
{"Delete User","ユーザーを削除"}. {"Delete User","ユーザーを削除"}.
{"Deliver event notifications","イベント通知を配送する"}. {"Deliver event notifications","イベント通知を配送する"}.
{"Deliver payloads with event notifications","イベント通知と同時にペイロードを配送する"}. {"Deliver payloads with event notifications","イベント通知と同時にペイロードを配送する"}.
{"Description:","説明:"}.
{"Disc only copy","ディスクだけのコピー"}. {"Disc only copy","ディスクだけのコピー"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","パスワードは誰にも(たとえ XMPP サーバーの管理者でも)教えないようにしてください。"}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","パスワードは誰にも(たとえ XMPP サーバーの管理者でも)教えないようにしてください。"}.
{"Dump Backup to Text File at ","テキストファイルにバックアップ: "}. {"Dump Backup to Text File at ","テキストファイルにバックアップ: "}.
@ -103,7 +94,6 @@
{"ejabberd vCard module","ejabberd vCard モジュール"}. {"ejabberd vCard module","ejabberd vCard モジュール"}.
{"ejabberd Web Admin","ejabberd ウェブ管理"}. {"ejabberd Web Admin","ejabberd ウェブ管理"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","要素"}.
{"Email Address","メールアドレス"}. {"Email Address","メールアドレス"}.
{"Email","メール"}. {"Email","メール"}.
{"Enable logging","ロギングを有効"}. {"Enable logging","ロギングを有効"}.
@ -116,7 +106,6 @@
{"Enter path to text file","テキストファイルのパスを入力してください"}. {"Enter path to text file","テキストファイルのパスを入力してください"}.
{"Enter the text you see","見えているテキストを入力してください"}. {"Enter the text you see","見えているテキストを入力してください"}.
{"Erlang XMPP Server","Erlang XMPP サーバー"}. {"Erlang XMPP Server","Erlang XMPP サーバー"}.
{"Error","エラー"}.
{"Exclude Jabber IDs from CAPTCHA challenge","CAPTCHA 入力を免除する Jabber ID"}. {"Exclude Jabber IDs from CAPTCHA challenge","CAPTCHA 入力を免除する Jabber ID"}.
{"Export all tables as SQL queries to a file:","すべてのテーブルをSQL形式でファイルにエクスポート: "}. {"Export all tables as SQL queries to a file:","すべてのテーブルをSQL形式でファイルにエクスポート: "}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","サーバーにあるすべてのユーザーデータを PIEFXIS ファイルにエクスポート (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","サーバーにあるすべてのユーザーデータを PIEFXIS ファイルにエクスポート (XEP-0227):"}.
@ -131,7 +120,6 @@
{"Fill in the form to search for any matching XMPP User","XMPP ユーザーを検索するには欄に入力してください"}. {"Fill in the form to search for any matching XMPP User","XMPP ユーザーを検索するには欄に入力してください"}.
{"Friday","金曜日"}. {"Friday","金曜日"}.
{"From ~ts","From ~ts"}. {"From ~ts","From ~ts"}.
{"From","差出人"}.
{"Full List of Room Admins","チャットルーム管理者の一覧"}. {"Full List of Room Admins","チャットルーム管理者の一覧"}.
{"Full List of Room Owners","チャットルーム主宰者の一覧"}. {"Full List of Room Owners","チャットルーム主宰者の一覧"}.
{"Full Name","氏名"}. {"Full Name","氏名"}.
@ -141,19 +129,15 @@
{"Get Number of Registered Users","登録ユーザー数を取得"}. {"Get Number of Registered Users","登録ユーザー数を取得"}.
{"Get Pending","保留中の取得"}. {"Get Pending","保留中の取得"}.
{"Get User Last Login Time","最終ログイン時間を取得"}. {"Get User Last Login Time","最終ログイン時間を取得"}.
{"Get User Password","パスワードを取得"}.
{"Get User Statistics","ユーザー統計を取得"}. {"Get User Statistics","ユーザー統計を取得"}.
{"Given Name","名"}. {"Given Name","名"}.
{"Grant voice to this person?","この人に発言権を与えますか ?"}. {"Grant voice to this person?","この人に発言権を与えますか ?"}.
{"Groups","グループ"}.
{"Group","グループ"}.
{"has been banned","はバンされました"}. {"has been banned","はバンされました"}.
{"has been kicked because of a system shutdown","はシステムシャットダウンのためキックされました"}. {"has been kicked because of a system shutdown","はシステムシャットダウンのためキックされました"}.
{"has been kicked because of an affiliation change","は分掌が変更されたためキックされました"}. {"has been kicked because of an affiliation change","は分掌が変更されたためキックされました"}.
{"has been kicked because the room has been changed to members-only","はチャットルームがメンバー制に変更されたためキックされました"}. {"has been kicked because the room has been changed to members-only","はチャットルームがメンバー制に変更されたためキックされました"}.
{"has been kicked","はキックされました"}. {"has been kicked","はキックされました"}.
{"Host unknown","不明なホスト"}. {"Host unknown","不明なホスト"}.
{"Host","ホスト"}.
{"HTTP File Upload","HTTP ファイルアップロード"}. {"HTTP File Upload","HTTP ファイルアップロード"}.
{"If you don't see the CAPTCHA image here, visit the web page.","ここに CAPTCHA 画像が表示されない場合、ウェブページを参照してください。"}. {"If you don't see the CAPTCHA image here, visit the web page.","ここに CAPTCHA 画像が表示されない場合、ウェブページを参照してください。"}.
{"Import Directory","ディレクトリインポート"}. {"Import Directory","ディレクトリインポート"}.
@ -165,7 +149,6 @@
{"Import Users from Dir at ","ディレクトリからユーザーをインポート: "}. {"Import Users from Dir at ","ディレクトリからユーザーをインポート: "}.
{"Import Users From jabberd14 Spool Files","jabberd14 Spool ファイルからユーザーをインポート"}. {"Import Users From jabberd14 Spool Files","jabberd14 Spool ファイルからユーザーをインポート"}.
{"Improper message type","誤ったメッセージタイプです"}. {"Improper message type","誤ったメッセージタイプです"}.
{"Incoming s2s Connections:","内向き s2s コネクション:"}.
{"Incorrect data form","データ形式が違います"}. {"Incorrect data form","データ形式が違います"}.
{"Incorrect password","パスワードが違います"}. {"Incorrect password","パスワードが違います"}.
{"Installed Modules:","インストールされているモジュール:"}. {"Installed Modules:","インストールされているモジュール:"}.
@ -187,15 +170,12 @@
{"July","7月"}. {"July","7月"}.
{"June","6月"}. {"June","6月"}.
{"Just created","作成しました"}. {"Just created","作成しました"}.
{"Label:","ラベル:"}.
{"Last Activity","活動履歴"}. {"Last Activity","活動履歴"}.
{"Last login","最終ログイン"}. {"Last login","最終ログイン"}.
{"Last message","最終メッセージ"}. {"Last message","最終メッセージ"}.
{"Last month","先月"}. {"Last month","先月"}.
{"Last year","去年"}. {"Last year","去年"}.
{"leaves the room","がチャットルームから退出しました"}. {"leaves the room","がチャットルームから退出しました"}.
{"List of rooms","チャットルームの一覧"}.
{"Low level update script","低レベル更新スクリプト"}.
{"Make participants list public","参加者一覧を公開"}. {"Make participants list public","参加者一覧を公開"}.
{"Make room CAPTCHA protected","チャットルームを CAPTCHA で保護"}. {"Make room CAPTCHA protected","チャットルームを CAPTCHA で保護"}.
{"Make room members-only","チャットルームをメンバーのみに制限"}. {"Make room members-only","チャットルームをメンバーのみに制限"}.
@ -210,20 +190,16 @@
{"Maximum Number of Occupants","最大在室者数"}. {"Maximum Number of Occupants","最大在室者数"}.
{"May","5月"}. {"May","5月"}.
{"Membership is required to enter this room","このチャットルームに入るにはメンバーでなければなりません"}. {"Membership is required to enter this room","このチャットルームに入るにはメンバーでなければなりません"}.
{"Members:","メンバー:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","パスワードは記憶するか、紙に書いて安全な場所に保管してください。もしあなたがパスワードを忘れてしまった場合、XMPP ではパスワードのリカバリを自動的に行うことはできません。"}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","パスワードは記憶するか、紙に書いて安全な場所に保管してください。もしあなたがパスワードを忘れてしまった場合、XMPP ではパスワードのリカバリを自動的に行うことはできません。"}.
{"Memory","メモリ"}.
{"Message body","本文"}. {"Message body","本文"}.
{"Middle Name","ミドルネーム"}. {"Middle Name","ミドルネーム"}.
{"Minimum interval between voice requests (in seconds)","発言権の要求の最小時間間隔 (秒)"}. {"Minimum interval between voice requests (in seconds)","発言権の要求の最小時間間隔 (秒)"}.
{"Moderator privileges required","モデレーター権限が必要です"}. {"Moderator privileges required","モデレーター権限が必要です"}.
{"Moderator","モデレーター"}. {"Moderator","モデレーター"}.
{"Modified modules","更新されたモジュール"}.
{"Monday","月曜日"}. {"Monday","月曜日"}.
{"Multicast","マルチキャスト"}. {"Multicast","マルチキャスト"}.
{"Multi-User Chat","マルチユーザーチャット"}. {"Multi-User Chat","マルチユーザーチャット"}.
{"Name","名"}. {"Name","名"}.
{"Name:","名前:"}.
{"Natural-Language Room Name","自然言語での会議室名"}. {"Natural-Language Room Name","自然言語での会議室名"}.
{"Never","なし"}. {"Never","なし"}.
{"New Password:","新しいパスワード:"}. {"New Password:","新しいパスワード:"}.
@ -260,12 +236,9 @@
{"Occupants are allowed to invite others","在室者は誰かを招待することができます"}. {"Occupants are allowed to invite others","在室者は誰かを招待することができます"}.
{"Occupants May Change the Subject","ユーザーによる件名の変更を許可"}. {"Occupants May Change the Subject","ユーザーによる件名の変更を許可"}.
{"October","10月"}. {"October","10月"}.
{"Offline Messages","オフラインメッセージ"}.
{"Offline Messages:","オフラインメッセージ:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","古いパスワード:"}. {"Old Password:","古いパスワード:"}.
{"Online Users","オンラインユーザー"}. {"Online Users","オンラインユーザー"}.
{"Online Users:","オンラインユーザー:"}.
{"Online","オンライン"}. {"Online","オンライン"}.
{"Only deliver notifications to available users","有効なユーザーにのみ告知を送信する"}. {"Only deliver notifications to available users","有効なユーザーにのみ告知を送信する"}.
{"Only <enable/> or <disable/> tags are allowed","<enable/> タグまたは <disable/> タグのみが許可されます"}. {"Only <enable/> or <disable/> tags are allowed","<enable/> タグまたは <disable/> タグのみが許可されます"}.
@ -280,9 +253,7 @@
{"Organization Name","会社名"}. {"Organization Name","会社名"}.
{"Organization Unit","部署名"}. {"Organization Unit","部署名"}.
{"Outgoing s2s Connections","外向き s2s コネクション"}. {"Outgoing s2s Connections","外向き s2s コネクション"}.
{"Outgoing s2s Connections:","外向き s2s コネクション:"}.
{"Owner privileges required","主宰者の権限が必要です"}. {"Owner privileges required","主宰者の権限が必要です"}.
{"Packet","パケット"}.
{"Participant ID","参加者 ID"}. {"Participant ID","参加者 ID"}.
{"Participant","参加者"}. {"Participant","参加者"}.
{"Password Verification","パスワード (確認)"}. {"Password Verification","パスワード (確認)"}.
@ -291,7 +262,6 @@
{"Password:","パスワード:"}. {"Password:","パスワード:"}.
{"Path to Dir","ディレクトリのパス"}. {"Path to Dir","ディレクトリのパス"}.
{"Path to File","ファイルのパス"}. {"Path to File","ファイルのパス"}.
{"Pending","保留"}.
{"Period: ","期間: "}. {"Period: ","期間: "}.
{"Persist items to storage","アイテムをストレージに保存する"}. {"Persist items to storage","アイテムをストレージに保存する"}.
{"Persistent","チャットルームを永続化"}. {"Persistent","チャットルームを永続化"}.
@ -313,18 +283,13 @@
{"Really delete message of the day?","本当にお知らせメッセージを削除しますか ?"}. {"Really delete message of the day?","本当にお知らせメッセージを削除しますか ?"}.
{"Recipient is not in the conference room","受信者はこの会議室にいません"}. {"Recipient is not in the conference room","受信者はこの会議室にいません"}.
{"Register an XMPP account","XMPP アカウントを登録"}. {"Register an XMPP account","XMPP アカウントを登録"}.
{"Registered Users","登録ユーザー"}.
{"Registered Users:","登録ユーザー:"}.
{"Register","登録"}. {"Register","登録"}.
{"Remote copy","リモートコピー"}. {"Remote copy","リモートコピー"}.
{"Remove All Offline Messages","すべてのオフラインメッセージを削除"}.
{"Remove User","ユーザーを削除"}. {"Remove User","ユーザーを削除"}.
{"Remove","削除"}.
{"Replaced by new connection","新しいコネクションによって置き換えられました"}. {"Replaced by new connection","新しいコネクションによって置き換えられました"}.
{"Request is ignored","リクエストは無視されます"}. {"Request is ignored","リクエストは無視されます"}.
{"Resources","リソース"}. {"Resources","リソース"}.
{"Restart Service","サービスを再起動"}. {"Restart Service","サービスを再起動"}.
{"Restart","再起動"}.
{"Restore Backup from File at ","ファイルからバックアップをリストア: "}. {"Restore Backup from File at ","ファイルからバックアップをリストア: "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","ejabberd の再起動時にバイナリバックアップからリストア (メモリ少):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","ejabberd の再起動時にバイナリバックアップからリストア (メモリ少):"}.
{"Restore binary backup immediately:","直ちにバイナリバックアップからリストア:"}. {"Restore binary backup immediately:","直ちにバイナリバックアップからリストア:"}.
@ -337,17 +302,12 @@
{"Room Occupants","在室者"}. {"Room Occupants","在室者"}.
{"Room title","チャットルームのタイトル"}. {"Room title","チャットルームのタイトル"}.
{"Roster groups allowed to subscribe","名簿グループは購読を許可しました"}. {"Roster groups allowed to subscribe","名簿グループは購読を許可しました"}.
{"Roster of ~ts","~ts の名簿"}.
{"Roster size","名簿サイズ"}. {"Roster size","名簿サイズ"}.
{"Roster:","名簿:"}.
{"RPC Call Error","RPC 呼び出しエラー"}.
{"Running Nodes","起動ノード"}. {"Running Nodes","起動ノード"}.
{"~s invites you to the room ~s","~s はあなたをチャットルーム ~s に招待しています"}. {"~s invites you to the room ~s","~s はあなたをチャットルーム ~s に招待しています"}.
{"Saturday","土曜日"}. {"Saturday","土曜日"}.
{"Script check","スクリプトチェック"}.
{"Search Results for ","検索結果: "}. {"Search Results for ","検索結果: "}.
{"Search users in ","ユーザーの検索: "}. {"Search users in ","ユーザーの検索: "}.
{"Select All","すべて選択"}.
{"Send announcement to all online users on all hosts","全ホストのオンラインユーザーにアナウンスを送信"}. {"Send announcement to all online users on all hosts","全ホストのオンラインユーザーにアナウンスを送信"}.
{"Send announcement to all online users","すべてのオンラインユーザーにアナウンスを送信"}. {"Send announcement to all online users","すべてのオンラインユーザーにアナウンスを送信"}.
{"Send announcement to all users on all hosts","全ホストのユーザーにアナウンスを送信"}. {"Send announcement to all users on all hosts","全ホストのユーザーにアナウンスを送信"}.
@ -366,18 +326,12 @@
{"Specify the event message type","イベントメッセージ種別を設定"}. {"Specify the event message type","イベントメッセージ種別を設定"}.
{"Specify the publisher model","公開モデルを指定する"}. {"Specify the publisher model","公開モデルを指定する"}.
{"Stanza ID","スタンザ ID"}. {"Stanza ID","スタンザ ID"}.
{"Statistics of ~p","~p の統計"}.
{"Statistics","統計"}.
{"Stopped Nodes","停止ノード"}. {"Stopped Nodes","停止ノード"}.
{"Stop","停止"}.
{"Storage Type","ストレージタイプ"}.
{"Store binary backup:","バイナリバックアップを保存:"}. {"Store binary backup:","バイナリバックアップを保存:"}.
{"Store plain text backup:","プレーンテキストバックアップを保存:"}. {"Store plain text backup:","プレーンテキストバックアップを保存:"}.
{"Subject","件名"}. {"Subject","件名"}.
{"Submitted","送信完了"}. {"Submitted","送信完了"}.
{"Submit","送信"}.
{"Subscriber Address","購読者のアドレス"}. {"Subscriber Address","購読者のアドレス"}.
{"Subscription","認可"}.
{"Sunday","日曜日"}. {"Sunday","日曜日"}.
{"That nickname is already in use by another occupant","そのニックネームは既にほかの在室者によって使用されています"}. {"That nickname is already in use by another occupant","そのニックネームは既にほかの在室者によって使用されています"}.
{"That nickname is registered by another person","ニックネームはほかの人によって登録されています"}. {"That nickname is registered by another person","ニックネームはほかの人によって登録されています"}.
@ -404,18 +358,11 @@
{"This room is not anonymous","このチャットルームは非匿名です"}. {"This room is not anonymous","このチャットルームは非匿名です"}.
{"Thursday","木曜日"}. {"Thursday","木曜日"}.
{"Time delay","遅延時間"}. {"Time delay","遅延時間"}.
{"Time","時間"}.
{"Too many CAPTCHA requests","CAPTCHA 要求が多すぎます"}. {"Too many CAPTCHA requests","CAPTCHA 要求が多すぎます"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","~p回の認証に失敗しました。このIPアドレス(~s)は~s UTCまでブロックされます。"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","~p回の認証に失敗しました。このIPアドレス(~s)は~s UTCまでブロックされます。"}.
{"Too many unacked stanzas","多くのスタンザが応答していません"}. {"Too many unacked stanzas","多くのスタンザが応答していません"}.
{"Too many users in this conference","この会議にはユーザーが多すぎます"}. {"Too many users in this conference","この会議にはユーザーが多すぎます"}.
{"Total rooms","チャットルーム数"}.
{"To","To"}.
{"Traffic rate limit is exceeded","トラフィックレートの制限を超えました"}. {"Traffic rate limit is exceeded","トラフィックレートの制限を超えました"}.
{"Transactions Aborted:","トランザクションの失敗:"}.
{"Transactions Committed:","トランザクションのコミット:"}.
{"Transactions Logged:","トランザクションのログ: "}.
{"Transactions Restarted:","トランザクションの再起動:"}.
{"~ts's Offline Messages Queue","~ts のオフラインメッセージキュー"}. {"~ts's Offline Messages Queue","~ts のオフラインメッセージキュー"}.
{"Tuesday","火曜日"}. {"Tuesday","火曜日"}.
{"Unable to generate a CAPTCHA","CAPTCHA を生成できません"}. {"Unable to generate a CAPTCHA","CAPTCHA を生成できません"}.
@ -425,16 +372,10 @@
{"Uninstall","アンインストール"}. {"Uninstall","アンインストール"}.
{"Unregister an XMPP account","XMPP アカウントを削除"}. {"Unregister an XMPP account","XMPP アカウントを削除"}.
{"Unregister","削除"}. {"Unregister","削除"}.
{"Unselect All","すべての選択を解除"}.
{"Unsupported version","対応していないバージョン"}. {"Unsupported version","対応していないバージョン"}.
{"Update message of the day (don't send)","お知らせメッセージを更新 (送信しない)"}. {"Update message of the day (don't send)","お知らせメッセージを更新 (送信しない)"}.
{"Update message of the day on all hosts (don't send)","全ホストのお知らせメッセージを更新 (送信しない)"}. {"Update message of the day on all hosts (don't send)","全ホストのお知らせメッセージを更新 (送信しない)"}.
{"Update plan","更新計画"}.
{"Update ~p","更新 ~p"}.
{"Update script","スクリプトの更新"}.
{"Update","更新"}.
{"Upgrade","アップグレード"}. {"Upgrade","アップグレード"}.
{"Uptime:","起動時間:"}.
{"User already exists","ユーザーは既に存在しています"}. {"User already exists","ユーザーは既に存在しています"}.
{"User (jid)","ユーザー (JID)"}. {"User (jid)","ユーザー (JID)"}.
{"User JID","ユーザー JID"}. {"User JID","ユーザー JID"}.
@ -448,12 +389,9 @@
{"Users Last Activity","ユーザーの活動履歴"}. {"Users Last Activity","ユーザーの活動履歴"}.
{"Users","ユーザー"}. {"Users","ユーザー"}.
{"User","ユーザー"}. {"User","ユーザー"}.
{"Validate","検証"}.
{"Value of '~s' should be boolean","'~s' の値はブール値である必要があります"}. {"Value of '~s' should be boolean","'~s' の値はブール値である必要があります"}.
{"Value of '~s' should be integer","'~s' の値は整数である必要があります"}. {"Value of '~s' should be integer","'~s' の値は整数である必要があります"}.
{"vCard User Search","vCard検索"}. {"vCard User Search","vCard検索"}.
{"View Queue","キューを表示"}.
{"View Roster","名簿を表示"}.
{"Virtual Hosts","バーチャルホスト"}. {"Virtual Hosts","バーチャルホスト"}.
{"Visitors are not allowed to change their nicknames in this room","傍聴者はこのチャットルームでニックネームを変更することはできません"}. {"Visitors are not allowed to change their nicknames in this room","傍聴者はこのチャットルームでニックネームを変更することはできません"}.
{"Visitors are not allowed to send messages to all occupants","傍聴者はすべての在室者にメッセージを送信することはできません"}. {"Visitors are not allowed to send messages to all occupants","傍聴者はすべての在室者にメッセージを送信することはできません"}.

View file

@ -9,8 +9,6 @@
{"A password is required to enter this room","U hebt een wachtwoord nodig om deze chatruimte te kunnen betreden"}. {"A password is required to enter this room","U hebt een wachtwoord nodig om deze chatruimte te kunnen betreden"}.
{"Access denied by service policy","De toegang werd geweigerd door het beleid van deze dienst"}. {"Access denied by service policy","De toegang werd geweigerd door het beleid van deze dienst"}.
{"Action on user","Actie op gebruiker"}. {"Action on user","Actie op gebruiker"}.
{"Add Jabber ID","Jabber ID toevoegen"}.
{"Add New","Toevoegen"}.
{"Add User","Gebruiker toevoegen"}. {"Add User","Gebruiker toevoegen"}.
{"Administration of ","Beheer van "}. {"Administration of ","Beheer van "}.
{"Administration","Beheer"}. {"Administration","Beheer"}.
@ -53,21 +51,16 @@
{"Conference room does not exist","De chatruimte bestaat niet"}. {"Conference room does not exist","De chatruimte bestaat niet"}.
{"Configuration of room ~s","Instellingen van chatruimte ~s"}. {"Configuration of room ~s","Instellingen van chatruimte ~s"}.
{"Configuration","Instellingen"}. {"Configuration","Instellingen"}.
{"Connected Resources:","Verbonden bronnen:"}.
{"Country","Land"}. {"Country","Land"}.
{"CPU Time:","Processortijd:"}.
{"Database Tables at ~p","Databasetabellen van ~p"}.
{"Database Tables Configuration at ","Instellingen van databasetabellen op "}. {"Database Tables Configuration at ","Instellingen van databasetabellen op "}.
{"Database","Database"}. {"Database","Database"}.
{"December","December"}. {"December","December"}.
{"Default users as participants","Gebruikers standaard instellen als deelnemers"}. {"Default users as participants","Gebruikers standaard instellen als deelnemers"}.
{"Delete message of the day on all hosts","Verwijder bericht-van-de-dag op alle hosts"}. {"Delete message of the day on all hosts","Verwijder bericht-van-de-dag op alle hosts"}.
{"Delete message of the day","Bericht van de dag verwijderen"}. {"Delete message of the day","Bericht van de dag verwijderen"}.
{"Delete Selected","Geselecteerde verwijderen"}.
{"Delete User","Verwijder Gebruiker"}. {"Delete User","Verwijder Gebruiker"}.
{"Deliver event notifications","Gebeurtenisbevestigingen Sturen"}. {"Deliver event notifications","Gebeurtenisbevestigingen Sturen"}.
{"Deliver payloads with event notifications","Berichten bezorgen samen met gebeurtenisnotificaties"}. {"Deliver payloads with event notifications","Berichten bezorgen samen met gebeurtenisnotificaties"}.
{"Description:","Beschrijving:"}.
{"Disc only copy","Harde schijf"}. {"Disc only copy","Harde schijf"}.
{"Dump Backup to Text File at ","Backup naar een tekstbestand schrijven op "}. {"Dump Backup to Text File at ","Backup naar een tekstbestand schrijven op "}.
{"Dump to Text File","Backup naar een tekstbestand schrijven"}. {"Dump to Text File","Backup naar een tekstbestand schrijven"}.
@ -79,7 +72,6 @@
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}. {"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}.
{"ejabberd vCard module","ejabberd's vCard-module"}. {"ejabberd vCard module","ejabberd's vCard-module"}.
{"ejabberd Web Admin","ejabberd Webbeheer"}. {"ejabberd Web Admin","ejabberd Webbeheer"}.
{"Elements","Elementen"}.
{"Email","E-mail"}. {"Email","E-mail"}.
{"Enable logging","Logs aanzetten"}. {"Enable logging","Logs aanzetten"}.
{"Enable message archiving","Zet bericht-archivering aan"}. {"Enable message archiving","Zet bericht-archivering aan"}.
@ -90,7 +82,6 @@
{"Enter path to jabberd14 spool file","Voer pad naar jabberd14-spool-bestand in"}. {"Enter path to jabberd14 spool file","Voer pad naar jabberd14-spool-bestand in"}.
{"Enter path to text file","Voer pad naar backupbestand in"}. {"Enter path to text file","Voer pad naar backupbestand in"}.
{"Enter the text you see","Voer de getoonde tekst in"}. {"Enter the text you see","Voer de getoonde tekst in"}.
{"Error","Fout"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Geen CAPTCHA test voor Jabber IDs"}. {"Exclude Jabber IDs from CAPTCHA challenge","Geen CAPTCHA test voor Jabber IDs"}.
{"Export all tables as SQL queries to a file:","Exporteer alle tabellen als SQL-queries naar een bestand:"}. {"Export all tables as SQL queries to a file:","Exporteer alle tabellen als SQL-queries naar een bestand:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exporteer data van alle gebruikers in de server naar PIEFXIS-bestanden (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exporteer data van alle gebruikers in de server naar PIEFXIS-bestanden (XEP-0227):"}.
@ -99,22 +90,17 @@
{"Family Name","Achternaam"}. {"Family Name","Achternaam"}.
{"February","Februari"}. {"February","Februari"}.
{"Friday","Vrijdag"}. {"Friday","Vrijdag"}.
{"From","Van"}.
{"Full Name","Volledige naam"}. {"Full Name","Volledige naam"}.
{"Get Number of Online Users","Aantal Aanwezige Gebruikers Opvragen"}. {"Get Number of Online Users","Aantal Aanwezige Gebruikers Opvragen"}.
{"Get Number of Registered Users","Aantal Geregistreerde Gebruikers Opvragen"}. {"Get Number of Registered Users","Aantal Geregistreerde Gebruikers Opvragen"}.
{"Get User Last Login Time","Tijd van Laatste Aanmelding Opvragen"}. {"Get User Last Login Time","Tijd van Laatste Aanmelding Opvragen"}.
{"Get User Password","Gebruikerswachtwoord Opvragen"}.
{"Get User Statistics","Gebruikers-statistieken Opvragen"}. {"Get User Statistics","Gebruikers-statistieken Opvragen"}.
{"Grant voice to this person?","Stemaanvraag honoreren voor deze persoon?"}. {"Grant voice to this person?","Stemaanvraag honoreren voor deze persoon?"}.
{"Group","Groep"}.
{"Groups","Groepen"}.
{"has been banned","is verbannen"}. {"has been banned","is verbannen"}.
{"has been kicked because of a system shutdown","is weggestuurd omdat het systeem gestopt wordt"}. {"has been kicked because of a system shutdown","is weggestuurd omdat het systeem gestopt wordt"}.
{"has been kicked because of an affiliation change","is weggestuurd vanwege een affiliatieverandering"}. {"has been kicked because of an affiliation change","is weggestuurd vanwege een affiliatieverandering"}.
{"has been kicked because the room has been changed to members-only","is weggestuurd omdat de chatruimte vanaf heden alleen toegankelijk is voor leden"}. {"has been kicked because the room has been changed to members-only","is weggestuurd omdat de chatruimte vanaf heden alleen toegankelijk is voor leden"}.
{"has been kicked","is weggestuurd"}. {"has been kicked","is weggestuurd"}.
{"Host","Host"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Als U het CAPTCHA-plaatje niet ziet, bezoek dan de webpagina."}. {"If you don't see the CAPTCHA image here, visit the web page.","Als U het CAPTCHA-plaatje niet ziet, bezoek dan de webpagina."}.
{"Import Directory","Directory importeren"}. {"Import Directory","Directory importeren"}.
{"Import File","Bestand importeren"}. {"Import File","Bestand importeren"}.
@ -140,8 +126,6 @@
{"Last month","Afgelopen maand"}. {"Last month","Afgelopen maand"}.
{"Last year","Afgelopen jaar"}. {"Last year","Afgelopen jaar"}.
{"leaves the room","verliet de chatruimte"}. {"leaves the room","verliet de chatruimte"}.
{"List of rooms","Lijst van groepsgesprekken"}.
{"Low level update script","Lowlevel script voor de opwaardering"}.
{"Make participants list public","Deelnemerslijst publiek maken"}. {"Make participants list public","Deelnemerslijst publiek maken"}.
{"Make room CAPTCHA protected","Chatruimte beveiligen met een geautomatiseerde Turing test"}. {"Make room CAPTCHA protected","Chatruimte beveiligen met een geautomatiseerde Turing test"}.
{"Make room members-only","Chatruimte enkel toegankelijk maken voor leden"}. {"Make room members-only","Chatruimte enkel toegankelijk maken voor leden"}.
@ -153,19 +137,15 @@
{"Max payload size in bytes","Maximumgrootte van bericht in bytes"}. {"Max payload size in bytes","Maximumgrootte van bericht in bytes"}.
{"Maximum Number of Occupants","Maximum aantal aanwezigen"}. {"Maximum Number of Occupants","Maximum aantal aanwezigen"}.
{"May","Mei"}. {"May","Mei"}.
{"Members:","Groepsleden:"}.
{"Membership is required to enter this room","U moet lid zijn om deze chatruimte te kunnen betreden"}. {"Membership is required to enter this room","U moet lid zijn om deze chatruimte te kunnen betreden"}.
{"Memory","Geheugen"}.
{"Message body","Bericht"}. {"Message body","Bericht"}.
{"Middle Name","Tussennaam"}. {"Middle Name","Tussennaam"}.
{"Minimum interval between voice requests (in seconds)","Minimale interval tussen stemaanvragen (in seconden)"}. {"Minimum interval between voice requests (in seconds)","Minimale interval tussen stemaanvragen (in seconden)"}.
{"Moderator privileges required","U hebt moderatorprivileges nodig"}. {"Moderator privileges required","U hebt moderatorprivileges nodig"}.
{"Modified modules","Gewijzigde modules"}.
{"Monday","Maandag"}. {"Monday","Maandag"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multi-User Chat","Groepschat"}. {"Multi-User Chat","Groepschat"}.
{"Name","Naam"}. {"Name","Naam"}.
{"Name:","Naam:"}.
{"Never","Nooit"}. {"Never","Nooit"}.
{"New Password:","Nieuw Wachtwoord:"}. {"New Password:","Nieuw Wachtwoord:"}.
{"Nickname Registration at ","Registratie van een bijnaam op "}. {"Nickname Registration at ","Registratie van een bijnaam op "}.
@ -188,12 +168,9 @@
{"Number of online users","Aantal Aanwezige Gebruikers"}. {"Number of online users","Aantal Aanwezige Gebruikers"}.
{"Number of registered users","Aantal Geregistreerde Gebruikers"}. {"Number of registered users","Aantal Geregistreerde Gebruikers"}.
{"October","Oktober"}. {"October","Oktober"}.
{"Offline Messages","Offline berichten"}.
{"Offline Messages:","Offline berichten:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Oud Wachtwoord:"}. {"Old Password:","Oud Wachtwoord:"}.
{"Online Users","Online gebruikers"}. {"Online Users","Online gebruikers"}.
{"Online Users:","Online gebruikers:"}.
{"Online","Online"}. {"Online","Online"}.
{"Only deliver notifications to available users","Notificaties alleen verzenden naar online gebruikers"}. {"Only deliver notifications to available users","Notificaties alleen verzenden naar online gebruikers"}.
{"Only moderators and participants are allowed to change the subject in this room","Alleen moderators en deelnemers mogen het onderwerp van deze chatruimte veranderen"}. {"Only moderators and participants are allowed to change the subject in this room","Alleen moderators en deelnemers mogen het onderwerp van deze chatruimte veranderen"}.
@ -205,16 +182,13 @@
{"Organization Name","Organisatie"}. {"Organization Name","Organisatie"}.
{"Organization Unit","Afdeling"}. {"Organization Unit","Afdeling"}.
{"Outgoing s2s Connections","Uitgaande s2s-verbindingen"}. {"Outgoing s2s Connections","Uitgaande s2s-verbindingen"}.
{"Outgoing s2s Connections:","Uitgaande s2s-verbindingen:"}.
{"Owner privileges required","U hebt eigenaarsprivileges nodig"}. {"Owner privileges required","U hebt eigenaarsprivileges nodig"}.
{"Packet","Pakket"}.
{"Password Verification","Wachtwoord Bevestiging"}. {"Password Verification","Wachtwoord Bevestiging"}.
{"Password Verification:","Wachtwoord Bevestiging:"}. {"Password Verification:","Wachtwoord Bevestiging:"}.
{"Password","Wachtwoord"}. {"Password","Wachtwoord"}.
{"Password:","Wachtwoord:"}. {"Password:","Wachtwoord:"}.
{"Path to Dir","Pad naar directory"}. {"Path to Dir","Pad naar directory"}.
{"Path to File","Pad naar bestand"}. {"Path to File","Pad naar bestand"}.
{"Pending","Bezig"}.
{"Period: ","Periode: "}. {"Period: ","Periode: "}.
{"Persist items to storage","Items in het geheugen bewaren"}. {"Persist items to storage","Items in het geheugen bewaren"}.
{"Ping","Ping"}. {"Ping","Ping"}.
@ -231,17 +205,12 @@
{"RAM copy","RAM"}. {"RAM copy","RAM"}.
{"Really delete message of the day?","Wilt u het bericht van de dag verwijderen?"}. {"Really delete message of the day?","Wilt u het bericht van de dag verwijderen?"}.
{"Recipient is not in the conference room","De ontvanger is niet in de chatruimte"}. {"Recipient is not in the conference room","De ontvanger is niet in de chatruimte"}.
{"Registered Users","Geregistreerde gebruikers"}.
{"Registered Users:","Geregistreerde gebruikers:"}.
{"Register","Registreer"}. {"Register","Registreer"}.
{"Remote copy","Op andere nodes in de cluster"}. {"Remote copy","Op andere nodes in de cluster"}.
{"Remove All Offline Messages","Verwijder alle offline berichten"}.
{"Remove User","Gebruiker verwijderen"}. {"Remove User","Gebruiker verwijderen"}.
{"Remove","Verwijderen"}.
{"Replaced by new connection","Vervangen door een nieuwe verbinding"}. {"Replaced by new connection","Vervangen door een nieuwe verbinding"}.
{"Resources","Bronnen"}. {"Resources","Bronnen"}.
{"Restart Service","Herstart Service"}. {"Restart Service","Herstart Service"}.
{"Restart","Herstarten"}.
{"Restore Backup from File at ","Binaire backup direct herstellen op "}. {"Restore Backup from File at ","Binaire backup direct herstellen op "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Binaire backup herstellen na herstart van ejabberd (vereist minder geheugen):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Binaire backup herstellen na herstart van ejabberd (vereist minder geheugen):"}.
{"Restore binary backup immediately:","Binaire backup direct herstellen:"}. {"Restore binary backup immediately:","Binaire backup direct herstellen:"}.
@ -254,10 +223,8 @@
{"Room title","Naam van de chatruimte"}. {"Room title","Naam van de chatruimte"}.
{"Roster groups allowed to subscribe","Contactlijst-groepen die mogen abonneren"}. {"Roster groups allowed to subscribe","Contactlijst-groepen die mogen abonneren"}.
{"Roster size","Contactlijst Groote"}. {"Roster size","Contactlijst Groote"}.
{"RPC Call Error","RPC-oproepfout"}.
{"Running Nodes","Draaiende nodes"}. {"Running Nodes","Draaiende nodes"}.
{"Saturday","Zaterdag"}. {"Saturday","Zaterdag"}.
{"Script check","Controle van script"}.
{"Search Results for ","Zoekresultaten voor "}. {"Search Results for ","Zoekresultaten voor "}.
{"Search users in ","Gebruikers zoeken in "}. {"Search users in ","Gebruikers zoeken in "}.
{"Send announcement to all online users on all hosts","Mededeling verzenden naar alle online gebruikers op alle virtuele hosts"}. {"Send announcement to all online users on all hosts","Mededeling verzenden naar alle online gebruikers op alle virtuele hosts"}.
@ -275,18 +242,12 @@
{"Specify the access model","Geef toegangsmodel"}. {"Specify the access model","Geef toegangsmodel"}.
{"Specify the event message type","Geef type van eventbericht"}. {"Specify the event message type","Geef type van eventbericht"}.
{"Specify the publisher model","Publicatietype opgeven"}. {"Specify the publisher model","Publicatietype opgeven"}.
{"Statistics of ~p","Statistieken van ~p"}.
{"Statistics","Statistieken"}.
{"Stopped Nodes","Gestopte nodes"}. {"Stopped Nodes","Gestopte nodes"}.
{"Stop","Stoppen"}.
{"Storage Type","Opslagmethode"}.
{"Store binary backup:","Binaire backup maken:"}. {"Store binary backup:","Binaire backup maken:"}.
{"Store plain text backup:","Backup naar een tekstbestand schrijven:"}. {"Store plain text backup:","Backup naar een tekstbestand schrijven:"}.
{"Subject","Onderwerp"}. {"Subject","Onderwerp"}.
{"Submitted","Verzonden"}. {"Submitted","Verzonden"}.
{"Submit","Verzenden"}.
{"Subscriber Address","Abonnee Adres"}. {"Subscriber Address","Abonnee Adres"}.
{"Subscription","Inschrijving"}.
{"Sunday","Zondag"}. {"Sunday","Zondag"}.
{"That nickname is already in use by another occupant","Deze bijnaam is al in gebruik door een andere aanwezige"}. {"That nickname is already in use by another occupant","Deze bijnaam is al in gebruik door een andere aanwezige"}.
{"That nickname is registered by another person","Deze bijnaam is al geregistreerd door iemand anders"}. {"That nickname is registered by another person","Deze bijnaam is al geregistreerd door iemand anders"}.
@ -300,28 +261,16 @@
{"This room is not anonymous","Deze chatruimte is niet anoniem"}. {"This room is not anonymous","Deze chatruimte is niet anoniem"}.
{"Thursday","Donderdag"}. {"Thursday","Donderdag"}.
{"Time delay","Vertraging"}. {"Time delay","Vertraging"}.
{"Time","Tijd"}.
{"To","Aan"}.
{"Too many CAPTCHA requests","Te veel CAPTCHA-aanvragen"}. {"Too many CAPTCHA requests","Te veel CAPTCHA-aanvragen"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Te veel (~p) mislukte authenticatie-pogingen van dit IP-adres (~s). Dit adres zal worden gedeblokkeerd om ~s UTC"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Te veel (~p) mislukte authenticatie-pogingen van dit IP-adres (~s). Dit adres zal worden gedeblokkeerd om ~s UTC"}.
{"Too many unacked stanzas","Te veel niet-bevestigde stanzas"}. {"Too many unacked stanzas","Te veel niet-bevestigde stanzas"}.
{"Total rooms","Aantal groepsgesprekken"}.
{"Traffic rate limit is exceeded","Dataverkeerslimiet overschreden"}. {"Traffic rate limit is exceeded","Dataverkeerslimiet overschreden"}.
{"Transactions Aborted:","Afgebroken transacties:"}.
{"Transactions Committed:","Bevestigde transacties:"}.
{"Transactions Logged:","Gelogde transacties:"}.
{"Transactions Restarted:","Herstarte transacties:"}.
{"Tuesday","Dinsdag"}. {"Tuesday","Dinsdag"}.
{"Unable to generate a CAPTCHA","Het generen van een CAPTCHA is mislukt"}. {"Unable to generate a CAPTCHA","Het generen van een CAPTCHA is mislukt"}.
{"Unauthorized","Niet geautoriseerd"}. {"Unauthorized","Niet geautoriseerd"}.
{"Unregister","Opheffen"}. {"Unregister","Opheffen"}.
{"Update message of the day (don't send)","Bericht van de dag bijwerken (niet verzenden)"}. {"Update message of the day (don't send)","Bericht van de dag bijwerken (niet verzenden)"}.
{"Update message of the day on all hosts (don't send)","Verander bericht-van-de-dag op alle hosts (niet versturen)"}. {"Update message of the day on all hosts (don't send)","Verander bericht-van-de-dag op alle hosts (niet versturen)"}.
{"Update plan","Plan voor de opwaardering"}.
{"Update ~p","Opwaarderen van ~p"}.
{"Update script","Script voor de opwaardering"}.
{"Update","Bijwerken"}.
{"Uptime:","Uptime:"}.
{"User JID","JID Gebruiker"}. {"User JID","JID Gebruiker"}.
{"User Management","Gebruikersbeheer"}. {"User Management","Gebruikersbeheer"}.
{"User","Gebruiker"}. {"User","Gebruiker"}.
@ -329,7 +278,6 @@
{"Users are not allowed to register accounts so quickly","Het is gebruikers niet toegestaan zo snel achter elkaar te registreren"}. {"Users are not allowed to register accounts so quickly","Het is gebruikers niet toegestaan zo snel achter elkaar te registreren"}.
{"Users Last Activity","Laatste activiteit van gebruikers"}. {"Users Last Activity","Laatste activiteit van gebruikers"}.
{"Users","Gebruikers"}. {"Users","Gebruikers"}.
{"Validate","Bevestigen"}.
{"vCard User Search","Gebruikers zoeken"}. {"vCard User Search","Gebruikers zoeken"}.
{"Virtual Hosts","Virtuele hosts"}. {"Virtual Hosts","Virtuele hosts"}.
{"Visitors are not allowed to change their nicknames in this room","Het is bezoekers niet toegestaan hun naam te veranderen in dit kanaal"}. {"Visitors are not allowed to change their nicknames in this room","Het is bezoekers niet toegestaan hun naam te veranderen in dit kanaal"}.

View file

@ -9,8 +9,6 @@
{"Accept","Godta"}. {"Accept","Godta"}.
{"Access denied by service policy","Tilgang nektes på grunn av en tjenesteregel"}. {"Access denied by service policy","Tilgang nektes på grunn av en tjenesteregel"}.
{"Action on user","Handling på bruker"}. {"Action on user","Handling på bruker"}.
{"Add Jabber ID","Legg til Jabber-ID"}.
{"Add New","Legg til ny"}.
{"Add User","Legg til bruker"}. {"Add User","Legg til bruker"}.
{"Administration of ","Administrasjon av "}. {"Administration of ","Administrasjon av "}.
{"Administration","Administrasjon"}. {"Administration","Administrasjon"}.
@ -59,23 +57,17 @@
{"Conference room does not exist","Konferanserommet finnes ikke"}. {"Conference room does not exist","Konferanserommet finnes ikke"}.
{"Configuration of room ~s","Oppsett for rom ~s"}. {"Configuration of room ~s","Oppsett for rom ~s"}.
{"Configuration","Oppsett"}. {"Configuration","Oppsett"}.
{"Connected Resources:","Tilkoblede ressurser:"}.
{"Country","Land"}. {"Country","Land"}.
{"CPU Time:","Prosessortid:"}.
{"Current Discussion Topic","Nåværende diskusjonstema"}. {"Current Discussion Topic","Nåværende diskusjonstema"}.
{"Database Tables at ~p","Databasetabeller på ~p"}.
{"Database Tables Configuration at ","Database-tabelloppsett på "}. {"Database Tables Configuration at ","Database-tabelloppsett på "}.
{"Database","Database"}. {"Database","Database"}.
{"December","desember"}. {"December","desember"}.
{"Default users as participants","Standard brukere som deltakere"}. {"Default users as participants","Standard brukere som deltakere"}.
{"Delete message of the day","Slett melding for dagen"}. {"Delete message of the day","Slett melding for dagen"}.
{"Delete Selected","Slett valgte"}.
{"Delete User","Slett bruker"}. {"Delete User","Slett bruker"}.
{"Deliver event notifications","Lever begivenhetskunngjøringer"}. {"Deliver event notifications","Lever begivenhetskunngjøringer"}.
{"Deliver payloads with event notifications","Send innhold sammen med hendelsesmerknader"}. {"Deliver payloads with event notifications","Send innhold sammen med hendelsesmerknader"}.
{"Description:","Beskrivelse:"}.
{"Disc only copy","Kun diskkopi"}. {"Disc only copy","Kun diskkopi"}.
{"'Displayed groups' not added (they do not exist!): ","«Viste grupper» ikke lagt til (de finnes ikke!): "}.
{"Dump Backup to Text File at ","Dump sikkerhetskopi til tekstfil på "}. {"Dump Backup to Text File at ","Dump sikkerhetskopi til tekstfil på "}.
{"Dump to Text File","Dump til tekstfil"}. {"Dump to Text File","Dump til tekstfil"}.
{"Edit Properties","Rediger egenskaper"}. {"Edit Properties","Rediger egenskaper"}.
@ -84,7 +76,6 @@
{"ejabberd MUC module","ejabberd-MUC-modul"}. {"ejabberd MUC module","ejabberd-MUC-modul"}.
{"ejabberd Multicast service","ejabberd-multikastingstjeneste"}. {"ejabberd Multicast service","ejabberd-multikastingstjeneste"}.
{"ejabberd Publish-Subscribe module","ejabberd-Publish-Subscribe-modul"}. {"ejabberd Publish-Subscribe module","ejabberd-Publish-Subscribe-modul"}.
{"Elements","Elementer"}.
{"Email","E-post"}. {"Email","E-post"}.
{"Enable logging","Skru på loggføring"}. {"Enable logging","Skru på loggføring"}.
{"Enable message archiving","Skru på meldingsarkivering"}. {"Enable message archiving","Skru på meldingsarkivering"}.
@ -95,7 +86,6 @@
{"Enter path to jabberd14 spool dir","Skriv inn sti til jabberd14 spoolkatalog"}. {"Enter path to jabberd14 spool dir","Skriv inn sti til jabberd14 spoolkatalog"}.
{"Enter path to text file","Skriv inn sti til tekstfil"}. {"Enter path to text file","Skriv inn sti til tekstfil"}.
{"Enter the text you see","Skriv inn teksten du ser"}. {"Enter the text you see","Skriv inn teksten du ser"}.
{"Error","Feil"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Ekskluder Jabber-ID-er fra CAPTCHA-utfordring"}. {"Exclude Jabber IDs from CAPTCHA challenge","Ekskluder Jabber-ID-er fra CAPTCHA-utfordring"}.
{"Export all tables as SQL queries to a file:","Eksporter alle tabeller som SQL-spørringer til en fil:"}. {"Export all tables as SQL queries to a file:","Eksporter alle tabeller som SQL-spørringer til en fil:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksporter data om alle brukere på en tjener til PIEFXIS-filer (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksporter data om alle brukere på en tjener til PIEFXIS-filer (XEP-0227):"}.
@ -107,23 +97,18 @@
{"February","februar"}. {"February","februar"}.
{"File larger than ~w bytes","Fil større enn ~w byte"}. {"File larger than ~w bytes","Fil større enn ~w byte"}.
{"Friday","fredag"}. {"Friday","fredag"}.
{"From","Fra"}.
{"Full List of Room Admins","Full liste over romadministratorer"}. {"Full List of Room Admins","Full liste over romadministratorer"}.
{"Full List of Room Owners","Full liste over romeiere"}. {"Full List of Room Owners","Full liste over romeiere"}.
{"Full Name","Fullt navn"}. {"Full Name","Fullt navn"}.
{"Get Number of Online Users","Vis antall tilkoblede brukere"}. {"Get Number of Online Users","Vis antall tilkoblede brukere"}.
{"Get Number of Registered Users","Vis antall registrerte brukere"}. {"Get Number of Registered Users","Vis antall registrerte brukere"}.
{"Get User Last Login Time","Vis brukers siste innloggingstidspunkt"}. {"Get User Last Login Time","Vis brukers siste innloggingstidspunkt"}.
{"Get User Password","Hent brukers passord"}.
{"Get User Statistics","Vis brukerstatistikk"}. {"Get User Statistics","Vis brukerstatistikk"}.
{"Group","Gruppe"}.
{"Groups","Grupper"}.
{"has been banned","har blitt bannlyst"}. {"has been banned","har blitt bannlyst"}.
{"has been kicked because of a system shutdown","har blitt kastet ut på grunn av systemavstenging"}. {"has been kicked because of a system shutdown","har blitt kastet ut på grunn av systemavstenging"}.
{"has been kicked because of an affiliation change","har blitt kastet ut på grunn av en tilknytningsendring"}. {"has been kicked because of an affiliation change","har blitt kastet ut på grunn av en tilknytningsendring"}.
{"has been kicked","har blitt kastet ut"}. {"has been kicked","har blitt kastet ut"}.
{"Host unknown","Ukjent vert"}. {"Host unknown","Ukjent vert"}.
{"Host","Vert"}.
{"HTTP File Upload","HTTP-filopplasting"}. {"HTTP File Upload","HTTP-filopplasting"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Dersom du ikke ser et CAPTCHA-bilde her, besøk nettsiden."}. {"If you don't see the CAPTCHA image here, visit the web page.","Dersom du ikke ser et CAPTCHA-bilde her, besøk nettsiden."}.
{"Import Directory","Importer mappe"}. {"Import Directory","Importer mappe"}.
@ -146,16 +131,13 @@
{"July","juli"}. {"July","juli"}.
{"June","juni"}. {"June","juni"}.
{"Just created","Akkurat opprettet"}. {"Just created","Akkurat opprettet"}.
{"Label:","Etikett:"}.
{"Last Activity","Siste aktivitet"}. {"Last Activity","Siste aktivitet"}.
{"Last login","Siste innlogging"}. {"Last login","Siste innlogging"}.
{"Last month","Siste måned"}. {"Last month","Siste måned"}.
{"Last year","Siste år"}. {"Last year","Siste år"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","De minst viktige bit-ene av SHA-256-sjekksummen for tekst skal tilsvare heksadesimal etikett"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","De minst viktige bit-ene av SHA-256-sjekksummen for tekst skal tilsvare heksadesimal etikett"}.
{"leaves the room","forlater rommet"}. {"leaves the room","forlater rommet"}.
{"List of rooms","Romliste"}.
{"Logging","Loggføring"}. {"Logging","Loggføring"}.
{"Low level update script","Lavnivå-oppdateringsskript"}.
{"Make participants list public","Gjør deltakerlisten offentlig"}. {"Make participants list public","Gjør deltakerlisten offentlig"}.
{"Make room members-only","Gjør rommet tilgjengelig kun for medlemmer"}. {"Make room members-only","Gjør rommet tilgjengelig kun for medlemmer"}.
{"Make room password protected","Passordbeskytt rommet"}. {"Make room password protected","Passordbeskytt rommet"}.
@ -166,8 +148,6 @@
{"Maximum Number of History Messages Returned by Room","Maksimalt antall historikkmeldinger tilbudt av rommet"}. {"Maximum Number of History Messages Returned by Room","Maksimalt antall historikkmeldinger tilbudt av rommet"}.
{"May","mai"}. {"May","mai"}.
{"Membership is required to enter this room","Medlemskap kreves for tilgang til dette rommet"}. {"Membership is required to enter this room","Medlemskap kreves for tilgang til dette rommet"}.
{"Members:","Medlemmer:"}.
{"Memory","Minne"}.
{"Message body","Meldingskropp"}. {"Message body","Meldingskropp"}.
{"Message not found in forwarded payload","Fant ikke melding i videresendt nyttelast"}. {"Message not found in forwarded payload","Fant ikke melding i videresendt nyttelast"}.
{"Messages from strangers are rejected","Meldinger fra ukjente avvises"}. {"Messages from strangers are rejected","Meldinger fra ukjente avvises"}.
@ -175,13 +155,10 @@
{"Messages of type normal","Meldinger av normal type"}. {"Messages of type normal","Meldinger av normal type"}.
{"Middle Name","Mellomnavn"}. {"Middle Name","Mellomnavn"}.
{"Minimum interval between voice requests (in seconds)","Minimumsintervall mellom lydforespørsler (i sekunder)"}. {"Minimum interval between voice requests (in seconds)","Minimumsintervall mellom lydforespørsler (i sekunder)"}.
{"Modified modules","Endrede moduler"}.
{"Monday","mandag"}. {"Monday","mandag"}.
{"Multicast","Multikasting"}. {"Multicast","Multikasting"}.
{"Multi-User Chat","Multibrukersludring"}. {"Multi-User Chat","Multibrukersludring"}.
{"Name in the rosters where this group will be displayed","Navn i kontaktlistene der denne gruppen vises"}.
{"Name","Navn"}. {"Name","Navn"}.
{"Name:","Navn:"}.
{"Never","Aldri"}. {"Never","Aldri"}.
{"New Password:","Nytt passord:"}. {"New Password:","Nytt passord:"}.
{"Nickname can't be empty","Kallenavn kan ikke stå tomt"}. {"Nickname can't be empty","Kallenavn kan ikke stå tomt"}.
@ -206,14 +183,10 @@
{"Number of online users","Antall tilkoblede brukere"}. {"Number of online users","Antall tilkoblede brukere"}.
{"Number of registered users","Antall registrerte brukere"}. {"Number of registered users","Antall registrerte brukere"}.
{"October","oktober"}. {"October","oktober"}.
{"Offline Messages","Frakoblede meldinger"}.
{"Offline Messages:","Frakoblede meldinger:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Gammelt passord:"}. {"Old Password:","Gammelt passord:"}.
{"Online Users","Tilkoblede brukere"}. {"Online Users","Tilkoblede brukere"}.
{"Online Users:","Tilkoblede brukere:"}.
{"Online","Tilkoblet"}. {"Online","Tilkoblet"}.
{"Only admins can see this","Kun administratorer kan se dette"}.
{"Only deliver notifications to available users","Kun send kunngjøringer til tilgjengelige brukere"}. {"Only deliver notifications to available users","Kun send kunngjøringer til tilgjengelige brukere"}.
{"Only occupants are allowed to send messages to the conference","Bare deltakere får sende normale meldinger til konferansen"}. {"Only occupants are allowed to send messages to the conference","Bare deltakere får sende normale meldinger til konferansen"}.
{"Only occupants are allowed to send queries to the conference","Kun deltakere tillates å sende forespørsler til konferansen"}. {"Only occupants are allowed to send queries to the conference","Kun deltakere tillates å sende forespørsler til konferansen"}.
@ -222,9 +195,7 @@
{"Organization Name","Organisasjonsnavn"}. {"Organization Name","Organisasjonsnavn"}.
{"Organization Unit","Organisasjonsenhet"}. {"Organization Unit","Organisasjonsenhet"}.
{"Outgoing s2s Connections","Utgående s2s-koblinger"}. {"Outgoing s2s Connections","Utgående s2s-koblinger"}.
{"Outgoing s2s Connections:","Utgående s2s-koblinger"}.
{"Owner privileges required","Eierprivilegier kreves"}. {"Owner privileges required","Eierprivilegier kreves"}.
{"Packet","Pakke"}.
{"Participant","Deltager"}. {"Participant","Deltager"}.
{"Password Verification","Passordbekreftelse"}. {"Password Verification","Passordbekreftelse"}.
{"Password Verification:","Passordbekreftelse:"}. {"Password Verification:","Passordbekreftelse:"}.
@ -232,7 +203,6 @@
{"Password:","Passord:"}. {"Password:","Passord:"}.
{"Path to Dir","Sti til mappe"}. {"Path to Dir","Sti til mappe"}.
{"Path to File","Sti til fil"}. {"Path to File","Sti til fil"}.
{"Pending","Ventende"}.
{"Period: ","Periode: "}. {"Period: ","Periode: "}.
{"Persist items to storage","Vedvarende elementer til lagring"}. {"Persist items to storage","Vedvarende elementer til lagring"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Merk at disse valgene kun vil sikkerhetskopiere den innebygde Mnesia-databasen. Dersom du bruker ODBC-modulen må du også ta sikkerhetskopi av din SQL-database."}. {"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Merk at disse valgene kun vil sikkerhetskopiere den innebygde Mnesia-databasen. Dersom du bruker ODBC-modulen må du også ta sikkerhetskopi av din SQL-database."}.
@ -249,19 +219,14 @@
{"RAM copy","Minnekopi"}. {"RAM copy","Minnekopi"}.
{"Really delete message of the day?","Vil du virkelig slette melding for dagen?"}. {"Really delete message of the day?","Vil du virkelig slette melding for dagen?"}.
{"Recipient is not in the conference room","Mottakeren er ikke i konferanserommet"}. {"Recipient is not in the conference room","Mottakeren er ikke i konferanserommet"}.
{"Registered Users","Registrerte brukere"}.
{"Registered Users:","Registrerte brukere:"}.
{"Register","Registrer"}. {"Register","Registrer"}.
{"Remove All Offline Messages","Fjern Alle frakoblede meldinger"}.
{"Remove User","Fjern bruker"}. {"Remove User","Fjern bruker"}.
{"Remove","Fjern"}.
{"Replaced by new connection","Erstattet av en ny tilkobling"}. {"Replaced by new connection","Erstattet av en ny tilkobling"}.
{"Request has timed out","Tidsavbrudd for forespørsel"}. {"Request has timed out","Tidsavbrudd for forespørsel"}.
{"Request is ignored","Forespørsel ignorert"}. {"Request is ignored","Forespørsel ignorert"}.
{"Requested role","Forespurt rolle"}. {"Requested role","Forespurt rolle"}.
{"Resources","Ressurser"}. {"Resources","Ressurser"}.
{"Restart Service","Omstart av tjeneste"}. {"Restart Service","Omstart av tjeneste"}.
{"Restart","Start på ny"}.
{"Restore Backup from File at ","Gjenopprett fra sikkerhetskopifil på "}. {"Restore Backup from File at ","Gjenopprett fra sikkerhetskopifil på "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Gjenopprett binær sikkerhetskopi etter neste ejabberd-omstart (krever mindre minne):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Gjenopprett binær sikkerhetskopi etter neste ejabberd-omstart (krever mindre minne):"}.
{"Restore binary backup immediately:","Gjenopprett binær sikkerhetskopi umiddelbart:"}. {"Restore binary backup immediately:","Gjenopprett binær sikkerhetskopi umiddelbart:"}.
@ -276,10 +241,8 @@
{"Roster size","Kontaktlistestørrelse"}. {"Roster size","Kontaktlistestørrelse"}.
{"Running Nodes","Kjørende noder"}. {"Running Nodes","Kjørende noder"}.
{"Saturday","lørdag"}. {"Saturday","lørdag"}.
{"Script check","Skript-sjekk"}.
{"Search Results for ","Søkeresultater for "}. {"Search Results for ","Søkeresultater for "}.
{"Search users in ","Søk etter brukere i "}. {"Search users in ","Søk etter brukere i "}.
{"Select All","Velg alt"}.
{"Send announcement to all online users on all hosts","Send kunngjøring til alle tilkoblede brukere på alle verter"}. {"Send announcement to all online users on all hosts","Send kunngjøring til alle tilkoblede brukere på alle verter"}.
{"Send announcement to all online users","Send kunngjøring alle tilkoblede brukere"}. {"Send announcement to all online users","Send kunngjøring alle tilkoblede brukere"}.
{"Send announcement to all users on all hosts","Send kunngjøring til alle brukere på alle verter"}. {"Send announcement to all users on all hosts","Send kunngjøring til alle brukere på alle verter"}.
@ -293,19 +256,13 @@
{"Specify the access model","Spesifiser tilgangsmodellen"}. {"Specify the access model","Spesifiser tilgangsmodellen"}.
{"Specify the event message type","Spesifiser hendelsesbeskjedtypen"}. {"Specify the event message type","Spesifiser hendelsesbeskjedtypen"}.
{"Specify the publisher model","Angi publiseringsmodell"}. {"Specify the publisher model","Angi publiseringsmodell"}.
{"Statistics of ~p","Statistikk for ~p"}.
{"Statistics","Statistikk"}.
{"Stopped Nodes","Stoppede noder"}. {"Stopped Nodes","Stoppede noder"}.
{"Stop","Stopp"}.
{"Storage Type","Lagringstype"}.
{"Store binary backup:","Lagre binær sikkerhetskopi:"}. {"Store binary backup:","Lagre binær sikkerhetskopi:"}.
{"Store plain text backup:","Lagre klartekst-sikkerhetskopi:"}. {"Store plain text backup:","Lagre klartekst-sikkerhetskopi:"}.
{"Subject","Emne"}. {"Subject","Emne"}.
{"Submit","Send"}.
{"Submitted","Innsendt"}. {"Submitted","Innsendt"}.
{"Subscriber Address","Abonnementsadresse"}. {"Subscriber Address","Abonnementsadresse"}.
{"Subscribers may publish","Abonnenter kan publisere"}. {"Subscribers may publish","Abonnenter kan publisere"}.
{"Subscription","Abonnement"}.
{"Subscriptions are not allowed","Abonnementer tillates ikke"}. {"Subscriptions are not allowed","Abonnementer tillates ikke"}.
{"Sunday","søndag"}. {"Sunday","søndag"}.
{"Text associated with a picture","Tekst tilknyttet et bilde"}. {"Text associated with a picture","Tekst tilknyttet et bilde"}.
@ -334,17 +291,11 @@
{"This room is not anonymous","Dette rommet er ikke anonymt"}. {"This room is not anonymous","Dette rommet er ikke anonymt"}.
{"Thursday","torsdag"}. {"Thursday","torsdag"}.
{"Time delay","Tidsforsinkelse"}. {"Time delay","Tidsforsinkelse"}.
{"Time","Tid"}.
{"To register, visit ~s","Besøk ~s for registrering"}. {"To register, visit ~s","Besøk ~s for registrering"}.
{"Too many CAPTCHA requests","For mange CAPTCHA-forespørsler"}. {"Too many CAPTCHA requests","For mange CAPTCHA-forespørsler"}.
{"Too many <item/> elements","For mange <item/>-elementer"}. {"Too many <item/> elements","For mange <item/>-elementer"}.
{"Too many <list/> elements","For mange <list/>-elementer"}. {"Too many <list/> elements","For mange <list/>-elementer"}.
{"To","Til"}.
{"Traffic rate limit is exceeded","Grense for tillatt trafikkmengde overskredet"}. {"Traffic rate limit is exceeded","Grense for tillatt trafikkmengde overskredet"}.
{"Transactions Aborted:","Avbrutte transaksjoner:"}.
{"Transactions Committed:","Sendte transaksjoner:"}.
{"Transactions Logged:","Loggede transaksjoner:"}.
{"Transactions Restarted:","Omstartede transaksjoner:"}.
{"Tuesday","tirsdag"}. {"Tuesday","tirsdag"}.
{"Unable to generate a CAPTCHA","Kunne ikke generere CAPTCHA"}. {"Unable to generate a CAPTCHA","Kunne ikke generere CAPTCHA"}.
{"Unauthorized","Uautorisert"}. {"Unauthorized","Uautorisert"}.
@ -353,11 +304,6 @@
{"Unsupported version","Ustøttet versjon"}. {"Unsupported version","Ustøttet versjon"}.
{"Update message of the day (don't send)","Oppdater melding for dagen (ikke send)"}. {"Update message of the day (don't send)","Oppdater melding for dagen (ikke send)"}.
{"Update message of the day on all hosts (don't send)","Oppdater melding for dagen på alle verter (ikke send)"}. {"Update message of the day on all hosts (don't send)","Oppdater melding for dagen på alle verter (ikke send)"}.
{"Update plan","Oppdateringplan"}.
{"Update ~p","Oppdater ~p"}.
{"Update script","Oppdateringsskript"}.
{"Update","Oppdater"}.
{"Uptime:","Oppetid:"}.
{"User already exists","Brukeren finnes allerede"}. {"User already exists","Brukeren finnes allerede"}.
{"User Management","Brukerhåndtering"}. {"User Management","Brukerhåndtering"}.
{"User removed","Fjernet bruker"}. {"User removed","Fjernet bruker"}.
@ -367,9 +313,7 @@
{"Users are not allowed to register accounts so quickly","Brukere har ikke lov til registrere kontoer så fort"}. {"Users are not allowed to register accounts so quickly","Brukere har ikke lov til registrere kontoer så fort"}.
{"Users Last Activity","Brukers siste aktivitet"}. {"Users Last Activity","Brukers siste aktivitet"}.
{"Users","Brukere"}. {"Users","Brukere"}.
{"Validate","Bekrefte gyldighet"}.
{"vCard User Search","vCard-brukersøk"}. {"vCard User Search","vCard-brukersøk"}.
{"View Queue","Vis kø"}.
{"Virtual Hosts","Virtuelle maskiner"}. {"Virtual Hosts","Virtuelle maskiner"}.
{"Visitor","Besøker"}. {"Visitor","Besøker"}.
{"Visitors are not allowed to change their nicknames in this room","Besøkende får ikke lov å endre kallenavn i dette rommet"}. {"Visitors are not allowed to change their nicknames in this room","Besøkende får ikke lov å endre kallenavn i dette rommet"}.

View file

@ -6,11 +6,11 @@
{" has set the subject to: "," zmienił temat na: "}. {" has set the subject to: "," zmienił temat na: "}.
{"A friendly name for the node","Przyjazna nazwa węzła"}. {"A friendly name for the node","Przyjazna nazwa węzła"}.
{"A password is required to enter this room","Aby wejść do pokoju wymagane jest hasło"}. {"A password is required to enter this room","Aby wejść do pokoju wymagane jest hasło"}.
{"A Web Page","Strona sieci Web"}.
{"Accept","Zaakceptuj"}. {"Accept","Zaakceptuj"}.
{"Access denied by service policy","Dostęp zabroniony zgodnie z zasadami usługi"}. {"Access denied by service policy","Dostęp zabroniony zgodnie z zasadami usługi"}.
{"Action on user","Wykonaj na użytkowniku"}. {"Action on user","Wykonaj na użytkowniku"}.
{"Add Jabber ID","Dodaj Jabber ID"}. {"Add a hat to a user","Dodaj kapelusz do użytkownika"}.
{"Add New","Dodaj nowe"}.
{"Add User","Dodaj użytkownika"}. {"Add User","Dodaj użytkownika"}.
{"Administration of ","Zarządzanie "}. {"Administration of ","Zarządzanie "}.
{"Administration","Administracja"}. {"Administration","Administracja"}.
@ -18,6 +18,7 @@
{"All activity","Cała aktywność"}. {"All activity","Cała aktywność"}.
{"All Users","Wszyscy użytkownicy"}. {"All Users","Wszyscy użytkownicy"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Pozwól temu Jabber ID na zapisanie się do tego węzła PubSub"}. {"Allow this Jabber ID to subscribe to this pubsub node?","Pozwól temu Jabber ID na zapisanie się do tego węzła PubSub"}.
{"Allow this person to register with the room?","Pozwolić tej osobie zarejestrować się w tym pokoju?"}.
{"Allow users to change the subject","Pozwól użytkownikom zmieniać temat"}. {"Allow users to change the subject","Pozwól użytkownikom zmieniać temat"}.
{"Allow users to query other users","Pozwól użytkownikom pobierać informacje o innych użytkownikach"}. {"Allow users to query other users","Pozwól użytkownikom pobierać informacje o innych użytkownikach"}.
{"Allow users to send invites","Pozwól użytkownikom wysyłać zaproszenia"}. {"Allow users to send invites","Pozwól użytkownikom wysyłać zaproszenia"}.
@ -60,22 +61,17 @@
{"Conference room does not exist","Pokój konferencyjny nie istnieje"}. {"Conference room does not exist","Pokój konferencyjny nie istnieje"}.
{"Configuration of room ~s","Konfiguracja pokoju ~s"}. {"Configuration of room ~s","Konfiguracja pokoju ~s"}.
{"Configuration","Konfiguracja"}. {"Configuration","Konfiguracja"}.
{"Connected Resources:","Zasoby zalogowane:"}.
{"Country","Państwo"}. {"Country","Państwo"}.
{"CPU Time:","Czas CPU:"}.
{"Database failure","Błąd bazy danych"}. {"Database failure","Błąd bazy danych"}.
{"Database Tables at ~p","Tabele bazy na ~p"}.
{"Database Tables Configuration at ","Konfiguracja tabel bazy na "}. {"Database Tables Configuration at ","Konfiguracja tabel bazy na "}.
{"Database","Baza danych"}. {"Database","Baza danych"}.
{"December","Grudzień"}. {"December","Grudzień"}.
{"Default users as participants","Domyślni użytkownicy jako uczestnicy"}. {"Default users as participants","Domyślni użytkownicy jako uczestnicy"}.
{"Delete message of the day on all hosts","Usuń wiadomość dnia ze wszystkich hostów"}. {"Delete message of the day on all hosts","Usuń wiadomość dnia ze wszystkich hostów"}.
{"Delete message of the day","Usuń wiadomość dnia"}. {"Delete message of the day","Usuń wiadomość dnia"}.
{"Delete Selected","Usuń zaznaczone"}.
{"Delete User","Usuń użytkownika"}. {"Delete User","Usuń użytkownika"}.
{"Deliver event notifications","Dostarczaj powiadomienia o zdarzeniach"}. {"Deliver event notifications","Dostarczaj powiadomienia o zdarzeniach"}.
{"Deliver payloads with event notifications","Dostarczaj zawartość publikacji wraz z powiadomieniami o zdarzeniach"}. {"Deliver payloads with event notifications","Dostarczaj zawartość publikacji wraz z powiadomieniami o zdarzeniach"}.
{"Description:","Opis:"}.
{"Disc only copy","Kopia tylko na dysku"}. {"Disc only copy","Kopia tylko na dysku"}.
{"Dump Backup to Text File at ","Zapisz kopię zapasową w pliku tekstowym na "}. {"Dump Backup to Text File at ","Zapisz kopię zapasową w pliku tekstowym na "}.
{"Dump to Text File","Wykonaj kopie do pliku tekstowego"}. {"Dump to Text File","Wykonaj kopie do pliku tekstowego"}.
@ -87,7 +83,6 @@
{"ejabberd SOCKS5 Bytestreams module","Moduł SOCKS5 Bytestreams"}. {"ejabberd SOCKS5 Bytestreams module","Moduł SOCKS5 Bytestreams"}.
{"ejabberd vCard module","Moduł vCard ejabberd"}. {"ejabberd vCard module","Moduł vCard ejabberd"}.
{"ejabberd Web Admin","ejabberd: Panel Administracyjny"}. {"ejabberd Web Admin","ejabberd: Panel Administracyjny"}.
{"Elements","Elementy"}.
{"Email","Email"}. {"Email","Email"}.
{"Enable logging","Włącz logowanie"}. {"Enable logging","Włącz logowanie"}.
{"Enable message archiving","Włącz archiwizowanie rozmów"}. {"Enable message archiving","Włącz archiwizowanie rozmów"}.
@ -99,7 +94,6 @@
{"Enter path to jabberd14 spool file","Wprowadź ścieżkę do roboczego pliku serwera jabberd14"}. {"Enter path to jabberd14 spool file","Wprowadź ścieżkę do roboczego pliku serwera jabberd14"}.
{"Enter path to text file","Wprowadź scieżkę do pliku tekstowego"}. {"Enter path to text file","Wprowadź scieżkę do pliku tekstowego"}.
{"Enter the text you see","Przepisz tekst z obrazka"}. {"Enter the text you see","Przepisz tekst z obrazka"}.
{"Error","Błąd"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Pomiń Jabber ID z żądania CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Pomiń Jabber ID z żądania CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Wyeksportuj wszystkie tabele jako zapytania SQL do pliku:"}. {"Export all tables as SQL queries to a file:","Wyeksportuj wszystkie tabele jako zapytania SQL do pliku:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksportuj dane wszystkich użytkowników serwera do plików w formacie PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksportuj dane wszystkich użytkowników serwera do plików w formacie PIEFXIS (XEP-0227):"}.
@ -115,24 +109,19 @@
{"February","Luty"}. {"February","Luty"}.
{"File larger than ~w bytes","Plik jest większy niż ~w bajtów"}. {"File larger than ~w bytes","Plik jest większy niż ~w bajtów"}.
{"Friday","Piątek"}. {"Friday","Piątek"}.
{"From","Od"}.
{"Full Name","Pełna nazwa"}. {"Full Name","Pełna nazwa"}.
{"Get Number of Online Users","Pokaż liczbę zalogowanych użytkowników"}. {"Get Number of Online Users","Pokaż liczbę zalogowanych użytkowników"}.
{"Get Number of Registered Users","Pokaż liczbę zarejestrowanych użytkowników"}. {"Get Number of Registered Users","Pokaż liczbę zarejestrowanych użytkowników"}.
{"Get User Last Login Time","Pokaż czas ostatniego zalogowania uzytkownika"}. {"Get User Last Login Time","Pokaż czas ostatniego zalogowania uzytkownika"}.
{"Get User Password","Pobierz hasło użytkownika"}.
{"Get User Statistics","Pobierz statystyki użytkownika"}. {"Get User Statistics","Pobierz statystyki użytkownika"}.
{"Given Name","Imię"}. {"Given Name","Imię"}.
{"Grant voice to this person?","Udzielić głosu tej osobie?"}. {"Grant voice to this person?","Udzielić głosu tej osobie?"}.
{"Group","Grupa"}.
{"Groups","Grupy"}.
{"has been banned","został wykluczony"}. {"has been banned","został wykluczony"}.
{"has been kicked because of a system shutdown","został wyrzucony z powodu wyłączenia systemu"}. {"has been kicked because of a system shutdown","został wyrzucony z powodu wyłączenia systemu"}.
{"has been kicked because of an affiliation change","został wyrzucony z powodu zmiany przynależności"}. {"has been kicked because of an affiliation change","został wyrzucony z powodu zmiany przynależności"}.
{"has been kicked because the room has been changed to members-only","został wyrzucony z powodu zmiany pokoju na \"Tylko dla Członków\""}. {"has been kicked because the room has been changed to members-only","został wyrzucony z powodu zmiany pokoju na \"Tylko dla Członków\""}.
{"has been kicked","został wyrzucony"}. {"has been kicked","został wyrzucony"}.
{"Host unknown","Nieznany host"}. {"Host unknown","Nieznany host"}.
{"Host","Host"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Jeśli nie widzisz obrazka CAPTCHA, odwiedź stronę internetową."}. {"If you don't see the CAPTCHA image here, visit the web page.","Jeśli nie widzisz obrazka CAPTCHA, odwiedź stronę internetową."}.
{"Import Directory","Importuj katalog"}. {"Import Directory","Importuj katalog"}.
{"Import File","Importuj plik"}. {"Import File","Importuj plik"}.
@ -144,7 +133,6 @@
{"Import Users From jabberd14 Spool Files","Importuj użytkowników z plików roboczych serwera jabberd14"}. {"Import Users From jabberd14 Spool Files","Importuj użytkowników z plików roboczych serwera jabberd14"}.
{"Improper domain part of 'from' attribute","Nieprawidłowa domena atrybutu 'from'"}. {"Improper domain part of 'from' attribute","Nieprawidłowa domena atrybutu 'from'"}.
{"Improper message type","Nieprawidłowy typ wiadomości"}. {"Improper message type","Nieprawidłowy typ wiadomości"}.
{"Incoming s2s Connections:","Przychodzące połączenia s2s:"}.
{"Incorrect CAPTCHA submit","Nieprawidłowa odpowiedz dla CAPTCHA"}. {"Incorrect CAPTCHA submit","Nieprawidłowa odpowiedz dla CAPTCHA"}.
{"Incorrect data form","Nieprawidłowe dane w formatce"}. {"Incorrect data form","Nieprawidłowe dane w formatce"}.
{"Incorrect password","Nieprawidłowe hasło"}. {"Incorrect password","Nieprawidłowe hasło"}.
@ -169,8 +157,6 @@
{"Last month","Miniony miesiąc"}. {"Last month","Miniony miesiąc"}.
{"Last year","Miniony rok"}. {"Last year","Miniony rok"}.
{"leaves the room","opuszcza pokój"}. {"leaves the room","opuszcza pokój"}.
{"List of rooms","Lista pokoi"}.
{"Low level update script","Skrypt aktualizacji niskiego poziomu"}.
{"Make participants list public","Upublicznij listę uczestników"}. {"Make participants list public","Upublicznij listę uczestników"}.
{"Make room CAPTCHA protected","Pokój zabezpieczony captchą"}. {"Make room CAPTCHA protected","Pokój zabezpieczony captchą"}.
{"Make room members-only","Pokój tylko dla członków"}. {"Make room members-only","Pokój tylko dla członków"}.
@ -183,22 +169,18 @@
{"Max payload size in bytes","Maksymalna wielkość powiadomienia w bajtach"}. {"Max payload size in bytes","Maksymalna wielkość powiadomienia w bajtach"}.
{"Maximum Number of Occupants","Maksymalna liczba uczestników"}. {"Maximum Number of Occupants","Maksymalna liczba uczestników"}.
{"May","Maj"}. {"May","Maj"}.
{"Members:","Członkowie:"}.
{"Membership is required to enter this room","Musisz być na liście członków tego pokoju aby do niego wejść"}. {"Membership is required to enter this room","Musisz być na liście członków tego pokoju aby do niego wejść"}.
{"Memory","Pamięć"}.
{"Message body","Treść wiadomości"}. {"Message body","Treść wiadomości"}.
{"Message not found in forwarded payload","Nie znaleziona wiadomości w przesyłanych dalej danych"}. {"Message not found in forwarded payload","Nie znaleziona wiadomości w przesyłanych dalej danych"}.
{"Middle Name","Drugie imię"}. {"Middle Name","Drugie imię"}.
{"Minimum interval between voice requests (in seconds)","Minimalny odstęp między żądaniami głosowymi (w sekundach)"}. {"Minimum interval between voice requests (in seconds)","Minimalny odstęp między żądaniami głosowymi (w sekundach)"}.
{"Moderator privileges required","Wymagane uprawnienia moderatora"}. {"Moderator privileges required","Wymagane uprawnienia moderatora"}.
{"Moderator","Moderatorzy"}. {"Moderator","Moderatorzy"}.
{"Modified modules","Zmodyfikowane moduły"}.
{"Module failed to handle the query","Moduł nie był wstanie przetworzyć zapytania"}. {"Module failed to handle the query","Moduł nie był wstanie przetworzyć zapytania"}.
{"Monday","Poniedziałek"}. {"Monday","Poniedziałek"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multi-User Chat","Wieloosobowa rozmowa"}. {"Multi-User Chat","Wieloosobowa rozmowa"}.
{"Name","Imię"}. {"Name","Imię"}.
{"Name:","Nazwa:"}.
{"Neither 'jid' nor 'nick' attribute found","Brak zarówno atrybutu 'jid' jak i 'nick'"}. {"Neither 'jid' nor 'nick' attribute found","Brak zarówno atrybutu 'jid' jak i 'nick'"}.
{"Neither 'role' nor 'affiliation' attribute found","Brak zarówno atrybutu 'role' jak i 'affiliation'"}. {"Neither 'role' nor 'affiliation' attribute found","Brak zarówno atrybutu 'role' jak i 'affiliation'"}.
{"Never","Nigdy"}. {"Never","Nigdy"}.
@ -246,12 +228,9 @@
{"Number of online users","Liczba zalogowanych użytkowników"}. {"Number of online users","Liczba zalogowanych użytkowników"}.
{"Number of registered users","Liczba zarejestrowanych użytkowników"}. {"Number of registered users","Liczba zarejestrowanych użytkowników"}.
{"October","Październik"}. {"October","Październik"}.
{"Offline Messages","Wiadomości offline"}.
{"Offline Messages:","Wiadomości offline:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Stare hasło:"}. {"Old Password:","Stare hasło:"}.
{"Online Users","Użytkownicy zalogowani"}. {"Online Users","Użytkownicy zalogowani"}.
{"Online Users:","Użytkownicy zalogowani:"}.
{"Online","Dostępny"}. {"Online","Dostępny"}.
{"Only deliver notifications to available users","Dostarczaj powiadomienia tylko dostępnym użytkownikom"}. {"Only deliver notifications to available users","Dostarczaj powiadomienia tylko dostępnym użytkownikom"}.
{"Only <enable/> or <disable/> tags are allowed","Dozwolone są wyłącznie elementy <enable/> lub <disable/>"}. {"Only <enable/> or <disable/> tags are allowed","Dozwolone są wyłącznie elementy <enable/> lub <disable/>"}.
@ -266,9 +245,7 @@
{"Organization Name","Nazwa organizacji"}. {"Organization Name","Nazwa organizacji"}.
{"Organization Unit","Dział"}. {"Organization Unit","Dział"}.
{"Outgoing s2s Connections","Wychodzące połączenia s2s"}. {"Outgoing s2s Connections","Wychodzące połączenia s2s"}.
{"Outgoing s2s Connections:","Wychodzące połączenia s2s:"}.
{"Owner privileges required","Wymagane uprawnienia właściciela"}. {"Owner privileges required","Wymagane uprawnienia właściciela"}.
{"Packet","Pakiet"}.
{"Participant","Uczestnicy"}. {"Participant","Uczestnicy"}.
{"Password Verification","Weryfikacja hasła"}. {"Password Verification","Weryfikacja hasła"}.
{"Password Verification:","Weryfikacja hasła:"}. {"Password Verification:","Weryfikacja hasła:"}.
@ -276,7 +253,6 @@
{"Password:","Hasło:"}. {"Password:","Hasło:"}.
{"Path to Dir","Ścieżka do katalogu"}. {"Path to Dir","Ścieżka do katalogu"}.
{"Path to File","Scieżka do pliku"}. {"Path to File","Scieżka do pliku"}.
{"Pending","Oczekuje"}.
{"Period: ","Przedział czasu: "}. {"Period: ","Przedział czasu: "}.
{"Persist items to storage","Przechowuj na stałe dane PubSub"}. {"Persist items to storage","Przechowuj na stałe dane PubSub"}.
{"Ping query is incorrect","Żądanie 'ping' nie jest prawidłowe"}. {"Ping query is incorrect","Żądanie 'ping' nie jest prawidłowe"}.
@ -295,17 +271,12 @@
{"RAM copy","Kopia w pamięci RAM"}. {"RAM copy","Kopia w pamięci RAM"}.
{"Really delete message of the day?","Na pewno usunąć wiadomość dnia?"}. {"Really delete message of the day?","Na pewno usunąć wiadomość dnia?"}.
{"Recipient is not in the conference room","Odbiorcy nie ma w pokoju"}. {"Recipient is not in the conference room","Odbiorcy nie ma w pokoju"}.
{"Registered Users","Użytkownicy zarejestrowani"}.
{"Registered Users:","Użytkownicy zarejestrowani:"}.
{"Register","Zarejestruj"}. {"Register","Zarejestruj"}.
{"Remote copy","Kopia zdalna"}. {"Remote copy","Kopia zdalna"}.
{"Remove All Offline Messages","Usuń wszystkie wiadomości typu 'Offline'"}.
{"Remove User","Usuń użytkownika"}. {"Remove User","Usuń użytkownika"}.
{"Remove","Usuń"}.
{"Replaced by new connection","Połączenie zostało zastąpione"}. {"Replaced by new connection","Połączenie zostało zastąpione"}.
{"Resources","Zasoby"}. {"Resources","Zasoby"}.
{"Restart Service","Restart usługi"}. {"Restart Service","Restart usługi"}.
{"Restart","Uruchom ponownie"}.
{"Restore Backup from File at ","Odtwórz bazę danych z kopii zapasowej na "}. {"Restore Backup from File at ","Odtwórz bazę danych z kopii zapasowej na "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Odtwórz kopię binarną podczas następnego uruchomienia ejabberd (wymaga mniej zasobów):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Odtwórz kopię binarną podczas następnego uruchomienia ejabberd (wymaga mniej zasobów):"}.
{"Restore binary backup immediately:","Natychmiast odtwórz kopię binarną:"}. {"Restore binary backup immediately:","Natychmiast odtwórz kopię binarną:"}.
@ -319,10 +290,8 @@
{"Room title","Tytuł pokoju"}. {"Room title","Tytuł pokoju"}.
{"Roster groups allowed to subscribe","Grupy kontaktów uprawnione do subskrypcji"}. {"Roster groups allowed to subscribe","Grupy kontaktów uprawnione do subskrypcji"}.
{"Roster size","Rozmiar listy kontaktów"}. {"Roster size","Rozmiar listy kontaktów"}.
{"RPC Call Error","Błąd żądania RPC"}.
{"Running Nodes","Uruchomione węzły"}. {"Running Nodes","Uruchomione węzły"}.
{"Saturday","Sobota"}. {"Saturday","Sobota"}.
{"Script check","Sprawdź skrypt"}.
{"Search Results for ","Wyniki wyszukiwania dla "}. {"Search Results for ","Wyniki wyszukiwania dla "}.
{"Search users in ","Wyszukaj użytkowników w "}. {"Search users in ","Wyszukaj użytkowników w "}.
{"Send announcement to all online users on all hosts","Wyślij powiadomienie do wszystkich zalogowanych użytkowników na wszystkich hostach"}. {"Send announcement to all online users on all hosts","Wyślij powiadomienie do wszystkich zalogowanych użytkowników na wszystkich hostach"}.
@ -340,19 +309,13 @@
{"Specify the access model","Określ model dostępu"}. {"Specify the access model","Określ model dostępu"}.
{"Specify the event message type","Określ typ wiadomości"}. {"Specify the event message type","Określ typ wiadomości"}.
{"Specify the publisher model","Określ model publikującego"}. {"Specify the publisher model","Określ model publikującego"}.
{"Statistics of ~p","Statystyki ~p"}.
{"Statistics","Statystyki"}.
{"Stopped Nodes","Zatrzymane węzły"}. {"Stopped Nodes","Zatrzymane węzły"}.
{"Stop","Zatrzymaj"}.
{"Storage Type","Typ bazy"}.
{"Store binary backup:","Zachowaj kopię binarną:"}. {"Store binary backup:","Zachowaj kopię binarną:"}.
{"Store plain text backup:","Zachowaj kopię w postaci tekstowej:"}. {"Store plain text backup:","Zachowaj kopię w postaci tekstowej:"}.
{"Subject","Temat"}. {"Subject","Temat"}.
{"Submitted","Wprowadzone"}. {"Submitted","Wprowadzone"}.
{"Submit","Wyślij"}.
{"Subscriber Address","Adres subskrybenta"}. {"Subscriber Address","Adres subskrybenta"}.
{"Subscriptions are not allowed","Subskrypcje nie są dozwolone"}. {"Subscriptions are not allowed","Subskrypcje nie są dozwolone"}.
{"Subscription","Subskrypcja"}.
{"Sunday","Niedziela"}. {"Sunday","Niedziela"}.
{"That nickname is already in use by another occupant","Ta nazwa użytkownika jest używana przez kogoś innego"}. {"That nickname is already in use by another occupant","Ta nazwa użytkownika jest używana przez kogoś innego"}.
{"That nickname is registered by another person","Ta nazwa użytkownika jest już zarejestrowana przez inną osobę"}. {"That nickname is registered by another person","Ta nazwa użytkownika jest już zarejestrowana przez inną osobę"}.
@ -371,9 +334,7 @@
{"This room is not anonymous","Ten pokój nie jest anonimowy"}. {"This room is not anonymous","Ten pokój nie jest anonimowy"}.
{"Thursday","Czwartek"}. {"Thursday","Czwartek"}.
{"Time delay","Opóźnienie"}. {"Time delay","Opóźnienie"}.
{"Time","Czas"}.
{"To register, visit ~s","Żeby się zarejestrować odwiedź ~s"}. {"To register, visit ~s","Żeby się zarejestrować odwiedź ~s"}.
{"To","Do"}.
{"Token TTL","Limit czasu tokenu"}. {"Token TTL","Limit czasu tokenu"}.
{"Too many active bytestreams","Zbyt wiele strumieni danych"}. {"Too many active bytestreams","Zbyt wiele strumieni danych"}.
{"Too many CAPTCHA requests","Za dużo żądań CAPTCHA"}. {"Too many CAPTCHA requests","Za dużo żądań CAPTCHA"}.
@ -382,12 +343,7 @@
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Zbyt wiele (~p) nieudanych prób logowanie z tego adresu IP (~s). Ten adres zostanie odblokowany o ~s UTC"}. {"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Zbyt wiele (~p) nieudanych prób logowanie z tego adresu IP (~s). Ten adres zostanie odblokowany o ~s UTC"}.
{"Too many unacked stanzas","Zbyt wiele niepotwierdzonych pakietów"}. {"Too many unacked stanzas","Zbyt wiele niepotwierdzonych pakietów"}.
{"Too many users in this conference","Zbyt wielu użytkowników konferencji"}. {"Too many users in this conference","Zbyt wielu użytkowników konferencji"}.
{"Total rooms","Wszystkich pokoi"}.
{"Traffic rate limit is exceeded","Limit transferu przekroczony"}. {"Traffic rate limit is exceeded","Limit transferu przekroczony"}.
{"Transactions Aborted:","Transakcje anulowane:"}.
{"Transactions Committed:","Transakcje zakończone:"}.
{"Transactions Logged:","Transakcje zalogowane:"}.
{"Transactions Restarted:","Transakcje uruchomione ponownie:"}.
{"Tuesday","Wtorek"}. {"Tuesday","Wtorek"}.
{"Unable to generate a CAPTCHA","Nie można wygenerować CAPTCHA"}. {"Unable to generate a CAPTCHA","Nie można wygenerować CAPTCHA"}.
{"Unable to register route on existing local domain","Nie można zarejestrować trasy dla lokalnej domeny"}. {"Unable to register route on existing local domain","Nie można zarejestrować trasy dla lokalnej domeny"}.
@ -397,11 +353,6 @@
{"Unsupported <index/> element","Nieobsługiwany element <index/>"}. {"Unsupported <index/> element","Nieobsługiwany element <index/>"}.
{"Update message of the day (don't send)","Aktualizuj wiadomość dnia (bez wysyłania)"}. {"Update message of the day (don't send)","Aktualizuj wiadomość dnia (bez wysyłania)"}.
{"Update message of the day on all hosts (don't send)","Aktualizuj wiadomość dnia na wszystkich hostach (bez wysyłania)"}. {"Update message of the day on all hosts (don't send)","Aktualizuj wiadomość dnia na wszystkich hostach (bez wysyłania)"}.
{"Update plan","Plan aktualizacji"}.
{"Update ~p","Uaktualnij ~p"}.
{"Update script","Skrypt aktualizacji"}.
{"Update","Aktualizuj"}.
{"Uptime:","Czas pracy:"}.
{"User already exists","Użytkownik już istnieje"}. {"User already exists","Użytkownik już istnieje"}.
{"User JID","Użytkownik "}. {"User JID","Użytkownik "}.
{"User (jid)","Użytkownik (jid)"}. {"User (jid)","Użytkownik (jid)"}.
@ -413,7 +364,6 @@
{"Users Last Activity","Ostatnia aktywność użytkowników"}. {"Users Last Activity","Ostatnia aktywność użytkowników"}.
{"Users","Użytkownicy"}. {"Users","Użytkownicy"}.
{"User","Użytkownik"}. {"User","Użytkownik"}.
{"Validate","Potwierdź"}.
{"Value 'get' of 'type' attribute is not allowed","Wartość 'get' dla atrybutu 'type' jest niedozwolona"}. {"Value 'get' of 'type' attribute is not allowed","Wartość 'get' dla atrybutu 'type' jest niedozwolona"}.
{"Value of '~s' should be boolean","Wartość '~s' powinna być typu logicznego"}. {"Value of '~s' should be boolean","Wartość '~s' powinna być typu logicznego"}.
{"Value of '~s' should be datetime string","Wartość '~s' powinna być typu daty"}. {"Value of '~s' should be datetime string","Wartość '~s' powinna być typu daty"}.

View file

@ -16,8 +16,6 @@
{"Account doesn't exist","A conta não existe"}. {"Account doesn't exist","A conta não existe"}.
{"Action on user","Ação no usuário"}. {"Action on user","Ação no usuário"}.
{"Add a hat to a user","Adiciona um chapéu num usuário"}. {"Add a hat to a user","Adiciona um chapéu num usuário"}.
{"Add Jabber ID","Adicionar ID jabber"}.
{"Add New","Adicionar novo"}.
{"Add User","Adicionar usuário"}. {"Add User","Adicionar usuário"}.
{"Administration of ","Administração de "}. {"Administration of ","Administração de "}.
{"Administration","Administração"}. {"Administration","Administração"}.
@ -48,8 +46,9 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Qualquer pessoa com uma assinatura presente dos dois ou de ambos pode se inscrever e recuperar os itens"}. {"Anyone with a presence subscription of both or from may subscribe and retrieve items","Qualquer pessoa com uma assinatura presente dos dois ou de ambos pode se inscrever e recuperar os itens"}.
{"Anyone with Voice","Qualquer pessoa com voz"}. {"Anyone with Voice","Qualquer pessoa com voz"}.
{"Anyone","Qualquer pessoa"}. {"Anyone","Qualquer pessoa"}.
{"Apparently your account has no administration rights in this server. Please check how to grant admin rights in: https://docs.ejabberd.im/admin/installation/#administration-account","Aparentemente, a sua conta não tem direitos de administração neste servidor. Verifique como conceder os direitos administrativos em: https://docs.ejabberd.im/admin/installation/#administration-account"}. {"API Commands","Comandos API"}.
{"April","Abril"}. {"April","Abril"}.
{"Arguments","Argumentos"}.
{"Attribute 'channel' is required for this request","O atributo 'canal' é necessário para esta solicitação"}. {"Attribute 'channel' is required for this request","O atributo 'canal' é necessário para esta solicitação"}.
{"Attribute 'id' is mandatory for MIX messages","O atributo 'id' é obrigatório para mensagens MIX"}. {"Attribute 'id' is mandatory for MIX messages","O atributo 'id' é obrigatório para mensagens MIX"}.
{"Attribute 'jid' is not allowed here","O atributo 'jid' não é permitido aqui"}. {"Attribute 'jid' is not allowed here","O atributo 'jid' não é permitido aqui"}.
@ -89,34 +88,25 @@
{"Choose whether to approve this entity's subscription.","Aprovar esta assinatura."}. {"Choose whether to approve this entity's subscription.","Aprovar esta assinatura."}.
{"City","Cidade"}. {"City","Cidade"}.
{"Client acknowledged more stanzas than sent by server","O cliente reconheceu mais estrofes do que as enviadas pelo servidor"}. {"Client acknowledged more stanzas than sent by server","O cliente reconheceu mais estrofes do que as enviadas pelo servidor"}.
{"Clustering","Agrupamento"}.
{"Commands","Comandos"}. {"Commands","Comandos"}.
{"Conference room does not exist","A sala de conferência não existe"}. {"Conference room does not exist","A sala de conferência não existe"}.
{"Configuration of room ~s","Configuração para ~s"}. {"Configuration of room ~s","Configuração para ~s"}.
{"Configuration","Configuração"}. {"Configuration","Configuração"}.
{"Connected Resources:","Recursos conectados:"}.
{"Contact Addresses (normally, room owner or owners)","Endereços de contato (normalmente, o proprietário ou os proprietários da sala)"}. {"Contact Addresses (normally, room owner or owners)","Endereços de contato (normalmente, o proprietário ou os proprietários da sala)"}.
{"Contrib Modules","Módulos contrib"}.
{"Country","País"}. {"Country","País"}.
{"CPU Time:","Tempo da CPU:"}.
{"Current Discussion Topic","Assunto em discussão"}. {"Current Discussion Topic","Assunto em discussão"}.
{"Database failure","Falha no banco de dados"}. {"Database failure","Falha no banco de dados"}.
{"Database Tables at ~p","Tabelas da Base de dados em ~p"}.
{"Database Tables Configuration at ","Configuração de Tabelas de Base de dados em "}. {"Database Tables Configuration at ","Configuração de Tabelas de Base de dados em "}.
{"Database","Base de dados"}. {"Database","Base de dados"}.
{"December","Dezembro"}. {"December","Dezembro"}.
{"Default users as participants","Usuários padrões como participantes"}. {"Default users as participants","Usuários padrões como participantes"}.
{"Delete content","Excluir o conteúdo"}.
{"Delete message of the day on all hosts","Apagar a mensagem do dia em todos os hosts"}. {"Delete message of the day on all hosts","Apagar a mensagem do dia em todos os hosts"}.
{"Delete message of the day","Apagar mensagem do dia"}. {"Delete message of the day","Apagar mensagem do dia"}.
{"Delete Selected","Remover os selecionados"}.
{"Delete table","Excluir a tabela"}.
{"Delete User","Deletar Usuário"}. {"Delete User","Deletar Usuário"}.
{"Deliver event notifications","Entregar as notificações de evento"}. {"Deliver event notifications","Entregar as notificações de evento"}.
{"Deliver payloads with event notifications","Enviar payloads junto com as notificações de eventos"}. {"Deliver payloads with event notifications","Enviar payloads junto com as notificações de eventos"}.
{"Description:","Descrição:"}.
{"Disc only copy","Somente cópia em disco"}. {"Disc only copy","Somente cópia em disco"}.
{"'Displayed groups' not added (they do not exist!): ","Os 'Grupos exibidos' não foi adicionado (eles não existem!): "}.
{"Displayed:","Exibido:"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Não revele a sua senha para ninguém, nem mesmo para o administrador deste servidor XMPP."}. {"Don't tell your password to anybody, not even the administrators of the XMPP server.","Não revele a sua senha para ninguém, nem mesmo para o administrador deste servidor XMPP."}.
{"Dump Backup to Text File at ","Exportar backup para texto em "}. {"Dump Backup to Text File at ","Exportar backup para texto em "}.
{"Dump to Text File","Exportar para arquivo texto"}. {"Dump to Text File","Exportar para arquivo texto"}.
@ -132,7 +122,6 @@
{"ejabberd vCard module","Módulo vCard para ejabberd"}. {"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","ejabberd Web Admin"}. {"ejabberd Web Admin","ejabberd Web Admin"}.
{"ejabberd","ejabberd"}. {"ejabberd","ejabberd"}.
{"Elements","Elementos"}.
{"Email Address","Endereço de e-mail"}. {"Email Address","Endereço de e-mail"}.
{"Email","Email"}. {"Email","Email"}.
{"Enable hats","Ativa chapéus"}. {"Enable hats","Ativa chapéus"}.
@ -147,7 +136,6 @@
{"Enter path to text file","Introduza caminho para o arquivo texto"}. {"Enter path to text file","Introduza caminho para o arquivo texto"}.
{"Enter the text you see","Insira o texto que você vê"}. {"Enter the text you see","Insira o texto que você vê"}.
{"Erlang XMPP Server","Servidor XMPP Erlang"}. {"Erlang XMPP Server","Servidor XMPP Erlang"}.
{"Error","Erro"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Excluir IDs Jabber de serem submetidos ao CAPTCHA"}. {"Exclude Jabber IDs from CAPTCHA challenge","Excluir IDs Jabber de serem submetidos ao CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Exportar todas as tabelas como SQL para um arquivo:"}. {"Export all tables as SQL queries to a file:","Exportar todas as tabelas como SQL para um arquivo:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar todos os dados de todos os usuários no servidor, para arquivos formato PIEFXIS (XEP-0227):"}. {"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar todos os dados de todos os usuários no servidor, para arquivos formato PIEFXIS (XEP-0227):"}.
@ -166,7 +154,6 @@
{"Fill in the form to search for any matching XMPP User","Preencha campos para procurar por quaisquer usuários XMPP"}. {"Fill in the form to search for any matching XMPP User","Preencha campos para procurar por quaisquer usuários XMPP"}.
{"Friday","Sexta"}. {"Friday","Sexta"}.
{"From ~ts","De ~s"}. {"From ~ts","De ~s"}.
{"From","De"}.
{"Full List of Room Admins","Lista completa dos administradores das salas"}. {"Full List of Room Admins","Lista completa dos administradores das salas"}.
{"Full List of Room Owners","Lista completa dos proprietários das salas"}. {"Full List of Room Owners","Lista completa dos proprietários das salas"}.
{"Full Name","Nome completo"}. {"Full Name","Nome completo"}.
@ -176,23 +163,19 @@
{"Get Number of Registered Users","Obter Número de Usuários Registrados"}. {"Get Number of Registered Users","Obter Número de Usuários Registrados"}.
{"Get Pending","Obter os pendentes"}. {"Get Pending","Obter os pendentes"}.
{"Get User Last Login Time","Obter a Data do Último Login"}. {"Get User Last Login Time","Obter a Data do Último Login"}.
{"Get User Password","Obter Senha do Usuário"}.
{"Get User Statistics","Obter Estatísticas do Usuário"}. {"Get User Statistics","Obter Estatísticas do Usuário"}.
{"Given Name","Prenome"}. {"Given Name","Prenome"}.
{"Grant voice to this person?","Dar voz a esta pessoa?"}. {"Grant voice to this person?","Dar voz a esta pessoa?"}.
{"Group","Grupo"}.
{"Groups that will be displayed to the members","Os grupos que serão exibidos para os membros"}.
{"Groups","Grupos"}.
{"has been banned","foi banido"}. {"has been banned","foi banido"}.
{"has been kicked because of a system shutdown","foi desconectado porque o sistema foi desligado"}. {"has been kicked because of a system shutdown","foi desconectado porque o sistema foi desligado"}.
{"has been kicked because of an affiliation change","foi desconectado porque por afiliação inválida"}. {"has been kicked because of an affiliation change","foi desconectado porque por afiliação inválida"}.
{"has been kicked because the room has been changed to members-only","foi desconectado porque a política da sala mudou, só membros são permitidos"}. {"has been kicked because the room has been changed to members-only","foi desconectado porque a política da sala mudou, só membros são permitidos"}.
{"has been kicked","foi removido"}. {"has been kicked","foi removido"}.
{"Hash of the vCard-temp avatar of this room","Hash do avatar do vCard-temp desta sala"}.
{"Hat title","Título do chapéu"}. {"Hat title","Título do chapéu"}.
{"Hat URI","URI do chapéu"}. {"Hat URI","URI do chapéu"}.
{"Hats limit exceeded","O limite dos chapéus foi excedido"}. {"Hats limit exceeded","O limite dos chapéus foi excedido"}.
{"Host unknown","Máquina desconhecida"}. {"Host unknown","Máquina desconhecida"}.
{"Host","Máquina"}.
{"HTTP File Upload","Upload de arquivo HTTP"}. {"HTTP File Upload","Upload de arquivo HTTP"}.
{"Idle connection","Conexão inativa"}. {"Idle connection","Conexão inativa"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Se você não conseguir ver o CAPTCHA aqui, visite a web page."}. {"If you don't see the CAPTCHA image here, visit the web page.","Se você não conseguir ver o CAPTCHA aqui, visite a web page."}.
@ -206,7 +189,6 @@
{"Import Users From jabberd14 Spool Files","Importar usuários de arquivos jabberd14 (spool files)"}. {"Import Users From jabberd14 Spool Files","Importar usuários de arquivos jabberd14 (spool files)"}.
{"Improper domain part of 'from' attribute","Atributo 'from' contém domínio incorreto"}. {"Improper domain part of 'from' attribute","Atributo 'from' contém domínio incorreto"}.
{"Improper message type","Tipo de mensagem incorreto"}. {"Improper message type","Tipo de mensagem incorreto"}.
{"Incoming s2s Connections:","Conexões s2s de Entrada:"}.
{"Incorrect CAPTCHA submit","CAPTCHA submetido incorretamente"}. {"Incorrect CAPTCHA submit","CAPTCHA submetido incorretamente"}.
{"Incorrect data form","Formulário dos dados incorreto"}. {"Incorrect data form","Formulário dos dados incorreto"}.
{"Incorrect password","Senha incorreta"}. {"Incorrect password","Senha incorreta"}.
@ -236,7 +218,6 @@
{"July","Julho"}. {"July","Julho"}.
{"June","Junho"}. {"June","Junho"}.
{"Just created","Acabou de ser criado"}. {"Just created","Acabou de ser criado"}.
{"Label:","Rótulo:"}.
{"Last Activity","Última atividade"}. {"Last Activity","Última atividade"}.
{"Last login","Último login"}. {"Last login","Último login"}.
{"Last message","Última mensagem"}. {"Last message","Última mensagem"}.
@ -244,11 +225,10 @@
{"Last year","Último ano"}. {"Last year","Último ano"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Bits menos significativos do hash sha-256 do texto devem ser iguais ao rótulo hexadecimal"}. {"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Bits menos significativos do hash sha-256 do texto devem ser iguais ao rótulo hexadecimal"}.
{"leaves the room","Sair da sala"}. {"leaves the room","Sair da sala"}.
{"List of rooms","Lista de salas"}.
{"List of users with hats","Lista dos usuários com chapéus"}. {"List of users with hats","Lista dos usuários com chapéus"}.
{"List users with hats","Lista os usuários com chapéus"}. {"List users with hats","Lista os usuários com chapéus"}.
{"Logged Out","Desconectado"}.
{"Logging","Registrando no log"}. {"Logging","Registrando no log"}.
{"Low level update script","Script de atualização low level"}.
{"Make participants list public","Tornar pública a lista de participantes"}. {"Make participants list public","Tornar pública a lista de participantes"}.
{"Make room CAPTCHA protected","Tornar protegida a senha da sala"}. {"Make room CAPTCHA protected","Tornar protegida a senha da sala"}.
{"Make room members-only","Tornar sala apenas para membros"}. {"Make room members-only","Tornar sala apenas para membros"}.
@ -266,11 +246,8 @@
{"Maximum number of items to persist","Quantidade máxima dos itens para manter"}. {"Maximum number of items to persist","Quantidade máxima dos itens para manter"}.
{"Maximum Number of Occupants","Número máximo de participantes"}. {"Maximum Number of Occupants","Número máximo de participantes"}.
{"May","Maio"}. {"May","Maio"}.
{"Members not added (inexistent vhost!): ","Membros que não foram adicionados (o vhost não existe!): "}.
{"Membership is required to enter this room","É necessário ser membro desta sala para poder entrar"}. {"Membership is required to enter this room","É necessário ser membro desta sala para poder entrar"}.
{"Members:","Membros:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memorize a sua senha ou anote-a em um papel guardado em um local seguro. No XMPP, não há uma maneira automatizada de recuperar a sua senha caso a esqueça."}. {"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memorize a sua senha ou anote-a em um papel guardado em um local seguro. No XMPP, não há uma maneira automatizada de recuperar a sua senha caso a esqueça."}.
{"Memory","Memória"}.
{"Mere Availability in XMPP (No Show Value)","Mera disponibilidade no XMPP (Sem valor para ser exibido)"}. {"Mere Availability in XMPP (No Show Value)","Mera disponibilidade no XMPP (Sem valor para ser exibido)"}.
{"Message body","Corpo da mensagem"}. {"Message body","Corpo da mensagem"}.
{"Message not found in forwarded payload","Mensagem não encontrada em conteúdo encaminhado"}. {"Message not found in forwarded payload","Mensagem não encontrada em conteúdo encaminhado"}.
@ -282,15 +259,12 @@
{"Moderator privileges required","Se necessita privilégios de moderador"}. {"Moderator privileges required","Se necessita privilégios de moderador"}.
{"Moderator","Moderador"}. {"Moderator","Moderador"}.
{"Moderators Only","Somente moderadores"}. {"Moderators Only","Somente moderadores"}.
{"Modified modules","Módulos atualizados"}.
{"Module failed to handle the query","Módulo falhou ao processar a consulta"}. {"Module failed to handle the query","Módulo falhou ao processar a consulta"}.
{"Monday","Segunda"}. {"Monday","Segunda"}.
{"Multicast","Multicast"}. {"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","Vários elementos <item/> não são permitidos pela RFC6121"}. {"Multiple <item/> elements are not allowed by RFC6121","Vários elementos <item/> não são permitidos pela RFC6121"}.
{"Multi-User Chat","Chat multi-usuário"}. {"Multi-User Chat","Chat multi-usuário"}.
{"Name in the rosters where this group will be displayed","O nome nas listas onde este grupo será exibido"}.
{"Name","Nome"}. {"Name","Nome"}.
{"Name:","Nome:"}.
{"Natural Language for Room Discussions","Idioma nativo para as discussões na sala"}. {"Natural Language for Room Discussions","Idioma nativo para as discussões na sala"}.
{"Natural-Language Room Name","Nome da sala no idioma nativo"}. {"Natural-Language Room Name","Nome da sala no idioma nativo"}.
{"Neither 'jid' nor 'nick' attribute found","Nem o atributo 'jid' nem 'nick' foram encontrados"}. {"Neither 'jid' nor 'nick' attribute found","Nem o atributo 'jid' nem 'nick' foram encontrados"}.
@ -355,14 +329,10 @@
{"Occupants are allowed to query others","Os ocupantes estão autorizados a consultar os outros"}. {"Occupants are allowed to query others","Os ocupantes estão autorizados a consultar os outros"}.
{"Occupants May Change the Subject","As pessoas talvez possam alterar o assunto"}. {"Occupants May Change the Subject","As pessoas talvez possam alterar o assunto"}.
{"October","Outubro"}. {"October","Outubro"}.
{"Offline Messages","Mensagens offline"}.
{"Offline Messages:","Mensagens offline:"}.
{"OK","OK"}. {"OK","OK"}.
{"Old Password:","Senha Antiga:"}. {"Old Password:","Senha Antiga:"}.
{"Online Users","Usuários conectados"}. {"Online Users","Usuários conectados"}.
{"Online Users:","Usuários online:"}.
{"Online","Conectado"}. {"Online","Conectado"}.
{"Only admins can see this","Apenas administradores podem ver isso"}.
{"Only collection node owners may associate leaf nodes with the collection","Apenas um grupo dos proprietários dos nós podem associar as páginas na coleção"}. {"Only collection node owners may associate leaf nodes with the collection","Apenas um grupo dos proprietários dos nós podem associar as páginas na coleção"}.
{"Only deliver notifications to available users","Somente enviar notificações aos usuários disponíveis"}. {"Only deliver notifications to available users","Somente enviar notificações aos usuários disponíveis"}.
{"Only <enable/> or <disable/> tags are allowed","Apenas tags <enable/> ou <disable/> são permitidas"}. {"Only <enable/> or <disable/> tags are allowed","Apenas tags <enable/> ou <disable/> são permitidas"}.
@ -382,10 +352,8 @@
{"Organization Unit","Departamento/Unidade"}. {"Organization Unit","Departamento/Unidade"}.
{"Other Modules Available:","Outros módulos disponíveis:"}. {"Other Modules Available:","Outros módulos disponíveis:"}.
{"Outgoing s2s Connections","Conexões s2s de Saída"}. {"Outgoing s2s Connections","Conexões s2s de Saída"}.
{"Outgoing s2s Connections:","Saída das conexões s2s:"}.
{"Owner privileges required","Se requer privilégios de proprietário da sala"}. {"Owner privileges required","Se requer privilégios de proprietário da sala"}.
{"Packet relay is denied by service policy","A retransmissão de pacote é negada por causa da política de serviço"}. {"Packet relay is denied by service policy","A retransmissão de pacote é negada por causa da política de serviço"}.
{"Packet","Pacote"}.
{"Participant ID","ID do participante"}. {"Participant ID","ID do participante"}.
{"Participant","Participante"}. {"Participant","Participante"}.
{"Password Verification:","Verificação da Senha:"}. {"Password Verification:","Verificação da Senha:"}.
@ -395,7 +363,6 @@
{"Path to Dir","Caminho para o diretório"}. {"Path to Dir","Caminho para o diretório"}.
{"Path to File","Caminho do arquivo"}. {"Path to File","Caminho do arquivo"}.
{"Payload semantic type information","Informações de tipo semântico de carga útil"}. {"Payload semantic type information","Informações de tipo semântico de carga útil"}.
{"Pending","Pendente"}.
{"Period: ","Período: "}. {"Period: ","Período: "}.
{"Persist items to storage","Persistir elementos ao armazenar"}. {"Persist items to storage","Persistir elementos ao armazenar"}.
{"Persistent","Persistente"}. {"Persistent","Persistente"}.
@ -429,26 +396,22 @@
{"Receive notification of new nodes only","Receba apenas as notificações dos nós novos"}. {"Receive notification of new nodes only","Receba apenas as notificações dos nós novos"}.
{"Recipient is not in the conference room","O receptor não está na sala de conferência"}. {"Recipient is not in the conference room","O receptor não está na sala de conferência"}.
{"Register an XMPP account","Registre uma conta XMPP"}. {"Register an XMPP account","Registre uma conta XMPP"}.
{"Registered Users:","Usuários registrados:"}.
{"Registered Users","Usuários Registrados"}.
{"Register","Registrar"}. {"Register","Registrar"}.
{"Remote copy","Cópia remota"}. {"Remote copy","Cópia remota"}.
{"Remove a hat from a user","Remove um chapéu de um usuário"}. {"Remove a hat from a user","Remove um chapéu de um usuário"}.
{"Remove All Offline Messages","Remover Todas as Mensagens Offline"}.
{"Remove User","Remover usuário"}. {"Remove User","Remover usuário"}.
{"Remove","Remover"}.
{"Replaced by new connection","Substituído por nova conexão"}. {"Replaced by new connection","Substituído por nova conexão"}.
{"Request has timed out","O pedido expirou"}. {"Request has timed out","O pedido expirou"}.
{"Request is ignored","O pedido foi ignorado"}. {"Request is ignored","O pedido foi ignorado"}.
{"Requested role","Função solicitada"}. {"Requested role","Função solicitada"}.
{"Resources","Recursos"}. {"Resources","Recursos"}.
{"Restart Service","Reiniciar Serviço"}. {"Restart Service","Reiniciar Serviço"}.
{"Restart","Reiniciar"}.
{"Restore Backup from File at ","Restaurar backup a partir do arquivo em "}. {"Restore Backup from File at ","Restaurar backup a partir do arquivo em "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar backup binário após reinicialização do ejabberd (requer menos memória):"}. {"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar backup binário após reinicialização do ejabberd (requer menos memória):"}.
{"Restore binary backup immediately:","Restaurar imediatamente o backup binário:"}. {"Restore binary backup immediately:","Restaurar imediatamente o backup binário:"}.
{"Restore plain text backup immediately:","Restaurar backup formato texto imediatamente:"}. {"Restore plain text backup immediately:","Restaurar backup formato texto imediatamente:"}.
{"Restore","Restaurar"}. {"Restore","Restaurar"}.
{"Result","Resultado"}.
{"Roles and Affiliations that May Retrieve Member List","As funções e as afiliações que podem recuperar a lista dos membros"}. {"Roles and Affiliations that May Retrieve Member List","As funções e as afiliações que podem recuperar a lista dos membros"}.
{"Roles for which Presence is Broadcasted","Para quem a presença será notificada"}. {"Roles for which Presence is Broadcasted","Para quem a presença será notificada"}.
{"Roles that May Send Private Messages","Atribuições que talvez possam enviar mensagens privadas"}. {"Roles that May Send Private Messages","Atribuições que talvez possam enviar mensagens privadas"}.
@ -459,20 +422,15 @@
{"Room terminates","Terminação da sala"}. {"Room terminates","Terminação da sala"}.
{"Room title","Título da sala"}. {"Room title","Título da sala"}.
{"Roster groups allowed to subscribe","Listar grupos autorizados"}. {"Roster groups allowed to subscribe","Listar grupos autorizados"}.
{"Roster of ~ts","Lista de ~ts"}.
{"Roster size","Tamanho da Lista"}. {"Roster size","Tamanho da Lista"}.
{"Roster:","Lista:"}.
{"RPC Call Error","Erro de chamada RPC"}.
{"Running Nodes","Nós em execução"}. {"Running Nodes","Nós em execução"}.
{"~s invites you to the room ~s","~s convidaram você para a sala ~s"}. {"~s invites you to the room ~s","~s convidaram você para a sala ~s"}.
{"Saturday","Sábado"}. {"Saturday","Sábado"}.
{"Script check","Verificação de Script"}.
{"Search from the date","Pesquise a partir da data"}. {"Search from the date","Pesquise a partir da data"}.
{"Search Results for ","Resultados de pesquisa para "}. {"Search Results for ","Resultados de pesquisa para "}.
{"Search the text","Pesquise o texto"}. {"Search the text","Pesquise o texto"}.
{"Search until the date","Pesquise até a data"}. {"Search until the date","Pesquise até a data"}.
{"Search users in ","Procurar usuários em "}. {"Search users in ","Procurar usuários em "}.
{"Select All","Selecione tudo"}.
{"Send announcement to all online users on all hosts","Enviar anúncio a todos usuários online em todas as máquinas"}. {"Send announcement to all online users on all hosts","Enviar anúncio a todos usuários online em todas as máquinas"}.
{"Send announcement to all online users","Enviar anúncio a todos os usuárions online"}. {"Send announcement to all online users","Enviar anúncio a todos os usuárions online"}.
{"Send announcement to all users on all hosts","Enviar aviso para todos os usuários em todos os hosts"}. {"Send announcement to all users on all hosts","Enviar aviso para todos os usuários em todos os hosts"}.
@ -485,6 +443,7 @@
{"Set message of the day on all hosts and send to online users","Definir mensagem do dia em todos os hosts e enviar para os usuários online"}. {"Set message of the day on all hosts and send to online users","Definir mensagem do dia em todos os hosts e enviar para os usuários online"}.
{"Shared Roster Groups","Grupos Shared Roster"}. {"Shared Roster Groups","Grupos Shared Roster"}.
{"Show Integral Table","Mostrar Tabela Integral"}. {"Show Integral Table","Mostrar Tabela Integral"}.
{"Show Occupants Join/Leave","Mostrar a entrada e a saída de ocupantes"}.
{"Show Ordinary Table","Mostrar Tabela Ordinária"}. {"Show Ordinary Table","Mostrar Tabela Ordinária"}.
{"Shut Down Service","Parar Serviço"}. {"Shut Down Service","Parar Serviço"}.
{"SOCKS5 Bytestreams","Bytestreams SOCKS5"}. {"SOCKS5 Bytestreams","Bytestreams SOCKS5"}.
@ -496,23 +455,17 @@
{"Stanza id is not valid","A Stanza ID não é válido"}. {"Stanza id is not valid","A Stanza ID não é válido"}.
{"Stanza ID","ID da estrofe"}. {"Stanza ID","ID da estrofe"}.
{"Statically specify a replyto of the node owner(s)","Defina uma resposta fixa do(s) proprietário(s) do nó"}. {"Statically specify a replyto of the node owner(s)","Defina uma resposta fixa do(s) proprietário(s) do nó"}.
{"Statistics of ~p","Estatísticas de ~p"}.
{"Statistics","Estatísticas"}.
{"Stop","Parar"}.
{"Stopped Nodes","Nós parados"}. {"Stopped Nodes","Nós parados"}.
{"Storage Type","Tipo de armazenamento"}.
{"Store binary backup:","Armazenar backup binário:"}. {"Store binary backup:","Armazenar backup binário:"}.
{"Store plain text backup:","Armazenar backup em texto:"}. {"Store plain text backup:","Armazenar backup em texto:"}.
{"Stream management is already enabled","A gestão do fluxo já está ativada"}. {"Stream management is already enabled","A gestão do fluxo já está ativada"}.
{"Stream management is not enabled","O gerenciamento do fluxo não está ativado"}. {"Stream management is not enabled","O gerenciamento do fluxo não está ativado"}.
{"Subject","Assunto"}. {"Subject","Assunto"}.
{"Submit","Enviar"}.
{"Submitted","Submetido"}. {"Submitted","Submetido"}.
{"Subscriber Address","Endereço dos Assinantes"}. {"Subscriber Address","Endereço dos Assinantes"}.
{"Subscribers may publish","Os assinantes podem publicar"}. {"Subscribers may publish","Os assinantes podem publicar"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Os pedidos de assinatura devem ser aprovados e apenas os assinantes podem recuperar os itens"}. {"Subscription requests must be approved and only subscribers may retrieve items","Os pedidos de assinatura devem ser aprovados e apenas os assinantes podem recuperar os itens"}.
{"Subscriptions are not allowed","Subscrições não estão permitidas"}. {"Subscriptions are not allowed","Subscrições não estão permitidas"}.
{"Subscription","Subscrição"}.
{"Sunday","Domingo"}. {"Sunday","Domingo"}.
{"Text associated with a picture","Um texto associado a uma imagem"}. {"Text associated with a picture","Um texto associado a uma imagem"}.
{"Text associated with a sound","Um texto associado a um som"}. {"Text associated with a sound","Um texto associado a um som"}.
@ -575,7 +528,6 @@
{"Thursday","Quinta"}. {"Thursday","Quinta"}.
{"Time delay","Intervalo (Tempo)"}. {"Time delay","Intervalo (Tempo)"}.
{"Timed out waiting for stream resumption","Tempo limite expirou durante à espera da retomada da transmissão"}. {"Timed out waiting for stream resumption","Tempo limite expirou durante à espera da retomada da transmissão"}.
{"Time","Tempo"}.
{"To register, visit ~s","Para registrar, visite ~s"}. {"To register, visit ~s","Para registrar, visite ~s"}.
{"To ~ts","Para ~s"}. {"To ~ts","Para ~s"}.
{"Token TTL","Token TTL"}. {"Token TTL","Token TTL"}.
@ -588,13 +540,8 @@
{"Too many receiver fields were specified","Foram definidos receptores demais nos campos"}. {"Too many receiver fields were specified","Foram definidos receptores demais nos campos"}.
{"Too many unacked stanzas","Número excessivo de instâncias sem confirmação"}. {"Too many unacked stanzas","Número excessivo de instâncias sem confirmação"}.
{"Too many users in this conference","Há uma quantidade excessiva de usuários nesta conferência"}. {"Too many users in this conference","Há uma quantidade excessiva de usuários nesta conferência"}.
{"To","Para"}.
{"Total rooms","Salas no total"}.
{"Traffic rate limit is exceeded","Limite de banda excedido"}. {"Traffic rate limit is exceeded","Limite de banda excedido"}.
{"Transactions Aborted:","Transações abortadas:"}. {"~ts's MAM Archive","Arquivo ~ts's MAM"}.
{"Transactions Committed:","Transações salvas:"}.
{"Transactions Logged:","Transações de log:"}.
{"Transactions Restarted:","Transações reiniciadas:"}.
{"~ts's Offline Messages Queue","~s's Fila de Mensagens Offline"}. {"~ts's Offline Messages Queue","~s's Fila de Mensagens Offline"}.
{"Tuesday","Terça"}. {"Tuesday","Terça"}.
{"Unable to generate a CAPTCHA","Impossível gerar um CAPTCHA"}. {"Unable to generate a CAPTCHA","Impossível gerar um CAPTCHA"}.
@ -605,24 +552,20 @@
{"Uninstall","Desinstalar"}. {"Uninstall","Desinstalar"}.
{"Unregister an XMPP account","Excluir uma conta XMPP"}. {"Unregister an XMPP account","Excluir uma conta XMPP"}.
{"Unregister","Deletar registro"}. {"Unregister","Deletar registro"}.
{"Unselect All","Desmarcar todos"}.
{"Unsupported <index/> element","Elemento <index/> não suportado"}. {"Unsupported <index/> element","Elemento <index/> não suportado"}.
{"Unsupported version","Versão sem suporte"}. {"Unsupported version","Versão sem suporte"}.
{"Update message of the day (don't send)","Atualizar mensagem do dia (não enviar)"}. {"Update message of the day (don't send)","Atualizar mensagem do dia (não enviar)"}.
{"Update message of the day on all hosts (don't send)","Atualizar a mensagem do dia em todos os host (não enviar)"}. {"Update message of the day on all hosts (don't send)","Atualizar a mensagem do dia em todos os host (não enviar)"}.
{"Update ~p","Atualizar ~p"}.
{"Update plan","Plano de Atualização"}.
{"Update script","Script de atualização"}.
{"Update specs to get modules source, then install desired ones.","Atualize as especificações para obter a fonte dos módulos e instale os que desejar."}. {"Update specs to get modules source, then install desired ones.","Atualize as especificações para obter a fonte dos módulos e instale os que desejar."}.
{"Update Specs","Atualizar as especificações"}. {"Update Specs","Atualizar as especificações"}.
{"Update","Atualizar"}. {"Updating the vCard is not supported by the vCard storage backend","A atualização do vCard não é compatível com o back-end de armazenamento do vCard"}.
{"Upgrade","Atualização"}. {"Upgrade","Atualização"}.
{"Uptime:","Tempo de atividade:"}.
{"URL for Archived Discussion Logs","A URL para o arquivamento dos registros da discussão"}. {"URL for Archived Discussion Logs","A URL para o arquivamento dos registros da discussão"}.
{"User already exists","Usuário já existe"}. {"User already exists","Usuário já existe"}.
{"User (jid)","Usuário (jid)"}. {"User (jid)","Usuário (jid)"}.
{"User JID","Usuário JID"}. {"User JID","Usuário JID"}.
{"User Management","Gerenciamento de Usuários"}. {"User Management","Gerenciamento de Usuários"}.
{"User not allowed to perform an IQ set on another user's vCard.","O usuário não tem permissão para executar um conjunto de QI no vCard de outro usuário."}.
{"User removed","O usuário foi removido"}. {"User removed","O usuário foi removido"}.
{"User session not found","A sessão do usuário não foi encontrada"}. {"User session not found","A sessão do usuário não foi encontrada"}.
{"User session terminated","Sessão de usuário terminada"}. {"User session terminated","Sessão de usuário terminada"}.
@ -632,7 +575,6 @@
{"Users Last Activity","Últimas atividades dos usuários"}. {"Users Last Activity","Últimas atividades dos usuários"}.
{"Users","Usuários"}. {"Users","Usuários"}.
{"User","Usuário"}. {"User","Usuário"}.
{"Validate","Validar"}.
{"Value 'get' of 'type' attribute is not allowed","Valor 'get' não permitido para atributo 'type'"}. {"Value 'get' of 'type' attribute is not allowed","Valor 'get' não permitido para atributo 'type'"}.
{"Value of '~s' should be boolean","Value de '~s' deveria ser um booleano"}. {"Value of '~s' should be boolean","Value de '~s' deveria ser um booleano"}.
{"Value of '~s' should be datetime string","Valor de '~s' deveria ser data e hora"}. {"Value of '~s' should be datetime string","Valor de '~s' deveria ser data e hora"}.
@ -640,14 +582,13 @@
{"Value 'set' of 'type' attribute is not allowed","Valor 'set' não permitido para atributo 'type'"}. {"Value 'set' of 'type' attribute is not allowed","Valor 'set' não permitido para atributo 'type'"}.
{"vCard User Search","Busca de Usuário vCard"}. {"vCard User Search","Busca de Usuário vCard"}.
{"View joined MIX channels","Exibir os canais MIX aderidos"}. {"View joined MIX channels","Exibir os canais MIX aderidos"}.
{"View Queue","Exibir a fila"}.
{"View Roster","Ver a lista"}.
{"Virtual Hosts","Hosts virtuais"}. {"Virtual Hosts","Hosts virtuais"}.
{"Visitors are not allowed to change their nicknames in this room","Nesta sala, os visitantes não podem mudar seus apelidos"}. {"Visitors are not allowed to change their nicknames in this room","Nesta sala, os visitantes não podem mudar seus apelidos"}.
{"Visitors are not allowed to send messages to all occupants","Os visitantes não podem enviar mensagens a todos os ocupantes"}. {"Visitors are not allowed to send messages to all occupants","Os visitantes não podem enviar mensagens a todos os ocupantes"}.
{"Visitor","Visitante"}. {"Visitor","Visitante"}.
{"Voice request","Requisição de voz"}. {"Voice request","Requisição de voz"}.
{"Voice requests are disabled in this conference","Requisições de voz estão desabilitadas nesta sala de conferência"}. {"Voice requests are disabled in this conference","Requisições de voz estão desabilitadas nesta sala de conferência"}.
{"Web client which allows to join the room anonymously","Cliente da web que permite entrar na sala de forma anônima"}.
{"Wednesday","Quarta"}. {"Wednesday","Quarta"}.
{"When a new subscription is processed and whenever a subscriber comes online","Quando uma nova assinatura é processada e sempre que um assinante fica online"}. {"When a new subscription is processed and whenever a subscriber comes online","Quando uma nova assinatura é processada e sempre que um assinante fica online"}.
{"When a new subscription is processed","Quando uma nova assinatura é processada"}. {"When a new subscription is processed","Quando uma nova assinatura é processada"}.

Some files were not shown because too many files have changed in this diff Show more