Compare commits

..

189 Commits

Author SHA1 Message Date
Badlop 27ba09debf Set version to 24.06
Container / Container (push) Failing after 47s
Installers / Binaries (push) Failing after 51s
Runtime / Rebars (20, rebar) (push) Failing after 3s
Runtime / Rebars (20, rebar3) (push) Failing after 2s
Runtime / Rebars (25, rebar) (push) Failing after 2s
Runtime / Rebars (25, rebar3) (push) Failing after 3s
Runtime / Rebars (26, rebar) (push) Failing after 2s
Runtime / Rebars (26, rebar3) (push) Failing after 3s
Runtime / Rebars (27, rebar3) (push) Failing after 2s
Installers / Release (push) Has been skipped
CI / Tests (20.0) (push) Has been cancelled
CI / Tests (25) (push) Has been cancelled
CI / Tests (26) (push) Has been cancelled
CI / Tests (27) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.13, 23.0) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.13, 25) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.15, 25) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.15, 26) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.16, 25) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.16, 26) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.17, 25) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.17, 26) (push) Has been cancelled
Runtime / Rebar3+Elixir (1.17, 27) (push) Has been cancelled
Runtime / Mix (1.13, 23.0) (push) Has been cancelled
Runtime / Mix (1.13, 25) (push) Has been cancelled
Runtime / Mix (1.15, 25) (push) Has been cancelled
Runtime / Mix (1.15, 26) (push) Has been cancelled
Runtime / Mix (1.16, 25) (push) Has been cancelled
Runtime / Mix (1.16, 26) (push) Has been cancelled
Runtime / Mix (1.17, 25) (push) Has been cancelled
Runtime / Mix (1.17, 26) (push) Has been cancelled
Runtime / Mix (1.17, 27) (push) Has been cancelled
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
177 changed files with 6542 additions and 5209 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
#' Define default build variables
## specifc ARGs for METHOD='direct'
ARG OTP_VSN='26.2'
ARG ELIXIR_VSN='1.16.1'
ARG ELIXIR_VSN='1.16.2'
## specifc ARGs for METHOD='package'
ARG ALPINE_VSN='3.19'
## general ARGs
+8 -1
View File
@@ -79,6 +79,9 @@ fi
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)
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"
fi
fi
@@ -283,7 +286,11 @@ uid() {
else
# Erlang/OTP 23 or higher: use native dynamic node code
# 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
}
+3 -7
View File
@@ -25,7 +25,7 @@ jobs:
strategy:
fail-fast: false
matrix:
otp: ['20.0', '25', '26', '27.0-rc1']
otp: ['20.0', '25', '26', '27']
runs-on: ubuntu-20.04
services:
redis:
@@ -77,14 +77,12 @@ jobs:
IDENTIFIED BY 'ejabberd_test';"
mysql -u root -proot -e "GRANT ALL ON ejabberd_test.*
TO 'ejabberd_test'@'localhost';"
mysql -u ejabberd_test -pejabberd_test ejabberd_test < sql/mysql.sql
pg_isready
sudo -u postgres psql -c "CREATE DATABASE ejabberd_test;"
sudo -u postgres psql -c "CREATE USER ejabberd_test
WITH PASSWORD 'ejabberd_test';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES
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 ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
TABLES IN SCHEMA public
TO ejabberd_test;"
@@ -127,7 +125,6 @@ jobs:
--disable-elixir \
--disable-mssql \
--disable-odbc
make update
make
- run: make install -s
@@ -135,6 +132,7 @@ jobs:
- run: make options
- run: make xref
- run: make dialyzer
- run: make test-eunit
- name: Check Production Release
run: |
@@ -204,7 +202,7 @@ jobs:
- name: Upload test logs
if: always() && steps.ct.outcome == 'failure' && github.repository == 'processone/ejabberd'
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
publish_dir: _build/test
exclude_assets: '.github,lib,plugins'
@@ -267,11 +265,9 @@ jobs:
mysql -u root -proot -e "CREATE DATABASE ejabberd_test;"
mysql -u root -proot -e "GRANT ALL ON ejabberd_test.*
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 "GRANT ALL PRIVILEGES
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 ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
TABLES IN SCHEMA public
TO ejabberd_test;"
+1 -1
View File
@@ -108,7 +108,7 @@ jobs:
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
build-args: |
METHOD=package
+1 -1
View File
@@ -78,7 +78,7 @@ jobs:
with:
name: ejabberd-packages
- name: Draft Release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
draft: true
files: ejabberd-packages/*
+36 -18
View File
@@ -33,6 +33,9 @@ jobs:
matrix:
otp: ['20', '25', '26', '27']
rebar: ['rebar', 'rebar3']
exclude:
- otp: '27'
rebar: 'rebar'
runs-on: ubuntu-22.04
container:
image: erlang:${{ matrix.otp }}
@@ -67,7 +70,6 @@ jobs:
--disable-elixir \
--disable-tools \
--disable-odbc
make update
make
- run: make xref
@@ -149,17 +151,23 @@ jobs:
strategy:
fail-fast: false
matrix:
otp: ['23.0', '25', '26', '27.0-rc1']
elixir: ['1.13.4', '1.15.7', '1.16']
otp: ['23.0', '25', '26', '27']
elixir: ['1.13', '1.15', '1.16', '1.17']
exclude:
- otp: '23.0'
elixir: '1.15.7'
elixir: '1.15'
- otp: '23.0'
elixir: '1.16'
- otp: '23.0'
elixir: '1.17'
- otp: '26'
elixir: '1.13.4'
- otp: '27.0-rc1'
elixir: '1.13.4'
elixir: '1.13'
- otp: '27'
elixir: '1.13'
- otp: '27'
elixir: '1.15'
- otp: '27'
elixir: '1.16'
runs-on: ubuntu-20.04
steps:
@@ -193,7 +201,7 @@ jobs:
run: |
sed -i "s|^modules:|modules:\n 'ModPresenceDemo': {}|g" 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
- name: Compile
@@ -203,7 +211,6 @@ jobs:
--prefix=/tmp/ejabberd \
--enable-all \
--disable-odbc
make update
make
- run: make xref
@@ -284,17 +291,23 @@ jobs:
strategy:
fail-fast: false
matrix:
otp: ['23.0', '25', '26', '27.0-rc1']
elixir: ['1.13.4', '1.15.7', '1.16']
otp: ['23.0', '25', '26', '27']
elixir: ['1.13', '1.15', '1.16', '1.17']
exclude:
- otp: '23.0'
elixir: '1.15.7'
elixir: '1.15'
- otp: '23.0'
elixir: '1.16'
- otp: '23.0'
elixir: '1.17'
- otp: '26'
elixir: '1.13.4'
- otp: '27.0-rc1'
elixir: '1.13.4'
elixir: '1.13'
- otp: '27'
elixir: '1.13'
- otp: '27'
elixir: '1.15'
- otp: '27'
elixir: '1.16'
runs-on: ubuntu-20.04
steps:
@@ -329,18 +342,23 @@ jobs:
sed -i 's|^{deps, \(.*\)|{deps, \1\n {decimal, ".*", {git, "https://github.com/ericmj/decimal", {branch, "main"}}}, |g' rebar.config
cat rebar.config
- name: Unlock Jose dependency on older Erlang
if: matrix.otp < 24
run: |
mix deps.unlock jose
- name: Compile
run: |
./autogen.sh
./configure --with-rebar=mix \
--prefix=/tmp/ejabberd \
--enable-all \
--disable-odbc
mix deps.get
--enable-all
make
- run: make xref
- run: make dialyzer
- run: make edoc
- name: Run rel
+3 -1
View File
@@ -34,12 +34,14 @@
/priv/bin/captcha*sh
/priv/sql
/rel/ejabberd
/recompile.log
/_build
/database/
/.rebar
/rebar.lock
/log/
Mnesia.nonode@nohost/
/TAGS
/tags
# Binaries created with tools/make-{binaries,installers,packages}:
/ejabberd_*.deb
/ejabberd-*.rpm
+262 -108
View File
@@ -1,6 +1,115 @@
## Version 24.06
#### Core
- `econf`: Add ability to use additional custom errors when parsing options
- `ejabberd_logger`: Reloading configuration will update logger settings
- `gen_mod`: Add support to specify a hook global, not vhost-specific
- [`mod_configure`](https://docs.ejabberd.im/admin/configuration/modules/#mod_configure): Retract `Get User Password` command to update [XEP-0133](https://xmpp.org/extensions/xep-0133.html) 1.3.0
- [`mod_conversejs`](https://docs.ejabberd.im/admin/configuration/modules/#mod_conversejs): Simplify support for `@HOST@` in `default_domain` option ([#4167](https://github.com/processone/issues/4167))
- [`mod_mam`](https://docs.ejabberd.im/admin/configuration/modules/#mod_mam): Document that [XEP-0441](https://xmpp.org/extensions/xep-0441.html) is implemented as well
- [`mod_mam`](https://docs.ejabberd.im/admin/configuration/modules/#mod_mam): Update support for [XEP-0425](https://xmpp.org/extensions/xep-0425.html) version 0.3.0, keep supporting 0.2.1 ([#4193](https://github.com/processone/issues/4193))
- [`mod_matrix_gw`](https://docs.ejabberd.im/admin/configuration/modules/#mod_matrix_gw): Fix support for `@HOST@` in `matrix_domain` option ([#4167](https://github.com/processone/issues/4167))
- [`mod_muc_log`](https://docs.ejabberd.im/admin/configuration/modules/#mod_muc_log): Hide join/leave lines, add method to show them
- [`mod_muc_log`](https://docs.ejabberd.im/admin/configuration/modules/#mod_muc_log): Support `allowpm` introduced in 2bd61ab
- [`mod_muc_room`](https://docs.ejabberd.im/admin/configuration/modules/#mod_muc_room): Use ejabberd hooks instead of function calls to `mod_muc_log` ([#4191](https://github.com/processone/issues/4191))
- [`mod_private`](https://docs.ejabberd.im/admin/configuration/modules/#mod_private): Cope with bookmark decoding errors
- [`mod_vcard_xupdate`](https://docs.ejabberd.im/admin/configuration/modules/#mod_vcard_xupdate): Send hash after avatar get set for first time
- `prosody2ejabberd`: Handle the `approved` attribute. As feature isn't implemented, discard it ([#4188](https://github.com/processone/issues/4188))
#### SQL
- [`update_sql_schema`](https://docs.ejabberd.im/admin/configuration/toplevel/#update_sql_schema): Enable this option by default
- CI: Don't load database schema files for mysql and pgsql
- Support Unix Domain Socket with updated p1_pgsql and p1_mysql ([#3716](https://github.com/processone/issues/3716))
- Fix handling of `mqtt_pub` table definition from `mysql.sql` and fix `should_update_schema/1` in `ejabberd_sql_schema.erl`
- Don't start sql connection pools for unknown hosts
- Add `update_primary_key` command to sql schema updater
- Fix crash running [`export2sql`](https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#export2sql) when MAM enabled but MUC disabled
- Improve detection of types in odbc
#### Commands API
- New ban commands use private storage to keep ban information ([#4201](https://github.com/processone/issues/4201))
- [`join_cluster_here`](https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#join_cluster_here): New command to join a remote node into our local cluster
- Don't name integer and string results in API examples ([#4198](https://github.com/processone/issues/4198))
- [`get_user_subscriptions`](https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#get_user_subscriptions): Fix validation of user field in that command
- [`mod_admin_extra`](https://docs.ejabberd.im/admin/configuration/modules/#mod_admin_extra): Handle case when `mod_private` is not enabled ([#4201](https://github.com/processone/issues/4201))
- [`mod_muc_admin`](https://docs.ejabberd.im/admin/configuration/modules/#mod_muc_admin): Improve validation of arguments in several commands
#### Compile
- `ejabberdctl`: Comment ERTS_VSN variable when not used ([#4194](https://github.com/processone/issues/4194))
- `ejabberdctl`: Fix iexlive after `make prod` when using Elixir
- `ejabberdctl`: If `INET_DIST_INTERFACE` is IPv6, set required option ([#4189](https://github.com/processone/issues/4189))
- `ejabberdctl`: Make native dynamic node names work when using fully qualified domain names
- `rebar.config.script`: Support relaxed dependency version ([#4192](https://github.com/processone/issues/4192))
- `rebar.config`: Update deps version to rebar3's relaxed versioning
- `rebar.lock`: Track file, now that rebar3 uses loose dependency versioning
- `configure.ac`: When using rebar3, unlock dependencies that are disabled ([#4212](https://github.com/processone/issues/4212))
- `configure.ac`: When using rebar3 with old Erlang, unlock some dependencies ([#4213](https://github.com/processone/issues/4213))
- `mix:exs`: Move `xmpp` from `included_applications` to `applications`
#### Dependencies
- Base64url: Use only when using rebar2 and Erlang lower than 24
- Idna: Bump from 6.0.0 to 6.1.1
- Jiffy: Use Json module when Erlang/OTP 27, jiffy with older ones
- Jose: Update to the new 1.11.10 for Erlang/OTP higher than 23
- Luerl: Update to 1.2.0 when OTP same or higher than 20, simplifies commit a09f222
- P1_acme: Update to support Jose 1.11.10 and Ipv6 support ([#4170](https://github.com/processone/issues/4170))
- P1_acme: Update to use Erlang's json library instead of jiffy when OTP 27
- Port_compiler: Update to 1.15.0 that supports Erlang/OTP 27.0
#### Development Help
- `.gitignore`: Ignore ctags/etags files
- `make dialyzer`: Add support to run Dialyzer with Mix
- `make format|indent`: New targets to format and indent source code
- `make relive`: Add Sync tool with Rebar3, ExSync with Mix
- `hook_deps`: Use precise name: hooks are added and later deleted, not removed
- `hook_deps`: Fix to handle FileNo as tuple `{FileNumber, CharacterPosition}`
- Add support to test also EUnit suite
- Fix `code:lib_dir` call to work with Erlang/OTP 27.0-rc2
- Set process flags when Erlang/OTP 27 to help debugging
- Test retractions in mam_tests
#### Documentation
- Add some XEPs support that was forgotten
- Fix documentation links to new URLs generated by MkDocs
- Remove `...` in example configuration: it is assumed and reduces verbosity
- Support for version note in modules too
- Mark toplevel options, commands and modules that changed in latest version
- Now modules themselves can have version annotations in `note`
#### Installers and Container
- make-binaries: Bump Erlang/OTP to 26.2.5 and Elixir 1.16.3
- make-binaries: Bump OpenSSL to 3.3.1
- make-binaries: Bump Linux-PAM to 1.6.1
- make-binaries: Bump Expat to 2.6.2
- make-binaries: Revert temporarily an OTP commit that breaks MSSQL ([#4178](https://github.com/processone/issues/4178))
- CONTAINER.md: Invalid `CTL_ON_CREATE` usage in docker-compose example
#### WebAdmin
- ejabberd_ctl: Improve parsing of commas in arguments
- ejabberd_ctl: Fix output of UTF-8-encoded binaries
- WebAdmin: Remove webadmin_view for now, as commands allow more fine-grained permissions
- WebAdmin: Unauthorized response: include some text to direct to the logs
- WebAdmin: Improve home page
- WebAdmin: Sort alphabetically the menu items, except the most used ones
- WebAdmin: New login box in the left menu bar
- WebAdmin: Add make_command functions to produce HTML command element
- Document 'any' argument and result type, useful for internal commands
- Commands with 'internal' tag: don't list and block execution by frontends
- WebAdmin: Move content to commands; new pages; hook changes; new commands
## Version 24.02
Core:
#### Core:
- Added Matrix gateway in `mod_matrix_gw`
- Support SASL2 and Bind2
- Support tls-server-end-point channel binding and sasl2 codec
@@ -11,7 +120,8 @@ Core:
- [`negotiation_timeout`](https://docs.ejabberd.im/admin/configuration/toplevel/#negotiation-timeout): Increase default value from 30s to 2m
- mod_carboncopy: Teach how to interact with bind2 inline requests
Other:
#### Other:
- ejabberdctl: Fix startup problem when having set `EJABBERD_OPTS` and logger options
- ejabberdctl: Set EJABBERD_OPTS back to `""`, and use previous flags as example
- eldap: Change logic for `eldap tls_verify=soft` and `false`
@@ -24,20 +134,23 @@ Other:
- mod_pubsub: PEP nodetree: Fix reversed logic in node fixup function
- mod_pubsub: Only care about PEP bookmarks options when creating node from scratch
SQL:
#### SQL:
- MySQL: Support `sha256_password` auth plugin
- ejabberd_sql_schema: Use the first unique index as a primary key
- Update SQL schema files for MAM's XEP-0424
- New option [`sql_flags`](https://docs.ejabberd.im/admin/configuration/toplevel/#sql-flags): right now only useful to enable `mysql_alternative_upsert`
Installers and Container:
#### Installers and Container:
- Container: Add ability to ignore failures in execution of `CTL_ON_*` commands
- Container: Update to Erlang/OTP 26.2, Elixir 1.16.1 and Alpine 3.19
- Container: Update this custom ejabberdctl to match the main one
- make-binaries: Bump OpenSSL 3.2.1, Erlang/OTP 26.2.2, Elixir 1.16.1
- make-binaries: Bump many dependency versions
Commands API:
#### Commands API:
- `print_sql_schema`: New command available in ejabberdctl command-line script
- ejabberdctl: Rework temporary node name generation
- ejabberdctl: Print argument description, examples and note in help
@@ -51,7 +164,7 @@ Commands API:
- ejabberd_xmlrpc: Fix support for restuple error response
- mod_http_api: When no specific API version is requested, use the latest
Compilation with Rebar3/Elixir/Mix:
#### Compilation with Rebar3/Elixir/Mix:
- Fix compilation with Erlang/OTP 27: don't use the reserved word 'maybe'
- configure: Fix explanation of `--enable-group` option ([#4135](https://github.com/processone/ejabberd/issues/4135))
- Add observer and runtime_tools in releases when `--enable-tools`
@@ -82,7 +195,8 @@ Compilation with Rebar3/Elixir/Mix:
## Version 23.10
Compilation:
#### Compilation:
- Erlang/OTP: Raise the requirement to Erlang/OTP 20.0 as a minimum
- CI: Update tests to Erlang/OTP 26 and recent Elixir
- Move Xref and Dialyzer options from workflows to `rebar.config`
@@ -95,7 +209,8 @@ Compilation:
- Elixir: When building OTP release with mix, keep `ERLANG_NODE=ejabberd@localhost`
- `ejabberdctl`: Pass `ERLANG_OPTS` when calling `erl` to parse the `INET_DIST_INTERFACE` ([#4066](https://github.com/processone/ejabberd/issues/#4066)
Commands:
#### Commands:
- `create_room_with_opts`: Fix typo and move examples to `args_example` ([#4080](https://github.com/processone/ejabberd/issues/#4080))
- `etop`: Let `ejabberdctl etop` work in a release (if `observer` application is available)
- `get_roster`: Command now returns groups in a list instead of newlines ([#4088](https://github.com/processone/ejabberd/issues/#4088))
@@ -105,7 +220,8 @@ Commands:
- `ejabberdctl`: Support `policy=user` in the help and return proper arguments
- `ejabberdctl`: Document how to stop a debug shell: control+g
Container:
#### Container:
- Dockerfile: Add missing dependency for mssql databases
- Dockerfile: Reorder stages and steps for consistency
- Dockerfile: Use Alpine as base for `METHOD=package`
@@ -113,7 +229,8 @@ Container:
- Dockerfile: Provide specific OTP and elixir vsn for direct compilation
- Halt ejabberd if a command in `CTL_ON_` fails during ejabberd startup
Core:
#### Core:
- `auth_external_user_exists_check`: New option ([#3377](https://github.com/processone/ejabberd/issues/#3377))
- `gen_mod`: Extend `gen_mod` API to simplify hooks and IQ handlers registration
- `gen_mod`: Add shorter forms for `gen_mod` hook/`iq_handler` API
@@ -128,14 +245,15 @@ Core:
- Web Admin: In roster page move the `AddJID` textbox to top ([#4067](https://github.com/processone/ejabberd/issues/#4067))
- Web Admin: Show a warning when visiting webadmin with non-privileged account ([#4089](https://github.com/processone/ejabberd/issues/#4089))
Docs:
#### Docs:
- Example configuration: clarify 5223 tls options; specify s2s shaper
- Make sure that `policy=user` commands have `host` instead of `server` arg in docs
- Improve syntax of many command descriptions for the Docs site
- Move example Perl extauth script from ejabberd git to Docs site
- Remove obsolete example files, and add link in Docs to the archived copies
Installers (`make-binaries`):
#### Installers (`make-binaries`):
- Bump Erlang/OTP version to 26.1.1, and other dependencies
- Remove outdated workaround
- Don't build Linux-PAM examples
@@ -147,7 +265,8 @@ Installers (`make-binaries`):
- Set kernel version for all builds
- Let curl fail on HTTP errors
Modules:
#### Modules:
- `mod_muc_log`: Add trailing backslash to URLs shown in disco info
- `mod_muc_occupantid`: New module with support for XEP-0421 Occupant Id ([#3397](https://github.com/processone/ejabberd/issues/#3397))
- `mod_muc_rtbl`: Better error handling in ([#4050](https://github.com/processone/ejabberd/issues/#4050))
@@ -165,7 +284,8 @@ Modules:
- `mod_register_web`: Make redirect to page that end with `/` ([#3177](https://github.com/processone/ejabberd/issues/#3177))
- `mod_shared_roster_ldap`: Don't crash in `get_member_jid` on empty output ([#3614](https://github.com/processone/ejabberd/issues/#3614))
MUC:
#### MUC:
- Add support to register nick in a room ([#3455](https://github.com/processone/ejabberd/issues/#3455))
- Convert `allow_private_message` MUC room option to `allowpm` ([#3736](https://github.com/processone/ejabberd/issues/#3736))
- Update xmpp version to send `roomconfig_changesubject` in disco#info ([#4085](https://github.com/processone/ejabberd/issues/#4085))
@@ -178,7 +298,8 @@ MUC:
- Remove existing role information for users that are kicked from room ([#4035](https://github.com/processone/ejabberd/issues/#4035))
- Expand rule "mucsub subscribers are members in members only rooms" to more places
SQL:
#### SQL:
- Add ability to force alternative upsert implementation in mysql
- Properly parse mysql version even if it doesn't have type tag
- Use prepared statement with mysql
@@ -190,7 +311,8 @@ SQL:
## Version 23.04
General:
#### General:
- New `s2s_out_bounce_packet` hook
- Re-allow anonymous connection for connection without client certificates ([#3985](https://github.com/processone/ejabberd/issues/3985))
- Stop `ejabberd_system_monitor` before stopping node
@@ -203,13 +325,15 @@ General:
- `mod_pubsub`: Pubsub xdata fields `max_item/item_expira/children_max` use `max` not `infinity`
- `mod_vcard_xupdate`: Invalidate `vcard_xupdate` cache on all nodes when vcard is updated
Admin:
#### Admin:
- `ext_mod`: Improve support for loading `*.so` files from `ext_mod` dependencies
- Improve output in `gen_html_doc_for_commands` command
- Fix ejabberdctl output formatting ([#3979](https://github.com/processone/ejabberd/issues/3979))
- Log HTTP handler exceptions
MUC:
#### MUC:
- New command `get_room_history`
- Persist `none` role for outcasts
- Try to populate room history from mam when unhibernating
@@ -218,7 +342,8 @@ MUC:
- Store state in db in `mod_muc:create_room()`
- Make subscribers members by default
SQL schemas:
#### SQL schemas:
- Fix a long standing bug in new schema migration
- `update_sql` command: Many improvements in new schema migration
- `update_sql` command: Add support to migrate MySQL too
@@ -227,14 +352,16 @@ SQL schemas:
- Remove unnecessary indexes
- New SQL schema migrate fix
MS SQL:
#### MS SQL:
- MS SQL schema fixes
- Add `new` schema for MS SQL
- Add MS SQL support for new schema migration
- Minor MS SQL improvements
- Fix MS SQL error caused by `ORDER BY` in subquery
SQL Tests:
#### SQL Tests:
- Add support for running tests on MS SQL
- Add ability to run tests on upgraded DB
- Un-deprecate `ejabberd_config:set_option/2`
@@ -242,7 +369,8 @@ SQL Tests:
- Correct README for creating test docker MS SQL DB
- Fix TSQLlint warnings in MSSQL test script
Testing:
#### Testing:
- Fix Shellcheck warnings in shell scripts
- Fix Remark-lint warnings
- Fix Prospector and Pylint warnings in test `extauth.py`
@@ -250,14 +378,14 @@ Testing:
- Test only with oldest OTP supported (20.0), newest stable (25.3) and bleeding edge (26.0-rc2)
- Upload Common Test logs as artifact in case of failure
`ecs` container image:
#### `ecs` container image:
- Update Alpine to 3.17 to get Erlang/OTP 25 and Elixir 1.14
- Add `tini` as runtime init
- Set `ERLANG_NODE` fixed to `ejabberd@localhost`
- Upload images as artifacts to Github Actions
- Publish tag images automatically to ghcr.io
`ejabberd` container image:
#### `ejabberd` container image:
- Update Alpine to 3.17 to get Erlang/OTP 25 and Elixir 1.14
- Add `METHOD` to build container using packages ([#3983](https://github.com/processone/ejabberd/issues/3983))
- Add `tini` as runtime init
@@ -267,14 +395,16 @@ Testing:
- Expose only `HOME` volume, it contains all the required subdirs
- ejabberdctl: Don't use `.../releases/COOKIE`, it's no longer included
Installers:
#### Installers:
- make-binaries: Bump versions, e.g. erlang/otp to 25.3
- make-binaries: Fix building with erlang/otp v25.x
- make-packages: Fix for installers workflow, which didn't find lynx
## Version 23.01
General:
#### General:
- Add `misc:uri_parse/2` to allow declaring default ports for protocols
- CAPTCHA: Add support to define module instead of path to script
- Clustering: Handle `mnesia_system_event mnesia_up` when other node joins this ([#3842](https://github.com/processone/ejabberd/issues/3842))
@@ -294,7 +424,8 @@ General:
- PubSub: Expose the `pubsub#type` field in `disco#info` query to the node ([#3914](https://github.com/processone/ejabberd/issues/3914))
- Translations: Update German translation
Admin:
#### Admin:
- `api_permissions`: Fix option crash when doesn't have `who:` section
- `log_modules_fully`: New option to list modules that will log everything
- `outgoing_s2s_families`: Changed option's default to IPv6, and fall back to IPv4
@@ -305,13 +436,15 @@ Admin:
- Silent warning in OTP24 about not specified `cacerts` in SQL connections
- Fix compilation warnings with Elixir 1.14
DOAP:
#### DOAP:
- Support extended `-protocol` erlang attribute
- Add extended RFCs and XEP details to some protocol attributes
- `tools/generate-doap.sh`: New script to generate DOAP file, add `make doap` ([#3915](https://github.com/processone/ejabberd/issues/3915))
- `ejabberd.doap`: New DOAP file describing ejabberd supported protocols
MQTT:
#### MQTT:
- Add MQTT bridge module
- Add support for certificate authentication in MQTT bridge
- Implement reload in MQTT bridge
@@ -320,7 +453,8 @@ MQTT:
- `mqtt_publish`: New hook for MQTT publish event
- `mqtt_(un)subscribe`: New hooks for MQTT subscribe & unsubscribe events
VSCode:
#### VSCode:
- Improve `.devcontainer` to use use devcontainer image and `.vscode`
- Add `.vscode` files to instruct VSCode how to run ejabberd
- Add Erlang LS default configuration
@@ -328,7 +462,8 @@ VSCode:
## Version 22.10
Core:
#### Core:
- Add `log_burst_limit_*` options ([#3865](https://github.com/processone/ejabberd/issues/3865))
- Support `ERL_DIST_PORT` option to work without epmd
- Auth JWT: Catch all errors from `jose_jwt:verify` and log debugging details ([#3890](https://github.com/processone/ejabberd/issues/3890))
@@ -346,7 +481,8 @@ Core:
- `mod_shared_roster_ldap`: Update roster_get hook to use `#roster_item{}`
- `prosody2ejabberd`: Fix parsing of scram password from prosody
MIX:
#### MIX:
- Fix MIX's filter_nodes
- Return user jid on join
- `mod_mix_pam`: Add new MIX namespaces to disco features
@@ -361,7 +497,8 @@ MIX:
- `mod_roster`: Adapt to change of mix_annotate type to boolean in roster_query
- `mod_shared_roster`: Fix wrong hook type `#roster{}` (now `#roster_item{}`)
MUC:
#### MUC:
- Store role, and use it when joining a moderated room ([#3330](https://github.com/processone/ejabberd/issues/3330))
- Don't persist `none` role ([#3330](https://github.com/processone/ejabberd/issues/3330))
- Allow MUC service admins to bypass max_user_conferences limitation
@@ -374,7 +511,8 @@ MUC:
- Export `mod_muc_admin:get_room_pid/2`
- Export function for getting room diagnostics
SQL:
#### SQL:
- Handle errors reported from begin/commit inside transaction
- Make connection close errors bubble up from inside sql transaction
- Make first sql reconnect wait shorter time
@@ -386,7 +524,8 @@ SQL:
- Update mysql library
- Catch mysql connection being close earlier
Build:
#### Build:
- `make all`: Generate start scripts here, not in `make install` ([#3821](https://github.com/processone/ejabberd/issues/3821))
- `make clean`: Improve this and "distclean"
- `make deps`: Ensure deps configuration is ran when getting deps ([#3823](https://github.com/processone/ejabberd/issues/3823))
@@ -399,7 +538,8 @@ Build:
- Remove unused macro definitions detected by rebar3_hank
- Remove unused header files which content is already in xmpp library
Container:
#### Container:
- Get ejabberd-contrib sources to include them
- Copy `.ejabberd-modules` directory if available
- Do not clone repo inside container build
@@ -409,7 +549,8 @@ Container:
- Set a less frequent healthcheck to reduce CPU usage ([#3826](https://github.com/processone/ejabberd/issues/3826))
- Fix build instructions, add more podman examples
Installers:
#### Installers:
- make-binaries: Include CAPTCHA script with release
- make-binaries: Edit rebar.config more carefully
- make-binaries: Fix linking of EIMP dependencies
@@ -423,14 +564,16 @@ Installers:
- make-installers: Override code on upgrade
- make-installers: Apply cosmetic changes
External modules:
#### External modules:
- ext_mod: Support managing remote nodes in the cluster
- ext_mod: Handle correctly when COMMIT.json not found
- Don't bother with COMMIT.json user-friendly feature in automated user case
- Handle not found COMMIT.json, for example in GH Actions
- Add WebAdmin page for managing external modules
Workflows Actions:
#### Workflows Actions:
- Update workflows to Erlang 25
- Update workflows: Ubuntu 18 is deprecated and 22 is added
- CI: Remove syntax_tools from applications, as fast_xml fails Dialyzer
@@ -438,42 +581,42 @@ Workflows Actions:
## Version 22.05
Core
#### Core
- C2S: Don't expect that socket will be available in `c2s_terminated` hook
- Event handling process hook tracing
- Guard against `erlang:system_info(logical_processors)` not always returning a number
- `domain_balancing`: Allow for specifying `type` only, without specifying `component_number`
MQTT
#### MQTT
- Add TLS certificate authentication for MQTT connections
- Fix login when generating client id, keep connection record (#3593)
- Pass property name as expected in mqtt_codec (fixes login using MQTT 5)
- Support MQTT subscriptions spread over the cluster (#3750)
MUC
#### MUC
- Attach meta field with real jid to mucsub subscription events
- Handle user removal
- Stop empty MUC rooms 30 seconds after creation
- `default_room_options`: Update options configurable
- `subscribe_room_many_max_users`: New option in `mod_muc_admin`
mod_conversejs
#### mod_conversejs
- Improved options to support `@HOST@` and `auto` values
- Set `auth` and `register` options based on ejabberd configuration
- `conversejs_options`: New option
- `conversejs_resources`: New option
PubSub
#### PubSub
- `mod_pubsub`: Allow for limiting `item_expire` value
- `mod_pubsub`: Unsubscribe JID on whitelist removal
- `node_pep`: Add config-node and multi-items features (#3714)
SQL
#### SQL
- Improve compatibility with various db engine versions
- Sync old-to-new schema script with reality (#3790)
- Slight improvement in MSSQL testing support, but not yet complete
Other Modules
#### Other Modules
- `auth_jwt`: Checking if an user is active in SM for a JWT authenticated user (#3795)
- `mod_configure`: Implement Get List of Registered/Online Users from XEP-0133
- `mod_host_meta`: New module to serve host-meta files, see XEP-0156
@@ -486,7 +629,7 @@ Other Modules
- `mod_shared_roster`: Normalize JID on unset_presence (#3752)
- `mod_stun_disco`: Fix parsing of IPv6 listeners
Dependencies
#### Dependencies
- autoconf: Supported from 2.59 to the new 2.71
- fast_tls: Update to 1.1.14 to support OpenSSL 3
- jiffy: Update to 1.1.1 to support Erlang/OTP 25.0-rc1
@@ -496,7 +639,7 @@ Dependencies
- rebar3: Updated binary to work from Erlang/OTP 22 to 25
- `make update`: Fix when used with rebar 3.18
Compile
#### Compile
- `mix release`: Copy `include/` files for ejabberd, deps and otp, in `mix.exs`
- `rebar3 release`: Fix ERTS path in `ejabberdctl`
- `configure.ac`: Set default ejabberd version number when not using git
@@ -505,7 +648,7 @@ Compile
- `tools/make-binaries`: New script for building Linux binaries
- `tools/make-installers`: New script for building command line installers
Start
#### Start
- New `make relive` similar to `ejabberdctl live` without installing
- `ejabberdctl`: Fix some warnings detected by ShellCheck
- `ejabberdctl`: Mention in the help: `etop`, `ping` and `started`/`stopped`
@@ -513,7 +656,7 @@ Start
- `mix.exs`: Add `-boot` and `-boot_var` in `ejabberdctl` instead of adding `vm.args`
- `tools/captcha.sh`: Fix some warnings detected by ShellCheck
Commands
#### Commands
- Accept more types of ejabberdctl commands arguments as JSON-encoded
- `delete_old_mam_messages_batch`: New command with rate limit
- `delete_old_messages_batch`: New command with rate limit
@@ -525,7 +668,7 @@ Commands
- `stop|restart`: Terminate ejabberd_sm before everything else to ensure sessions closing (#3641)
- `subscribe_room_many`: New command
Translations
#### Translations
- Updated Catalan
- Updated French
- Updated German
@@ -533,7 +676,7 @@ Translations
- Updated Portuguese (Brazil)
- Updated Spanish
Workflows
#### Workflows
- CI: Publish CT logs and Cover on failure to an external GH Pages repo
- CI: Test shell scripts using ShellCheck (#3738)
- Container: New workflow to build and publish containers
@@ -543,12 +686,12 @@ Workflows
## Version 21.12
Commands
#### Commands
- `create_room_with_opts`: Fixed when using SQL storage
- `change_room_option`: Add missing fields from config inside `mod_muc_admin:change_options`
- piefxis: Fixed arguments of all commands
Modules
#### Modules
- mod_caps: Don't forget caps on XEP-0198 resumption
- mod_conversejs: New module to serve a simple page for Converse.js
- mod_http_upload_quota: Avoid `max_days` race
@@ -563,7 +706,7 @@ Modules
- mod_register_web: Handle unknown host gracefully
- mod_register_web: Use mod_register configured restrictions
PubSub
#### PubSub
- Add `delete_expired_pubsub_items` command
- Add `delete_old_pubsub_items` command
- Optimize publishing on large nodes (SQL)
@@ -574,7 +717,7 @@ PubSub
- node_flat: Avoid catch-all clauses for RSM
- node_flat_sql: Avoid catch-all clauses for RSM
SQL
#### SQL
- Use `INSERT ... ON CONFLICT` in SQL_UPSERT for PostgreSQL >= 9.5
- mod_mam export: assign MUC entries to the MUC service
- MySQL: Fix typo when creating index
@@ -582,7 +725,7 @@ SQL
- PgSQL: Add missing SQL migration for table `push_session`
- PgSQL: Fix `vcard_search` definition in pgsql new schema
Other
#### Other
- `captcha-ng.sh`: "sort -R" command not POSIX, added "shuf" and "cat" as fallback
- Make s2s connection table cleanup more robust
- Update export/import of scram password to XEP-0227 1.1
@@ -590,7 +733,7 @@ Other
## Version 21.07
Compilation
#### Compilation
- Add rebar3 3.15.2 binary
- Add support for mix to: `./configure --enable-rebar=mix`
- Improved `make rel` to work with rebar3 and mix
@@ -602,14 +745,16 @@ Compilation
- Added experimental support for GitHub Codespaces
- Switch test service from TravisCI to GitHub Actions
Commands:
#### Commands:
- Display extended error message in ejabberdctl
- Remove SMP option from ejabberdctl.cfg, `-smp` was removed in OTP 21
- `create_room`: After creating room, store in DB if it's persistent
- `help`: Major changes in its usage and output
- `srg_create`: Update to use `label` parameter instead of `name`
Modules:
#### Modules:
- ejabberd_listener: New `send_timeout` option
- mod_mix: Improvements to update to 0.14.1
- mod_muc_room: Don't leak owner JIDs
@@ -626,7 +771,8 @@ Modules:
- WebAdmin: New simple pages to view mnesia tables information and content
- WebSocket: Fix typos
SQL:
#### SQL:
- MySQL Backend Patch for scram-sha512
- SQLite: When exporting for SQLite, use its specific escape options
- SQLite: Minor fixes for new_sql_schema support
@@ -636,14 +782,16 @@ SQL:
## Version 21.04
API Commands:
#### API Commands:
- `add_rosteritem/...`: Add argument guards to roster commands
- `get_user_subscriptions`: New command for MUC/Sub
- `remove_mam_for_user_with_peer`: Fix when removing room archive
- `send_message`: Fix bug introduced in ejabberd 21.01
- `set_vcard`: Return modules errors
Build and setup:
#### Build and setup:
- Allow ejabberd to be compatible as a dependency for an Erlang project using rebar3
- CAPTCHA: New question/answer-based CAPTCHA script
- `--enable-lua`: new configure option for luerl instead of --enable-tools
@@ -651,14 +799,16 @@ Build and setup:
- Update `sql_query` record to handle the Erlang/OTP 24 compiler reports
- Updated dependencies to fix Dialyzer warnings
Miscellaneous:
#### Miscellaneous:
- CAPTCHA: Update `FORM_TYPE` from captcha to register
- LDAP: fix eldap certificate verification
- MySQL: Fix for "specified key was too long"
- Translations: updated the Esperanto, Greek, and Japanese translations
- Websocket: Fix PONG responses
Modules:
#### Modules:
- `mod_block_strangers`: If stanza is type error, allow it passing
- `mod_caps`: Don't request roster when not needed
- `mod_caps`: Skip reading roster in one more case
@@ -674,7 +824,8 @@ Modules:
## Version 21.01
Miscellaneous changes:
#### Miscellaneous changes:
- `log_rotate_size` option: Fix handling of infinity value
- `mod_time`: Fix invalid timezone
- Auth JWT: New `check_decoded_jwt` hook runs the default JWT verifier
@@ -689,7 +840,8 @@ Miscellaneous changes:
- Stun: Block loopback addresses by default
- Several documentation fixes and clarifications
Commands:
#### Commands:
- `decide_room`: Use better fallback value for room activity time when skipping room
- `delete_old_message`: Fix when using sqlite spool table
- `module_install`: Make ext_mod compile module with debug_info flags
@@ -697,13 +849,15 @@ Commands:
- `send_message`: Dont include empty in messages
- `set_room_affiliation`: Validate affiliations
Running:
#### Running:
- Docker: New `Dockerfile` and `devcontainer.json`
- New `ejabberdctl foreground-quiet`
- Systemd: Allow for listening on privileged ports
- Systemd: Integrate nicely with systemd
Translations:
#### Translations:
- Moved gettext PO files to a new `ejabberd-po` repository
- Improved several translations: Catalan, Chinese, German, Greek, Indonesian, Norwegian, Portuguese (Brazil), Spanish.
@@ -716,13 +870,13 @@ Translations:
- start_room: new hook runs when a room process is started
- check_decoded_jwt: new hook to check decoded JWT after success authentication
* Admin
#### Admin
- Docker: Fix DB initialization
- New sql_odbc_driver option: choose the mssql ODBC driver
- Rebar3: Fully supported. Enable with `./configure --with-rebar=/path/to/rebar3`
- systemd: start ejabberd in foreground
* Modules:
#### Modules:
- MAM: Make sure that jid used as base in mam xml_compress is bare
- MAM: Support for MAM Flipped Pages
- MUC: Always show MucSub subscribers nicks
@@ -744,7 +898,7 @@ Translations:
## Version 20.07
* Changes in this version
#### Changes in this version
- Add support for using unix sockets in listeners.
- Make this version compatible with erlang R23
- Make room permissions checks more strict for subscribers
@@ -771,7 +925,7 @@ Translations:
## Version 20.03
* Changes in this version
#### Changes in this version
- Add support of ssl connection when connection to mysql
database (configured with `sql_ssl: true` option)
- Experimental support for cockroachdb when configured
@@ -791,7 +945,7 @@ Translations:
## Version 20.02
* Changes in this version
#### Changes in this version
- Fix problems when trying to use string format with unicode
values directly in xmpp nodes
- Add missing oauth_client table declaration in lite.new.sql
@@ -809,7 +963,7 @@ Translations:
## Version 20.01
* New features
#### New features
- Implement OAUTH authentication in mqtt
- Make logging infrastructure use new logger introduced
in Erlang (requires OTP22)
@@ -824,7 +978,7 @@ Translations:
- Generate man page automatically
- Implement copy feature in mod_carboncopy
* Fixes
#### Fixes
- Make webadmin work with configurable paths
- Fix handling of result in xmlrpc module
- Make webadmin work even when accessed through not declared domain
@@ -842,18 +996,18 @@ Translations:
## Version 19.09
* Admin
#### Admin
- The minimum required Erlang/OTP version is now 19.3
- Fix API call using OAuth (#2982)
- Rename MUC command arguments from Host to Service (#2976)
* Webadmin
#### Webadmin
- Don't treat 'Host' header as a virtual XMPP host (#2989)
- Fix some links to Guide in WebAdmin and add new ones (#3003)
- Use select fields to input host in WebAdmin Backup (#3000)
- Check account auth provided in WebAdmin is a local host (#3000)
* ACME
#### ACME
- Improve ACME implementation
- Fix IDA support in ACME requests
- Fix unicode formatting in ACME module
@@ -864,10 +1018,10 @@ Translations:
- Don't auto request certificate for localhost and IP-like domains
- Add listener for ACME challenge in example config
* Authentication
#### Authentication
- JWT-only authentication for some users (#3012)
* MUC
#### MUC
- Apply default role after revoking admin affiliation (#3023)
- Custom exit message is not broadcast (#3004)
- Revert "Affiliations other than admin and owner cannot invite to members_only rooms" (#2987)
@@ -875,11 +1029,11 @@ Translations:
- Improve rooms_* commands to accept 'global' as MUC service argument (#2976)
- Rename MUC command arguments from Host to Service (#2976)
* SQL
#### SQL
- Fix transactions for Microsoft SQL Server (#2978)
- Spawn SQL connections on demand only
* Misc
#### Misc
- Add support for XEP-0328: JID Prep
- Added gsfonts for captcha
- Log Mnesia table type on creation
@@ -895,12 +1049,12 @@ Translations:
## Version 19.08
* Administration
#### Administration
- Improve ejabberd halting procedure
- Process unexpected erlang messages uniformly: logging a warning
- mod_configure: Remove modules management
* Configuration
#### Configuration
- Use new configuration validator
- ejabberd_http: Use correct virtual host when consulting trusted_proxies
- Fix Elixir modules detection in the configuration file
@@ -910,7 +1064,7 @@ Translations:
- mod_stream_mgmt: Allow flexible timeout format
- mod_mqtt: Allow flexible timeout format in session_expiry option
* Misc
#### Misc
- Fix SQL connections leakage
- New authentication method using JWT tokens
- extauth: Add 'certauth' command
@@ -925,14 +1079,14 @@ Translations:
- mod_privacy: Don't attempt to query 'undefined' active list
- mod_privacy: Fix race condition
* MUC
#### MUC
- Add code for hibernating inactive muc_room processes
- Improve handling of unexpected iq in mod_muc_room
- Attach mod_muc_room processes to a supervisor
- Restore room when receiving message or generic iq for not started room
- Distribute routing of MUC messages across all CPU cores
* PubSub
#### PubSub
- Fix pending nodes retrieval for SQL backend
- Check access_model when publishing PEP
- Remove deprecated pubsub plugins
@@ -940,7 +1094,7 @@ Translations:
## Version 19.05
* Admin
#### Admin
- The minimum required Erlang/OTP version is now 19.1
- Provide a suggestion when unknown command, module, option or request handler is detected
- Deprecate some listening options: captcha, register, web_admin, http_bind and xmlrpc
@@ -951,19 +1105,19 @@ Translations:
- Improve request_handlers validator
- Fix syntax in example Elixir config file
* Auth
#### Auth
- Correctly support cache tags in ejabberd_auth
- Don't process failed EXTERNAL authentication by mod_fail2ban
- Don't call to mod_register when it's not loaded
- Make anonymous auth don't {de}register user when there are other resources
* Developer
#### Developer
- Rename listening callback from start/2 to start/3
- New hook called when room gets destroyed: room_destroyed
- New hooks for tracking mucsub subscriptions changes: muc_subscribed, muc_unsubscribed
- Make static hooks analyzer working again
* MUC
#### MUC
- Service admins are allowed to recreate room even if archive is nonempty
- New option user_mucsub_from_muc_archive
- Avoid late arrival of get_disco_item response
@@ -972,7 +1126,7 @@ Translations:
- Make get_subscribed_rooms work even for non-persistant rooms
- Allow non-moderator subscribers to get list of room subscribers
* Offline
#### Offline
- New option bounce_groupchat: make it not bounce mucsub/groupchat messages
- New option use_mam_for_storage: fetch data from mam instead of spool table
- When applying limit of max msgs in spool check only spool size
@@ -984,27 +1138,27 @@ Translations:
- Return correct value from count_offline_messages with mam storage option
- Make mod_offline put msg ignored by mam in spool when mam storage is on
* SQL:
#### SQL:
- Add SQL schemas for MQTT tables
- Report better errors on SQL terms decode failure
- Fix PostgreSQL compatibility in mod_offline_sql:remove_old_messages
- Fix handling of list arguments on pgsql
- Preliminary support for SQL in process_rosteritems command
* Tests
#### Tests
- Add tests for user mucsub mam from muc mam
- Add tests for offline with mam storage
- Add tests for offline use_mam_for_storage
- Initial Docker environment to run ejabberd test suite
- Test offline:use_mam_for_storage, mam:user_mucsub_from_muc_archive used together
* Websocket
#### Websocket
- Add WebSockets support to mod_mqtt
- Return "Bad request" error when origin in websocket connection doesn't match
- Fix RFC6454 violation on websocket connection when validating Origin header
- Origin header validation on websocket connection
* Other modules
#### Other modules
- mod_adhoc: Use xml:lang from stanza when it's missing in <command/> element
- mod_announce: Add 'sessionid' attribute when required
- mod_bosh: Don't put duplicate polling attribute in bosh payload
@@ -1017,14 +1171,14 @@ Translations:
## Version 19.02
* Admin
#### Admin
- Fix in configure.ac the Erlang/OTP version: from 17.5 to 19.0
- reload_config command: Fix crash when sql_pool_size option is used
- reload_config command: Fix crash when SQL is not configured
- rooms_empty_destroy command: Several fixes to behave more conservative
- Fix serverhost->host parameter name for muc_(un)register_nick API
* Configuration
#### Configuration
- Allow specifying tag for listener for api_permission purposes
- Change default ciphers to intermediate
- Define default ciphers/protocol_option in example config
@@ -1034,29 +1188,29 @@ Translations:
- mod_muc: New option access_mam to restrict who can modify that room option
- mod_offline: New option store_groupchat to allow storing group chat messages
* Core
#### Core
- Add MQTT protocol support
- Fix (un)setting of priority
- Use OTP application startup infrastructure for starting dependencies
- Improve starting order of several dependencies
* MAM
#### MAM
- mod_mam_mnesia/sql: Improve check for empty archive
- disallow room creation if archive not empty and clear_archive_on_room_destroy is false
- allow check if archive is empty for or user or room
- Additional checks for database failures
* MUC
#### MUC
- Make sure that room_destroyed is called even when some code throws in terminate
- Update muc room state after adding extra access field to it
- MUC/Sub: Send mucsub subscriber notification events with from set to room jid
* Shared Roster
#### Shared Roster
- Don't perform roster push for non-local contacts
- Handle versioning result when shared roster group has remote account
- Fix SQL queries
* Miscelanea
#### Miscelanea
- CAPTCHA: Add no-store hint to CAPTCHA challenge stanzas
- HTTP: Reject http_api request with malformed Authentication header
- mod_carboncopy: Don't lose carbons on presence change or session resumption
@@ -1071,7 +1225,7 @@ Translations:
## Version 18.12
* MAM data store compression
* Proxy protocol support
* MUC Self-Ping optimization (XEP-0410)
* Bookmarks conversion (XEP-0411)
- MAM data store compression
- Proxy protocol support
- MUC Self-Ping optimization (XEP-0410)
- Bookmarks conversion (XEP-0411)
+1 -1
View File
@@ -7,7 +7,7 @@ from source code.
For a more detailed explanation, please check the
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
+9 -7
View File
@@ -29,7 +29,7 @@ repository.
Check the [differences between `ejabberd` and `ecs` images](https://github.com/processone/docker-ejabberd/blob/master/ecs/HUB-README.md#alternative-image-in-github).
If you are using a Windows operating system, check the tutorials mentioned in
[ejabberd Docs > Docker Image](https://docs.ejabberd.im/admin/installation/#docker-image).
[ejabberd Docs > Docker Image](https://docs.ejabberd.im/admin/install/container/#ejabberd-container-image).
Start ejabberd
@@ -108,7 +108,7 @@ docker exec -it ejabberd ejabberdctl register admin localhost passw0rd
```
Then edit conf/ejabberd.yml and add the ACL as explained in
[ejabberd Docs: Administration Account](https://docs.ejabberd.im/admin/installation/#administration-account)
[ejabberd Docs: Administration Account](https://docs.ejabberd.im/admin/install/next-steps/#administration-account)
### Check ejabberd log files
@@ -227,7 +227,7 @@ abort start, this can be disabled by prefixing commands with `!`
Example usage (or check the [full example](#customized-example)):
```yaml
environment:
- CTL_ON_CREATE=\! register admin localhost asd
- CTL_ON_CREATE=! register admin localhost asd
- CTL_ON_START=stats registeredusers ;
check_password admin localhost asd ;
status
@@ -249,7 +249,7 @@ For this you can either:
Example to connect a local `ejabberdctl` to a containerized ejabberd:
1. When creating the container, export port 5210, and set `ERLANG_COOKIE`:
```
```sh
docker run --name ejabberd -it \
-e ERLANG_COOKIE=`cat $HOME/.erlang.cookie` \
-p 5210:5210 -p 5222:5222 \
@@ -260,7 +260,7 @@ docker run --name ejabberd -it \
4. Now use `ejabberdctl` in your local ejabberd deployment
To connect using a local `ejabberd` script:
```
```sh
ERL_DIST_PORT=5210 _build/dev/rel/ejabberd/bin/ejabberd ping
```
@@ -299,7 +299,7 @@ docker buildx build \
It's also possible to use podman instead of docker, just notice:
- `EXPOSE 4369-4399` port range is not supported, remove that in Dockerfile
- It mentions that `healthcheck` is not supported by the Open Container Initiative image format
- If you want to start with command `live`, add environment variable `EJABBERD_BYPASS_WARNINGS=true`
- to start with command `live`, you may want to add environment variable `EJABBERD_BYPASS_WARNINGS=true`
```bash
podman build \
-t ejabberd \
@@ -313,6 +313,8 @@ podman exec eja1 ejabberdctl status
podman exec -it eja1 sh
podman stop eja1
podman run --name eja1 -it -e EJABBERD_BYPASS_WARNINGS=true -p 5222:5222 localhost/ejabberd live
```
### Package build for `arm64`
@@ -433,7 +435,7 @@ services:
environment:
- ERLANG_NODE_ARG=ejabberd@main
- ERLANG_COOKIE=dummycookie123
- CTL_ON_CREATE=\! register admin localhost asd
- CTL_ON_CREATE=! register admin localhost asd
replica:
image: ghcr.io/processone/ejabberd
+1 -1
View File
@@ -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
[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]
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
+35 -9
View File
@@ -150,6 +150,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=":$(ELIXIR_LIBDIR_RAW)"
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
endif
ifeq "$(REBAR_VER)" "3"
@@ -170,7 +171,7 @@ endif
CLEANARG=--all
REBARREL=$(REBAR) as prod tar
REBARDEV=$(REBAR) as dev release
RELIVECMD=$(REBAR) relive
RELIVECMD=$(REBAR) as dev relive
REL_LIB_DIR = _build/dev/rel/ejabberd/lib
COPY_REL_TARGET = dev
GET_DEPS_TRANSLATIONS=$(REBAR) as translations $(GET_DEPS)
@@ -258,7 +259,17 @@ _build/edoc/docs.md: edoc_compile
> _build/edoc/docs.md
_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 $(REBAR)
indent:
tools/emacs-indent.sh
#.
#' copy-files
@@ -377,6 +388,7 @@ uninstall-librel:
#
relive:
$(EXPLICIT_ELIXIR_COMPILE_DEV)
$(RELIVECMD)
relivelibdir=$(shell pwd)/$(DEPSDIR)
@@ -396,6 +408,7 @@ ejabberdctl.relive:
-e "s*{{spool_dir}}*${SPOOL_DIR}*g" \
-e "s*{{bindir}}*${BINDIR}*g" \
-e "s*{{libdir}}*${relivelibdir}${ELIXIR_LIBDIR}*g" \
-e "s*ERTS_VSN*# ERTS_VSN*g" \
-e "s*{{iexpath}}*${IEX}*g" \
-e "s*{{erl}}*${ERL}*g" \
-e "s*{{epmd}}*${EPMD}*g" ejabberdctl.template \
@@ -420,6 +433,7 @@ ejabberdctl.example: vars.config
-e "s*{{spool_dir}}*${SPOOLDIR}*g" \
-e "s*{{bindir}}*${BINDIR}*g" \
-e "s*{{libdir}}*${LIBDIR}${ELIXIR_LIBDIR}*g" \
-e "s*ERTS_VSN*# ERTS_VSN*g" \
-e "s*{{iexpath}}*${IEX}*g" \
-e "s*{{erl}}*${ERL}*g" \
-e "s*{{epmd}}*${EPMD}*g" ejabberdctl.template \
@@ -577,12 +591,16 @@ Makefile: Makefile.in
#' dialyzer
#
ifeq "$(REBAR_VER)" "3"
ifeq "$(REBAR_VER)" "6" # Mix
dialyzer:
find src/*_opt.erl -type f \! -regex ".*git.*" -exec sed -i 's/re:mp/ tuple/g' {} \;
$(REBAR) dialyzer
find src/*_opt.erl -type f \! -regex ".*git.*" -exec sed -i 's/ tuple/re:mp/g' {} \;
MIX_ENV=test $(REBAR) dialyzer
else
ifeq "$(REBAR_VER)" "3" # Rebar3
dialyzer:
$(REBAR) dialyzer
else # Rebar2
deps := $(wildcard $(DEPSDIR)/*/ebin)
dialyzer/erlang.plt:
@@ -622,6 +640,7 @@ dialyzer: erlang_plt deps_plt ejabberd_plt
--get_warnings -o dialyzer/error.log ebin; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
endif
endif
#.
#' test
@@ -634,14 +653,17 @@ test:
@cd priv && ln -sf ../sql
$(REBAR) $(SKIPDEPS) ct
test-eunit:
$(REBAR) $(SKIPDEPS) eunit --verbose
#.
#' phony
#
.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 \
erlang_plt deps_plt ejabberd_plt xref hooks options
erlang_plt deps_plt ejabberd_plt xref hooks options format indent
#.
#' help
@@ -673,9 +695,13 @@ help:
@echo " translations Extract translation files"
@echo " TAGS Generate tags file for text editors"
@echo ""
@echo " dialyzer Run Dialyzer static analyzer [rebar3]"
@echo " format Format source code using rebar3_format [rebar3]"
@echo " indent Indent source code using erlang-mode [emacs]"
@echo ""
@echo " dialyzer Run Dialyzer static analyzer"
@echo " hooks Run hooks validator"
@echo " test Run Common Tests suite [rebar3]"
@echo " test-eunit Run EUnit suite [rebar3]"
@echo " xref Run cross reference analysis [rebar3]"
#.
+6 -4
View File
@@ -17,9 +17,11 @@
<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>
<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">
<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>
@@ -107,14 +109,14 @@ and [ejabberd translations](https://github.com/processone/ejabberd-po/) under MI
[erlang]: https://www.erlang.org/
[features]: https://docs.ejabberd.im/admin/introduction/
[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/
[im]: https://ejabberd.im/
[issues]: https://github.com/processone/ejabberd/issues
[localization]: https://docs.ejabberd.im/developer/extending-ejabberd/localization/
[mqtt]: https://mqtt.org/
[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/
[p1download]: https://www.process-one.net/en/ejabberd/downloads/
[p1home]: https://www.process-one.net/en/ejabberd/
+2
View File
@@ -11,3 +11,5 @@ config :ejabberd,
log_path: Path.join(rootpath, "logs/ejabberd.log")
config :mnesia,
dir: Path.join(rootpath, "database/")
config :exsync,
reload_callback: {:ejabberd_admin, :update, []}
+26 -1
View File
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
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 24.06` | sed 's/-g.*//;s/-/./' | tr -d '\012']), [ejabberd@process-one.net], [ejabberd])
REQUIRE_ERLANG_MIN="9.0.5 (Erlang/OTP 20.0)"
REQUIRE_ERLANG_MAX="100.0.0 (No Max)"
@@ -333,3 +333,28 @@ AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS)
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"])
])
+59 -5
View File
@@ -22,7 +22,7 @@
<download-page rdf:resource="https://www.process-one.net/en/ejabberd/downloads/"/>
<download-mirror rdf:resource="https://github.com/processone/ejabberd/tags"/>
<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"/>
<support-forum rdf:resource="xmpp:ejabberd@conference.process-one.net?join"/>
<repository>
@@ -170,6 +170,15 @@
<xmpp:note>mod_vcard</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0059.html"/>
<xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0060.html"/>
@@ -272,10 +281,19 @@
<implements>
<xmpp:SupportedXep>
<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>13.10</xmpp:since>
<xmpp:status>complete</xmpp:status>
<xmpp:note>mod_configure</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0138.html"/>
<xmpp:version>2.1</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note>mod_configure</xmpp:note>
<xmpp:note>ejabberd_c2s</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
@@ -341,6 +359,15 @@
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0175.html"/>
<xmpp:version>1.2</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note>ejabberd_auth_anonymous</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0176.html"/>
@@ -395,6 +422,15 @@
<xmpp:note>mod_time</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0203.html"/>
<xmpp:version>2.0</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note>mod_offline</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0205.html"/>
@@ -458,6 +494,15 @@
<xmpp:note>ejabberd_piefxis</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0231.html"/>
<xmpp:version>1.0</xmpp:version>
<xmpp:since></xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note>ejabberd_captcha</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/>
@@ -713,8 +758,8 @@
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0425.html"/>
<xmpp:version>0.2.1</xmpp:version>
<xmpp:since>23.04</xmpp:since>
<xmpp:version>0.3.0</xmpp:version>
<xmpp:since>24.06</xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note>mod_mam</xmpp:note>
</xmpp:SupportedXep>
@@ -746,5 +791,14 @@
<xmpp:note></xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0485.html"/>
<xmpp:version>0.2.0</xmpp:version>
<xmpp:since>24.02</xmpp:since>
<xmpp:status></xmpp:status>
<xmpp:note>, mod_pubsub_serverinfo in ejabberd-contrib.git</xmpp:note>
</xmpp:SupportedXep>
</implements>
</Project>
</rdf:RDF>
+8 -1
View File
@@ -78,6 +78,9 @@ fi
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)
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"
fi
fi
@@ -270,7 +273,11 @@ uid() {
else
# Erlang/OTP 23 or higher: use native dynamic node code
# 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
}
+19 -2
View File
@@ -19,13 +19,30 @@
%%%----------------------------------------------------------------------
-type aterm() :: {atom(), atype()}.
-type atype() :: integer | string | binary |
-type atype() :: integer | string | binary | any | atom |
{tuple, [aterm()]} | {list, aterm()}.
-type rterm() :: {atom(), rtype()}.
-type rtype() :: integer | string | atom |
-type rtype() :: integer | string | atom | any |
{tuple, [rterm()]} | {list, rterm()} |
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().
%% ejabberd_commands OAuth ReST ACL definition:
+19 -3
View File
@@ -62,6 +62,11 @@
[{<<"type">>, Type}, {<<"name">>, Name},
{<<"value">>, Value}])).
-define(INPUTPH(Type, Name, Value, PlaceHolder),
?XA(<<"input">>,
[{<<"type">>, Type}, {<<"name">>, Name},
{<<"value">>, Value}, {<<"placeholder">>, PlaceHolder}])).
-define(INPUTT(Type, Name, Value),
?INPUT(Type, Name, (translate:translate(Lang, Value)))).
@@ -95,16 +100,27 @@
-define(XRES(Text),
?XAC(<<"p">>, [{<<"class">>, <<"result">>}], Text)).
-define(DIVRES(Elements),
?XAE(<<"div">>, [{<<"class">>, <<"result">>}], Elements)).
%% Guide Link
-define(XREST(Text), ?XRES((translate:translate(Lang, Text)))).
-define(GL(Ref, Title),
?XAE(<<"div">>, [{<<"class">>, <<"guidelink">>}],
[?XAE(<<"a">>,
[{<<"href">>, <<"https://docs.ejabberd.im/admin/configuration/", Ref/binary>>},
[{<<"href">>, <<"https://docs.ejabberd.im/", Ref/binary>>},
{<<"target">>, <<"_blank">>}],
[?C(<<"docs: ", Title/binary>>)])])).
%% h1 with a Guide Link
-define(H1GL(Name, Ref, Title),
[?XC(<<"h1">>, Name), ?GL(Ref, Title)]).
-define(H1GLraw(Name, 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(""))])])).
-2
View File
@@ -62,7 +62,5 @@
_ -> 'Elixir.Logger':bare_log(error, io_lib:format(Format, Args), [?MODULE])
end).
-type re_mp() :: {re_pattern, _, _, _, _}. % Copied from re.erl
%% Uncomment if you want to debug p1_fsm/gen_fsm
%%-define(DBGFSM, true).
+1 -1
View File
@@ -41,7 +41,7 @@ defmodule Ejabberd.Config.Attr do
"""
@spec validate([attr]) :: [{:ok, attr}] | [{:error, attr, atom()}]
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 """
Returns the type of an attribute, given its name.
+2 -5
View File
@@ -105,11 +105,8 @@ defmodule Ejabberd.Config do
Code.eval_file(file_path) |> extract_and_store_module_name()
# Getting start/0 config
Ejabberd.Config.Store.get(:module_name)
|> case do
nil -> IO.puts "[ ERR ] Configuration module not found."
[module] -> call_start_func_and_store_data(module)
end
[module] = Ejabberd.Config.Store.get(:module_name)
call_start_func_and_store_data(module)
# Fetching git modules and install them
get_modules_parsed_in_order()
-1
View File
@@ -13,7 +13,6 @@ defmodule Ejabberd.Config.EjabberdHook do
@doc """
Register a hook to ejabberd.
"""
@spec start(EjabberdHook.t) :: none
def start(%EjabberdHook{hook: hook, opts: opts, fun: fun}) do
host = Keyword.get(opts, :host, :global)
priority = Keyword.get(opts, :priority, 50)
+5 -5
View File
@@ -7,12 +7,13 @@ defmodule Ejabberd.Config.EjabberdModule do
the already existing Elixir.Module.
"""
@type t :: %{module: atom, attrs: [Attr.t]}
defstruct [:module, :attrs]
alias Ejabberd.Config.EjabberdModule
alias Ejabberd.Config.Validation
alias Ejabberd.Config.Attr
@type t :: %{module: atom, attrs: [Attr.attr]}
defstruct [:module, :attrs]
@doc """
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,
then, it install them through :ext_mod.install/1
"""
@spec fetch_git_repos([EjabberdModule.t]) :: none()
def fetch_git_repos(modules) do
modules
|> Enum.filter(&is_git_module?/1)
+4 -4
View File
@@ -14,15 +14,12 @@ defmodule Ejabberd.Config.OptsFormatter do
Look at how Config.get_ejabberd_opts/0 is constructed for
more informations.
"""
@spec format_opts_for_ejabberd([{atom(), any()}]) :: list()
@spec format_opts_for_ejabberd(map) :: list()
def format_opts_for_ejabberd(opts) do
opts
|> format_attrs_for_ejabberd
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}),
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),
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
Enum.map mods, fn %EjabberdModule{module: mod, attrs: attrs} ->
{mod, attrs[:opts]}
+3 -3
View File
@@ -3,12 +3,12 @@ defmodule Ejabberd.Config.Validation do
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.Validator
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
@type mod_validation_result :: {:ok, EjabberdModule.t} | {:error, EjabberdModule.t, map}
@doc """
Given a module or a list of modules it runs validators on them
and returns {:ok, mod} or {:error, mod, errors}, for each
@@ -3,11 +3,12 @@ defmodule Ejabberd.Config.Validator.Attrs do
Validator module used to validate attributes.
"""
# TODO: Duplicated from validator.ex !!!
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
import Ejabberd.Config.ValidatorUtility
alias Ejabberd.Config.Attr
alias Ejabberd.Config.EjabberdModule
# TODO: Duplicated from validator.ex !!!
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
@doc """
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
def validate({modules, mod, errors}) do
errors = Enum.reduce mod.attrs, errors, fn(attr, err) ->
case Attr.validate(attr) do
{:ok, _attr} -> err
{:error, attr, cause} -> put_error(err, :attribute, {attr, cause})
case Attr.validate([attr]) do
[{:ok, _attr}] -> err
[{:error, attr, cause}] -> put_error(err, :attribute, {attr, cause})
end
end
@@ -4,6 +4,8 @@ defmodule Ejabberd.Config.Validator.Dependencies do
with the @dependency annotation.
"""
alias Ejabberd.Config.EjabberdModule
# TODO: Duplicated from validator.ex !!!
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
import Ejabberd.Config.ValidatorUtility
@@ -4,8 +4,6 @@ defmodule Ejabberd.Config.ValidatorUtility do
Imports utility functions for working with validation structures.
"""
alias Ejabberd.Config.EjabberdModule
@doc """
Inserts an error inside the errors collection, for the given key.
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
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
modules
|> Enum.map(&Map.get(&1, :module))
+1 -1
View File
@@ -7,7 +7,7 @@ defmodule Ejabberd.ConfigUtil do
@doc """
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
is_elixir_config(to_string(filename))
end
+192 -301
View File
File diff suppressed because it is too large Load Diff
+51 -19
View File
@@ -16,6 +16,7 @@ defmodule Ejabberd.MixProject do
aliases: [test: "test --no-start"],
start_permanent: Mix.env() == :prod,
language: :erlang,
dialyzer: dialyzer(),
releases: releases(),
package: package(),
docs: docs(),
@@ -43,15 +44,26 @@ defmodule Ejabberd.MixProject do
def application do
[mod: {:ejabberd_app, []},
applications: [:idna, :inets, :kernel, :sasl, :ssl, :stdlib, :mix,
:base64url, :fast_tls, :fast_xml, :fast_yaml, :jiffy, :jose,
:p1_utils, :stringprep, :syntax_tools, :yconf]
:fast_tls, :fast_xml, :fast_yaml, :jose,
:p1_utils, :stringprep, :syntax_tools, :yconf, :xmpp]
++ cond_apps(),
included_applications: [:mnesia, :os_mon,
:cache_tab, :eimp, :mqtree, :p1_acme,
:p1_oauth2, :pkix, :xmpp]
:p1_oauth2, :pkix]
++ cond_included_apps()]
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
if :erlang.system_info(:otp_release) > ver do
okResult
@@ -68,6 +80,20 @@ defmodule Ejabberd.MixProject do
end
end
defp if_type_exported(module, typeDef, okResult) do
try do
{:ok, concrete} = :dialyzer_utils.get_core_from_beam(:code.which(module))
{:ok, types} = :dialyzer_utils.get_record_and_type_info(concrete)
if Map.has_key?(types, typeDef) do
okResult
else
[]
end
rescue
_ -> []
end
end
defp erlc_options do
# Use our own includes + includes from all dependencies
includes = ["include", deps_include()]
@@ -85,7 +111,10 @@ defmodule Ejabberd.MixProject do
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, :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_type_exported(:odbc, {:opaque, :connection_reference, 0}, [{:d, :ODBC_HAS_TYPES}])
defines = for {:d, value} <- result, do: {:d, value}
result ++ [{:d, :ALL_DEFS, defines}]
end
@@ -102,23 +131,21 @@ defmodule Ejabberd.MixProject do
end
defp deps do
[{:base64url, "~> 1.0"},
{:cache_tab, "~> 1.0"},
[{:cache_tab, "~> 1.0"},
{:dialyxir, "~> 1.2", only: [:test], runtime: false},
{:eimp, "~> 1.0"},
{:ex_doc, "~> 0.31", only: [:dev, :edoc], runtime: false},
{:fast_tls, ">= 1.1.18"},
{:fast_xml, ">= 1.1.51"},
{:fast_yaml, "~> 1.0"},
{:idna, "~> 6.0"},
{:jiffy, "~> 1.1.1"},
{:jose, "~> 1.11.5"},
{:mqtree, "~> 1.0"},
{:p1_acme, "~> 1.0"},
{:p1_oauth2, "~> 0.6"},
{:p1_utils, "~> 1.0"},
{:pkix, "~> 1.0"},
{:stringprep, ">= 1.0.26"},
{:xmpp, ">= 1.8.0"},
{:xmpp, ">= 1.8.2"},
{:yconf, "~> 1.0"}]
++ cond_deps()
end
@@ -138,16 +165,18 @@ defmodule Ejabberd.MixProject do
for {:true, dep} <- [{config(:pam), {:epam, "~> 1.0"}},
{Mix.env() == :translations,
{:ejabberd_po, git: "https://github.com/processone/ejabberd-po.git"}},
{Mix.env() == :dev,
{:exsync, "~> 0.2"}},
{config(:redis), {:eredis, "~> 1.2.0"}},
{config(:sip), {:esip, "~> 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"}},
{config(:lua) and if_version_below(~c"27", true),
{:luerl, "~> 1.1.1"}},
{config(:lua) and if_version_above(~c"26", true),
{:luerl, git: "https://github.com/processone/luerl", branch: "otp27"}},
{config(:mysql), {:p1_mysql, ">= 1.0.23" }},
{config(:pgsql), {:p1_pgsql, "~> 1.1"}},
{config(:lua), {:luerl, "~> 1.2.0"}},
{config(:mysql), {:p1_mysql, ">= 1.0.24"}},
{config(:pgsql), {:p1_pgsql, ">= 1.1.26"}},
{config(:sqlite), {:sqlite3, "~> 1.1"}},
{config(:stun), {:stun, "~> 1.0"}}], do:
dep
@@ -155,6 +184,8 @@ defmodule Ejabberd.MixProject do
defp cond_apps do
for {:true, app} <- [{config(:stun), :stun},
{Map.has_key?(System.get_env(), "RELIVE"), :exsync},
{if_version_below(~c"27", true), :jiffy},
{config(:tools), :observer}], do:
app
end
@@ -164,6 +195,7 @@ defmodule Ejabberd.MixProject do
{config(:lua), :luerl},
{config(:redis), :eredis},
{Mix.env() == :edoc, :ex_doc},
{Mix.env() == :test, :dialyxir},
{if_version_below(~c"22", true), :lager},
{config(:mysql), :p1_mysql},
{config(:sip), :esip},
@@ -180,9 +212,9 @@ defmodule Ejabberd.MixProject do
"mix.exs", "rebar.config", "rebar.config.script", "vars.config"],
maintainers: ["ProcessOne"],
licenses: ["GPL-2.0-or-later"],
links: %{"Site" => "https://www.ejabberd.im",
"Documentation" => "http://docs.ejabberd.im",
"Source" => "https://github.com/processone/ejabberd",
links: %{"ejabberd.im" => "https://www.ejabberd.im",
"ejabberd Docs" => "http://docs.ejabberd.im",
"GitHub" => "https://github.com/processone/ejabberd",
"ProcessOne" => "http://www.process-one.net/"}]
end
@@ -264,7 +296,7 @@ defmodule Ejabberd.MixProject do
config_dir: config(:config_dir),
logs_dir: config(:logs_dir),
spool_dir: config(:spool_dir),
vsn: config(:vsn),
vsn: version(),
iexpath: config(:iexpath),
erl: config(:erl),
epmd: config(:epmd),
+31 -27
View File
@@ -1,35 +1,39 @@
%{
"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.31", "e4097b50a6f373ab1e0a5f01bab0bef6626771a4cd6c93404ed6d54810e11fbc", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "8582b60a4a09b247ef86355ba9e07fce9e11edc0345a775c9171f971c72b6351"},
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
"eimp": {:hex, :eimp, "1.0.22", "fa9b376ef0b50e8455db15c7c11dea4522c6902e04412288aab436d26335f6eb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "b3b9ffb1d9a5f4a2ba88ac418a819164932d9a9d3a2fc3d32ca338ce855c4392"},
"eimp": {:hex, :eimp, "1.0.23", "aaf32efab061143403dadbaa63e699ef8e81702fbfa96fd436d5e9be4d6a8d3a", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "907c780023cb2893e4fc4bdbe6a4f02c355913862ac67f0ecc26605e816b628a"},
"epam": {:hex, :epam, "1.0.14", "aa0b85d27f4ef3a756ae995179df952a0721237e83c6b79d644347b75016681a", [:rebar3], [], "hexpm", "2f3449e72885a72a6c2a843f561add0fc2f70d7a21f61456930a547473d4d989"},
"eredis": {:hex, :eredis, "1.2.0", "0b8e9cfc2c00fa1374cd107ea63b49be08d933df2cf175e6a89b73dd9c380de4", [:rebar3], [], "hexpm", "d9b5abef2c2c8aba8f32aa018203e0b3dc8b1157773b254ab1d4c2002317f1e1"},
"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"},
"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"},
"ezlib": {:hex, :ezlib, "1.0.12", "ffe906ba10d03aaee7977e1e0e81d9ffc3bb8b47fb9cd8e2e453507a2e56221f", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "30e94355fb42260aab6e12582cb0c56bf233515e655c8aeaf48760e7561e4ebb"},
"fast_tls": {:hex, :fast_tls, "1.1.19", "f52731a4b35259fa06cf23e2a0732920ad9efce7c3d68377f129a474998747bb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "db34322c8782d4c5139ccb80709d8ec8c38089b44262edd0c2f660ac495bd389"},
"fast_xml": {:hex, :fast_xml, "1.1.51", "a7f8c6942591632309099386d5c339c89997ac2bbdd1216f6c196dee6d7828a9", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "7fce41b7d1a4ba438a2d7a088dabe74a3ca0739f1af2abcb77e62daf43e0409a"},
"fast_yaml": {:hex, :fast_yaml, "1.0.36", "65413a34a570fd4e205a460ba602e4ee7a682f35c22d2e1c839025dbf515105c", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "1abe8f758fc2a86b08edff80bbc687cfd41ebc1412cfec0ef4a0acfcd032052f"},
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"},
"jiffy": {:hex, :jiffy, "1.1.1", "aca10f47aa91697bf24ab9582c74e00e8e95474c7ef9f76d4f1a338d0f5de21b", [:rebar3], [], "hexpm", "62e1f0581c3c19c33a725c781dfa88410d8bff1bbafc3885a2552286b4785c4c"},
"jose": {:hex, :jose, "1.11.5", "3bc2d75ffa5e2c941ca93e5696b54978323191988eb8d225c2e663ddfefd515e", [:mix, :rebar3], [], "hexpm", "dcd3b215bafe02ea7c5b23dafd3eb8062a5cd8f2d904fd9caa323d37034ab384"},
"luerl": {:hex, :luerl, "1.1.1", "083518e437586f6631150d39c4bff242ed2ec80cb14a3299a0c2628f07a2ff7f", [:rebar3], [], "hexpm", "e17ef246a7ff876ec90e68792a39708979416004d4eacfe8a7643206b9470773"},
"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"},
"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"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.4", "29563475afa9b8a2add1b7a9c8fb68d06ca7737648f28398e04461f008b69521", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f4ed47ecda66de70dd817698a703f8816daa91272e7e45812469498614ae8b29"},
"mqtree": {:hex, :mqtree, "1.0.16", "f8f8b4971e4ca94313ba9bcaaa1aa1077daaba5e3fd3468ffb491420a4cc3593", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "c87d1c95575db65af29b795c9daa3bed43f5c1bf84072a74469659bcf53594eb"},
"erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
"esip": {:hex, :esip, "1.0.53", "482786a79d8f5b0aefc60ca68b8c6c7f074f6ede2653705e4206c6779edc5a56", [:rebar3], [{:fast_tls, "1.1.20", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.2.13", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "a9a1bd5ea52b0e2d1b1d1fec5fb7f0301e90610db1ecfeb205a18cc4e1cb3fc7"},
"ex_doc": {:hex, :ex_doc, "0.34.1", "9751a0419bc15bc7580c73fde506b17b07f6402a1e5243be9e0f05a68c723368", [:mix], [{:earmark_parser, "~> 1.4.39", [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", "d441f1a86a235f59088978eff870de2e815e290e44a8bd976fe5d64470a4c9d2"},
"exsync": {:hex, :exsync, "0.4.1", "0a14fe4bfcb80a509d8a0856be3dd070fffe619b9ba90fec13c58b316c176594", [:mix], [{:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "cefb22aa805ec97ffc5b75a4e1dc54bcaf781e8b32564bf74abbe5803d1b5178"},
"ezlib": {:hex, :ezlib, "1.0.13", "3c7f62862850a241159c10b218ecf580bce54d0890601b65144dacc2633be2b0", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "9ee62ab3f8ed55a0fd11a9569fcb8e458683f95575417272192b069f092abfbb"},
"fast_tls": {:hex, :fast_tls, "1.1.20", "d6f12d9ae4fe57e880b144b912e735af89343a8463d39b7eb4be3f6ca6163879", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "d09a12472a56a34c5eecaaed33ea283f00fcdf9dc2e8282ecbaae827f13fc21b"},
"fast_xml": {:hex, :fast_xml, "1.1.52", "0289daafbf1190b0e53b444d4885cccf41e4b05768d4b3acc76dd8d143668e10", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "795192390e06d2b65016a6990bbfa5727f4a26d2914808b1c3c9a32eedcd1bfd"},
"fast_yaml": {:hex, :fast_yaml, "1.0.37", "f71d472fbf787ccd161b914d1eb486116a0f4f2e835337a378fbd31b59d2e74b", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "8de868721bf7e2172414f7d3148ede0f3c922b496455cd625dd5c4429515a769"},
"file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jiffy": {:hex, :jiffy, "1.1.2", "a9b6c9a7ec268e7cf493d028f0a4c9144f59ccb878b1afe42841597800840a1b", [:rebar3], [], "hexpm", "bb61bc42a720bbd33cb09a410e48bb79a61012c74cb8b3e75f26d988485cf381"},
"jose": {:hex, :jose, "1.11.10", "a903f5227417bd2a08c8a00a0cbcc458118be84480955e8d251297a425723f83", [:mix, :rebar3], [], "hexpm", "0d6cd36ff8ba174db29148fc112b5842186b68a90ce9fc2b3ec3afe76593e614"},
"luerl": {:hex, :luerl, "1.2.0", "60f05f4240f0e7c148ddb79b67b8ff972734aad237aa74c83d0748b8214c8ef0", [:rebar3], [], "hexpm", "9cafd4f6094ff0f5a9d278fd81d60d3e026c820bdfb6cacd4b1bd909f21b525d"},
"makeup": {:hex, :makeup, "1.1.2", "9ba8837913bdf757787e71c1581c21f9d2455f4dd04cfca785c70bbfff1a76a3", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cce1566b81fbcbd21eca8ffe808f33b221f9eee2cbc7a1706fc3da9ff18e6cac"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [: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", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"},
"makeup_erlang": {:hex, :makeup_erlang, "1.0.0", "6f0eff9c9c489f26b69b61440bf1b238d95badae49adac77973cbacae87e3c2e", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "ea7a9307de9d1548d2a72d299058d1fd2339e3d398560a0e46c27dab4891e4d2"},
"mqtree": {:hex, :mqtree, "1.0.17", "82f54b8f2d22b4445db1d6cccb7fe9ead049d61410c29e32475f3ceb3ee62a89", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "5fe8b7cf8fbc4783d0fceb94654ac2bbf3242a58cd0397d249ded8ae021be2a3"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
"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"},
"p1_mysql": {:hex, :p1_mysql, "1.0.23", "9b4e98f1f01e2cc4a759f611f0f015365e65c5f61ea453aa4bdfe950d20a5f11", [:rebar3], [], "hexpm", "9cef98265fb287374e7b64bf4022c4df5ec66196ca31cf4bed73c67c45bf824e"},
"p1_acme": {:hex, :p1_acme, "1.0.23", "791aef0f79dc7f768b228808250c349fa9ce585cd8779da50ca93106eb3394d0", [: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.15", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm", "8ce196f26e3d22ea10b7809122950465878c127f80767e325207aed7e8d0dd59"},
"p1_mysql": {:hex, :p1_mysql, "1.0.24", "0ed1e098c5a4525032448c65a2715f30980aae725615a4d255fd25f26bb22507", [:rebar3], [], "hexpm", "f058865f64257f507a2c6a5aff369b1375dbcb30b3d4258dad4f1b3eaffb655f"},
"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_utils": {:hex, :p1_utils, "1.0.25", "2d39b5015a567bbd2cc7033eeb93a7c60d8c84efe1ef69a3473faa07fa268187", [:rebar3], [], "hexpm", "9219214428f2c6e5d3187ff8eb9a8783695c2427420be9a259840e07ada32847"},
"pkix": {:hex, :pkix, "1.0.9", "eb20b2715d71a23b4fe7e754dae9281a964b51113d0bba8adf9da72bf9d65ac2", [:rebar3], [], "hexpm", "daab2c09cdd4eda05c9b45a5c00e994a1a5f27634929e1377e2e59b707103e3a"},
"sqlite3": {:hex, :sqlite3, "1.1.14", "f9ea0cff8540865fdfdb7e24eef34dc46677364b1c070896e99b5bf08c8a7fd7", [:rebar3], [], "hexpm", "85054b6ca297343c159ed6794a473ff2c8eeabd854b6fe02f711c0bfd373ce86"},
"stringprep": {:hex, :stringprep, "1.0.29", "02f23e8c3a219a3dfe40a22e908bece3a2f68af0ff599ea8a7b714ecb21e62ee", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "928eba304c3006eb1512110ebd7b87db163b00859a09375a1e4466152c6c462a"},
"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"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"},
"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"},
"yconf": {:hex, :yconf, "1.0.15", "e22998b3d7728270bdd06162a9515bd142b14fae8927cbdbd3ef639c32aa6f7a", [:rebar3], [{:fast_yaml, "1.0.36", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm", "7ff2ab24d3c9833842716b9aaaa01a8f96641a7695cbb701b03445c4def01117"},
"p1_pgsql": {:hex, :p1_pgsql, "1.1.26", "d3c3748c3638a1d7db5644e4fc63a6da7614b3009e172ef92a01d0217c3bec65", [:rebar3], [{:xmpp, "~> 1.8.0", [hex: :xmpp, repo: "hexpm", optional: false]}], "hexpm", "85f230db530333106b8a1f9e5d5af032e6c3dd23b432e03d68e9d29013a6dcfc"},
"p1_utils": {:hex, :p1_utils, "1.0.26", "67b0c4ac9fa3ba3ef563b31aa111b0a004439a37fac85e027f1c3617e1c7ec6c", [:rebar3], [], "hexpm", "d0379e8c1156b98bd64f8129c1de022fcca4f2fdb7486ce73bf0ed2c3376b04c"},
"pkix": {:hex, :pkix, "1.0.10", "d3bfadf7b7cfe2a3636f1b256c9cce5f646a07ce31e57ee527668502850765a0", [:rebar3], [], "hexpm", "e02164f83094cb124c41b1ab28988a615d54b9adc38575f00f19a597a3ac5d0e"},
"sqlite3": {:hex, :sqlite3, "1.1.15", "e819defd280145c328457d7af897d2e45e8e5270e18812ee30b607c99cdd21af", [:rebar3], [], "hexpm", "3c0ba4e13322c2ad49de4e2ddd28311366adde54beae8dba9d9e3888f69d2857"},
"stringprep": {:hex, :stringprep, "1.0.30", "46cf0ff631b3e7328f61f20b454d59428d87738f25d709798b5dcbb9b83c23f1", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "f6fc9b3384a03877830f89b2f38580caf3f4a27448a4a333d6a8c3975c220b9a"},
"stun": {:hex, :stun, "1.2.13", "c3e855f10f6b0c3ac150bce3d6c96c04a85207a3a5c7a7207876d8b36db2b0a4", [:rebar3], [{:fast_tls, "1.1.20", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "9cf4191491a60573ed6197e636530af1d25c9b064845aabed0c02f780d33ea3f"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
"xmpp": {:hex, :xmpp, "1.8.2", "7c26fae7ca83b307bab99624595dce706d427a17eed9c6305980550f8120a3a3", [: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", [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", "53a9f85ad44103a358dc173225bc96d08076d4e78506f87d838337b2fa3b381f"},
"yconf": {:hex, :yconf, "1.0.16", "d59521d66ff89f219411b6e9277cd6feec7cc6fce11554e67de02a8d0a470479", [:rebar3], [{:fast_yaml, "1.0.37", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm", "e947813273f38711c7b2e5a8e4acc9a51c7bbe854f744a345f60300b38586c89"},
}
+45 -12
View File
@@ -131,16 +131,24 @@ ul li #navhead a, ul li #navheadsub a, ul li #navheadsubsub a {
background: #424a55;
color: #fff;
}
#navitemlogin {
padding: 0.5em;
border-top: 0.2em solid #cae7e4;
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 {
padding: 2px;
margin-bottom: -1px;
}
thead tr td {
background: #3eaffa;
color: #fff;
}
thead tr td a {
color: #fff;
background: #cae7e4;
}
td.copy {
text-align: center;
@@ -227,24 +235,32 @@ h3 {
padding-top: 25px;
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,
p[dir=ltr] {
display: inline-block;
float: right;
margin: 0;
margin-top: 1em;
margin-right: 1em;
}
div.guidelink a,
p[dir=ltr] a {
display: inline-block;
border-radius: 3px;
padding: 3px;
background: #3eaffa;
font-size: 0.75em;
color: #fff;
border-radius: 2px;
}
table {
margin-top: 1em;
@@ -265,7 +281,7 @@ input,
select {
font-size: 1em;
}
p.result {
.result {
border: 1px;
border-style: dashed;
border-color: #FE8A02;
@@ -284,3 +300,20 @@ p.result {
color: #cb2431;
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;
}
+3 -1
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.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.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.rcoe {color: green;}
div.rcod {color: red;}
div.rcoe:after {content: ": v";}
div.rcod:after {content: ": x";}
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;}
.w3c {position: absolute; right: 10px; width: 60%; text-align: right; font-family: monospace; letter-spacing: 1px;}
+1
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

+11
View File
@@ -6,3 +6,14 @@ function sh(e) {
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
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){}});
-1
View File
@@ -8,4 +8,3 @@
{"# participants","# المشاركين"}.
{"A description of the node","وصف العقدة"}.
{"A Web Page","موقع الكتروني"}.
{"'Displayed groups' not added (they do not exist!): ","لم تتم إضافة \"المجموعات المعروضة\" (فهي غير موجودة!): "}.
-70
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","Профилът не съществува"}.
{"Action on user","Действие върху потребител"}.
{"Add a hat to a user","Добави шапка към потребител"}.
{"Add Jabber ID","Добави Jabber ID"}.
{"Add New","Добави нов"}.
{"Add User","Добави потребител"}.
{"Administration of ","Администриране на "}.
{"Administration","Администриране"}.
@@ -48,7 +46,6 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Всеки, който има абонамент за присъствие на двете или от: може да се абонира и да извлича елементи"}.
{"Anyone with Voice","Всеки, с възможност за гласово обаждане"}.
{"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","Април"}.
{"Attribute 'channel' is required for this request","Атрибутът 'канал' е задължителен за тази заявка"}.
{"Attribute 'id' is mandatory for MIX messages","Атрибутът 'id' е задължителен за MIX съобщения"}.
@@ -93,30 +90,20 @@
{"Conference room does not exist","Конферентната стая не съществува"}.
{"Configuration of room ~s","Конфигурация на стая ~s"}.
{"Configuration","Конфигурация"}.
{"Connected Resources:","Свързани ресурси:"}.
{"Contact Addresses (normally, room owner or owners)","Адреси за контакт (обикновено собственик или собственици на стая)"}.
{"Contrib Modules","Сътруднически модули"}.
{"Country","Държава"}.
{"CPU Time:","Процесорно време:"}.
{"Current Discussion Topic","Текуща тема на дискусита"}.
{"Database failure","Грешка в базата данни"}.
{"Database Tables at ~p","Таблици на базата данни при ~p"}.
{"Database Tables Configuration at ","Конфигурация на таблиците в базата данни при "}.
{"Database","База данни"}.
{"December","Декември"}.
{"Default users as participants","Потребители по подразбиране като участници"}.
{"Delete content","Изтрий съдържанието"}.
{"Delete message of the day on all hosts","Изтрий съобщението на деня от всички нодове"}.
{"Delete message of the day","Изтрий съобщението на деня"}.
{"Delete Selected","Изтрий избраните"}.
{"Delete table","Изтрий таблицата"}.
{"Delete User","Изтрий потребителя"}.
{"Deliver event notifications","Достави известията за събития"}.
{"Deliver payloads with event notifications","Достави прикачените обекти с известията за събития"}.
{"Description:","Описание:"}.
{"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 сървъра."}.
{"Dump Backup to Text File at ","Архивиране в текстов файл при "}.
{"Dump to Text File","Архивиране в текстов файл"}.
@@ -127,7 +114,6 @@
{"ejabberd vCard module","ejabberd vCard модул"}.
{"ejabberd Web Admin","Уеб администрация на ejabberd"}.
{"ejabberd","ejabberd"}.
{"Elements","Елементи"}.
{"Email Address","Имейл адрес"}.
{"Email","Илейл"}.
{"Enable hats","Активиране на шапки"}.
@@ -142,7 +128,6 @@
{"Enter path to text file","Въведете пътя към текстовия файл"}.
{"Enter the text you see","Въведете текста, който виждате"}.
{"Erlang XMPP Server","Erlang XMPP сървър"}.
{"Error","Грешка"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Изключи CAPTCHA предизвикателство за следните Jabber ID-та"}.
{"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):"}.
@@ -161,7 +146,6 @@
{"Fill in the form to search for any matching XMPP User","Попълнете формата, за да търсите съвпадащ XMPP потребител"}.
{"Friday","Петък"}.
{"From ~ts","От ~ts"}.
{"From","От"}.
{"Full List of Room Admins","Пълен списък на администраторите на стаята"}.
{"Full List of Room Owners","Пълен списък на собствениците на стаята"}.
{"Full Name","Пълно име"}.
@@ -171,18 +155,13 @@
{"Get Number of Registered Users","Брой на регистрираните потребители"}.
{"Get Pending","Виж чакащи"}.
{"Get User Last Login Time","Покажи времето, когато потребителят е влязъл за последно"}.
{"Get User Password","Покажи паролата на потребителя"}.
{"Get User Statistics","Покажи статистика за потребителя"}.
{"Given Name","Име"}.
{"Grant voice to this person?","Предоставяне на глас за потребителя?"}.
{"Groups that will be displayed to the members","Групи, които ще се показват на членовете"}.
{"Groups","Групи"}.
{"Group","Група"}.
{"Hat title","Заглавие на шапката"}.
{"Hat URI","URI адрес за шапка"}.
{"Hats limit exceeded","Превишен е лимитът за шапка"}.
{"Host unknown","Неизвестен хост"}.
{"Host","Хост"}.
{"HTTP File Upload","Качване на файл по HTTP"}.
{"Idle connection","Неактивна връзка"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Ако не виждате CAPTCHA изображението, посетете уеб страницата."}.
@@ -196,7 +175,6 @@
{"Import Users From jabberd14 Spool Files","Импорт на потребители от jabberd14 Spool файлове"}.
{"Improper domain part of 'from' attribute","Неправилна част за домейн в атрибута 'from'"}.
{"Improper message type","Неправилен тип съобщение"}.
{"Incoming s2s Connections:","Входящи s2s връзки:"}.
{"Incorrect CAPTCHA submit","Неправилно CAPTCHA въвеждане"}.
{"Incorrect data form","Неправилна форма на данните"}.
{"Incorrect password","Грешна парола"}.
@@ -224,18 +202,15 @@
{"July","Юли"}.
{"June","Юни"}.
{"Just created","Току що създаден"}.
{"Label:","Етикет:"}.
{"Last Activity","Последна активност"}.
{"Last login","Последно влизане"}.
{"Last message","Последно съобщение"}.
{"Last month","Миналия месец"}.
{"Last year","Миналата година"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Най-малко значимите битове SHA-256 хеш на текст трябва да са равни на шестнайсетичния етикет"}.
{"List of rooms","Списък на стаите"}.
{"List of users with hats","Списък на потребителите с шапки"}.
{"List users with hats","Избройте потребителите с шапки"}.
{"Logging","Регистриране на събития"}.
{"Low level update script","Скрипт за актуализация на ниско ниво"}.
{"Make participants list public","Направи списъка с участниците публичен"}.
{"Make room CAPTCHA protected","Защити стаята с CAPTCHA"}.
{"Make room members-only","Направи стаята само за членове"}.
@@ -253,11 +228,8 @@
{"Maximum number of items to persist","Максимален брой елементи за запазване"}.
{"Maximum Number of Occupants","Максимален брой участници"}.
{"May","Май"}.
{"Members not added (inexistent vhost!): ","Членовете не са добавени (несъществуващ vhost!): "}.
{"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 няма автоматичен начин за възстановяване на паролата в случай, че я забравите."}.
{"Memory","Памет"}.
{"Mere Availability in XMPP (No Show Value)","Наличност в XMPP (Не показвай стойност)"}.
{"Message body","Текст на съобщението"}.
{"Message not found in forwarded payload","Съобщението не е намерено в препратения прикачен елемент"}.
@@ -269,15 +241,12 @@
{"Moderator privileges required","Изискват се права на модератор"}.
{"Moderators Only","Само модератори"}.
{"Moderator","Модератор"}.
{"Modified modules","Модифицирани модули"}.
{"Module failed to handle the query","Модулът не успя да обработи заявката"}.
{"Monday","Понеделник"}.
{"Multicast","Мултикаст"}.
{"Multiple <item/> elements are not allowed by RFC6121","Повече от един <item/> елемента не се разрешават от RFC6121"}.
{"Multi-User Chat","Групов чат (MUC)"}.
{"Name in the rosters where this group will be displayed","Име в списъците с контакти, където ще се показва тази група"}.
{"Name","Име"}.
{"Name:","Име:"}.
{"Natural Language for Room Discussions","Език за дискусии в стаята"}.
{"Natural-Language Room Name","Име на стаята на предпочитания език"}.
{"Neither 'jid' nor 'nick' attribute found","Атрибутите 'jid' и 'nick' не са намерени"}.
@@ -342,14 +311,10 @@
{"Occupants are allowed to query others","Участниците могат да отправят заявки към други лица"}.
{"Occupants May Change the Subject","Участниците могат да променят темата"}.
{"October","Октомври"}.
{"Offline Messages","Офлайн съобщения"}.
{"Offline Messages:","Офлайн съобщения:"}.
{"OK","ДОБРЕ"}.
{"Old Password:","Стара парола:"}.
{"Online Users","Онлайн потребители"}.
{"Online Users:","Онлайн потребители:"}.
{"Online","Онлайн"}.
{"Only admins can see this","Само администратори могат да видят това"}.
{"Only collection node owners may associate leaf nodes with the collection","Само собственици на колекционни нодове имат право да свързват листови нодове към колекцията"}.
{"Only deliver notifications to available users","Доставяне на известия само до наличните потребители"}.
{"Only <enable/> or <disable/> tags are allowed","Само тагове <enable/> и <disable/> са разрешени"}.
@@ -369,10 +334,8 @@
{"Organization Unit","Отдел"}.
{"Other Modules Available:","Други налични модули:"}.
{"Outgoing s2s Connections","Изходящи s2s връзки"}.
{"Outgoing s2s Connections:","Изходящи s2s връзки:"}.
{"Owner privileges required","Изискват се привилегии на собственик"}.
{"Packet relay is denied by service policy","Предаването на пакети е отказано от политиката на услугата"}.
{"Packet","Пакет"}.
{"Participant ID","ID на участник"}.
{"Participant","Участник"}.
{"Password Verification","Проверка на паролата"}.
@@ -382,7 +345,6 @@
{"Path to Dir","Път към директория"}.
{"Path to File","Път до файл"}.
{"Payload semantic type information","Информация за семантичен тип полезен товар"}.
{"Pending","В очакване"}.
{"Period: ","Период: "}.
{"Persist items to storage","Запазване на елементите в хранилището"}.
{"Persistent","Постоянен"}.
@@ -415,21 +377,16 @@
{"Receive notification of new nodes only","Получаване на известия само за нови нодове"}.
{"Recipient is not in the conference room","Получателят не е в конферентната стая"}.
{"Register an XMPP account","Регистрирай XMPP акаунт"}.
{"Registered Users","Регистрирани потребители"}.
{"Registered Users:","Регистрирани потребители:"}.
{"Register","Регистрирай"}.
{"Remote copy","Отдалечено копие"}.
{"Remove a hat from a user","Премахни шапка от потребител"}.
{"Remove All Offline Messages","Премахни всички офлайн съобщения"}.
{"Remove User","Премахни потребител"}.
{"Remove","Премахни"}.
{"Replaced by new connection","Заменен от нова връзка"}.
{"Request has timed out","Времето за заявка изтече"}.
{"Request is ignored","Заявката е игнорирано"}.
{"Requested role","Заявена роля"}.
{"Resources","Ресурси"}.
{"Restart Service","Рестартирай услугата"}.
{"Restart","Рестартирай"}.
{"Restore Backup from File at ","Възстанови резервно копие от файл в "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Възстановяване на бинарно копие след следващото рестартиране на ejabberd (изисква по-малко памет):"}.
{"Restore binary backup immediately:","Възстанови незабавно двоично копие:"}.
@@ -445,20 +402,15 @@
{"Room terminates","Стаята се прекратява"}.
{"Room title","Заглавие на стаята"}.
{"Roster groups allowed to subscribe","Групи от списъци с контакти, на които е разрешено да се абонират"}.
{"Roster of ~ts","Списък с контакти на ~ts"}.
{"Roster size","Размер на списъка с контакти"}.
{"Roster:","Списък с контакти:"}.
{"RPC Call Error","Грешка при RPC повикване"}.
{"Running Nodes","Работещи нодове"}.
{"~s invites you to the room ~s","~s ви кани в стая ~s"}.
{"Saturday","Събота"}.
{"Script check","Проверка на скрипт"}.
{"Search from the date","Търси от дата"}.
{"Search Results for ","Резултати от търсенето за "}.
{"Search the text","Търси текста"}.
{"Search until the date","Търси до дата"}.
{"Search users in ","Търси потребители в "}.
{"Select All","Избери всички"}.
{"Send announcement to all online users on all hosts","Изпрати съобщение до всички онлайн потребители на всички хостове"}.
{"Send announcement to all online users","Изпрати съобщение до всички онлайн потребители"}.
{"Send announcement to all users on all hosts","Изпрати съобщение до всички потребители на всички хостове"}.
@@ -482,23 +434,17 @@
{"Stanza id is not valid","Невалидно ID на строфата"}.
{"Stanza ID","ID на строфа"}.
{"Statically specify a replyto of the node owner(s)","Статично задаване на replyto на собственика(ците) на нода"}.
{"Statistics of ~p","Статистики на ~p"}.
{"Statistics","Статистики"}.
{"Stopped Nodes","Спрени нодове"}.
{"Stop","Спри"}.
{"Storage Type","Тип хранилище"}.
{"Store binary backup:","Запази бинарен архив:"}.
{"Store plain text backup:","Запази архив като обикновен текст:"}.
{"Stream management is already enabled","Управлението на потока вече е активирано"}.
{"Stream management is not enabled","Управлението на потока не е активирано"}.
{"Subject","Тема"}.
{"Submitted","Изпратено"}.
{"Submit","Изпрати"}.
{"Subscriber Address","Адрес на абоната"}.
{"Subscribers may publish","Абонатите могат да публикуват"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Заявките за абонамент трябва да бъдат одобрени и само абонатите могат да извличат елементи"}.
{"Subscriptions are not allowed","Абонаментите не са разрешени"}.
{"Subscription","Абонамент"}.
{"Sunday","Неделя"}.
{"Text associated with a picture","Текст, свързан със снимка"}.
{"Text associated with a sound","Текст, свързан със звук"}.
@@ -560,7 +506,6 @@
{"Thursday","Четвъртък"}.
{"Time delay","Закъснение"}.
{"Timed out waiting for stream resumption","Времето за изчакване за възобновяване на потока изтече"}.
{"Time","Час"}.
{"To register, visit ~s","За да се регистрирате, посетете ~s"}.
{"To ~ts","До ~ts"}.
{"Token TTL","Токен TTL"}.
@@ -573,13 +518,7 @@
{"Too many receiver fields were specified","Посочени са твърде много полета за получател"}.
{"Too many unacked stanzas","Твърде много непотвърдени строфи"}.
{"Too many users in this conference","Твърде много потребители в тази конференция"}.
{"Total rooms","Общо стаи"}.
{"To","До"}.
{"Traffic rate limit is exceeded","Лимитът за трафик е надвишен"}.
{"Transactions Aborted:","Прекратени транзакции:"}.
{"Transactions Committed:","Извършени транзакции:"}.
{"Transactions Logged:","Регистрирани транзакции:"}.
{"Transactions Restarted:","Рестартирани транзакции:"}.
{"~ts's Offline Messages Queue","Офлайн съобщения на ~ts"}.
{"Tuesday","Вторник"}.
{"Unable to generate a CAPTCHA","Не може да се генерира CAPTCHA"}.
@@ -590,19 +529,13 @@
{"Uninstall","Деинсталирай"}.
{"Unregister an XMPP account","Дерегистрирай XMPP профил"}.
{"Unregister","Дерегистрирай"}.
{"Unselect All","Размаркирай всички"}.
{"Unsupported <index/> element","Неподдържан елемент <index/>"}.
{"Unsupported version","Неподдържана версия"}.
{"Update message of the day (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","Актуализирай спецификациите"}.
{"Update","Актуализирай"}.
{"Upgrade","Обнови"}.
{"Uptime:","Време на работа:"}.
{"URL for Archived Discussion Logs","URL адрес за дневници на архивирани дискусии"}.
{"User already exists","Потребителят вече съществува"}.
{"User (jid)","Потребител (jid)"}.
@@ -617,15 +550,12 @@
{"Users Last Activity","Последна активност на потребителите"}.
{"Users","Потребители"}.
{"User","Потребител"}.
{"Validate","Валидирай"}.
{"Value 'get' of 'type' attribute is not allowed","Стойността 'get' на атрибут 'type' не е разрешена"}.
{"Value of '~s' should be boolean","Стойността на '~s' трябва да е булева"}.
{"Value of '~s' should be datetime string","Стойността на '~s' трябва да бъде низ за дата и час"}.
{"Value of '~s' should be integer","Стойността на '~s' трябва да бъде цяло число"}.
{"Value 'set' of 'type' attribute is not allowed","Стойността 'set' на атрибут 'type' не е разрешена"}.
{"View joined MIX channels","Вижте присъединените MIX канали"}.
{"View Queue","Вижте опашката"}.
{"View Roster","Преглед на списъка с контакти"}.
{"Virtual Hosts","Виртуални хостове"}.
{"Visitors are not allowed to change their nicknames in this room","Посетителите нямат право да променят псевдонимите си в тази стая"}.
{"Visitors are not allowed to send messages to all occupants","На посетителите не е разрешено да изпращат съобщения до всички участници"}.
-70
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","El compte no existeix"}.
{"Action on user","Acció en l'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"}.
{"Administration of ","Administració de "}.
{"Administration","Administració"}.
@@ -48,7 +46,6 @@
{"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","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"}.
{"April","Abril"}.
{"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"}.
@@ -93,30 +90,20 @@
{"Conference room does not exist","La sala de conferències no existeix"}.
{"Configuration of room ~s","Configuració de la sala ~s"}.
{"Configuration","Configuració"}.
{"Connected Resources:","Recursos connectats:"}.
{"Contact Addresses (normally, room owner or owners)","Adreces de contacte (normalment, propietaris de la sala)"}.
{"Contrib Modules","Mòduls Contrib"}.
{"Country","Pais"}.
{"CPU Time:","Temps de CPU:"}.
{"Current Discussion Topic","Assumpte de discussió actual"}.
{"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","Base de dades"}.
{"December","Decembre"}.
{"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","Eliminar el missatge del dia"}.
{"Delete Selected","Eliminar els seleccionats"}.
{"Delete table","Eliminar taula"}.
{"Delete User","Eliminar Usuari"}.
{"Deliver event notifications","Entrega de 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"}.
{"'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."}.
{"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"}.
@@ -132,7 +119,6 @@
{"ejabberd vCard module","ejabberd mòdul vCard"}.
{"ejabberd Web Admin","ejabberd Web d'administració"}.
{"ejabberd","ejabberd"}.
{"Elements","Elements"}.
{"Email Address","Adreça de correu"}.
{"Email","Correu"}.
{"Enable hats","Activar barrets"}.
@@ -147,7 +133,6 @@
{"Enter path to text file","Introdueix ruta al fitxer de text"}.
{"Enter the text you see","Introdueix el text que veus"}.
{"Erlang XMPP Server","Servidor Erlang XMPP"}.
{"Error","Error"}.
{"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 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 +151,6 @@
{"Fill in the form to search for any matching XMPP User","Emplena camps per a buscar usuaris XMPP que concorden"}.
{"Friday","Divendres"}.
{"From ~ts","De ~ts"}.
{"From","De"}.
{"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 Name","Nom complet"}.
@@ -176,13 +160,9 @@
{"Get Number of Registered Users","Obtenir Número d'Usuaris Registrats"}.
{"Get Pending","Obtenir Pendents"}.
{"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"}.
{"Given Name","Nom propi"}.
{"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 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ó"}.
@@ -192,7 +172,6 @@
{"Hat URI","URI del barret"}.
{"Hats limit exceeded","El límit de tràfic ha sigut sobrepassat"}.
{"Host unknown","Host desconegut"}.
{"Host","Host"}.
{"HTTP File Upload","HTTP File Upload"}.
{"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."}.
@@ -206,7 +185,6 @@
{"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 message type","Tipus de missatge incorrecte"}.
{"Incoming s2s Connections:","Connexions s2s d'entrada:"}.
{"Incorrect CAPTCHA submit","El CAPTCHA proporcionat és incorrecte"}.
{"Incorrect data form","El formulari de dades és incorrecte"}.
{"Incorrect password","Contrasenya incorrecta"}.
@@ -236,7 +214,6 @@
{"July","Juliol"}.
{"June","Juny"}.
{"Just created","Creació recent"}.
{"Label:","Etiqueta:"}.
{"Last Activity","Última activitat"}.
{"Last login","Últim login"}.
{"Last message","Últim missatge"}.
@@ -244,11 +221,9 @@
{"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"}.
{"leaves the room","surt de la sala"}.
{"List of rooms","Llista de sales"}.
{"List of users with hats","Llista d'usuaris amb barrets"}.
{"List users with hats","Llista d'usuaris amb barrets"}.
{"Logging","Registre"}.
{"Low level update script","Script d'actualització de baix nivell"}.
{"Make participants list public","Crear una llista de participants pública"}.
{"Make room CAPTCHA protected","Crear una sala protegida per CAPTCHA"}.
{"Make room members-only","Crear una sala només per a membres"}.
@@ -266,11 +241,8 @@
{"Maximum number of items to persist","Número màxim d'elements que persistixen"}.
{"Maximum Number of Occupants","Número màxim d'ocupants"}.
{"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"}.
{"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."}.
{"Memory","Memòria"}.
{"Mere Availability in XMPP (No Show Value)","Simplement disponibilitat a XMPP (sense valor de 'show')"}.
{"Message body","Missatge"}.
{"Message not found in forwarded payload","Missatge no trobat al contingut reenviat"}.
@@ -282,15 +254,12 @@
{"Moderator privileges required","Es necessita tenir privilegis de moderador"}.
{"Moderator","Moderador"}.
{"Moderators Only","Només moderadors"}.
{"Modified modules","Mòduls modificats"}.
{"Module failed to handle the query","El modul ha fallat al gestionar la petició"}.
{"Monday","Dilluns"}.
{"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","No estan permesos múltiples elements <item/> per RFC6121"}.
{"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:"}.
{"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"}.
{"Neither 'jid' nor 'nick' attribute found","No s'han trobat els atributs 'jid' ni 'nick'"}.
@@ -355,14 +324,10 @@
{"Occupants are allowed to query others","Els ocupants poden enviar peticions a altres"}.
{"Occupants May Change the Subject","Els ocupants poden canviar el Tema"}.
{"October","Octubre"}.
{"Offline Messages:","Missatges fora de línia:"}.
{"Offline Messages","Missatges offline"}.
{"OK","Acceptar"}.
{"Old Password:","Antiga contrasenya:"}.
{"Online Users","Usuaris conectats"}.
{"Online Users:","Usuaris en línia:"}.
{"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 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/>"}.
@@ -381,11 +346,9 @@
{"Organization Name","Nom de la organizació"}.
{"Organization Unit","Unitat de la organizació"}.
{"Other Modules Available:","Altres mòduls disponibles:"}.
{"Outgoing s2s Connections:","Connexions d'eixida s2s:"}.
{"Outgoing s2s Connections","Connexions s2s d'eixida"}.
{"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","Paquet"}.
{"Participant ID","ID del Participant"}.
{"Participant","Participant"}.
{"Password Verification","Verificació de la Contrasenya"}.
@@ -395,7 +358,6 @@
{"Path to Dir","Ruta al directori"}.
{"Path to File","Ruta al fitxer"}.
{"Payload semantic type information","Informació sobre el tipus semàntic de la carrega útil"}.
{"Pending","Pendent"}.
{"Period: ","Període: "}.
{"Persist items to storage","Persistir elements al guardar"}.
{"Persistent","Persistent"}.
@@ -429,21 +391,16 @@
{"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"}.
{"Register an XMPP account","Registrar un compte XMPP"}.
{"Registered Users","Usuaris registrats"}.
{"Registered Users:","Usuaris registrats:"}.
{"Register","Registrar"}.
{"Remote copy","Còpia remota"}.
{"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","Borrar"}.
{"Replaced by new connection","Reemplaçat per una nova connexió"}.
{"Request has timed out","La petició ha caducat"}.
{"Request is ignored","La petició ha sigut ignorada"}.
{"Requested role","Rol sol·licitat"}.
{"Resources","Recursos"}.
{"Restart Service","Reiniciar el Servei"}.
{"Restart","Reiniciar"}.
{"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 immediately:","Restaurar una còpia de seguretat binària ara mateix:"}.
@@ -459,20 +416,15 @@
{"Room terminates","La sala està terminant"}.
{"Room title","Títol de la sala"}.
{"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:","Llista de contactes:"}.
{"RPC Call Error","Error de cridada RPC"}.
{"Running Nodes","Nodes funcionant"}.
{"~s invites you to the room ~s","~s et convida a la sala ~s"}.
{"Saturday","Dissabte"}.
{"Script check","Comprovar script"}.
{"Search from the date","Buscar des de la data"}.
{"Search Results for ","Resultats de la búsqueda "}.
{"Search the text","Buscar el text"}.
{"Search until the date","Buscar fins la data"}.
{"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","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"}.
@@ -496,23 +448,17 @@
{"Stanza id is not valid","L'identificador del paquet no es vàlid"}.
{"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"}.
{"Statistics of ~p","Estadístiques de ~p"}.
{"Statistics","Estadístiques"}.
{"Stop","Detindre"}.
{"Stopped Nodes","Nodes parats"}.
{"Storage Type","Tipus d'emmagatzematge"}.
{"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:"}.
{"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"}.
{"Subject","Tema"}.
{"Submit","Enviar"}.
{"Submitted","Enviat"}.
{"Subscriber Address","Adreça del Subscriptor"}.
{"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"}.
{"Subscriptions are not allowed","Les subscripcions no estan permeses"}.
{"Subscription","Subscripció"}.
{"Sunday","Diumenge"}.
{"Text associated with a picture","Text associat amb una imatge"}.
{"Text associated with a sound","Text associat amb un so"}.
@@ -575,7 +521,6 @@
{"Thursday","Dijous"}.
{"Time delay","Temps de retard"}.
{"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 ~ts","A ~ts"}.
{"Token TTL","Token TTL"}.
@@ -588,13 +533,7 @@
{"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 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"}.
{"Transactions Aborted:","Transaccions Avortades:"}.
{"Transactions Committed:","Transaccions Realitzades:"}.
{"Transactions Logged:","Transaccions registrades:"}.
{"Transactions Restarted:","Transaccions reiniciades:"}.
{"~ts's Offline Messages Queue","~ts's cua de missatges offline"}.
{"Tuesday","Dimarts"}.
{"Unable to generate a CAPTCHA","No s'ha pogut generar un CAPTCHA"}.
@@ -605,19 +544,13 @@
{"Uninstall","Desinstal·lar"}.
{"Unregister an XMPP account","Anul·lar el registre d'un compte XMPP"}.
{"Unregister","Anul·lar el registre"}.
{"Unselect All","Deseleccionar tots"}.
{"Unsupported <index/> element","Element <index/> no soportat"}.
{"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 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","Actualitzar Especificacions"}.
{"Update","Actualitzar"}.
{"Upgrade","Actualitza"}.
{"Uptime:","Temps en marxa:"}.
{"URL for Archived Discussion Logs","URL dels Arxius de Discussions"}.
{"User already exists","El usuari ja existeix"}.
{"User JID","JID del usuari"}.
@@ -632,7 +565,6 @@
{"Users Last Activity","Última activitat d'usuari"}.
{"Users","Usuaris"}.
{"User","Usuari"}.
{"Validate","Validar"}.
{"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 datetime string","El valor de '~s' deuria ser una data"}.
@@ -640,8 +572,6 @@
{"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"}.
{"View joined MIX channels","Vore els canals MIX units"}.
{"View Queue","Vore Cua"}.
{"View Roster","Vore Llista de contactes"}.
{"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 send messages to all occupants","Els visitants no poden enviar missatges a tots els ocupants"}.
-55
View File
@@ -9,8 +9,6 @@
{"Accept","Přijmout"}.
{"Access denied by service policy","Přístup byl zamítnut nastavením služby"}.
{"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"}.
{"Administration of ","Administrace "}.
{"Administration","Administrace"}.
@@ -60,22 +58,17 @@
{"Conference room does not exist","Místnost neexistuje"}.
{"Configuration of room ~s","Konfigurace místnosti ~s"}.
{"Configuration","Konfigurace"}.
{"Connected Resources:","Připojené zdroje:"}.
{"Country","Země"}.
{"CPU Time:","Čas procesoru:"}.
{"Database failure","Chyba databáze"}.
{"Database Tables at ~p","Databázové tabulky na ~p"}.
{"Database Tables Configuration at ","Konfigurace databázových tabulek "}.
{"Database","Databáze"}.
{"December",". prosince"}.
{"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","Smazat zprávu dne"}.
{"Delete Selected","Smazat vybrané"}.
{"Delete User","Smazat uživatele"}.
{"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"}.
{"Description:","Popis:"}.
{"Disc only copy","Jen kopie disku"}.
{"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"}.
@@ -87,7 +80,6 @@
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams modul"}.
{"ejabberd vCard module","ejabberd vCard modul"}.
{"ejabberd Web Admin","Webová administrace ejabberd"}.
{"Elements","Položek"}.
{"Email","E-mail"}.
{"Enable logging","Zaznamenávat konverzace"}.
{"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 text file","Zadajte cestu k textovému souboru"}.
{"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í"}.
{"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):"}.
@@ -116,24 +107,19 @@
{"File larger than ~w bytes","Soubor větší než ~w bytů"}.
{"Friday","Pátek"}.
{"From ~ts","Od ~ts"}.
{"From","Od"}.
{"Full Name","Celé jméno"}.
{"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 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"}.
{"Given Name","Křestní jméno"}.
{"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 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 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"}.
{"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."}.
{"Import Directory","Import adresáře"}.
{"Import File","Import souboru"}.
@@ -145,7 +131,6 @@
{"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 message type","Nesprávný typ zprávy"}.
{"Incoming s2s Connections:","Příchozí s2s spojení:"}.
{"Incorrect CAPTCHA submit","Nesprávné odeslání CAPTCHA"}.
{"Incorrect data form","Nesprávný datový formulář"}.
{"Incorrect password","Nesprávné heslo"}.
@@ -172,8 +157,6 @@
{"Last month","Poslední měsíc"}.
{"Last year","Poslední rok"}.
{"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 room CAPTCHA protected","Chránit místnost pomocí CAPTCHA"}.
{"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"}.
{"Maximum Number of Occupants","Maximální počet účastníků"}.
{"May",". května"}.
{"Members:","Členové:"}.
{"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 not found in forwarded payload","Zpráva nebyla nalezena v přeposlaném obsahu"}.
{"Middle Name","Druhé jméno"}.
{"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","Moderátor"}.
{"Modified modules","Aktualizované moduly"}.
{"Module failed to handle the query","Modul chyboval při zpracování dotazu"}.
{"Monday","Pondělí"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Víceuživatelský chat"}.
{"Name","Jméno"}.
{"Name:","Jméno:"}.
{"Neither 'jid' nor 'nick' attribute found","Nebyl nalezen atribut 'jid' ani 'nick'"}.
{"Neither 'role' nor 'affiliation' attribute found","Nebyl nalezen atribut 'role' ani 'affiliation'"}.
{"Never","Nikdy"}.
@@ -250,12 +229,9 @@
{"Number of online users","Počet online uživatelů"}.
{"Number of registered users","Počet registrovaných uživatelů"}.
{"October",". října"}.
{"Offline Messages","Offline zprávy"}.
{"Offline Messages:","Offline zprávy:"}.
{"OK","OK"}.
{"Old Password:","Současné heslo:"}.
{"Online Users","Připojení uživatelé"}.
{"Online Users:","Připojení uživatelé:"}.
{"Online","Online"}.
{"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"}.
@@ -271,9 +247,7 @@
{"Organization Unit","Oddělení"}.
{"Other Modules Available:","Ostatní dostupné moduly:"}.
{"Outgoing s2s Connections","Odchozí s2s spojení"}.
{"Outgoing s2s Connections:","Odchozí s2s spojení:"}.
{"Owner privileges required","Jsou vyžadována práva vlastníka"}.
{"Packet","Paket"}.
{"Participant","Účastník"}.
{"Password Verification","Ověření hesla"}.
{"Password Verification:","Ověření hesla:"}.
@@ -281,7 +255,6 @@
{"Password:","Heslo:"}.
{"Path to Dir","Cesta k adresáři"}.
{"Path to File","Cesta k souboru"}.
{"Pending","Čekající"}.
{"Period: ","Čas: "}.
{"Persist items to storage","Uložit položky natrvalo do úložiště"}.
{"Ping query is incorrect","Ping dotaz je nesprávný"}.
@@ -300,17 +273,12 @@
{"RAM copy","Kopie RAM"}.
{"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"}.
{"Registered Users","Registrovaní uživatelé"}.
{"Registered Users:","Registrovaní uživatelé:"}.
{"Register","Zaregistrovat se"}.
{"Remote copy","Vzdálená kopie"}.
{"Remove All Offline Messages","Odstranit všechny offline zprávy"}.
{"Remove User","Odstranit uživatele"}.
{"Remove","Odstranit"}.
{"Replaced by new connection","Nahrazeno novým spojením"}.
{"Resources","Zdroje"}.
{"Restart Service","Restartovat službu"}.
{"Restart","Restart"}.
{"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 immediately:","Okamžitě obnovit binární zálohu:"}.
@@ -323,13 +291,9 @@
{"Room Occupants","Počet účastníků"}.
{"Room title","Název místnosti"}.
{"Roster groups allowed to subscribe","Skupiny kontaktů, které mohou odebírat"}.
{"Roster of ~ts","Seznam kontaktů ~ts"}.
{"Roster size","Velikost seznamu kontaktů"}.
{"Roster:","Seznam kontaktů:"}.
{"RPC Call Error","Chyba RPC volání"}.
{"Running Nodes","Běžící uzly"}.
{"Saturday","Sobota"}.
{"Script check","Kontrola skriptu"}.
{"Search Results for ","Výsledky hledání pro "}.
{"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"}.
@@ -347,18 +311,12 @@
{"Specify the access model","Uveďte přístupový model"}.
{"Specify the event message type","Zvolte typ zpráv pro události"}.
{"Specify the publisher model","Specifikovat model pro publikování"}.
{"Statistics of ~p","Statistiky ~p"}.
{"Statistics","Statistiky"}.
{"Stopped Nodes","Zastavené uzly"}.
{"Stop","Stop"}.
{"Storage Type","Typ úložiště"}.
{"Store binary backup:","Uložit binární zálohu:"}.
{"Store plain text backup:","Uložit zálohu do textového souboru:"}.
{"Subject","Předmět"}.
{"Submit","Odeslat"}.
{"Submitted","Odeslané"}.
{"Subscriber Address","Adresa odběratele"}.
{"Subscription","Přihlášení"}.
{"Subscriptions are not allowed","Předplatné není povoleno"}.
{"Sunday","Neděle"}.
{"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í"}.
{"Thursday","Čtvrtek"}.
{"Time delay","Časový posun"}.
{"Time","Čas"}.
{"To register, visit ~s","Pokud se chcete zaregistrovat, navštivte ~s"}.
{"Token TTL","Token TTL"}.
{"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 unacked stanzas","Příliš mnoho nepotvrzených stanz"}.
{"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"}.
{"Transactions Aborted:","Transakcí zrušených:"}.
{"Transactions Committed:","Transakcí potvrzených:"}.
{"Transactions Logged:","Transakcí zaznamenaných:"}.
{"Transactions Restarted:","Transakcí restartovaných:"}.
{"Tuesday","Úterý"}.
{"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"}.
@@ -407,11 +358,6 @@
{"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 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 JID","Jabber ID uživatele"}.
{"User (jid)","Uživatel (JID)"}.
@@ -423,7 +369,6 @@
{"Users Last Activity","Poslední aktivita uživatele"}.
{"Users","Uživatelé"}.
{"User","Uživatel"}.
{"Validate","Ověřit"}.
{"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 datetime string","Hodnota '~s' by měla být datetime řetězec"}.
+1 -68
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","Konto existiert nicht"}.
{"Action on user","Aktion auf Benutzer"}.
{"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"}.
{"Administration of ","Administration von "}.
{"Administration","Verwaltung"}.
@@ -92,29 +90,20 @@
{"Conference room does not exist","Konferenzraum existiert nicht"}.
{"Configuration of room ~s","Konfiguration des Raumes ~s"}.
{"Configuration","Konfiguration"}.
{"Connected Resources:","Verbundene Ressourcen:"}.
{"Contact Addresses (normally, room owner or owners)","Kontaktadresse (normalerweise Raumbesitzer)"}.
{"Country","Land"}.
{"CPU Time:","CPU-Zeit:"}.
{"Current Discussion Topic","Aktuelles Diskussionsthema"}.
{"Database failure","Datenbankfehler"}.
{"Database Tables at ~p","Datenbanktabellen bei ~p"}.
{"Database Tables Configuration at ","Datenbanktabellen-Konfiguration bei "}.
{"Database","Datenbank"}.
{"December","Dezember"}.
{"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","Lösche Nachricht des Tages"}.
{"Delete Selected","Markierte löschen"}.
{"Delete table","Tabelle löschen"}.
{"Delete User","Benutzer löschen"}.
{"Deliver event notifications","Ereignisbenachrichtigungen zustellen"}.
{"Deliver payloads with event notifications","Nutzdaten mit Ereignisbenachrichtigungen zustellen"}.
{"Description:","Beschreibung:"}.
{"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."}.
{"Dump Backup to Text File at ","Gib Backup in Textdatei aus bei "}.
{"Dump to Text File","Ausgabe in Textdatei"}.
@@ -130,7 +119,6 @@
{"ejabberd vCard module","ejabberd vCard-Modul"}.
{"ejabberd Web Admin","ejabberd Web-Admin"}.
{"ejabberd","ejabberd"}.
{"Elements","Elemente"}.
{"Email Address","E-Mail-Adresse"}.
{"Email","E-Mail"}.
{"Enable hats","Funktion einschalten"}.
@@ -145,7 +133,6 @@
{"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"}.
{"Erlang XMPP Server","Erlang XMPP-Server"}.
{"Error","Fehler"}.
{"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 data of all users in the server to PIEFXIS files (XEP-0227):","Alle Benutzerdaten des Servers in PIEFXIS-Dateien (XEP-0227) exportieren:"}.
@@ -164,7 +151,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"}.
{"Friday","Freitag"}.
{"From ~ts","Von ~ts"}.
{"From","Von"}.
{"Full List of Room Admins","Vollständige Liste der Raumadmins"}.
{"Full List of Room Owners","Vollständige Liste der Raumbesitzer"}.
{"Full Name","Vollständiger Name"}.
@@ -174,13 +160,9 @@
{"Get Number of Registered Users","Anzahl der registrierten Benutzer abrufen"}.
{"Get Pending","Ausstehende abrufen"}.
{"Get User Last Login Time","letzte Anmeldezeit des Benutzers abrufen"}.
{"Get User Password","Benutzerpasswort abrufen"}.
{"Get User Statistics","Benutzerstatistiken abrufen"}.
{"Given Name","Vorname"}.
{"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 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"}.
@@ -190,7 +172,6 @@
{"Hat URI","Funktions-URI"}.
{"Hats limit exceeded","Funktionslimit wurde überschritten"}.
{"Host unknown","Host unbekannt"}.
{"Host","Host"}.
{"HTTP File Upload","HTTP-Dateiupload"}.
{"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."}.
@@ -204,7 +185,6 @@
{"Import Users From jabberd14 Spool Files","Importiere Benutzer aus jabberd14-Spooldateien"}.
{"Improper domain part of 'from' attribute","Falscher Domänenteil des 'from'-Attributs"}.
{"Improper message type","Unzulässiger Nachrichtentyp"}.
{"Incoming s2s Connections:","Eingehende s2s-Verbindungen:"}.
{"Incorrect CAPTCHA submit","Falsche CAPTCHA-Eingabe"}.
{"Incorrect data form","Falsches Datenformular"}.
{"Incorrect password","Falsches Passwort"}.
@@ -234,7 +214,6 @@
{"July","Juli"}.
{"June","Juni"}.
{"Just created","Gerade erstellt"}.
{"Label:","Label:"}.
{"Last Activity","Letzte Aktivität"}.
{"Last login","Letzte Anmeldung"}.
{"Last message","Letzte Nachricht"}.
@@ -242,11 +221,9 @@
{"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"}.
{"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 users with hats","Benutzer mit Funktionen auflisten"}.
{"Logging","Protokollierung"}.
{"Low level update script","Low-Level-Aktualisierungsscript"}.
{"Make participants list public","Teilnehmerliste öffentlich machen"}.
{"Make room CAPTCHA protected","Raum mittels CAPTCHA schützen"}.
{"Make room members-only","Raum nur für Mitglieder zugänglich machen"}.
@@ -264,11 +241,8 @@
{"Maximum number of items to persist","Maximale Anzahl persistenter Items"}.
{"Maximum Number of Occupants","Maximale Anzahl der Teilnehmer"}.
{"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"}.
{"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."}.
{"Memory","Speicher"}.
{"Mere Availability in XMPP (No Show Value)","Bloße Verfügbarkeit in XMPP (kein Anzeigewert)"}.
{"Message body","Nachrichtentext"}.
{"Message not found in forwarded payload","Nachricht nicht in weitergeleiteten Nutzdaten gefunden"}.
@@ -280,14 +254,11 @@
{"Moderator privileges required","Moderatorrechte erforderlich"}.
{"Moderator","Moderator"}.
{"Moderators Only","nur Moderatoren"}.
{"Modified modules","Geänderte Module"}.
{"Module failed to handle the query","Modul konnte die Anfrage nicht verarbeiten"}.
{"Monday","Montag"}.
{"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","Mehrere <item/>-Elemente sind laut RFC6121 nicht erlaubt"}.
{"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"}.
{"Natural Language for Room Discussions","Natürliche Sprache für Raumdiskussionen"}.
{"Natural-Language Room Name","Raumname in natürlicher Sprache"}.
@@ -353,14 +324,10 @@
{"Occupants are allowed to query others","Teilnehmer dürfen andere abfragen"}.
{"Occupants May Change the Subject","Teilnehmer dürfen das Thema ändern"}.
{"October","Oktober"}.
{"Offline Messages","Offline-Nachrichten"}.
{"Offline Messages:","Offline-Nachrichten:"}.
{"OK","OK"}.
{"Old Password:","Altes Passwort:"}.
{"Online Users","Angemeldete Benutzer"}.
{"Online Users:","Angemeldete Benutzer:"}.
{"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 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"}.
@@ -380,10 +347,8 @@
{"Organization Unit","Abteilung"}.
{"Other Modules Available:","Andere Module verfügbar:"}.
{"Outgoing s2s Connections","Ausgehende s2s-Verbindungen"}.
{"Outgoing s2s Connections:","Ausgehende s2s-Verbindungen:"}.
{"Owner privileges required","Besitzerrechte erforderlich"}.
{"Packet relay is denied by service policy","Paket-Relay aufgrund der Dienstrichtlinien verweigert"}.
{"Packet","Paket"}.
{"Participant ID","Teilnehmer-ID"}.
{"Participant","Teilnehmer"}.
{"Password Verification","Passwort bestätigen"}.
@@ -392,7 +357,6 @@
{"Password:","Passwort:"}.
{"Path to Dir","Pfad zum Verzeichnis"}.
{"Path to File","Pfad zur Datei"}.
{"Pending","Ausstehend"}.
{"Period: ","Zeitraum: "}.
{"Persist items to storage","Items dauerhaft speichern"}.
{"Persistent","Persistent"}.
@@ -427,20 +391,15 @@
{"Recipient is not in the conference room","Empfänger ist nicht im Konferenzraum"}.
{"Register an XMPP account","Ein XMPP-Konto registrieren"}.
{"Register","Anmelden"}.
{"Registered Users","Registrierte Benutzer"}.
{"Registered Users:","Registrierte Benutzer:"}.
{"Remote copy","Fernkopie"}.
{"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","Entfernen"}.
{"Replaced by new connection","Durch neue Verbindung ersetzt"}.
{"Request has timed out","Zeitüberschreitung bei Anforderung"}.
{"Request is ignored","Anforderung wird ignoriert"}.
{"Requested role","Angeforderte Rolle"}.
{"Resources","Ressourcen"}.
{"Restart Service","Dienst neustarten"}.
{"Restart","Neustart"}.
{"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 immediately:","Stelle binäres Backup sofort wieder her:"}.
@@ -456,20 +415,15 @@
{"Room terminates","Raum wird beendet"}.
{"Room title","Raumname"}.
{"Roster groups allowed to subscribe","Kontaktlistengruppen die abonnieren dürfen"}.
{"Roster of ~ts","Kontaktliste von ~ts"}.
{"Roster size","Kontaktlistengröße"}.
{"Roster:","Kontaktliste:"}.
{"RPC Call Error","Fehler bei RPC-Aufruf"}.
{"Running Nodes","Laufende Knoten"}.
{"~s invites you to the room ~s","~s lädt Sie in den Raum ~s ein"}.
{"Saturday","Samstag"}.
{"Script check","Script-Überprüfung"}.
{"Search from the date","Suche ab Datum"}.
{"Search Results for ","Suchergebnisse für "}.
{"Search the text","Text durchsuchen"}.
{"Search until the date","Suche bis Datum"}.
{"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","Ankündigung an alle angemeldeten Benutzer senden"}.
{"Send announcement to all users on all hosts","Ankündigung an alle Benutzer auf allen Hosts senden"}.
@@ -493,22 +447,16 @@
{"Stanza id is not valid","Stanza-ID ist ungültig"}.
{"Stanza ID","Stanza-ID"}.
{"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"}.
{"Storage Type","Speichertyp"}.
{"Store binary backup:","Speichere binäres Backup:"}.
{"Store plain text backup:","Speichere Klartext-Backup:"}.
{"Stream management is already enabled","Stream-Verwaltung ist bereits aktiviert"}.
{"Stream management is not enabled","Stream-Verwaltung ist nicht aktiviert"}.
{"Subject","Betreff"}.
{"Submit","Senden"}.
{"Submitted","Gesendet"}.
{"Subscriber Address","Abonnenten-Adresse"}.
{"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","Abonnement"}.
{"Subscriptions are not allowed","Abonnements sind nicht erlaubt"}.
{"Sunday","Sonntag"}.
{"Text associated with a picture","Text verbunden mit einem Bild"}.
@@ -571,10 +519,8 @@
{"Thursday","Donnerstag"}.
{"Time delay","Zeitverzögerung"}.
{"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 ~ts","An ~ts"}.
{"To","An"}.
{"Token TTL","Token-TTL"}.
{"Too many active bytestreams","Zu viele aktive Bytestreams"}.
{"Too many CAPTCHA requests","Zu viele CAPTCHA-Anforderungen"}.
@@ -585,12 +531,7 @@
{"Too many receiver fields were specified","Zu viele Empfängerfelder wurden angegeben"}.
{"Too many unacked stanzas","Zu viele unbestätigte Stanzas"}.
{"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"}.
{"Transactions Aborted:","Abgebrochene Transaktionen:"}.
{"Transactions Committed:","Übergebene Transaktionen:"}.
{"Transactions Logged:","Protokollierte Transaktionen:"}.
{"Transactions Restarted:","Neu gestartete Transaktionen:"}.
{"~ts's Offline Messages Queue","Offline-Nachrichten-Warteschlange von ~ts"}.
{"Tuesday","Dienstag"}.
{"Unable to generate a CAPTCHA","Konnte kein CAPTCHA erstellen"}.
@@ -601,19 +542,13 @@
{"Uninstall","Deinstallieren"}.
{"Unregister an XMPP account","Ein XMPP-Konto entfernen"}.
{"Unregister","Deregistrieren"}.
{"Unselect All","Alle abwählen"}.
{"Unsupported <index/> element","Nicht unterstütztes <index/>-Element"}.
{"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 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","Spezifikationen aktualisieren"}.
{"Update","Aktualisieren"}.
{"Upgrade","Upgrade"}.
{"Uptime:","Betriebszeit:"}.
{"URL for Archived Discussion Logs","URL für archivierte Diskussionsprotokolle"}.
{"User already exists","Benutzer existiert bereits"}.
{"User (jid)","Benutzer (JID)"}.
@@ -628,7 +563,6 @@
{"Users are not allowed to register accounts so quickly","Benutzer dürfen Konten nicht so schnell registrieren"}.
{"Users Last Activity","Letzte Benutzeraktivität"}.
{"Users","Benutzer"}.
{"Validate","Validieren"}.
{"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 datetime string","Wert von '~s' sollte DateTime-Zeichenkette sein"}.
@@ -636,8 +570,6 @@
{"Value 'set' of 'type' attribute is not allowed","Wert 'set' des 'type'-Attributs ist nicht erlaubt"}.
{"vCard User Search","vCard-Benutzer-Suche"}.
{"View joined MIX channels","Beitretene MIX-Channel ansehen"}.
{"View Queue","Warteschlange ansehen"}.
{"View Roster","Kontaktliste ansehen"}.
{"Virtual Hosts","Virtuelle Hosts"}.
{"Visitor","Besucher"}.
{"Visitors are not allowed to change their nicknames in this room","Besucher dürfen in diesem Raum ihren Spitznamen nicht ändern"}.
@@ -667,6 +599,7 @@
{"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"}.
{"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 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"}.
-68
View File
@@ -15,8 +15,6 @@
{"Access model","Καθορίστε το μοντέλο πρόσβασης"}.
{"Account doesn't exist","Ο λογαριασμός δεν υπάρχει"}.
{"Action on user","Eνέργεια για το χρήστη"}.
{"Add Jabber ID","Προσθήκη Jabber Ταυτότητας"}.
{"Add New","Προσθήκη νέου"}.
{"Add User","Προσθήκη Χρήστη"}.
{"Administration of ","Διαχείριση του "}.
{"Administration","Διαχείριση"}.
@@ -90,29 +88,20 @@
{"Conference room does not exist","Η αίθουσα σύνεδριασης δεν υπάρχει"}.
{"Configuration of room ~s","Διαμόρφωση δωματίου ~ s"}.
{"Configuration","Ρύθμιση παραμέτρων"}.
{"Connected Resources:","Συνδεδεμένοι Πόροι:"}.
{"Contact Addresses (normally, room owner or owners)","Διευθύνσεις της Επαφής (κανονικά, ιδιοκτήτης (-ες) αίθουσας)"}.
{"Country","Χώρα"}.
{"CPU Time:","Ώρα CPU:"}.
{"Current Discussion Topic","Τρέχων θέμα συζήτησης"}.
{"Database failure","Αποτυχία βάσης δεδομένων"}.
{"Database Tables at ~p","Πίνακες βάσης δεδομένων στο ~p"}.
{"Database Tables Configuration at ","Διαμόρφωση Πίνακων βάσης δεδομένων στο "}.
{"Database","Βάση δεδομένων"}.
{"December","Δεκέμβριος"}.
{"Default users as participants","Προρυθμισμένοι χρήστες ως συμμετέχοντες"}.
{"Delete content","Διαγραφή περιεχομένων"}.
{"Delete message of the day on all hosts","Διαγράψτε το μήνυμα της ημέρας σε όλους τους κεντρικούς υπολογιστές"}.
{"Delete message of the day","Διαγράψτε το μήνυμα της ημέρας"}.
{"Delete Selected","Διαγραφή επιλεγμένων"}.
{"Delete table","Διαγραφή Πίνακα"}.
{"Delete User","Διαγραφή Χρήστη"}.
{"Deliver event notifications","Παράδοση ειδοποιήσεων συμβάντων"}.
{"Deliver payloads with event notifications","Κοινοποίηση φόρτου εργασιών με τις ειδοποιήσεις συμβάντων"}.
{"Description:","Περιγραφή:"}.
{"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."}.
{"Dump Backup to Text File at ","Αποθήκευση Αντιγράφου Ασφαλείας σε αρχείο κειμένου στο "}.
{"Dump to Text File","Αποθήκευση σε αρχείο κειμένου"}.
@@ -128,7 +117,6 @@
{"ejabberd vCard module","ejabberd vCard module"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"ejabberd","ejabberd"}.
{"Elements","Στοιχεία"}.
{"Email Address","Ηλεκτρονική Διεύθυνση"}.
{"Email","Ηλεκτρονικό ταχυδρομείο"}.
{"Enable logging","Ενεργοποίηση καταγραφής"}.
@@ -142,7 +130,6 @@
{"Enter path to text file","Εισάγετε Τοποθεσία Αρχείου Κειμένου"}.
{"Enter the text you see","Πληκτρολογήστε το κείμενο που βλέπετε"}.
{"Erlang XMPP Server","Διακομιστής Erlang XMPP"}.
{"Error","Σφάλμα"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Εξαίρεσε αυτές τις ταυτότητες Jabber από την CAPTCHA πρόκληση"}.
{"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):"}.
@@ -161,7 +148,6 @@
{"Fill in the form to search for any matching XMPP User","Συμπληρώστε την φόρμα για αναζήτηση χρηστών XMPP"}.
{"Friday","Παρασκευή"}.
{"From ~ts","Από ~ts"}.
{"From","Από"}.
{"Full List of Room Admins","Πλήρης Κατάλογος Διαχειριστών αιθουσών"}.
{"Full List of Room Owners","Πλήρης Κατάλογος Ιδιοκτητών αιθουσών"}.
{"Full Name","Ονοματεπώνυμο"}.
@@ -169,20 +155,15 @@
{"Get Number of Registered Users","Έκθεση αριθμού εγγεγραμμένων χρηστών"}.
{"Get Pending","Λήψη των εκκρεμοτήτων"}.
{"Get User Last Login Time","Έκθεση Τελευταίας Ώρας Σύνδεσης Χρήστη"}.
{"Get User Password","Έκθεση Κωδικού Πρόσβασης Χρήστη"}.
{"Get User Statistics","Έκθεση Στατιστικών Χρήστη"}.
{"Given Name","Όνομα"}.
{"Grant voice to this person?","Παραχώρηση φωνής σε αυτό το άτομο;"}.
{"Groups that will be displayed to the members","Ομάδες που θα εμφανίζονται στα μέλη"}.
{"Groups","Ομάδες"}.
{"Group","Ομάδα"}.
{"has been banned","έχει αποβληθεί διαπαντώς"}.
{"has been kicked because of a system shutdown","αποβλήθηκε λόγω τερματισμού συστήματος"}.
{"has been kicked because of an affiliation change","έχει αποβληθεί λόγω αλλαγής υπαγωγής"}.
{"has been kicked because the room has been changed to members-only","αποβλήθηκε επειδή η αίθουσα αλλάξε γιά μέλη μόνο"}.
{"has been kicked","αποβλήθηκε"}.
{"Host unknown","Άγνωστος εξυπηρετητής"}.
{"Host","Εξυπηρετητής"}.
{"HTTP File Upload","Ανέβασμα αρχείου"}.
{"Idle connection","Αδρανής σύνδεση"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Εάν δεν βλέπετε την εικόνα CAPTCHA εδώ, επισκεφθείτε την ιστοσελίδα."}.
@@ -196,7 +177,6 @@
{"Import Users From jabberd14 Spool Files","Εισαγωγή Χρηστών από αρχεία σειράς jabberd14"}.
{"Improper domain part of 'from' attribute","Ανάρμοστο τμήμα τομέα του χαρακτηριστικού 'from'"}.
{"Improper message type","Ακατάλληλο είδος μηνύματος"}.
{"Incoming s2s Connections:","Εισερχόμενες συνδέσεις s2s:"}.
{"Incorrect CAPTCHA submit","Λάθος υποβολή CAPTCHA"}.
{"Incorrect data form","Εσφαλμένη φόρμα δεδομένων"}.
{"Incorrect password","Εσφαλμένος κωδικός πρόσβασης"}.
@@ -222,7 +202,6 @@
{"July","Ιούλιος"}.
{"June","Ιούνιος"}.
{"Just created","Μόλις δημιουργήθηκε"}.
{"Label:","Ετικέτα:"}.
{"Last Activity","Τελευταία Δραστηριότητα"}.
{"Last login","Τελευταία σύνδεση"}.
{"Last message","Τελευταίο μήνυμα"}.
@@ -230,9 +209,7 @@
{"Last year","Πέρυσι"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Τα ψηφία μικρότερης αξίας του αθροίσματος SHA-256 του κειμένου θα έπρεπε να ισούνται με την δεκαεξαδική ετικέτα"}.
{"leaves the room","εγκαταλείπει την αίθουσα"}.
{"List of rooms","Κατάλογος αιθουσών"}.
{"Logging","Καταγραφή"}.
{"Low level update script","Προγράμα ενημέρωσης χαμηλού επίπεδου"}.
{"Make participants list public","Κάντε δημόσιο τον κατάλογο συμμετεχόντων"}.
{"Make room CAPTCHA protected","Κάντε την αίθουσα προστατεύομενη με CAPTCHA"}.
{"Make room members-only","Κάντε την αίθουσα μόνο για μέλη"}.
@@ -249,11 +226,8 @@
{"Maximum number of items to persist","Μέγιστος αριθμός μόνιμων στοιχείων"}.
{"Maximum Number of Occupants","Μέγιστος αριθμός συμμετεχόντων"}.
{"May","Μάιος"}.
{"Members not added (inexistent vhost!): ","Τα μέλη δεν προστέθηκαν (ανύπαρκτος vhost!): "}.
{"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 δεν υπάρχει αυτοματοποιημένος τρόπος ανάκτησης του κωδικού πρόσβασής σας εάν τον ξεχάσετε."}.
{"Memory","Μνήμη"}.
{"Mere Availability in XMPP (No Show Value)","Διαθεσιμότητα στο XMPP (Χωρίς ένδειξη)"}.
{"Message body","Περιεχόμενο μηνύματος"}.
{"Message not found in forwarded payload","Δεν βρέθηκε μήνυμα στον προωθημένο φόρτο εργασίας"}.
@@ -265,15 +239,12 @@
{"Moderator privileges required","Aπαιτούνται προνόμια επόπτου"}.
{"Moderators Only","Επόπτες μόμον"}.
{"Moderator","Επόπτης"}.
{"Modified modules","Τροποποιημένα modules"}.
{"Module failed to handle the query","Το module απέτυχε να χειριστεί το ερώτημα"}.
{"Monday","Δευτέρα"}.
{"Multicast","Πολλαπλή διανομή (Multicast)"}.
{"Multiple <item/> elements are not allowed by RFC6121","Πολλαπλά στοιχεία <item/> δεν επιτρέπονται από το RFC6121"}.
{"Multi-User Chat","Συνομιλία με πολλούς χρήστες"}.
{"Name in the rosters where this group will be displayed","Όνομα στις λίστες όπου αυτή η ομάδα θα εμφανίζεται"}.
{"Name","Όνομα"}.
{"Name:","Όνομα:"}.
{"Natural Language for Room Discussions","Μητρική Γλώσσα για τις Συζητήσεις Αιθουσών"}.
{"Natural-Language Room Name","Αίθουσα Μητρικής Γλώσσας"}.
{"Neither 'jid' nor 'nick' attribute found","Δεν βρέθηκε κανένα χαρακτηριστικό 'jid' ούτε 'nick'"}.
@@ -335,14 +306,10 @@
{"Occupants are allowed to invite others","Οι συμμετέχοντες μπορούν να προσκαλέσουν και άλλους"}.
{"Occupants May Change the Subject","Επιτρέψτε στους χρήστες να αλλάζουν το Θέμα"}.
{"October","Οκτώβριος"}.
{"Offline Messages","Χωρίς Σύνδεση Μηνύματα"}.
{"Offline Messages:","Χωρίς Σύνδεση Μηνύματα:"}.
{"OK","Εντάξει"}.
{"Old Password:","Παλαιός κωδικός πρόσβασης:"}.
{"Online Users:","Online Χρήστες:"}.
{"Online Users","Συνδεμένοι χρήστες"}.
{"Online","Συνδεδεμένο"}.
{"Only admins can see this","Μόνον οι διαχειριστές μπορούν να το δουν αυτό"}.
{"Only collection node owners may associate leaf nodes with the collection","Μόνον οι ιδιοκτήτες των κόμβων μπορούν να συσχετίσουν leaf nodes με την Συλλογή"}.
{"Only deliver notifications to available users","Παράδοση ειδοποιήσεων μόνο σε διαθέσιμους χρήστες"}.
{"Only <enable/> or <disable/> tags are allowed","Επιτρέπονται μόνο tags <enable /> ή <disable />"}.
@@ -360,10 +327,8 @@
{"Organization Name","Όνομα Οργανισμού"}.
{"Organization Unit","Μονάδα Οργανισμού"}.
{"Outgoing s2s Connections","Εξερχόμενες S2S Συνδέσεις"}.
{"Outgoing s2s Connections:","Εξερχόμενες S2S Συνδέσεις:"}.
{"Owner privileges required","Aπαιτούνται προνόμια ιδιοκτήτη"}.
{"Packet relay is denied by service policy","Απαγορεύεται η αναμετάδοση πακέτων, λόγω της τακτικής Παροχής Υπηρεσιών"}.
{"Packet","Πακέτο"}.
{"Participant","Συμμετέχων"}.
{"Password Verification","Επαλήθευση κωδικού πρόσβασης"}.
{"Password Verification:","Επαλήθευση κωδικού πρόσβασης:"}.
@@ -371,7 +336,6 @@
{"Password:","Κωδικός πρόσβασης:"}.
{"Path to Dir","Τοποθεσία κατάλογου αρχείων"}.
{"Path to File","Τοποθεσία Αρχείου"}.
{"Pending","Εκκρεμεί"}.
{"Period: ","Περίοδος: "}.
{"Persist items to storage","Μόνιμη αποθήκευση στοιχείων"}.
{"Persistent","Μόνιμη"}.
@@ -405,20 +369,15 @@
{"Receive notification of new nodes only","Λάβετε ειδοποίηση μόνο από νέους κόμβους"}.
{"Recipient is not in the conference room","Ο παραλήπτης δεν είναι στην αίθουσα συνεδριάσεων"}.
{"Register an XMPP account","Καταχωρείστε έναν XMPP λογαριασμό χρήστη"}.
{"Registered Users","Εγγεγραμμένοι Χρήστες"}.
{"Registered Users:","Εγγεγραμμένοι Χρήστες:"}.
{"Register","Καταχωρήστε"}.
{"Remote copy","Εξ αποστάσεως αντίγραφο"}.
{"Remove All Offline Messages","Αφαίρεση όλων των μηνυμάτων χωρίς σύνδεση"}.
{"Remove User","Αφαίρεση χρήστη"}.
{"Remove","Αφαίρεση"}.
{"Replaced by new connection","Αντικαταστάθηκε από μια νέα σύνδεση"}.
{"Request has timed out","Το αίτημα έληξε"}.
{"Request is ignored","Το αίτημα θα αγνοηθεί"}.
{"Requested role","Αιτούμενος ρόλος"}.
{"Resources","Πόροι"}.
{"Restart Service","Επανεκκίνηση Υπηρεσίας"}.
{"Restart","Επανεκκίνηση"}.
{"Restore Backup from File at ","Επαναφορά Αντιγράφου Ασφαλείας από αρχείο στο "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Επαναφορά δυαδικού αντιγράφου ασφαλείας μετά την επόμενη επανεκκίνηση του ejabberd (απαιτεί λιγότερη μνήμη):"}.
{"Restore binary backup immediately:","Επαναφορά δυαδικού αντιγράφου ασφαλείας αμέσως:"}.
@@ -434,20 +393,15 @@
{"Room terminates","Τερματισμός Αίθουσας"}.
{"Room title","Τίτλος Αίθουσας"}.
{"Roster groups allowed to subscribe","Ομάδες Καταλόγου Επαφών μπορούν να εγγραφούν"}.
{"Roster of ~ts","Καταλόγου Επαφών του ~ts"}.
{"Roster size","Μέγεθος Καταλόγου Επαφών"}.
{"Roster:","Καταλόγος Επαφών:"}.
{"RPC Call Error","Σφάλμα RPC Κλήσης"}.
{"Running Nodes","Ενεργοί Κόμβοι"}.
{"~s invites you to the room ~s","~s Σας καλεί στο δωμάτιο ~s"}.
{"Saturday","Σάββατο"}.
{"Script check","Script ελέγχου"}.
{"Search from the date","Αναζήτηση από της"}.
{"Search Results for ","Αποτελέσματα αναζήτησης για "}.
{"Search the text","Αναζήτηση του κειμένου"}.
{"Search until the date","Αναζήτηση μέχρι της"}.
{"Search users in ","Αναζήτηση χρηστών στο "}.
{"Select All","Επιλογή όλων"}.
{"Send announcement to all online users on all hosts","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
{"Send announcement to all online users","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες"}.
{"Send announcement to all users on all hosts","Αποστολή ανακοίνωσης σε όλους τους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
@@ -469,23 +423,17 @@
{"Specify the publisher model","Καθορίστε το μοντέλο εκδότη"}.
{"Stanza ID","Ταυτότητα Δωματίου"}.
{"Statically specify a replyto of the node owner(s)","Προσδιορίστε (στατικά) το Απάντηση Προς του ιδιοκτήτη-ων του κόμβου"}.
{"Statistics of ~p","Στατιστικές του ~p"}.
{"Statistics","Στατιστικές"}.
{"Stopped Nodes","Σταματημένοι Κόμβοι"}.
{"Stop","Σταμάτημα"}.
{"Storage Type","Τύπος Αποθήκευσης"}.
{"Store binary backup:","Αποθηκεύση δυαδικού αντιγράφου ασφαλείας:"}.
{"Store plain text backup:","Αποθηκεύση αντιγράφου ασφαλείας σε αρχείο κειμένου:"}.
{"Stream management is already enabled","Η διαχείριση Ροών επιτρέπεται ηδη"}.
{"Stream management is not enabled","Η διαχείριση Ροών δεν είναι ενεργοποιημένη"}.
{"Subject","Θέμα"}.
{"Submitted","Υποβλήθηκε"}.
{"Submit","Υποβολή"}.
{"Subscriber Address","Διεύθυνση Συνδρομητή"}.
{"Subscribers may publish","Οι συνδρομητές μπορούν να δημοσιεύσουν"}.
{"Subscription requests must be approved and only subscribers may retrieve items","Τα αιτήματα για συνδρομή πρέπει να εγκριθούν και μόνο οι συνδρομητές μπορούν να λάβουν αντικείμενα"}.
{"Subscriptions are not allowed","Οι συνδρομές δεν επιτρέπονται"}.
{"Subscription","Συνδρομή"}.
{"Sunday","Κυριακή"}.
{"Text associated with a picture","Το κείμενο σχετίστηκε με μία εικόνα"}.
{"Text associated with a sound","Το κείμενο σχετίστηκε με έναν ήχο"}.
@@ -544,7 +492,6 @@
{"Thursday","Πέμπτη"}.
{"Time delay","Χρόνος καθυστέρησης"}.
{"Timed out waiting for stream resumption","Υπερέβην το όριο αναμονής για επανασύνδεση της Ροής"}.
{"Time","Χρόνος"}.
{"To register, visit ~s","Για να εγγραφείτε, επισκεφθείτε το ~s"}.
{"To ~ts","Προς ~ts"}.
{"Token TTL","Διακριτικό TTL"}.
@@ -557,13 +504,7 @@
{"Too many receiver fields were specified","Πάρα πολλά πεδία δεκτών προσδιορίστηκαν"}.
{"Too many unacked stanzas","Πάρα πολλές μη αναγνωρισμένες stanzas"}.
{"Too many users in this conference","Πάρα πολλοί χρήστες σε αυτή τη διάσκεψη"}.
{"Total rooms","Συνολικές Αίθουσες σύνεδριασης"}.
{"To","Προς"}.
{"Traffic rate limit is exceeded","Υπέρφορτωση"}.
{"Transactions Aborted:","Αποτυχημένες συναλλαγές:"}.
{"Transactions Committed:","Παραδοθείσες συναλλαγές:"}.
{"Transactions Logged:","Καταγεγραμμένες συναλλαγές:"}.
{"Transactions Restarted:","Επανειλημμένες συναλλαγές:"}.
{"~ts's Offline Messages Queue","~ts's Χωρίς Σύνδεση Μηνύματα"}.
{"Tuesday","Τρίτη"}.
{"Unable to generate a CAPTCHA","Αδύνατη η δημιουργία CAPTCHA"}.
@@ -573,16 +514,10 @@
{"Unexpected error condition: ~p","Απροσδόκητες συνθήκες σφάλματος: ~p"}.
{"Unregister an XMPP account","Καταργήση λογαριασμού XMPP"}.
{"Unregister","Καταργήση εγγραφής"}.
{"Unselect All","Αποεπιλογή όλων"}.
{"Unsupported <index/> element","Μη υποστηριζόμενο στοιχείο <index />"}.
{"Unsupported version","Μη υποστηριζόμενη έκδοση"}.
{"Update message of the day (don't send)","Ενημέρωση μηνύματος ημέρας (χωρίς άμεση αποστολή)"}.
{"Update message of the day on all hosts (don't send)","Ενημέρωση μηνύματος ημέρας σε όλους τους κεντρικούς υπολογιστές (χωρίς άμεση αποστολή)"}.
{"Update plan","Σχέδιο ενημέρωσης"}.
{"Update ~p","Ενημέρωση ~p"}.
{"Update script","Προγράμα ενημέρωσης"}.
{"Update","Ενημέρωση"}.
{"Uptime:","Χρόνος σε λειτουργία:"}.
{"URL for Archived Discussion Logs","URL αρχειοθετημένων καταγραφών συζητήσεων"}.
{"User already exists","Ο χρήστης υπάρχει ήδη"}.
{"User JID","JID Χρήστη"}.
@@ -597,15 +532,12 @@
{"Users Last Activity","Τελευταία Δραστηριότητα Χρήστη"}.
{"Users","Χρήστες"}.
{"User","Χρήστης"}.
{"Validate","Επαληθεύστε"}.
{"Value 'get' of 'type' attribute is not allowed","Η τιμή 'get' του 'type' δεν επιτρέπεται"}.
{"Value of '~s' should be boolean","Η τιμή του '~s' πρέπει να είναι boolean"}.
{"Value of '~s' should be datetime string","Η τιμή του '~s' θα πρέπει να είναι χρονοσειρά"}.
{"Value of '~s' should be integer","Η τιμή του '~s' θα πρέπει να είναι ακέραιος"}.
{"Value 'set' of 'type' attribute is not allowed","Δεν επιτρέπεται η παράμετρος 'set' του 'type'"}.
{"vCard User Search","vCard Αναζήτηση χρηστών"}.
{"View Queue","Εμφάνιση λίστας αναμονής"}.
{"View Roster","Εμφάνιση λίστας Επαφών"}.
{"Virtual Hosts","Eικονικοί κεντρικοί υπολογιστές"}.
{"Visitors are not allowed to change their nicknames in this room","Οι επισκέπτες δεν επιτρέπεται να αλλάξουν τα ψευδώνυμα τους σε αυτή την αίθουσα"}.
{"Visitors are not allowed to send messages to all occupants","Οι επισκέπτες δεν επιτρέπεται να στείλουν μηνύματα σε όλους τους συμμετέχοντες"}.
-53
View File
@@ -15,8 +15,6 @@
{"Access model","Atingomodelo"}.
{"Account doesn't exist","Konto ne ekzistas"}.
{"Action on user","Ago je uzanto"}.
{"Add Jabber ID","Aldonu Jabber ID"}.
{"Add New","Aldonu novan"}.
{"Add User","Aldonu Uzanton"}.
{"Administration of ","Mastrumado de "}.
{"Administration","Administro"}.
@@ -76,22 +74,17 @@
{"Conference room does not exist","Babilejo ne ekzistas"}.
{"Configuration of room ~s","Agordo de babilejo ~s"}.
{"Configuration","Agordo"}.
{"Connected Resources:","Konektataj risurcoj:"}.
{"Country","Lando"}.
{"CPU Time:","CPU-tempo"}.
{"Current Discussion Topic","Aktuala Diskuta Temo"}.
{"Database Tables at ~p","Datumbaz-tabeloj je ~p"}.
{"Database Tables Configuration at ","Agordo de datumbaz-tabeloj je "}.
{"Database","Datumbazo"}.
{"December","Decembro"}.
{"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","Forigu mesaĝo de la tago"}.
{"Delete Selected","Forigu elektata(j)n"}.
{"Delete User","Forigu Uzanton"}.
{"Deliver event notifications","Liveru event-sciigojn"}.
{"Deliver payloads with event notifications","Liveru aĵojn de event-sciigoj"}.
{"Description:","Priskribo:"}.
{"Disc only copy","Nur disk-kopio"}.
{"Dump Backup to Text File at ","Skribu sekurkopion en plata teksto al "}.
{"Dump to Text File","Skribu en plata tekst-dosiero"}.
@@ -105,7 +98,6 @@
{"ejabberd vCard module","ejabberd vCard-modulo"}.
{"ejabberd Web Admin","ejabberd Teksaĵa Administro"}.
{"ejabberd","ejabberd"}.
{"Elements","Eroj"}.
{"Email Address","Retpoŝta Adreso"}.
{"Email","Retpoŝto"}.
{"Enable logging","Ŝaltu protokoladon"}.
@@ -117,7 +109,6 @@
{"Enter path to jabberd14 spool file","Enmetu vojon al jabberd14-uzantdosiero"}.
{"Enter path to text file","Enmetu vojon al plata teksto"}.
{"Enter the text you see","Enmetu montrita teksto"}.
{"Error","Eraro"}.
{"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 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"}.
{"File larger than ~w bytes","Dosiero pli granda ol ~w bajtoj"}.
{"Friday","Vendredo"}.
{"From","De"}.
{"Full Name","Plena Nomo"}.
{"Get Number of Online Users","Montru nombron de konektataj uzantoj"}.
{"Get Number of Registered Users","Montru nombron de registritaj uzantoj"}.
{"Get User Last Login Time","Montru tempon de lasta ensaluto"}.
{"Get User Password","Montru pasvorton de uzanto"}.
{"Get User Statistics","Montru statistikojn de uzanto"}.
{"Given Name","Persona Nomo"}.
{"Grant voice to this person?","Koncedu voĉon al ĉi-persono?"}.
{"Group","Grupo"}.
{"Groups","Grupoj"}.
{"has been banned","estas forbarita"}.
{"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 the room has been changed to members-only","estas forpelita ĉar la babilejo fariĝis sole por membroj"}.
{"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."}.
{"Import Directory","Importu dosierujo"}.
{"Import File","Importu dosieron"}.
@@ -166,14 +152,11 @@
{"July","Julio"}.
{"June","Junio"}.
{"Just created","Ĵus kreita"}.
{"Label:","Etikedo:"}.
{"Last Activity","Lasta aktiveco"}.
{"Last login","Lasta ensaluto"}.
{"Last month","Lasta monato"}.
{"Last year","Lasta jaro"}.
{"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 room CAPTCHA protected","Protektu babilejon per CAPTCHA"}.
{"Make room members-only","Farigu babilejon sole por membroj"}.
@@ -187,20 +170,16 @@
{"Maximum Number of Occupants","Limigo de nombro de partoprenantoj"}.
{"May","Majo"}.
{"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"}.
{"Middle Name","Meza Nomo"}.
{"Minimum interval between voice requests (in seconds)","Minimuma intervalo inter voĉ-petoj (je sekundoj)"}.
{"Moderator privileges required","Moderantaj rajtoj bezonata"}.
{"Modified modules","Ĝisdatigitaj moduloj"}.
{"Module failed to handle the query","Modulo malsukcesis trakti la informpeton"}.
{"Monday","Lundo"}.
{"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","RFC 6121 ne permesas plurajn <item/>-elementojn"}.
{"Multi-User Chat","Grupbabilado"}.
{"Name","Nomo"}.
{"Name:","Nomo:"}.
{"Natural Language for Room Discussions","Homa Lingvo por Diskutoj en Babilejo"}.
{"Never","Neniam"}.
{"New Password:","Nova Pasvorto:"}.
@@ -232,11 +211,8 @@
{"Number of online users","Nombro de konektataj uzantoj"}.
{"Number of registered users","Nombro de registritaj uzantoj"}.
{"October","Oktobro"}.
{"Offline Messages","Liverontaj mesaĝoj"}.
{"Offline Messages:","Liverontaj mesaĝoj"}.
{"OK","Bone"}.
{"Old Password:","Malnova Pasvorto:"}.
{"Online Users:","Konektataj uzantoj:"}.
{"Online Users","Konektataj Uzantoj"}.
{"Online","Konektata"}.
{"Only deliver notifications to available users","Nur liveru sciigojn al konektataj uzantoj"}.
@@ -253,16 +229,13 @@
{"Organization Name","Organiz-nomo"}.
{"Organization Unit","Organiz-parto"}.
{"Outgoing s2s Connections","Elirantaj s-al-s-konektoj"}.
{"Outgoing s2s Connections:","Elirantaj s-al-s-konektoj:"}.
{"Owner privileges required","Mastraj rajtoj bezonata"}.
{"Packet","Pakaĵo"}.
{"Password Verification","Pasvortkontrolo"}.
{"Password Verification:","Pasvortkontrolo:"}.
{"Password","Pasvorto"}.
{"Password:","Pasvorto:"}.
{"Path to Dir","Vojo al dosierujo"}.
{"Path to File","Voje de dosiero"}.
{"Pending","Atendanta"}.
{"Period: ","Periodo: "}.
{"Persist items to storage","Savu erojn en konservado"}.
{"Ping","Sondaĵo"}.
@@ -281,17 +254,12 @@
{"RAM copy","RAM-kopio"}.
{"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"}.
{"Registered Users","Registritaj uzantoj"}.
{"Registered Users:","Registritaj uzantoj:"}.
{"Register","Registru"}.
{"Remote copy","Fora kopio"}.
{"Remove All Offline Messages","Forigu ĉiujn liverontajn mesaĝojn"}.
{"Remove User","Forigu uzanton"}.
{"Remove","Forigu"}.
{"Replaced by new connection","Anstataŭigita je nova konekto"}.
{"Resources","Risurcoj"}.
{"Restart Service","Restartu Servon"}.
{"Restart","Restartu"}.
{"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 immediately:","Restaŭrigu duuman sekurkopion tuj:"}.
@@ -304,10 +272,8 @@
{"Room title","Babilejo-nomo"}.
{"Roster groups allowed to subscribe","Kontaktlist-grupoj kiuj rajtas aboni"}.
{"Roster size","Kontaktlist-grando"}.
{"RPC Call Error","Eraro de RPC-alvoko"}.
{"Running Nodes","Funkciantaj Nodoj"}.
{"Saturday","Sabato"}.
{"Script check","Skript-kontrolo"}.
{"Search Results for ","Serĉ-rezultoj de "}.
{"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"}.
@@ -325,19 +291,13 @@
{"Specify the access model","Specifu atingo-modelon"}.
{"Specify the event message type","Specifu tipo de event-mesaĝo"}.
{"Specify the publisher model","Enmetu publikadan modelon"}.
{"Statistics of ~p","Statistikoj de ~p"}.
{"Statistics","Statistikoj"}.
{"Stop","Haltigu"}.
{"Stopped Nodes","Neaktivaj Nodoj"}.
{"Storage Type","Konserv-tipo"}.
{"Store binary backup:","Konservu duuman sekurkopion:"}.
{"Store plain text backup:","Skribu sekurkopion en plata tekstdosiero"}.
{"Subject","Temo"}.
{"Submit","Sendu"}.
{"Submitted","Sendita"}.
{"Subscriber Address","Abonanta adreso"}.
{"Subscribers may publish","Abonantoj rajtas publici"}.
{"Subscription","Abono"}.
{"Sunday","Dimanĉo"}.
{"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"}.
@@ -354,28 +314,16 @@
{"This room is not anonymous","Ĉi tiu babilejo ne estas anonima"}.
{"Thursday","Ĵaŭdo"}.
{"Time delay","Prokrasto"}.
{"Time","Tempo"}.
{"To","Ĝis"}.
{"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 unacked stanzas","Tro da neagnoskitaj stancoj"}.
{"Total rooms","Babilejoj"}.
{"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"}.
{"Unable to generate a CAPTCHA","Ne eblis krei CAPTCHA"}.
{"Unauthorized","Nepermesita"}.
{"Unregister","Malregistru"}.
{"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 ~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"}.
{"User JID","Uzant-JID"}.
{"User Management","Uzanto-administrado"}.
@@ -384,7 +332,6 @@
{"Users Last Activity","Lasta aktiveco de uzanto"}.
{"Users","Uzantoj"}.
{"User","Uzanto"}.
{"Validate","Validigu"}.
{"vCard User Search","Serĉado de vizitkartoj"}.
{"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"}.
-70
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","La cuenta no existe"}.
{"Action on user","Acción en el 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"}.
{"Administration of ","Administración de "}.
{"Administration","Administración"}.
@@ -48,7 +46,6 @@
{"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","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"}.
{"April","Abril"}.
{"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"}.
@@ -93,30 +90,20 @@
{"Conference room does not exist","La sala de conferencias no existe"}.
{"Configuration of room ~s","Configuración para la sala ~s"}.
{"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)"}.
{"Contrib Modules","Módulos Contrib"}.
{"Country","País"}.
{"CPU Time:","Tiempo consumido de CPU:"}.
{"Current Discussion Topic","Tema de discusión actual"}.
{"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","Base de datos"}.
{"December","Diciembre"}.
{"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","Borrar mensaje del dia"}.
{"Delete Selected","Borrar los seleccionados"}.
{"Delete table","Borrar tabla"}.
{"Delete User","Borrar usuario"}.
{"Deliver event notifications","Entregar 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"}.
{"'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."}.
{"Dump Backup to Text File at ","Exporta copia de seguridad a fichero de texto en "}.
{"Dump to Text File","Exportar a fichero de texto"}.
@@ -132,7 +119,6 @@
{"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"ejabberd","ejabberd"}.
{"Elements","Elementos"}.
{"Email Address","Dirección de correo electrónico"}.
{"Email","Correo electrónico"}.
{"Enable hats","Activar sombreros"}.
@@ -147,7 +133,6 @@
{"Enter path to text file","Introduce ruta al fichero de texto"}.
{"Enter the text you see","Teclea el texto que ves"}.
{"Erlang XMPP Server","Servidor XMPP en Erlang"}.
{"Error","Error"}.
{"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 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 +151,6 @@
{"Fill in the form to search for any matching XMPP User","Rellena campos para buscar usuarios XMPP que concuerden"}.
{"Friday","Viernes"}.
{"From ~ts","De ~ts"}.
{"From","De"}.
{"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 Name","Nombre completo"}.
@@ -176,13 +160,9 @@
{"Get Number of Registered Users","Ver número de usuarios registrados"}.
{"Get Pending","Obtener pendientes"}.
{"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"}.
{"Given Name","Nombre"}.
{"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 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"}.
@@ -192,7 +172,6 @@
{"Hat URI","Dirección del sombrero"}.
{"Hats limit exceeded","Se ha excedido el límite de sombreros"}.
{"Host unknown","Dominio desconocido"}.
{"Host","Dominio"}.
{"HTTP File Upload","Subir fichero por HTTP"}.
{"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."}.
@@ -206,7 +185,6 @@
{"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 message type","Tipo de mensaje incorrecto"}.
{"Incoming s2s Connections:","Conexiones S2S entrantes:"}.
{"Incorrect CAPTCHA submit","El CAPTCHA proporcionado es incorrecto"}.
{"Incorrect data form","Formulario de datos incorrecto"}.
{"Incorrect password","Contraseña incorrecta"}.
@@ -236,7 +214,6 @@
{"July","Julio"}.
{"June","Junio"}.
{"Just created","Recién creada"}.
{"Label:","Etiqueta:"}.
{"Last Activity","Última actividad"}.
{"Last login","Última conexión"}.
{"Last message","Último mensaje"}.
@@ -244,11 +221,9 @@
{"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"}.
{"leaves the room","sale de la sala"}.
{"List of rooms","Lista de salas"}.
{"List of users with hats","Lista de usuarios con sombreros"}.
{"List users with hats","Listar usuarios con sombreros"}.
{"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 room CAPTCHA protected","Proteger la sala con CAPTCHA"}.
{"Make room members-only","Sala sólo para miembros"}.
@@ -266,11 +241,8 @@
{"Maximum number of items to persist","Máximo número de elementos que persisten"}.
{"Maximum Number of Occupants","Número máximo de ocupantes"}.
{"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"}.
{"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."}.
{"Memory","Memoria"}.
{"Mere Availability in XMPP (No Show Value)","Disponible en XMPP (sin valor de Mostrado)"}.
{"Message body","Cuerpo del mensaje"}.
{"Message not found in forwarded payload","Mensaje no encontrado en el contenido reenviado"}.
@@ -282,15 +254,12 @@
{"Moderator privileges required","Se necesita privilegios de moderador"}.
{"Moderator","Moderador"}.
{"Moderators Only","Solo moderadores"}.
{"Modified modules","Módulos modificados"}.
{"Module failed to handle the query","El módulo falló al gestionar la petición"}.
{"Monday","Lunes"}.
{"Multicast","Multidifusión"}.
{"Multiple <item/> elements are not allowed by RFC6121","No se permiten múltiples elementos <item/> en RFC6121"}.
{"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:"}.
{"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"}.
{"Neither 'jid' nor 'nick' attribute found","No se encontraron los atributos 'jid' ni 'nick'"}.
@@ -355,14 +324,10 @@
{"Occupants are allowed to query others","Los ocupantes pueden enviar peticiones a otros"}.
{"Occupants May Change the Subject","Los ocupantes pueden cambiar el Asunto"}.
{"October","Octubre"}.
{"Offline Messages","Mensajes diferidos"}.
{"Offline Messages:","Mensajes diferidos:"}.
{"OK","Aceptar"}.
{"Old Password:","Contraseña antigua:"}.
{"Online Users","Usuarios conectados"}.
{"Online Users:","Usuarios conectados:"}.
{"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 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/>"}.
@@ -382,10 +347,8 @@
{"Organization Unit","Unidad de la organización"}.
{"Other Modules Available:","Otros módulos disponibles:"}.
{"Outgoing s2s Connections","Conexiones S2S salientes"}.
{"Outgoing s2s Connections:","Conexiones S2S salientes:"}.
{"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","Paquete"}.
{"Participant ID","ID del Participante"}.
{"Participant","Participante"}.
{"Password Verification","Verificación de la contraseña"}.
@@ -395,7 +358,6 @@
{"Path to Dir","Ruta al directorio"}.
{"Path to File","Ruta al fichero"}.
{"Payload semantic type information","Información sobre el tipo semántico de la carga útil"}.
{"Pending","Pendiente"}.
{"Period: ","Periodo: "}.
{"Persist items to storage","Persistir elementos al almacenar"}.
{"Persistent","Permanente"}.
@@ -429,21 +391,16 @@
{"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"}.
{"Register an XMPP account","Registrar una cuenta XMPP"}.
{"Registered Users","Usuarios registrados"}.
{"Registered Users:","Usuarios registrados:"}.
{"Register","Registrar"}.
{"Remote copy","Copia remota"}.
{"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","Borrar"}.
{"Replaced by new connection","Reemplazado por una nueva conexión"}.
{"Request has timed out","La petición ha caducado"}.
{"Request is ignored","La petición ha sido ignorada"}.
{"Requested role","Rol solicitado"}.
{"Resources","Recursos"}.
{"Restart Service","Reiniciar el servicio"}.
{"Restart","Reiniciar"}.
{"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 immediately:","Restaurar inmediatamente copia de seguridad binaria:"}.
@@ -459,20 +416,15 @@
{"Room terminates","Cerrando la sala"}.
{"Room title","Título de la sala"}.
{"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:","Lista de contactos:"}.
{"RPC Call Error","Error en la llamada RPC"}.
{"Running Nodes","Nodos funcionando"}.
{"~s invites you to the room ~s","~s te invita a la sala ~s"}.
{"Saturday","Sábado"}.
{"Script check","Comprobación de script"}.
{"Search from the date","Buscar desde la fecha"}.
{"Search Results for ","Buscar resultados por "}.
{"Search the text","Buscar el texto"}.
{"Search until the date","Buscar hasta la fecha"}.
{"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","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"}.
@@ -496,23 +448,17 @@
{"Stanza id is not valid","El identificador de la estrofa no es válido"}.
{"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"}.
{"Statistics of ~p","Estadísticas de ~p"}.
{"Statistics","Estadísticas"}.
{"Stop","Detener"}.
{"Stopped Nodes","Nodos detenidos"}.
{"Storage Type","Tipo de almacenamiento"}.
{"Store binary backup:","Guardar copia de seguridad binaria:"}.
{"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 not enabled","No está activada la administración de la conexión"}.
{"Subject","Asunto"}.
{"Submit","Enviar"}.
{"Submitted","Enviado"}.
{"Subscriber Address","Dirección del subscriptor"}.
{"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"}.
{"Subscriptions are not allowed","Las subscripciones no están permitidas"}.
{"Subscription","Subscripción"}.
{"Sunday","Domingo"}.
{"Text associated with a picture","Texto asociado con una imagen"}.
{"Text associated with a sound","Texto asociado con un sonido"}.
@@ -575,7 +521,6 @@
{"Thursday","Jueves"}.
{"Time delay","Retraso temporal"}.
{"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 ~ts","A ~ts"}.
{"Token TTL","Token TTL"}.
@@ -588,13 +533,7 @@
{"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 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"}.
{"Transactions Aborted:","Transacciones abortadas:"}.
{"Transactions Committed:","Transacciones finalizadas:"}.
{"Transactions Logged:","Transacciones registradas:"}.
{"Transactions Restarted:","Transacciones reiniciadas:"}.
{"~ts's Offline Messages Queue","Cola de mensajes diferidos de ~ts"}.
{"Tuesday","Martes"}.
{"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}.
@@ -605,19 +544,13 @@
{"Uninstall","Desinstalar"}.
{"Unregister an XMPP account","Borrar una cuenta XMPP"}.
{"Unregister","Borrar"}.
{"Unselect All","Deseleccionar todo"}.
{"Unsupported <index/> element","Elemento <index/> no soportado"}.
{"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 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","Actualizar Especificaciones"}.
{"Update","Actualizar"}.
{"Upgrade","Actualizar"}.
{"Uptime:","Tiempo desde el inicio:"}.
{"URL for Archived Discussion Logs","URL del registro de discusiones archivadas"}.
{"User already exists","El usuario ya existe"}.
{"User JID","Jabber ID del usuario"}.
@@ -632,7 +565,6 @@
{"Users Last Activity","Última actividad de los usuarios"}.
{"Users","Usuarios"}.
{"User","Usuario"}.
{"Validate","Validar"}.
{"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 datetime string","El valor de '~s' debería ser una fecha"}.
@@ -640,8 +572,6 @@
{"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"}.
{"View joined MIX channels","Ver los canales MIX unidos"}.
{"View Queue","Ver Cola"}.
{"View Roster","Ver Lista de contactos"}.
{"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 send messages to all occupants","Los visitantes no pueden enviar mensajes a todos los ocupantes"}.
-65
View File
@@ -15,8 +15,6 @@
{"Access model","Modèle daccès"}.
{"Account doesn't exist","Le compte nexiste pas"}.
{"Action on user","Action sur l'utilisateur"}.
{"Add Jabber ID","Ajouter un Jabber ID"}.
{"Add New","Ajouter"}.
{"Add User","Ajouter un utilisateur"}.
{"Administration of ","Administration de "}.
{"Administration","Administration"}.
@@ -90,29 +88,20 @@
{"Conference room does not exist","Le salon de discussion n'existe pas"}.
{"Configuration of room ~s","Configuration pour le salon ~s"}.
{"Configuration","Configuration"}.
{"Connected Resources:","Ressources connectées :"}.
{"Contact Addresses (normally, room owner or owners)","Adresses de contact (normalement les administrateurs du salon)"}.
{"Country","Pays"}.
{"CPU Time:","Temps CPU :"}.
{"Current Discussion Topic","Sujet de discussion courant"}.
{"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","Base de données"}.
{"December","Décembre"}.
{"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","Supprimer le message du jour"}.
{"Delete Selected","Suppression des éléments sélectionnés"}.
{"Delete table","Supprimer la table"}.
{"Delete User","Supprimer l'utilisateur"}.
{"Deliver event notifications","Envoyer les notifications d'événement"}.
{"Deliver payloads with event notifications","Inclure le contenu du message avec la notification"}.
{"Description:","Description :"}.
{"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."}.
{"Dump Backup to Text File at ","Enregistrer la sauvegarde dans un fichier texte sur "}.
{"Dump to Text File","Sauvegarder dans un fichier texte"}.
@@ -127,7 +116,6 @@
{"ejabberd vCard module","Module vCard ejabberd"}.
{"ejabberd Web Admin","Console Web d'administration de ejabberd"}.
{"ejabberd","ejabberd"}.
{"Elements","Éléments"}.
{"Email Address","Adresse courriel"}.
{"Email","Courriel"}.
{"Enable logging","Activer l'archivage"}.
@@ -141,7 +129,6 @@
{"Enter path to text file","Entrez le chemin vers le fichier texte"}.
{"Enter the text you see","Tapez le texte que vous voyez"}.
{"Erlang XMPP Server","Serveur XMPP Erlang"}.
{"Error","Erreur"}.
{"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 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"}.
{"Friday","Vendredi"}.
{"From ~ts","De ~ts"}.
{"From","De"}.
{"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 Name","Nom complet"}.
@@ -169,13 +155,9 @@
{"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 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"}.
{"Given Name","Nom"}.
{"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 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"}.
@@ -183,7 +165,6 @@
{"has been kicked","a été expulsé"}.
{"Hats limit exceeded","La limite a été dépassée"}.
{"Host unknown","Serveur inconnu"}.
{"Host","Serveur"}.
{"HTTP File Upload","Téléversement de fichier HTTP"}.
{"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."}.
@@ -197,7 +178,6 @@
{"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 message type","Mauvais type de message"}.
{"Incoming s2s Connections:","Connexions s2s entrantes :"}.
{"Incorrect CAPTCHA submit","Entrée CAPTCHA incorrecte"}.
{"Incorrect data form","Formulaire incorrect"}.
{"Incorrect password","Mot de passe incorrect"}.
@@ -221,15 +201,12 @@
{"July","Juillet"}.
{"June","Juin"}.
{"Just created","Vient d'être créé"}.
{"Label:","Étiquette :"}.
{"Last Activity","Dernière activité"}.
{"Last login","Dernière connexion"}.
{"Last message","Dernier message"}.
{"Last month","Dernier mois"}.
{"Last year","Dernière année"}.
{"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 room CAPTCHA protected","Protéger le salon par un CAPTCHA"}.
{"Make room members-only","Réserver le salon aux membres uniquement"}.
@@ -246,9 +223,7 @@
{"Maximum Number of Occupants","Nombre maximal d'occupants"}.
{"May","Mai"}.
{"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é."}.
{"Memory","Mémoire"}.
{"Message body","Corps du message"}.
{"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"}.
@@ -259,14 +234,12 @@
{"Moderator privileges required","Les droits de modérateur sont nécessaires"}.
{"Moderator","Modérateur"}.
{"Moderators Only","Modérateurs uniquement"}.
{"Modified modules","Modules mis à jour"}.
{"Module failed to handle the query","Échec de traitement de la demande"}.
{"Monday","Lundi"}.
{"Multicast","Multidiffusion"}.
{"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"}.
{"Name","Nom"}.
{"Name:","Nom :"}.
{"Natural Language for Room Discussions","Langue naturelle pour les discussions en salle"}.
{"Natural-Language Room Name","Nom de la salle en langue naturelle"}.
{"Neither 'jid' nor 'nick' attribute found","Attribut 'jid' ou 'nick' absent"}.
@@ -329,14 +302,10 @@
{"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"}.
{"October","Octobre"}.
{"Offline Messages","Messages en attente"}.
{"Offline Messages:","Messages hors ligne :"}.
{"OK","OK"}.
{"Old Password:","Ancien mot de passe :"}.
{"Online Users:","Utilisateurs connectés :"}.
{"Online Users","Utilisateurs 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 <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"}.
@@ -351,9 +320,7 @@
{"Organization Name","Nom de l'organisation"}.
{"Organization Unit","Unité de l'organisation"}.
{"Outgoing s2s Connections","Connexions s2s sortantes"}.
{"Outgoing s2s Connections:","Connexions s2s sortantes :"}.
{"Owner privileges required","Les droits de propriétaire sont nécessaires"}.
{"Packet","Paquet"}.
{"Participant","Participant"}.
{"Password Verification","Vérification du mot de passe"}.
{"Password Verification:","Vérification du mot de passe :"}.
@@ -361,7 +328,6 @@
{"Password:","Mot de passe :"}.
{"Path to Dir","Chemin vers le répertoire"}.
{"Path to File","Chemin vers le fichier"}.
{"Pending","En suspens"}.
{"Period: ","Période : "}.
{"Persist items to storage","Stockage persistant des éléments"}.
{"Persistent","Persistant"}.
@@ -393,20 +359,15 @@
{"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"}.
{"Register an XMPP account","Inscrire un compte XMPP"}.
{"Registered Users","Utilisateurs enregistrés"}.
{"Registered Users:","Utilisateurs enregistrés :"}.
{"Register","Enregistrer"}.
{"Remote copy","Copie distante"}.
{"Remove All Offline Messages","Effacer tous les messages hors ligne"}.
{"Remove User","Supprimer l'utilisateur"}.
{"Remove","Supprimer"}.
{"Replaced by new connection","Remplacé par une nouvelle connexion"}.
{"Request has timed out","La demande a expiré"}.
{"Request is ignored","La demande est ignorée"}.
{"Requested role","Rôle demandé"}.
{"Resources","Ressources"}.
{"Restart Service","Redémarrer le service"}.
{"Restart","Redémarrer"}.
{"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 immediately:","Restauration immédiate d'une sauvegarde binaire :"}.
@@ -418,19 +379,14 @@
{"Room Occupants","Occupants du salon"}.
{"Room title","Titre du salon"}.
{"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:","Liste de contacts :"}.
{"RPC Call Error","Erreur d'appel RPC"}.
{"Running Nodes","Nœuds actifs"}.
{"~s invites you to the room ~s","~s vous invite dans la salle de discussion ~s"}.
{"Saturday","Samedi"}.
{"Script check","Validation du script"}.
{"Search Results for ","Résultats de recherche pour "}.
{"Search the text","Recherche le texte"}.
{"Search until the date","Rechercher jusqu’à la date"}.
{"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","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"}.
@@ -450,20 +406,14 @@
{"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"}.
{"Stanza ID","Identifiant Stanza"}.
{"Statistics of ~p","Statistiques de ~p"}.
{"Statistics","Statistiques"}.
{"Stop","Arrêter"}.
{"Stopped Nodes","Nœuds arrêtés"}.
{"Storage Type","Type de stockage"}.
{"Store binary backup:","Sauvegarde binaire :"}.
{"Store plain text backup:","Sauvegarde texte :"}.
{"Stream management is already enabled","La gestion des flux est déjà activée"}.
{"Subject","Sujet"}.
{"Submit","Soumettre"}.
{"Submitted","Soumis"}.
{"Subscriber Address","Adresse de l'abonné"}.
{"Subscribers may publish","Les souscripteurs peuvent publier"}.
{"Subscription","Abonnement"}.
{"Subscriptions are not allowed","Les abonnement ne sont pas autorisés"}.
{"Sunday","Dimanche"}.
{"Text associated with a picture","Texte associé à une image"}.
@@ -512,10 +462,8 @@
{"Thursday","Jeudi"}.
{"Time delay","Délais"}.
{"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 ~ts","À ~ts"}.
{"To","A"}.
{"Token TTL","Jeton TTL"}.
{"Too many active bytestreams","Trop de flux SOCKS5 actifs"}.
{"Too many CAPTCHA requests","Trop de requêtes CAPTCHA"}.
@@ -525,12 +473,7 @@
{"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 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"}.
{"Transactions Aborted:","Transactions annulées :"}.
{"Transactions Committed:","Transactions commitées :"}.
{"Transactions Logged:","Transactions journalisées :"}.
{"Transactions Restarted:","Transactions redémarrées :"}.
{"Tuesday","Mardi"}.
{"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"}.
@@ -539,16 +482,10 @@
{"Unexpected error condition: ~p","Condition derreur inattendue : ~p"}.
{"Unregister an XMPP account","Annuler lenregistrement dun compte XMPP"}.
{"Unregister","Désinscrire"}.
{"Unselect All","Tout désélectionner"}.
{"Unsupported <index/> element","Elément <index/> non supporté"}.
{"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 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"}.
{"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"}.
{"User already exists","L'utilisateur existe déjà"}.
{"User JID","JID de l'utilisateur"}.
@@ -563,14 +500,12 @@
{"Users Last Activity","Dernière activité des utilisateurs"}.
{"Users","Utilisateurs"}.
{"User","Utilisateur"}.
{"Validate","Valider"}.
{"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 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 'set' of 'type' attribute is not allowed","La valeur de l'attribut 'type' ne peut être 'set'"}.
{"vCard User Search","Recherche dans l'annnuaire"}.
{"View Queue","Afficher la file dattente"}.
{"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 send messages to all occupants","Les visiteurs ne sont pas autorisés à envoyer des messages à tout les occupants"}.
-53
View File
@@ -9,8 +9,6 @@
{"Accept","Aceptar"}.
{"Access denied by service policy","Acceso denegado pola política do servizo"}.
{"Action on user","Acción no usuario"}.
{"Add Jabber ID","Engadir ID Jabber"}.
{"Add New","Engadir novo"}.
{"Add User","Engadir usuario"}.
{"Administration of ","Administración de "}.
{"Administration","Administración"}.
@@ -60,22 +58,17 @@
{"Conference room does not exist","A sala de conferencias non existe"}.
{"Configuration of room ~s","Configuración para a sala ~s"}.
{"Configuration","Configuración"}.
{"Connected Resources:","Recursos conectados:"}.
{"Country","País"}.
{"CPU Time:","Tempo da CPU:"}.
{"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","Base de datos"}.
{"December","Decembro"}.
{"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","Borrar mensaxe do dia"}.
{"Delete Selected","Eliminar os seleccionados"}.
{"Delete User","Borrar usuario"}.
{"Deliver event notifications","Entregar 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"}.
{"Dump Backup to Text File at ","Exporta copia de seguridade a ficheiro de texto en "}.
{"Dump to Text File","Exportar a ficheiro de texto"}.
@@ -87,7 +80,6 @@
{"ejabberd SOCKS5 Bytestreams module","Módulo SOCKS5 Bytestreams para ejabberd"}.
{"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","ejabberd Administrador Web"}.
{"Elements","Elementos"}.
{"Email","Email"}.
{"Enable logging","Gardar históricos"}.
{"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 text file","Introduce ruta ao ficheiro de texto"}.
{"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"}.
{"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):"}.
@@ -115,24 +106,19 @@
{"February","Febreiro"}.
{"File larger than ~w bytes","O ficheiro é maior que ~w bytes"}.
{"Friday","Venres"}.
{"From","De"}.
{"Full Name","Nome completo"}.
{"Get Number of Online Users","Ver número de usuarios conectados"}.
{"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 Password","Ver contrasinal de usuario"}.
{"Get User Statistics","Ver estatísticas de usuario"}.
{"Given Name","Nome"}.
{"Grant voice to this person?","¿Conceder voz a esta persoa?"}.
{"Group","Grupo"}.
{"Groups","Grupos"}.
{"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 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","foi expulsado"}.
{"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."}.
{"Import Directory","Importar directorio"}.
{"Import File","Importar ficheiro"}.
@@ -144,7 +130,6 @@
{"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 message type","Tipo de mensaxe incorrecta"}.
{"Incoming s2s Connections:","Conexións S2S saíntes:"}.
{"Incorrect CAPTCHA submit","O CAPTCHA proporcionado é incorrecto"}.
{"Incorrect data form","Formulario de datos incorrecto"}.
{"Incorrect password","Contrasinal incorrecta"}.
@@ -169,8 +154,6 @@
{"Last month","Último mes"}.
{"Last year","Último ano"}.
{"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 room CAPTCHA protected","Protexer a sala con CAPTCHA"}.
{"Make room members-only","Sala só para membros"}.
@@ -184,21 +167,17 @@
{"Maximum Number of Occupants","Número máximo de ocupantes"}.
{"May","Maio"}.
{"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 not found in forwarded payload","Mensaxe non atopada no contido reenviado"}.
{"Middle Name","Segundo nome"}.
{"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","Moderator"}.
{"Modified modules","Módulos Modificados"}.
{"Module failed to handle the query","O módulo non puido xestionar a consulta"}.
{"Monday","Luns"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Salas de Charla"}.
{"Name","Nome"}.
{"Name:","Nome:"}.
{"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'"}.
{"Never","Nunca"}.
@@ -247,12 +226,9 @@
{"Number of online users","Número de usuarios conectados"}.
{"Number of registered users","Número de usuarios rexistrados"}.
{"October","Outubro"}.
{"Offline Messages","Mensaxes diferidas"}.
{"Offline Messages:","Mensaxes sen conexión:"}.
{"OK","Aceptar"}.
{"Old Password:","Contrasinal anterior:"}.
{"Online Users","Usuarios conectados"}.
{"Online Users:","Usuarios conectados:"}.
{"Online","Conectado"}.
{"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/>"}.
@@ -267,9 +243,7 @@
{"Organization Name","Nome 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:"}.
{"Owner privileges required","Requírense privilexios de propietario da sala"}.
{"Packet","Paquete"}.
{"Participant","Participante"}.
{"Password Verification","Verificación da contrasinal"}.
{"Password Verification:","Verificación da Contrasinal:"}.
@@ -277,7 +251,6 @@
{"Password:","Contrasinal:"}.
{"Path to Dir","Ruta ao directorio"}.
{"Path to File","Ruta ao ficheiro"}.
{"Pending","Pendente"}.
{"Period: ","Periodo: "}.
{"Persist items to storage","Persistir elementos ao almacenar"}.
{"Ping query is incorrect","A solicitude de Ping é incorrecta"}.
@@ -296,17 +269,12 @@
{"RAM copy","Copia en RAM"}.
{"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"}.
{"Registered Users","Usuarios rexistrados"}.
{"Registered Users:","Usuarios rexistrados:"}.
{"Register","Rexistrar"}.
{"Remote copy","Copia remota"}.
{"Remove All Offline Messages","Borrar Todas as Mensaxes Sen conexión"}.
{"Remove User","Eliminar usuario"}.
{"Remove","Borrar"}.
{"Replaced by new connection","Substituído por unha nova conexión"}.
{"Resources","Recursos"}.
{"Restart Service","Reiniciar o servizo"}.
{"Restart","Reiniciar"}.
{"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 immediately:","Restaurar inmediatamente copia de seguridade binaria:"}.
@@ -320,10 +288,8 @@
{"Room title","Título da sala"}.
{"Roster groups allowed to subscribe","Lista de grupos autorizados a subscribir"}.
{"Roster size","Tamaño da lista de contactos"}.
{"RPC Call Error","Erro na chamada RPC"}.
{"Running Nodes","Nodos funcionando"}.
{"Saturday","Sábado"}.
{"Script check","Comprobación de script"}.
{"Search Results for ","Buscar resultados por "}.
{"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"}.
@@ -341,19 +307,13 @@
{"Specify the access model","Especifica o modelo de acceso"}.
{"Specify the event message type","Especifica o tipo da mensaxe de evento"}.
{"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"}.
{"Storage Type","Tipo de almacenamento"}.
{"Store binary backup:","Gardar copia de seguridade binaria:"}.
{"Store plain text backup:","Gardar copia de seguridade en texto plano:"}.
{"Subject","Asunto"}.
{"Submit","Enviar"}.
{"Submitted","Enviado"}.
{"Subscriber Address","Dirección do subscriptor"}.
{"Subscriptions are not allowed","Non se permiten subscricións"}.
{"Subscription","Subscripción"}.
{"Sunday","Domingo"}.
{"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"}.
@@ -372,7 +332,6 @@
{"This room is not anonymous","Sala non anónima"}.
{"Thursday","Xoves"}.
{"Time delay","Atraso temporal"}.
{"Time","Data"}.
{"To register, visit ~s","Para rexistrarse, visita ~s"}.
{"Token TTL","Token TTL"}.
{"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 unacked stanzas","Demasiadas mensaxes sen recoñecer recibilos"}.
{"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"}.
{"Transactions Aborted:","Transaccións abortadas:"}.
{"Transactions Committed:","Transaccións finalizadas:"}.
{"Transactions Logged:","Transaccións rexistradas:"}.
{"Transactions Restarted:","Transaccións reiniciadas:"}.
{"Tuesday","Martes"}.
{"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"}.
@@ -398,11 +351,6 @@
{"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 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 JID","Jabber ID do usuario"}.
{"User (jid)","Usuario (jid)"}.
@@ -414,7 +362,6 @@
{"Users Last Activity","Última actividade dos usuarios"}.
{"Users","Usuarios"}.
{"User","Usuario"}.
{"Validate","Validar"}.
{"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 datetime string","O valor de '~s' debería ser unha data"}.
-53
View File
@@ -9,8 +9,6 @@
{"Accept","קבל"}.
{"Access denied by service policy","גישה נדחתה על ידי פוליסת שירות"}.
{"Action on user","פעולה על משתמש"}.
{"Add Jabber ID","הוסף מזהה Jabber"}.
{"Add New","הוסף חדש"}.
{"Add User","הוסף משתמש"}.
{"Administration of ","ניהול של "}.
{"Administration","הנהלה"}.
@@ -58,22 +56,17 @@
{"Conference room does not exist","חדר ועידה לא קיים"}.
{"Configuration of room ~s","תצורת חדר ~s"}.
{"Configuration","תצורה"}.
{"Connected Resources:","משאבים מחוברים:"}.
{"Country","ארץ"}.
{"CPU Time:","זמן מחשב (CPU):"}.
{"Database failure","כשל מסד נתונים"}.
{"Database Tables at ~p","טבלאות מסד נתונים אצל ~p"}.
{"Database Tables Configuration at ","תצורת טבלאות מסד נתונים אצל "}.
{"Database","מסד נתונים"}.
{"December","דצמבר"}.
{"Default users as participants","משתמשים שגרתיים כמשתתפים"}.
{"Delete message of the day on all hosts","מחק את בשורת היום בכל המארחים"}.
{"Delete message of the day","מחק את בשורת היום"}.
{"Delete Selected","מחק נבחרות"}.
{"Delete User","מחק משתמש"}.
{"Deliver event notifications","מסור התראות אירוע"}.
{"Deliver payloads with event notifications","מסור מטעני ייעוד (מטע״ד) יחד עם התראות אירוע"}.
{"Description:","תיאור:"}.
{"Disc only copy","העתק של תקליטור בלבד"}.
{"Dump Backup to Text File at ","השלך גיבוי לקובץ טקסט אצל "}.
{"Dump to Text File","השלך לקובץ טקסט"}.
@@ -85,7 +78,6 @@
{"ejabberd SOCKS5 Bytestreams module","מודול SOCKS5 Bytestreams של ejabberd"}.
{"ejabberd vCard module","מודול vCard של ejabberd"}.
{"ejabberd Web Admin","מנהל רשת ejabberd"}.
{"Elements","אלמנטים"}.
{"Email","דוא״ל"}.
{"Enable logging","אפשר רישום פעילות"}.
{"Enable message archiving","אפשר אחסון הודעות"}.
@@ -96,7 +88,6 @@
{"Enter path to jabberd14 spool file","הזן נתיב לקובץ סליל (spool file) של jabberd14"}.
{"Enter path to text file","הזן נתיב לקובץ טקסט"}.
{"Enter the text you see","הזן את הכיתוב שאתה רואה"}.
{"Error","שגיאה"}.
{"Exclude Jabber IDs from CAPTCHA challenge","הוצא כתובות Jabber מתוך אתגר CAPTCHA"}.
{"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):"}.
@@ -109,24 +100,19 @@
{"February","פברואר"}.
{"File larger than ~w bytes","קובץ גדול יותר משיעור של ~w בייטים"}.
{"Friday","יום שישי"}.
{"From","מאת"}.
{"Full Name","שם מלא"}.
{"Get Number of Online Users","השג מספר של משתמשים מקוונים"}.
{"Get Number of Registered Users","השג מספר של משתמשים רשומים"}.
{"Get User Last Login Time","השג זמן כניסה אחרון של משתמש"}.
{"Get User Password","השג סיסמת משתמש"}.
{"Get User Statistics","השג סטטיסטיקת משתמש"}.
{"Given Name","שם פרטי"}.
{"Grant voice to this person?","להעניק ביטוי לאישיות זו?"}.
{"Groups","קבוצות"}.
{"Group","קבוצה"}.
{"has been banned","נאסר/ה"}.
{"has been kicked because of a system shutdown","נבעט/ה משום כיבוי מערכת"}.
{"has been kicked because of an affiliation change","נבעט/ה משום שינוי סינוף"}.
{"has been kicked because the room has been changed to members-only","נבעט/ה משום שהחדר שונה אל חברים-בלבד"}.
{"has been kicked","נבעט/ה"}.
{"Host unknown","מארח לא ידוע"}.
{"Host","מארח"}.
{"If you don't see the CAPTCHA image here, visit the web page.","אם אינך רואה תמונת CAPTCHA כאן, בקר בעמוד רשת."}.
{"Import Directory","ייבוא מדור"}.
{"Import File","ייבוא קובץ"}.
@@ -137,7 +123,6 @@
{"Import Users from Dir at ","ייבוא משתמשים מתוך מדור אצל "}.
{"Import Users From jabberd14 Spool Files","יבא משתמשים מתוך קבצי סליל (Spool Files) של jabberd14"}.
{"Improper message type","טיפוס הודעה לא מתאים"}.
{"Incoming s2s Connections:","חיבורי s2s נכנסים:"}.
{"Incorrect CAPTCHA submit","נשלחה CAPTCHA שגויה"}.
{"Incorrect data form","טופס מידע לא תקין"}.
{"Incorrect password","מילת מעבר שגויה"}.
@@ -158,8 +143,6 @@
{"Last month","חודש אחרון"}.
{"Last year","שנה אחרונה"}.
{"leaves the room","עוזב/ת את החדר"}.
{"List of rooms","רשימה של חדרים"}.
{"Low level update script","תסריט עדכון Low level"}.
{"Make participants list public","הפוך רשימת משתתפים לפומבית"}.
{"Make room CAPTCHA protected","הפוך חדר לחדר מוגן CAPTCHA"}.
{"Make room members-only","הפוך חדר לחדר עבור חברים-בלבד"}.
@@ -173,20 +156,16 @@
{"Maximum Number of Occupants","מספר מרבי של נוכחים"}.
{"May","מאי"}.
{"Membership is required to enter this room","נדרשת חברות כדי להיכנס אל חדר זה"}.
{"Members:","חברים:"}.
{"Memory","זיכרון"}.
{"Message body","גוף הודעה"}.
{"Middle Name","שם אמצעי"}.
{"Minimum interval between voice requests (in seconds)","תדירות מינימלית בין בקשות ביטוי (בשניות)"}.
{"Moderator privileges required","נדרשות הרשאות אחראי"}.
{"Moderator","אחראי"}.
{"Modified modules","מודולים שהותאמו"}.
{"Module failed to handle the query","מודול נכשל לטפל בשאילתא"}.
{"Monday","יום שני"}.
{"Multicast","שידור מרובב"}.
{"Multi-User Chat","שיחה מרובת משתמשים"}.
{"Name","שם"}.
{"Name:","שם:"}.
{"Never","אף פעם"}.
{"New Password:","סיסמה חדשה:"}.
{"Nickname Registration at ","רישום שם כינוי אצל "}.
@@ -223,12 +202,9 @@
{"Number of online users","מספר של משתמשים מקוונים"}.
{"Number of registered users","מספר של משתמשים רשומים"}.
{"October","אוקטובר"}.
{"Offline Messages","הודעות לא מקוונות"}.
{"Offline Messages:","הודעות לא מקוונות:"}.
{"OK","אישור"}.
{"Old Password:","סיסמה ישנה:"}.
{"Online Users","משתמשים מקוונים"}.
{"Online Users:","משתמשים מקוונים:"}.
{"Online","מקוון"}.
{"Only deliver notifications to available users","מסור התראות למשתמשים זמינים בלבד"}.
{"Only <enable/> or <disable/> tags are allowed","רק תגיות <enable/> או <disable/> הינן מורשות"}.
@@ -242,9 +218,7 @@
{"Organization Name","שם ארגון"}.
{"Organization Unit","יחידת איגוד"}.
{"Outgoing s2s Connections","חיבורי s2s יוצאים"}.
{"Outgoing s2s Connections:","חיבורי s2s יוצאים:"}.
{"Owner privileges required","נדרשות הרשאות בעלים"}.
{"Packet","חבילת מידע"}.
{"Participant","משתתף"}.
{"Password Verification","אימות סיסמה"}.
{"Password Verification:","אימות סיסמה:"}.
@@ -252,7 +226,6 @@
{"Password:","סיסמה:"}.
{"Path to Dir","נתיב למדור"}.
{"Path to File","נתיב לקובץ"}.
{"Pending","ממתינות"}.
{"Period: ","משך זמן: "}.
{"Persist items to storage","פריטים קבועים לאחסון"}.
{"Ping query is incorrect","שאילתת פינג הינה שגויה"}.
@@ -270,17 +243,12 @@
{"RAM copy","העתק RAM"}.
{"Really delete message of the day?","באמת למחוק את בשורת היום?"}.
{"Recipient is not in the conference room","מקבל אינו מצוי בחדר הועידה"}.
{"Registered Users","משתמשים רשומים"}.
{"Registered Users:","משתמשים רשומים:"}.
{"Register","הרשם"}.
{"Remote copy","העתק מרוחק"}.
{"Remove All Offline Messages","הסר את כל ההודעות הלא מקוונות"}.
{"Remove User","הסר משתמש"}.
{"Remove","הסר"}.
{"Replaced by new connection","הוחלף בחיבור חדש"}.
{"Resources","משאבים"}.
{"Restart Service","אתחל שירות"}.
{"Restart","אתחל"}.
{"Restore Backup from File at ","שחזר גיבוי מתוך קובץ אצל "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","שחזר גיבוי בינארי לאחר האתחול הבא של ejabberd (מצריך פחות זיכרון):"}.
{"Restore binary backup immediately:","שחזר גיבוי בינארי לאלתר:"}.
@@ -294,10 +262,8 @@
{"Room title","כותרת חדר"}.
{"Roster groups allowed to subscribe","קבוצות רשימה מורשות להירשם"}.
{"Roster size","גודל רשימה"}.
{"RPC Call Error","שגיאת קריאת RPC"}.
{"Running Nodes","צמתים מורצים"}.
{"Saturday","יום שבת"}.
{"Script check","בדיקת תסריט"}.
{"Search Results for ","תוצאות חיפוש עבור "}.
{"Search users in ","חיפוש משתמשים אצל "}.
{"Send announcement to all online users on all hosts","שלח בשורה לכל המשתמשים המקוונים בכל המארחים"}.
@@ -315,19 +281,13 @@
{"Specify the access model","ציין מודל גישה"}.
{"Specify the event message type","ציין טיפוס הודעת אירוע"}.
{"Specify the publisher model","ציין מודל פרסום"}.
{"Statistics of ~p","סטטיסטיקות של ~p"}.
{"Statistics","סטטיסטיקה"}.
{"Stopped Nodes","צמתים שנפסקו"}.
{"Stop","הפסק"}.
{"Storage Type","טיפוס אחסון"}.
{"Store binary backup:","אחסן גיבוי בינארי:"}.
{"Store plain text backup:","אחסן גיבוי טקסט גלוי (plain text):"}.
{"Subject","נושא"}.
{"Submitted","נשלח"}.
{"Submit","שלח"}.
{"Subscriber Address","כתובת מנוי"}.
{"Subscriptions are not allowed","הרשמות אינן מורשות"}.
{"Subscription","הרשמה"}.
{"Sunday","יום ראשון"}.
{"That nickname is already in use by another occupant","שם כינוי זה כבר מצוי בשימוש על ידי נוכח אחר"}.
{"That nickname is registered by another person","שם כינוי זה הינו רשום על ידי מישהו אחר"}.
@@ -341,7 +301,6 @@
{"This room is not anonymous","חדר זה אינו אנונימי"}.
{"Thursday","יום חמישי"}.
{"Time delay","זמן שיהוי"}.
{"Time","זמן"}.
{"To register, visit ~s","כדי להירשם, בקרו ~s"}.
{"Token TTL","סימן TTL"}.
{"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 unacked stanzas","יותר מדי סטנזות בלי אישורי קבלה"}.
{"Too many users in this conference","יותר מדי משתמשים בועידה זו"}.
{"Total rooms","חדרים סה״כ"}.
{"To","לכבוד"}.
{"Traffic rate limit is exceeded","מגבלת שיעור תעבורה נחצתה"}.
{"Transactions Aborted:","טרנזקציות שבוטלו:"}.
{"Transactions Committed:","טרנזקציות שבוצעו:"}.
{"Transactions Logged:","טרנזקציות שנרשמו:"}.
{"Transactions Restarted:","טרנזקציות שהותחלו מחדש:"}.
{"Tuesday","יום שלישי"}.
{"Unable to generate a CAPTCHA","אין אפשרות להפיק CAPTCHA"}.
{"Unauthorized","לא מורשה"}.
@@ -363,11 +316,6 @@
{"Unregister","בטל רישום"}.
{"Update message of the day (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 JID","JID משתמש"}.
{"User (jid)","משתמש (jid)"}.
@@ -379,7 +327,6 @@
{"Users Last Activity","פעילות משתמשים אחרונה"}.
{"Users","משתמשים"}.
{"User","משתמש"}.
{"Validate","הענק תוקף"}.
{"Value of '~s' should be boolean","ערך של '~s' צריך להיות boolean"}.
{"Value of '~s' should be datetime string","ערך של '~s' צריך להיות מחרוזת datetime"}.
{"Value of '~s' should be integer","ערך של '~s' צריך להיות integer"}.
-58
View File
@@ -10,8 +10,6 @@
{"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"}.
{"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"}.
{"Administration of ","Adminisztrációja ennek: "}.
{"Administration","Adminisztráció"}.
@@ -66,22 +64,15 @@
{"Conference room does not exist","A konferenciaszoba nem létezik"}.
{"Configuration of room ~s","A(z) ~s szoba beállítása"}.
{"Configuration","Beállítás"}.
{"Connected Resources:","Kapcsolódott erőforrások:"}.
{"Country","Ország"}.
{"CPU Time:","Processzoridő:"}.
{"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","Adatbázis"}.
{"December","december"}.
{"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","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"}.
{"Description:","Leírás:"}.
{"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 to Text File","Kiírás szövegfájlba"}.
@@ -95,7 +86,6 @@
{"ejabberd vCard module","ejabberd vCard modul"}.
{"ejabberd Web Admin","ejabberd webes adminisztráció"}.
{"ejabberd","ejabberd"}.
{"Elements","Elemek"}.
{"Email","E-mail"}.
{"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"}.
@@ -106,7 +96,6 @@
{"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 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 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):"}.
@@ -121,24 +110,19 @@
{"File larger than ~w bytes","A fájl nagyobb ~w bájtnál"}.
{"Friday","péntek"}.
{"From ~ts","Feladó: ~ts"}.
{"From","Feladó"}.
{"Full Name","Teljes név"}.
{"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 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 Password","Felhasználó jelszavának lekérése"}.
{"Get User Statistics","Felhasználói statisztikák lekérése"}.
{"Given Name","Keresztnév"}.
{"Group","Csoport"}.
{"Groups","Csoportok"}.
{"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 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","ki lett rúgva"}.
{"Host unknown","Gép ismeretlen"}.
{"Host","Gép"}.
{"HTTP File Upload","HTTP fájlfeltöltés"}.
{"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."}.
@@ -152,7 +136,6 @@
{"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 message type","Helytelen üzenettípus"}.
{"Incoming s2s Connections:","Bejövő s2s kapcsolatok:"}.
{"Incorrect CAPTCHA submit","Hibás CAPTCHA beküldés"}.
{"Incorrect data form","Hibás adatűrlap"}.
{"Incorrect password","Hibás jelszó"}.
@@ -182,8 +165,6 @@
{"Last month","Múlt hónap"}.
{"Last year","Múlt év"}.
{"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 room CAPTCHA protected","Szoba CAPTCHA-védetté tétele"}.
{"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"}.
{"May","május"}.
{"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 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"}.
{"Middle Name","Középső név"}.
{"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"}.
{"Monday","hétfő"}.
{"Multicast","Csoportcímzés"}.
{"Multi-User Chat","Többfelhasználós csevegés"}.
{"Name","Név"}.
{"Name:","Név:"}.
{"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ó"}.
{"Never","Soha"}.
@@ -259,12 +236,9 @@
{"Number of online users","Elérhető felhasználók száma"}.
{"Number of registered users","Regisztrált felhasználók száma"}.
{"October","október"}.
{"Offline Messages","Kapcsolat nélküli üzenetek"}.
{"Offline Messages:","Kapcsolat nélküli üzenetek:"}.
{"OK","Rendben"}.
{"Old Password:","Régi jelszó:"}.
{"Online Users","Elérhető felhasználók"}.
{"Online Users:","Elérhető felhasználók:"}.
{"Online","Elérhető"}.
{"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"}.
@@ -278,17 +252,14 @@
{"Organization Name","Szervezet neve"}.
{"Organization Unit","Szervezeti egység"}.
{"Outgoing s2s Connections","Kimenő s2s kapcsolatok"}.
{"Outgoing s2s Connections:","Kimenő s2s kapcsolatok:"}.
{"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","Csomag"}.
{"Password Verification","Jelszó ellenőrzése"}.
{"Password Verification:","Jelszó ellenőrzése:"}.
{"Password","Jelszó"}.
{"Password:","Jelszó:"}.
{"Path to Dir","Útvonal a könyvtárhoz"}.
{"Path to File","Útvonal a fájlhoz"}.
{"Pending","Függőben"}.
{"Period: ","Időszak: "}.
{"Ping query is incorrect","A lekérdezés pingelése hibás"}.
{"Ping","Ping"}.
@@ -310,19 +281,14 @@
{"RAM copy","RAM másolás"}.
{"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"}.
{"Registered Users","Regisztrált felhasználók"}.
{"Registered Users:","Regisztrált felhasználók:"}.
{"Register","Regisztráció"}.
{"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","Eltávolítás"}.
{"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 is ignored","A kérés mellőzve lett"}.
{"Resources","Erőforrások"}.
{"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 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:"}.
@@ -334,15 +300,11 @@
{"Room Occupants","Szoba résztvevői"}.
{"Room terminates","Szoba megszűnik"}.
{"Room title","Szoba címe"}.
{"Roster of ~ts","~ts névsora"}.
{"Roster size","Névsor mérete"}.
{"RPC Call Error","RPC hívási hiba"}.
{"Running Nodes","Futó csomópontok"}.
{"Saturday","szombat"}.
{"Script check","Parancsfájl-ellenőrzés"}.
{"Search Results for ","Keresési eredménye ennek: "}.
{"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","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"}.
@@ -357,19 +319,13 @@
{"Show Ordinary Table","Szokásos táblázat megjelenítése"}.
{"Shut Down Service","Szolgáltatás leállítása"}.
{"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"}.
{"Storage Type","Tárolótípus"}.
{"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:"}.
{"Stream management is already enabled","A folyamkezelés már engedélyezve van"}.
{"Stream management is not enabled","A folyamkezelés nincs engedélyezve"}.
{"Subject","Tárgy"}.
{"Submit","Elküldés"}.
{"Submitted","Elküldve"}.
{"Subscription","Feliratkozás"}.
{"Subscriptions are not allowed","Feliratkozások nem engedélyezettek"}.
{"Sunday","vasárnap"}.
{"That nickname is already in use by another occupant","Ezt a becenevet már használja egy másik résztvevő"}.
@@ -394,10 +350,8 @@
{"Thursday","csütörtök"}.
{"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"}.
{"Time","Idő"}.
{"To register, visit ~s","Regisztráláshoz látogassa meg ezt az oldalt: ~s"}.
{"To ~ts","Címzett: ~ts"}.
{"To","Címzett"}.
{"Token TTL","Token élettartama"}.
{"Too many active bytestreams","Túl sok aktív bájtfolyam"}.
{"Too many CAPTCHA requests","Túl sok CAPTCHA kérés"}.
@@ -408,12 +362,7 @@
{"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 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"}.
{"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"}.
{"Tuesday","kedd"}.
{"Unable to generate a CAPTCHA","Nem lehet előállítani CAPTCHA-t"}.
@@ -422,16 +371,10 @@
{"Unexpected action","Váratlan művelet"}.
{"Unexpected error condition: ~p","Váratlan hibafeltétel: ~p"}.
{"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 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 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 (jid)","Felhasználó (JID)"}.
{"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 Last Activity","Felhasználók utolsó tevékenysége"}.
{"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 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"}.
-62
View File
@@ -15,8 +15,6 @@
{"Access model","Model akses"}.
{"Account doesn't exist","Akun tidak ada"}.
{"Action on user","Tindakan pada pengguna"}.
{"Add Jabber ID","Tambah Jabber ID"}.
{"Add New","Tambah Baru"}.
{"Add User","Tambah Pengguna"}.
{"Administration of ","Administrasi "}.
{"Administration","Administrasi"}.
@@ -87,28 +85,20 @@
{"Conference room does not exist","Ruang Konferensi tidak ada"}.
{"Configuration of room ~s","Pengaturan ruangan ~s"}.
{"Configuration","Pengaturan"}.
{"Connected Resources:","Sumber Daya Terhubung:"}.
{"Contact Addresses (normally, room owner or owners)","Alamat Kontak (biasanya, pemilik atau pemilik kamar)"}.
{"Country","Negara"}.
{"CPU Time:","Waktu CPU:"}.
{"Current Discussion Topic","Topik diskusi saat ini"}.
{"Database failure","Kegagalan database"}.
{"Database Tables at ~p","Tabel Database pada ~p"}.
{"Database Tables Configuration at ","Konfigurasi Tabel Database pada "}.
{"Database","Database"}.
{"December","Desember"}.
{"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","Hapus pesan harian"}.
{"Delete Selected","Hapus Yang Terpilih"}.
{"Delete table","Hapus tabel"}.
{"Delete User","Hapus Pengguna"}.
{"Deliver event notifications","Memberikan pemberitahuan acara"}.
{"Deliver payloads with event notifications","Memberikan muatan dengan pemberitahuan acara"}.
{"Description:","Keterangan:"}.
{"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."}.
{"Dump Backup to Text File at ","Dump Backup menjadi File Teks di "}.
{"Dump to Text File","Dump menjadi File Teks"}.
@@ -123,7 +113,6 @@
{"ejabberd vCard module","Modul ejabberd vCard"}.
{"ejabberd Web Admin","Admin Web ejabberd"}.
{"ejabberd","ejabberd"}.
{"Elements","Elemen-elemen"}.
{"Email Address","Alamat email"}.
{"Email","Email"}.
{"Enable logging","Aktifkan log"}.
@@ -137,7 +126,6 @@
{"Enter path to text file","Masukkan path ke file teks"}.
{"Enter the text you see","Masukkan teks yang Anda lihat"}.
{"Erlang XMPP Server","Server Erlang XMPP"}.
{"Error","Kesalahan"}.
{"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 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"}.
{"Friday","Jumat"}.
{"From ~ts","Dari ~ts"}.
{"From","Dari"}.
{"Full List of Room Admins","Daftar Lengkap Admin Kamar"}.
{"Full List of Room Owners","Daftar Lengkap Pemilik Kamar"}.
{"Full Name","Nama Lengkap"}.
@@ -163,20 +150,15 @@
{"Get Number of Registered Users","Dapatkan Jumlah Pengguna Yang Terdaftar"}.
{"Get Pending","Lihat yang tertunda"}.
{"Get User Last Login Time","Lihat Waktu Login Terakhir Pengguna"}.
{"Get User Password","Dapatkan User Password"}.
{"Get User Statistics","Dapatkan Statistik Pengguna"}.
{"Given Name","Nama"}.
{"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 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 the room has been changed to members-only","telah dikick karena ruangan telah diubah menjadi hanya untuk member"}.
{"has been kicked","telah dikick"}.
{"Host unknown","Host tidak dikenal"}.
{"Host","Host"}.
{"HTTP File Upload","Unggah Berkas HTTP"}.
{"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."}.
@@ -189,7 +171,6 @@
{"Import Users from Dir at ","Impor Pengguna dari Dir di "}.
{"Import Users From jabberd14 Spool Files","Impor Pengguna Dari jabberd14 Spool File"}.
{"Improper message type","Jenis pesan yang tidak benar"}.
{"Incoming s2s Connections:","Koneksi s2s masuk:"}.
{"Incorrect CAPTCHA submit","Isian CAPTCHA salah"}.
{"Incorrect data form","Formulir data salah"}.
{"Incorrect password","Kata sandi salah"}.
@@ -212,7 +193,6 @@
{"Last month","Akhir bulan"}.
{"Last year","Akhir tahun"}.
{"leaves the room","meninggalkan ruangan"}.
{"Low level update script","Perbaruan naskah tingkat rendah"}.
{"Make participants list public","Buat daftar participant diketahui oleh public"}.
{"Make room CAPTCHA protected","Buat ruangan dilindungi dengan CAPTCHA"}.
{"Make room members-only","Buat ruangan hanya untuk member saja"}.
@@ -224,17 +204,13 @@
{"Max payload size in bytes","Max kapasitas ukuran dalam bytes"}.
{"Maximum Number of Occupants","Maksimum Jumlah Penghuni"}.
{"May","Mei"}.
{"Members:","Anggota:"}.
{"Membership is required to enter this room","Hanya Member yang dapat masuk ruangan ini"}.
{"Memory","Memori"}.
{"Message body","Isi Pesan"}.
{"Middle Name","Nama Tengah"}.
{"Moderator privileges required","Hak istimewa moderator dibutuhkan"}.
{"Modified modules","Modifikasi modul-modul"}.
{"Monday","Senin"}.
{"Multiple <item/> elements are not allowed by RFC6121","Beberapa elemen <item/> tidak diizinkan oleh RFC6121"}.
{"Name","Nama"}.
{"Name:","Nama:"}.
{"Never","Tidak Pernah"}.
{"New Password:","Password Baru:"}.
{"Nickname Registration at ","Pendaftaran Julukan pada "}.
@@ -257,11 +233,8 @@
{"Number of online users","Jumlah pengguna online"}.
{"Number of registered users","Jumlah pengguna terdaftar"}.
{"October","Oktober"}.
{"Offline Messages","Pesan Offline"}.
{"Offline Messages:","Pesan Offline:"}.
{"OK","YA"}.
{"Old Password:","Password Lama:"}.
{"Online Users:","Pengguna Online:"}.
{"Online Users","Pengguna Yang Online"}.
{"Online","Online"}.
{"Only deliver notifications to available users","Hanya mengirimkan pemberitahuan kepada pengguna yang tersedia"}.
@@ -273,9 +246,7 @@
{"Organization Name","Nama Organisasi"}.
{"Organization Unit","Unit Organisasi"}.
{"Outgoing s2s Connections","Koneksi Keluar s2s"}.
{"Outgoing s2s Connections:","Koneksi s2s yang keluar:"}.
{"Owner privileges required","Hak istimewa owner dibutuhkan"}.
{"Packet","Paket"}.
{"Participant","Partisipan"}.
{"Password Verification:","Verifikasi Kata Sandi:"}.
{"Password Verification","Verifikasi Sandi"}.
@@ -283,7 +254,6 @@
{"Password","Sandi"}.
{"Path to Dir","Jalur ke Dir"}.
{"Path to File","Jalur ke File"}.
{"Pending","Tertunda"}.
{"Period: ","Periode: "}.
{"Persist items to storage","Pertahankan item ke penyimpanan"}.
{"Persistent","Persisten"}.
@@ -314,20 +284,15 @@
{"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"}.
{"Register an XMPP account","Daftarkan sebuah akun XMPP"}.
{"Registered Users","Pengguna Terdaftar"}.
{"Registered Users:","Pengguna Terdaftar:"}.
{"Register","Mendaftar"}.
{"Remote copy","Salinan Remote"}.
{"Remove All Offline Messages","Hapus Semua Pesan Offline"}.
{"Remove User","Hapus Pengguna"}.
{"Remove","Menghapus"}.
{"Replaced by new connection","Diganti dengan koneksi baru"}.
{"Request has timed out","Waktu permintaan telah habis"}.
{"Request is ignored","Permintaan diabaikan"}.
{"Requested role","Peran yang diminta"}.
{"Resources","Sumber daya"}.
{"Restart Service","Restart Layanan"}.
{"Restart","Jalankan Ulang"}.
{"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 immediately:","Segera mengembalikan cadangan yang berpasangan:"}.
@@ -341,20 +306,15 @@
{"Room terminates","Ruang dihentikan"}.
{"Room title","Nama Ruangan"}.
{"Roster groups allowed to subscribe","Kelompok kontak yang diizinkan untuk berlangganan"}.
{"Roster of ~ts","Daftar ~ts"}.
{"Roster size","Ukuran Daftar Kontak"}.
{"Roster:","Daftar:"}.
{"RPC Call Error","Panggilan Kesalahan RPC"}.
{"Running Nodes","Menjalankan Node"}.
{"~s invites you to the room ~s","~s mengundang anda masuk kamar ~s"}.
{"Saturday","Sabtu"}.
{"Script check","Periksa naskah"}.
{"Search from the date","Cari dari tanggal"}.
{"Search Results for ","Hasil Pencarian untuk "}.
{"Search the text","Cari teks"}.
{"Search until the date","Cari sampai tanggal"}.
{"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","Kirim pengumuman untuk semua pengguna yang online"}.
{"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 publisher model","Tentukan model penerbitan"}.
{"Stanza ID","ID Stanza"}.
{"Statistics of ~p","statistik dari ~p"}.
{"Statistics","Statistik"}.
{"Stop","Hentikan"}.
{"Stopped Nodes","Menghentikan node"}.
{"Storage Type","Jenis Penyimpanan"}.
{"Store binary backup:","Penyimpanan cadangan yang berpasangan:"}.
{"Store plain text backup:","Simpan cadangan teks biasa:"}.
{"Stream management is already enabled","Manajemen stream sudah diaktifkan"}.
{"Stream management is not enabled","Manajemen stream tidak diaktifkan"}.
{"Subject","Subyek"}.
{"Submit","Serahkan"}.
{"Submitted","Ulangi masukan"}.
{"Subscriber Address","Alamat Pertemanan"}.
{"Subscribers may publish","Pelanggan dapat mempublikasikan"}.
{"Subscription","Berlangganan"}.
{"Subscriptions are not allowed","Langganan tidak diperbolehkan"}.
{"Sunday","Minggu"}.
{"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"}.
{"Thursday","Kamis"}.
{"Time delay","Waktu tunda"}.
{"Time","Waktu"}.
{"To register, visit ~s","Untuk mendaftar, kunjungi ~s"}.
{"To ~ts","Kepada ~ts"}.
{"Token TTL","TTL Token"}.
{"To","Kepada"}.
{"Too many active bytestreams","Terlalu banyak bytestream aktif"}.
{"Too many CAPTCHA requests","Terlalu banyak permintaan CAPTCHA"}.
{"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 receiver fields were specified","Terlalu banyak bidang penerima yang ditentukan"}.
{"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"}.
{"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"}.
{"Tuesday","Selasa"}.
{"Unable to generate a CAPTCHA","Tidak dapat menghasilkan CAPTCHA"}.
@@ -450,16 +397,10 @@
{"Unexpected error condition: ~p","Kondisi kerusakan yang tidak diduga: ~p"}.
{"Unregister an XMPP account","Nonaktifkan akun XMPP"}.
{"Unregister","Nonaktifkan"}.
{"Unselect All","Batalkan semua"}.
{"Unsupported <index/> element","Elemen <index/> 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 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 (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 Last Activity","Aktifitas terakhir para pengguna"}.
{"Users","Pengguna"}.
{"Validate","Mengesahkan"}.
{"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 datetime string","Nilai '~s' harus string datetime"}.
{"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"}.
{"vCard User Search","vCard Pencarian Pengguna"}.
{"View Queue","Lihat antrian"}.
{"View Roster","Lihat daftar kontak"}.
{"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 send messages to all occupants","Tamu tidak diperbolehkan untuk mengirim pesan ke semua penghuni"}.
-70
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","L'account non esiste"}.
{"Action on user","Azione sull'utente"}.
{"Add a hat to a user","Aggiungere un cappello a un utente"}.
{"Add Jabber ID","Aggiungere un Jabber ID"}.
{"Add New","Aggiungere Nuovo"}.
{"Add User","Aggiungere un Utente"}.
{"Administration of ","Amministrazione di "}.
{"Administration","Amministrazione"}.
@@ -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 Voice","Chiunque abbia la Voce"}.
{"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"}.
{"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"}.
@@ -93,30 +90,20 @@
{"Conference room does not exist","La stanza per conferenze non esiste"}.
{"Configuration of room ~s","Configurazione per la stanza ~s"}.
{"Configuration","Configurazione"}.
{"Connected Resources:","Risorse connesse:"}.
{"Contact Addresses (normally, room owner or owners)","Indirizzi di contatto (normalmente, proprietario o proprietari della stanza)"}.
{"Contrib Modules","Moduli di Contributo"}.
{"Country","Paese"}.
{"CPU Time:","Tempo CPU:"}.
{"Current Discussion Topic","Argomento di discussione attuale"}.
{"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","Database"}.
{"December","Dicembre"}.
{"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","Eliminare il messaggio del giorno (MOTD)"}.
{"Delete Selected","Elimina Selezionato"}.
{"Delete table","Elimina tabella"}.
{"Delete User","Eliminare l'utente"}.
{"Deliver event notifications","Inviare notifiche degli eventi"}.
{"Deliver payloads with event notifications","Inviare il contenuto del messaggio con la notifica dell'evento"}.
{"Description:","Descrizione:"}.
{"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."}.
{"Dump Backup to Text File at ","Trascrivere il salvataggio sul file di testo "}.
{"Dump to Text File","Trascrivere su file di testo"}.
@@ -132,7 +119,6 @@
{"ejabberd vCard module","Modulo vCard per ejabberd"}.
{"ejabberd Web Admin","Amministrazione web ejabberd"}.
{"ejabberd","ejabberd"}.
{"Elements","Elementi"}.
{"Email Address","Indirizzo di Posta Elettronica"}.
{"Email","E-mail"}.
{"Enable hats","Abilitare i cappelli"}.
@@ -147,7 +133,6 @@
{"Enter path to text file","Immettere il percorso del file di testo"}.
{"Enter the text you see","Immettere il testo visibile"}.
{"Erlang XMPP Server","Server XMPP Erlang"}.
{"Error","Errore"}.
{"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 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"}.
{"Friday","Venerdì"}.
{"From ~ts","Da ~ts"}.
{"From","Da"}.
{"Full List of Room Admins","Elenco Completo degli Amministratori delle Stanze"}.
{"Full List of Room Owners","Elenco Completo dei Proprietari delle Stanze"}.
{"Full Name","Nome completo"}.
@@ -176,13 +160,9 @@
{"Get Number of Registered Users","Ottenere il numero di utenti registrati"}.
{"Get Pending","Ottieni in sospeso"}.
{"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"}.
{"Given Name","Nome di battesimo"}.
{"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 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"}.
@@ -192,7 +172,6 @@
{"Hat URI","URI Cappello"}.
{"Hats limit exceeded","Limite di cappelli superato"}.
{"Host unknown","Host sconosciuto"}.
{"Host","Host"}.
{"HTTP File Upload","Caricamento file HTTP"}.
{"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."}.
@@ -206,7 +185,6 @@
{"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 message type","Tipo di messaggio non corretto"}.
{"Incoming s2s Connections:","Connessioni s2s in Entrata:"}.
{"Incorrect CAPTCHA submit","Invio CAPTCHA errato"}.
{"Incorrect data form","Modulo dati errato"}.
{"Incorrect password","Password non esatta"}.
@@ -236,7 +214,6 @@
{"July","Luglio"}.
{"June","Giugno"}.
{"Just created","Appena creato"}.
{"Label:","Etichetta:"}.
{"Last Activity","Ultima attività"}.
{"Last login","Ultimo accesso"}.
{"Last message","Ultimo messaggio"}.
@@ -244,11 +221,9 @@
{"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"}.
{"leaves the room","esce dalla stanza"}.
{"List of rooms","Elenco delle stanze"}.
{"List of users with hats","Elenco degli utenti con cappelli"}.
{"List users with hats","Elenca gli utenti con cappelli"}.
{"Logging","Registrazione"}.
{"Low level update script","Script di aggiornamento di basso livello"}.
{"Make participants list public","Rendere pubblica la lista dei partecipanti"}.
{"Make room CAPTCHA protected","Rendere la stanza protetta da CAPTCHA"}.
{"Make room members-only","Rendere la stanza riservata ai membri"}.
@@ -266,11 +241,8 @@
{"Maximum number of items to persist","Numero massimo di elementi da persistere"}.
{"Maximum Number of Occupants","Numero massimo di occupanti"}.
{"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"}.
{"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."}.
{"Memory","Memoria"}.
{"Mere Availability in XMPP (No Show Value)","Mera disponibilità in XMPP (Nessun Valore Mostrato)"}.
{"Message body","Corpo del messaggio"}.
{"Message not found in forwarded payload","Messaggio non trovato nel payload inoltrato"}.
@@ -282,15 +254,12 @@
{"Moderator privileges required","Necessari i privilegi di moderatore"}.
{"Moderator","Moderatore/Moderatrice"}.
{"Moderators Only","Solo i Moderatori"}.
{"Modified modules","Moduli modificati"}.
{"Module failed to handle the query","Il modulo non è riuscito a gestire la query"}.
{"Monday","Lunedì"}.
{"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","Più elementi <item/> non sono consentiti da RFC6121"}.
{"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:"}.
{"Natural Language for Room Discussions","Linguaggio Naturale per le Discussioni in Sala"}.
{"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"}.
@@ -355,14 +324,10 @@
{"Occupants are allowed to query others","Gli occupanti possono interrogare gli altri"}.
{"Occupants May Change the Subject","Gli Occupanti Possono Cambiare il Soggetto"}.
{"October","Ottobre"}.
{"Offline Messages","Messaggi offline"}.
{"Offline Messages:","Messaggi offline:"}.
{"OK","OK"}.
{"Old Password:","Vecchia password:"}.
{"Online Users:","Utenti connessi:"}.
{"Online Users","Utenti 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 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/>"}.
@@ -382,10 +347,8 @@
{"Organization Unit","Unità dell'organizzazione"}.
{"Other Modules Available:","Altri Moduli Disponibili:"}.
{"Outgoing s2s Connections","Connessioni s2s in uscita"}.
{"Outgoing s2s Connections:","Connessioni s2s in uscita:"}.
{"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","Pacchetto"}.
{"Participant ID","ID Partecipante"}.
{"Participant","Partecipante"}.
{"Password Verification","Verifica della password"}.
@@ -395,7 +358,6 @@
{"Path to Dir","Percorso della directory"}.
{"Path to File","Percorso del file"}.
{"Payload semantic type information","Informazioni sul tipo semantico del payload"}.
{"Pending","Pendente"}.
{"Period: ","Periodo: "}.
{"Persist items to storage","Conservazione persistente degli elementi"}.
{"Persistent","Persistente"}.
@@ -429,21 +391,16 @@
{"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"}.
{"Register an XMPP account","Registra un account XMPP"}.
{"Registered Users","Utenti registrati"}.
{"Registered Users:","Utenti registrati:"}.
{"Register","Registra"}.
{"Remote copy","Copia remota"}.
{"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","Eliminare"}.
{"Replaced by new connection","Sostituito da una nuova connessione"}.
{"Request has timed out","La richiesta è scaduta"}.
{"Request is ignored","La richiesta viene ignorata"}.
{"Requested role","Ruolo richiesto"}.
{"Resources","Risorse"}.
{"Restart Service","Riavviare il servizio"}.
{"Restart","Riavviare"}.
{"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 immediately:","Recuperare un salvataggio binario adesso:"}.
@@ -459,20 +416,15 @@
{"Room terminates","La stanza termina"}.
{"Room title","Titolo della stanza"}.
{"Roster groups allowed to subscribe","Gruppi roster abilitati alla registrazione"}.
{"Roster of ~ts","Roster di ~ts"}.
{"Roster size","Dimensione della lista dei contatti"}.
{"Roster:","Lista dei contatti:"}.
{"RPC Call Error","Errore di chiamata RPC"}.
{"Running Nodes","Nodi attivi"}.
{"~s invites you to the room ~s","~s ti invita nella stanza ~s"}.
{"Saturday","Sabato"}.
{"Script check","Verifica dello script"}.
{"Search from the date","Cerca dalla data"}.
{"Search Results for ","Risultati della ricerca per "}.
{"Search the text","Cerca nel testo"}.
{"Search until the date","Cerca fino alla data"}.
{"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","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"}.
@@ -496,22 +448,16 @@
{"Stanza id is not valid","L'id della stanza non è valido"}.
{"Stanza ID","Stanza ID"}.
{"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"}.
{"Storage Type","Tipo di conservazione"}.
{"Store binary backup:","Conservare un salvataggio binario:"}.
{"Store plain text backup:","Conservare un salvataggio come semplice testo:"}.
{"Stream management is already enabled","La gestione del flusso è già abilitata"}.
{"Stream management is not enabled","La gestione del flusso non è abilitata"}.
{"Subject","Oggetto"}.
{"Submit","Inviare"}.
{"Submitted","Inviato"}.
{"Subscriber Address","Indirizzo dell'iscritta/o"}.
{"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","Iscrizione"}.
{"Subscriptions are not allowed","Le sottoscrizioni non sono consentite"}.
{"Sunday","Domenica"}.
{"Text associated with a picture","Testo associato a un'immagine"}.
@@ -575,10 +521,8 @@
{"Thursday","Giovedì"}.
{"Time delay","Ritardo"}.
{"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 ~ts","A ~ts"}.
{"To","A"}.
{"Token TTL","Gettone TTL"}.
{"Too many active bytestreams","Troppi bytestream attivi"}.
{"Too many CAPTCHA requests","Troppe richieste CAPTCHA"}.
@@ -588,12 +532,7 @@
{"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 users in this conference","Troppi utenti in questa conferenza"}.
{"Total rooms","Stanze totali"}.
{"Traffic rate limit is exceeded","Limite di traffico superato"}.
{"Transactions Aborted:","Transazioni abortite:"}.
{"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"}.
{"Tuesday","Martedì"}.
{"Unable to generate a CAPTCHA","Impossibile generare un CAPTCHA"}.
@@ -604,19 +543,13 @@
{"Uninstall","Disinstallare"}.
{"Unregister an XMPP account","Disregistrare un account XMPP"}.
{"Unregister","Elimina"}.
{"Unselect All","Deseleziona Tutto"}.
{"Unsupported <index/> element","Elemento <index/> non supportato"}.
{"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 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","Aggiorna Specifiche"}.
{"Update","Aggiornare"}.
{"Upgrade","Aggiornamento"}.
{"Uptime:","Tempo dall'avvio:"}.
{"URL for Archived Discussion Logs","URL per i Registri delle Discussioni Archiviati"}.
{"User already exists","L'utente esiste già"}.
{"User JID","JID utente"}.
@@ -631,7 +564,6 @@
{"Users Last Activity","Ultima attività degli utenti"}.
{"Users","Utenti"}.
{"User","Utente"}.
{"Validate","Validare"}.
{"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 datetime string","Il valore di '~s' deve essere una stringa dataora"}.
@@ -639,8 +571,6 @@
{"Value 'set' of 'type' attribute is not allowed","Il valore 'set' dell'attributo 'type' non è consentito"}.
{"vCard User Search","Ricerca di utenti per vCard"}.
{"View joined MIX channels","Visualizza i canali MIX uniti"}.
{"View Queue","Visualizza Coda"}.
{"View Roster","Visualizza il Roster"}.
{"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 send messages to all occupants","Non è consentito ai visitatori l'invio di messaggi a tutti i presenti"}.
-62
View File
@@ -14,8 +14,6 @@
{"Access model","アクセスモデル"}.
{"Account doesn't exist","アカウントは存在しません"}.
{"Action on user","ユーザー操作"}.
{"Add Jabber ID","Jabber ID を追加"}.
{"Add New","新規追加"}.
{"Add User","ユーザーを追加"}.
{"Administration of ","管理: "}.
{"Administration","管理"}.
@@ -68,26 +66,19 @@
{"Conference room does not exist","会議室は存在しません"}.
{"Configuration of room ~s","チャットルーム ~s の設定"}.
{"Configuration","設定"}.
{"Connected Resources:","接続リソース:"}.
{"Contact Addresses (normally, room owner or owners)","連絡先 (通常は会議室の主宰者またはその複数)"}.
{"Country","国"}.
{"CPU Time:","CPU時間:"}.
{"Current Discussion Topic","現在の話題"}.
{"Database failure","データーベース障害"}.
{"Database Tables at ~p","データーベーステーブル: ~p"}.
{"Database Tables Configuration at ","データーベーステーブル設定 "}.
{"Database","データーベース"}.
{"December","12月"}.
{"Default users as participants","デフォルトのユーザーは参加者"}.
{"Delete content","内容を削除"}.
{"Delete message of the day on all hosts","全ホストのお知らせメッセージを削除"}.
{"Delete message of the day","お知らせメッセージを削除"}.
{"Delete Selected","選択した項目を削除"}.
{"Delete table","テーブルを削除"}.
{"Delete User","ユーザーを削除"}.
{"Deliver event notifications","イベント通知を配送する"}.
{"Deliver payloads with event notifications","イベント通知と同時にペイロードを配送する"}.
{"Description:","説明:"}.
{"Disc only copy","ディスクだけのコピー"}.
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","パスワードは誰にも(たとえ XMPP サーバーの管理者でも)教えないようにしてください。"}.
{"Dump Backup to Text File at ","テキストファイルにバックアップ: "}.
@@ -103,7 +94,6 @@
{"ejabberd vCard module","ejabberd vCard モジュール"}.
{"ejabberd Web Admin","ejabberd ウェブ管理"}.
{"ejabberd","ejabberd"}.
{"Elements","要素"}.
{"Email Address","メールアドレス"}.
{"Email","メール"}.
{"Enable logging","ロギングを有効"}.
@@ -116,7 +106,6 @@
{"Enter path to text file","テキストファイルのパスを入力してください"}.
{"Enter the text you see","見えているテキストを入力してください"}.
{"Erlang XMPP Server","Erlang XMPP サーバー"}.
{"Error","エラー"}.
{"Exclude Jabber IDs from CAPTCHA challenge","CAPTCHA 入力を免除する Jabber ID"}.
{"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):"}.
@@ -131,7 +120,6 @@
{"Fill in the form to search for any matching XMPP User","XMPP ユーザーを検索するには欄に入力してください"}.
{"Friday","金曜日"}.
{"From ~ts","From ~ts"}.
{"From","差出人"}.
{"Full List of Room Admins","チャットルーム管理者の一覧"}.
{"Full List of Room Owners","チャットルーム主宰者の一覧"}.
{"Full Name","氏名"}.
@@ -141,19 +129,15 @@
{"Get Number of Registered Users","登録ユーザー数を取得"}.
{"Get Pending","保留中の取得"}.
{"Get User Last Login Time","最終ログイン時間を取得"}.
{"Get User Password","パスワードを取得"}.
{"Get User Statistics","ユーザー統計を取得"}.
{"Given Name","名"}.
{"Grant voice to this person?","この人に発言権を与えますか ?"}.
{"Groups","グループ"}.
{"Group","グループ"}.
{"has been banned","はバンされました"}.
{"has been kicked because of a system shutdown","はシステムシャットダウンのためキックされました"}.
{"has been kicked because of an affiliation change","は分掌が変更されたためキックされました"}.
{"has been kicked because the room has been changed to members-only","はチャットルームがメンバー制に変更されたためキックされました"}.
{"has been kicked","はキックされました"}.
{"Host unknown","不明なホスト"}.
{"Host","ホスト"}.
{"HTTP File Upload","HTTP ファイルアップロード"}.
{"If you don't see the CAPTCHA image here, visit the web page.","ここに CAPTCHA 画像が表示されない場合、ウェブページを参照してください。"}.
{"Import Directory","ディレクトリインポート"}.
@@ -165,7 +149,6 @@
{"Import Users from Dir at ","ディレクトリからユーザーをインポート: "}.
{"Import Users From jabberd14 Spool Files","jabberd14 Spool ファイルからユーザーをインポート"}.
{"Improper message type","誤ったメッセージタイプです"}.
{"Incoming s2s Connections:","内向き s2s コネクション:"}.
{"Incorrect data form","データ形式が違います"}.
{"Incorrect password","パスワードが違います"}.
{"Installed Modules:","インストールされているモジュール:"}.
@@ -187,15 +170,12 @@
{"July","7月"}.
{"June","6月"}.
{"Just created","作成しました"}.
{"Label:","ラベル:"}.
{"Last Activity","活動履歴"}.
{"Last login","最終ログイン"}.
{"Last message","最終メッセージ"}.
{"Last month","先月"}.
{"Last year","去年"}.
{"leaves the room","がチャットルームから退出しました"}.
{"List of rooms","チャットルームの一覧"}.
{"Low level update script","低レベル更新スクリプト"}.
{"Make participants list public","参加者一覧を公開"}.
{"Make room CAPTCHA protected","チャットルームを CAPTCHA で保護"}.
{"Make room members-only","チャットルームをメンバーのみに制限"}.
@@ -210,20 +190,16 @@
{"Maximum Number of Occupants","最大在室者数"}.
{"May","5月"}.
{"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 ではパスワードのリカバリを自動的に行うことはできません。"}.
{"Memory","メモリ"}.
{"Message body","本文"}.
{"Middle Name","ミドルネーム"}.
{"Minimum interval between voice requests (in seconds)","発言権の要求の最小時間間隔 (秒)"}.
{"Moderator privileges required","モデレーター権限が必要です"}.
{"Moderator","モデレーター"}.
{"Modified modules","更新されたモジュール"}.
{"Monday","月曜日"}.
{"Multicast","マルチキャスト"}.
{"Multi-User Chat","マルチユーザーチャット"}.
{"Name","名"}.
{"Name:","名前:"}.
{"Natural-Language Room Name","自然言語での会議室名"}.
{"Never","なし"}.
{"New Password:","新しいパスワード:"}.
@@ -260,12 +236,9 @@
{"Occupants are allowed to invite others","在室者は誰かを招待することができます"}.
{"Occupants May Change the Subject","ユーザーによる件名の変更を許可"}.
{"October","10月"}.
{"Offline Messages","オフラインメッセージ"}.
{"Offline Messages:","オフラインメッセージ:"}.
{"OK","OK"}.
{"Old Password:","古いパスワード:"}.
{"Online Users","オンラインユーザー"}.
{"Online Users:","オンラインユーザー:"}.
{"Online","オンライン"}.
{"Only deliver notifications to available users","有効なユーザーにのみ告知を送信する"}.
{"Only <enable/> or <disable/> tags are allowed","<enable/> タグまたは <disable/> タグのみが許可されます"}.
@@ -280,9 +253,7 @@
{"Organization Name","会社名"}.
{"Organization Unit","部署名"}.
{"Outgoing s2s Connections","外向き s2s コネクション"}.
{"Outgoing s2s Connections:","外向き s2s コネクション:"}.
{"Owner privileges required","主宰者の権限が必要です"}.
{"Packet","パケット"}.
{"Participant ID","参加者 ID"}.
{"Participant","参加者"}.
{"Password Verification","パスワード (確認)"}.
@@ -291,7 +262,6 @@
{"Password:","パスワード:"}.
{"Path to Dir","ディレクトリのパス"}.
{"Path to File","ファイルのパス"}.
{"Pending","保留"}.
{"Period: ","期間: "}.
{"Persist items to storage","アイテムをストレージに保存する"}.
{"Persistent","チャットルームを永続化"}.
@@ -313,18 +283,13 @@
{"Really delete message of the day?","本当にお知らせメッセージを削除しますか ?"}.
{"Recipient is not in the conference room","受信者はこの会議室にいません"}.
{"Register an XMPP account","XMPP アカウントを登録"}.
{"Registered Users","登録ユーザー"}.
{"Registered Users:","登録ユーザー:"}.
{"Register","登録"}.
{"Remote copy","リモートコピー"}.
{"Remove All Offline Messages","すべてのオフラインメッセージを削除"}.
{"Remove User","ユーザーを削除"}.
{"Remove","削除"}.
{"Replaced by new connection","新しいコネクションによって置き換えられました"}.
{"Request is ignored","リクエストは無視されます"}.
{"Resources","リソース"}.
{"Restart Service","サービスを再起動"}.
{"Restart","再起動"}.
{"Restore Backup from File at ","ファイルからバックアップをリストア: "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","ejabberd の再起動時にバイナリバックアップからリストア (メモリ少):"}.
{"Restore binary backup immediately:","直ちにバイナリバックアップからリストア:"}.
@@ -337,17 +302,12 @@
{"Room Occupants","在室者"}.
{"Room title","チャットルームのタイトル"}.
{"Roster groups allowed to subscribe","名簿グループは購読を許可しました"}.
{"Roster of ~ts","~ts の名簿"}.
{"Roster size","名簿サイズ"}.
{"Roster:","名簿:"}.
{"RPC Call Error","RPC 呼び出しエラー"}.
{"Running Nodes","起動ノード"}.
{"~s invites you to the room ~s","~s はあなたをチャットルーム ~s に招待しています"}.
{"Saturday","土曜日"}.
{"Script check","スクリプトチェック"}.
{"Search Results for ","検索結果: "}.
{"Search users in ","ユーザーの検索: "}.
{"Select All","すべて選択"}.
{"Send announcement to all online users on all hosts","全ホストのオンラインユーザーにアナウンスを送信"}.
{"Send announcement to all online users","すべてのオンラインユーザーにアナウンスを送信"}.
{"Send announcement to all users on all hosts","全ホストのユーザーにアナウンスを送信"}.
@@ -366,18 +326,12 @@
{"Specify the event message type","イベントメッセージ種別を設定"}.
{"Specify the publisher model","公開モデルを指定する"}.
{"Stanza ID","スタンザ ID"}.
{"Statistics of ~p","~p の統計"}.
{"Statistics","統計"}.
{"Stopped Nodes","停止ノード"}.
{"Stop","停止"}.
{"Storage Type","ストレージタイプ"}.
{"Store binary backup:","バイナリバックアップを保存:"}.
{"Store plain text backup:","プレーンテキストバックアップを保存:"}.
{"Subject","件名"}.
{"Submitted","送信完了"}.
{"Submit","送信"}.
{"Subscriber Address","購読者のアドレス"}.
{"Subscription","認可"}.
{"Sunday","日曜日"}.
{"That nickname is already in use by another occupant","そのニックネームは既にほかの在室者によって使用されています"}.
{"That nickname is registered by another person","ニックネームはほかの人によって登録されています"}.
@@ -404,18 +358,11 @@
{"This room is not anonymous","このチャットルームは非匿名です"}.
{"Thursday","木曜日"}.
{"Time delay","遅延時間"}.
{"Time","時間"}.
{"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 unacked stanzas","多くのスタンザが応答していません"}.
{"Too many users in this conference","この会議にはユーザーが多すぎます"}.
{"Total rooms","チャットルーム数"}.
{"To","To"}.
{"Traffic rate limit is exceeded","トラフィックレートの制限を超えました"}.
{"Transactions Aborted:","トランザクションの失敗:"}.
{"Transactions Committed:","トランザクションのコミット:"}.
{"Transactions Logged:","トランザクションのログ: "}.
{"Transactions Restarted:","トランザクションの再起動:"}.
{"~ts's Offline Messages Queue","~ts のオフラインメッセージキュー"}.
{"Tuesday","火曜日"}.
{"Unable to generate a CAPTCHA","CAPTCHA を生成できません"}.
@@ -425,16 +372,10 @@
{"Uninstall","アンインストール"}.
{"Unregister an XMPP account","XMPP アカウントを削除"}.
{"Unregister","削除"}.
{"Unselect All","すべての選択を解除"}.
{"Unsupported version","対応していないバージョン"}.
{"Update message of the day (don't send)","お知らせメッセージを更新 (送信しない)"}.
{"Update message of the day on all hosts (don't send)","全ホストのお知らせメッセージを更新 (送信しない)"}.
{"Update plan","更新計画"}.
{"Update ~p","更新 ~p"}.
{"Update script","スクリプトの更新"}.
{"Update","更新"}.
{"Upgrade","アップグレード"}.
{"Uptime:","起動時間:"}.
{"User already exists","ユーザーは既に存在しています"}.
{"User (jid)","ユーザー (JID)"}.
{"User JID","ユーザー JID"}.
@@ -448,12 +389,9 @@
{"Users Last Activity","ユーザーの活動履歴"}.
{"Users","ユーザー"}.
{"User","ユーザー"}.
{"Validate","検証"}.
{"Value of '~s' should be boolean","'~s' の値はブール値である必要があります"}.
{"Value of '~s' should be integer","'~s' の値は整数である必要があります"}.
{"vCard User Search","vCard検索"}.
{"View Queue","キューを表示"}.
{"View Roster","名簿を表示"}.
{"Virtual Hosts","バーチャルホスト"}.
{"Visitors are not allowed to change their nicknames in this room","傍聴者はこのチャットルームでニックネームを変更することはできません"}.
{"Visitors are not allowed to send messages to all occupants","傍聴者はすべての在室者にメッセージを送信することはできません"}.
-52
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"}.
{"Access denied by service policy","De toegang werd geweigerd door het beleid van deze dienst"}.
{"Action on user","Actie op gebruiker"}.
{"Add Jabber ID","Jabber ID toevoegen"}.
{"Add New","Toevoegen"}.
{"Add User","Gebruiker toevoegen"}.
{"Administration of ","Beheer van "}.
{"Administration","Beheer"}.
@@ -53,21 +51,16 @@
{"Conference room does not exist","De chatruimte bestaat niet"}.
{"Configuration of room ~s","Instellingen van chatruimte ~s"}.
{"Configuration","Instellingen"}.
{"Connected Resources:","Verbonden bronnen:"}.
{"Country","Land"}.
{"CPU Time:","Processortijd:"}.
{"Database Tables at ~p","Databasetabellen van ~p"}.
{"Database Tables Configuration at ","Instellingen van databasetabellen op "}.
{"Database","Database"}.
{"December","December"}.
{"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","Bericht van de dag verwijderen"}.
{"Delete Selected","Geselecteerde verwijderen"}.
{"Delete User","Verwijder Gebruiker"}.
{"Deliver event notifications","Gebeurtenisbevestigingen Sturen"}.
{"Deliver payloads with event notifications","Berichten bezorgen samen met gebeurtenisnotificaties"}.
{"Description:","Beschrijving:"}.
{"Disc only copy","Harde schijf"}.
{"Dump Backup to Text File at ","Backup naar een tekstbestand schrijven op "}.
{"Dump to Text File","Backup naar een tekstbestand schrijven"}.
@@ -79,7 +72,6 @@
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}.
{"ejabberd vCard module","ejabberd's vCard-module"}.
{"ejabberd Web Admin","ejabberd Webbeheer"}.
{"Elements","Elementen"}.
{"Email","E-mail"}.
{"Enable logging","Logs aanzetten"}.
{"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 text file","Voer pad naar backupbestand 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"}.
{"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):"}.
@@ -99,22 +90,17 @@
{"Family Name","Achternaam"}.
{"February","Februari"}.
{"Friday","Vrijdag"}.
{"From","Van"}.
{"Full Name","Volledige naam"}.
{"Get Number of Online Users","Aantal Aanwezige Gebruikers Opvragen"}.
{"Get Number of Registered Users","Aantal Geregistreerde Gebruikers Opvragen"}.
{"Get User Last Login Time","Tijd van Laatste Aanmelding Opvragen"}.
{"Get User Password","Gebruikerswachtwoord Opvragen"}.
{"Get User Statistics","Gebruikers-statistieken Opvragen"}.
{"Grant voice to this person?","Stemaanvraag honoreren voor deze persoon?"}.
{"Group","Groep"}.
{"Groups","Groepen"}.
{"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 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","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."}.
{"Import Directory","Directory importeren"}.
{"Import File","Bestand importeren"}.
@@ -140,8 +126,6 @@
{"Last month","Afgelopen maand"}.
{"Last year","Afgelopen jaar"}.
{"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 room CAPTCHA protected","Chatruimte beveiligen met een geautomatiseerde Turing test"}.
{"Make room members-only","Chatruimte enkel toegankelijk maken voor leden"}.
@@ -153,19 +137,15 @@
{"Max payload size in bytes","Maximumgrootte van bericht in bytes"}.
{"Maximum Number of Occupants","Maximum aantal aanwezigen"}.
{"May","Mei"}.
{"Members:","Groepsleden:"}.
{"Membership is required to enter this room","U moet lid zijn om deze chatruimte te kunnen betreden"}.
{"Memory","Geheugen"}.
{"Message body","Bericht"}.
{"Middle Name","Tussennaam"}.
{"Minimum interval between voice requests (in seconds)","Minimale interval tussen stemaanvragen (in seconden)"}.
{"Moderator privileges required","U hebt moderatorprivileges nodig"}.
{"Modified modules","Gewijzigde modules"}.
{"Monday","Maandag"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Groepschat"}.
{"Name","Naam"}.
{"Name:","Naam:"}.
{"Never","Nooit"}.
{"New Password:","Nieuw Wachtwoord:"}.
{"Nickname Registration at ","Registratie van een bijnaam op "}.
@@ -188,12 +168,9 @@
{"Number of online users","Aantal Aanwezige Gebruikers"}.
{"Number of registered users","Aantal Geregistreerde Gebruikers"}.
{"October","Oktober"}.
{"Offline Messages","Offline berichten"}.
{"Offline Messages:","Offline berichten:"}.
{"OK","OK"}.
{"Old Password:","Oud Wachtwoord:"}.
{"Online Users","Online gebruikers"}.
{"Online Users:","Online gebruikers:"}.
{"Online","Online"}.
{"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"}.
@@ -205,16 +182,13 @@
{"Organization Name","Organisatie"}.
{"Organization Unit","Afdeling"}.
{"Outgoing s2s Connections","Uitgaande s2s-verbindingen"}.
{"Outgoing s2s Connections:","Uitgaande s2s-verbindingen:"}.
{"Owner privileges required","U hebt eigenaarsprivileges nodig"}.
{"Packet","Pakket"}.
{"Password Verification","Wachtwoord Bevestiging"}.
{"Password Verification:","Wachtwoord Bevestiging:"}.
{"Password","Wachtwoord"}.
{"Password:","Wachtwoord:"}.
{"Path to Dir","Pad naar directory"}.
{"Path to File","Pad naar bestand"}.
{"Pending","Bezig"}.
{"Period: ","Periode: "}.
{"Persist items to storage","Items in het geheugen bewaren"}.
{"Ping","Ping"}.
@@ -231,17 +205,12 @@
{"RAM copy","RAM"}.
{"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"}.
{"Registered Users","Geregistreerde gebruikers"}.
{"Registered Users:","Geregistreerde gebruikers:"}.
{"Register","Registreer"}.
{"Remote copy","Op andere nodes in de cluster"}.
{"Remove All Offline Messages","Verwijder alle offline berichten"}.
{"Remove User","Gebruiker verwijderen"}.
{"Remove","Verwijderen"}.
{"Replaced by new connection","Vervangen door een nieuwe verbinding"}.
{"Resources","Bronnen"}.
{"Restart Service","Herstart Service"}.
{"Restart","Herstarten"}.
{"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 immediately:","Binaire backup direct herstellen:"}.
@@ -254,10 +223,8 @@
{"Room title","Naam van de chatruimte"}.
{"Roster groups allowed to subscribe","Contactlijst-groepen die mogen abonneren"}.
{"Roster size","Contactlijst Groote"}.
{"RPC Call Error","RPC-oproepfout"}.
{"Running Nodes","Draaiende nodes"}.
{"Saturday","Zaterdag"}.
{"Script check","Controle van script"}.
{"Search Results for ","Zoekresultaten voor "}.
{"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"}.
@@ -275,18 +242,12 @@
{"Specify the access model","Geef toegangsmodel"}.
{"Specify the event message type","Geef type van eventbericht"}.
{"Specify the publisher model","Publicatietype opgeven"}.
{"Statistics of ~p","Statistieken van ~p"}.
{"Statistics","Statistieken"}.
{"Stopped Nodes","Gestopte nodes"}.
{"Stop","Stoppen"}.
{"Storage Type","Opslagmethode"}.
{"Store binary backup:","Binaire backup maken:"}.
{"Store plain text backup:","Backup naar een tekstbestand schrijven:"}.
{"Subject","Onderwerp"}.
{"Submitted","Verzonden"}.
{"Submit","Verzenden"}.
{"Subscriber Address","Abonnee Adres"}.
{"Subscription","Inschrijving"}.
{"Sunday","Zondag"}.
{"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"}.
@@ -300,28 +261,16 @@
{"This room is not anonymous","Deze chatruimte is niet anoniem"}.
{"Thursday","Donderdag"}.
{"Time delay","Vertraging"}.
{"Time","Tijd"}.
{"To","Aan"}.
{"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 unacked stanzas","Te veel niet-bevestigde stanzas"}.
{"Total rooms","Aantal groepsgesprekken"}.
{"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"}.
{"Unable to generate a CAPTCHA","Het generen van een CAPTCHA is mislukt"}.
{"Unauthorized","Niet geautoriseerd"}.
{"Unregister","Opheffen"}.
{"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 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 Management","Gebruikersbeheer"}.
{"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 Last Activity","Laatste activiteit van gebruikers"}.
{"Users","Gebruikers"}.
{"Validate","Bevestigen"}.
{"vCard User Search","Gebruikers zoeken"}.
{"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"}.
-56
View File
@@ -9,8 +9,6 @@
{"Accept","Godta"}.
{"Access denied by service policy","Tilgang nektes på grunn av en tjenesteregel"}.
{"Action on user","Handling på bruker"}.
{"Add Jabber ID","Legg til Jabber-ID"}.
{"Add New","Legg til ny"}.
{"Add User","Legg til bruker"}.
{"Administration of ","Administrasjon av "}.
{"Administration","Administrasjon"}.
@@ -59,23 +57,17 @@
{"Conference room does not exist","Konferanserommet finnes ikke"}.
{"Configuration of room ~s","Oppsett for rom ~s"}.
{"Configuration","Oppsett"}.
{"Connected Resources:","Tilkoblede ressurser:"}.
{"Country","Land"}.
{"CPU Time:","Prosessortid:"}.
{"Current Discussion Topic","Nåværende diskusjonstema"}.
{"Database Tables at ~p","Databasetabeller på ~p"}.
{"Database Tables Configuration at ","Database-tabelloppsett på "}.
{"Database","Database"}.
{"December","desember"}.
{"Default users as participants","Standard brukere som deltakere"}.
{"Delete message of the day","Slett melding for dagen"}.
{"Delete Selected","Slett valgte"}.
{"Delete User","Slett bruker"}.
{"Deliver event notifications","Lever begivenhetskunngjøringer"}.
{"Deliver payloads with event notifications","Send innhold sammen med hendelsesmerknader"}.
{"Description:","Beskrivelse:"}.
{"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 to Text File","Dump til tekstfil"}.
{"Edit Properties","Rediger egenskaper"}.
@@ -84,7 +76,6 @@
{"ejabberd MUC module","ejabberd-MUC-modul"}.
{"ejabberd Multicast service","ejabberd-multikastingstjeneste"}.
{"ejabberd Publish-Subscribe module","ejabberd-Publish-Subscribe-modul"}.
{"Elements","Elementer"}.
{"Email","E-post"}.
{"Enable logging","Skru på loggføring"}.
{"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 text file","Skriv inn sti til tekstfil"}.
{"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"}.
{"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):"}.
@@ -107,23 +97,18 @@
{"February","februar"}.
{"File larger than ~w bytes","Fil større enn ~w byte"}.
{"Friday","fredag"}.
{"From","Fra"}.
{"Full List of Room Admins","Full liste over romadministratorer"}.
{"Full List of Room Owners","Full liste over romeiere"}.
{"Full Name","Fullt navn"}.
{"Get Number of Online Users","Vis antall tilkoblede brukere"}.
{"Get Number of Registered Users","Vis antall registrerte brukere"}.
{"Get User Last Login Time","Vis brukers siste innloggingstidspunkt"}.
{"Get User Password","Hent brukers passord"}.
{"Get User Statistics","Vis brukerstatistikk"}.
{"Group","Gruppe"}.
{"Groups","Grupper"}.
{"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 an affiliation change","har blitt kastet ut på grunn av en tilknytningsendring"}.
{"has been kicked","har blitt kastet ut"}.
{"Host unknown","Ukjent vert"}.
{"Host","Vert"}.
{"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."}.
{"Import Directory","Importer mappe"}.
@@ -146,16 +131,13 @@
{"July","juli"}.
{"June","juni"}.
{"Just created","Akkurat opprettet"}.
{"Label:","Etikett:"}.
{"Last Activity","Siste aktivitet"}.
{"Last login","Siste innlogging"}.
{"Last month","Siste måned"}.
{"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"}.
{"leaves the room","forlater rommet"}.
{"List of rooms","Romliste"}.
{"Logging","Loggføring"}.
{"Low level update script","Lavnivå-oppdateringsskript"}.
{"Make participants list public","Gjør deltakerlisten offentlig"}.
{"Make room members-only","Gjør rommet tilgjengelig kun for medlemmer"}.
{"Make room password protected","Passordbeskytt rommet"}.
@@ -166,8 +148,6 @@
{"Maximum Number of History Messages Returned by Room","Maksimalt antall historikkmeldinger tilbudt av rommet"}.
{"May","mai"}.
{"Membership is required to enter this room","Medlemskap kreves for tilgang til dette rommet"}.
{"Members:","Medlemmer:"}.
{"Memory","Minne"}.
{"Message body","Meldingskropp"}.
{"Message not found in forwarded payload","Fant ikke melding i videresendt nyttelast"}.
{"Messages from strangers are rejected","Meldinger fra ukjente avvises"}.
@@ -175,13 +155,10 @@
{"Messages of type normal","Meldinger av normal type"}.
{"Middle Name","Mellomnavn"}.
{"Minimum interval between voice requests (in seconds)","Minimumsintervall mellom lydforespørsler (i sekunder)"}.
{"Modified modules","Endrede moduler"}.
{"Monday","mandag"}.
{"Multicast","Multikasting"}.
{"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:"}.
{"Never","Aldri"}.
{"New Password:","Nytt passord:"}.
{"Nickname can't be empty","Kallenavn kan ikke stå tomt"}.
@@ -206,14 +183,10 @@
{"Number of online users","Antall tilkoblede brukere"}.
{"Number of registered users","Antall registrerte brukere"}.
{"October","oktober"}.
{"Offline Messages","Frakoblede meldinger"}.
{"Offline Messages:","Frakoblede meldinger:"}.
{"OK","OK"}.
{"Old Password:","Gammelt passord:"}.
{"Online Users","Tilkoblede brukere"}.
{"Online Users:","Tilkoblede brukere:"}.
{"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 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"}.
@@ -222,9 +195,7 @@
{"Organization Name","Organisasjonsnavn"}.
{"Organization Unit","Organisasjonsenhet"}.
{"Outgoing s2s Connections","Utgående s2s-koblinger"}.
{"Outgoing s2s Connections:","Utgående s2s-koblinger"}.
{"Owner privileges required","Eierprivilegier kreves"}.
{"Packet","Pakke"}.
{"Participant","Deltager"}.
{"Password Verification","Passordbekreftelse"}.
{"Password Verification:","Passordbekreftelse:"}.
@@ -232,7 +203,6 @@
{"Password:","Passord:"}.
{"Path to Dir","Sti til mappe"}.
{"Path to File","Sti til fil"}.
{"Pending","Ventende"}.
{"Period: ","Periode: "}.
{"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."}.
@@ -249,19 +219,14 @@
{"RAM copy","Minnekopi"}.
{"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"}.
{"Registered Users","Registrerte brukere"}.
{"Registered Users:","Registrerte brukere:"}.
{"Register","Registrer"}.
{"Remove All Offline Messages","Fjern Alle frakoblede meldinger"}.
{"Remove User","Fjern bruker"}.
{"Remove","Fjern"}.
{"Replaced by new connection","Erstattet av en ny tilkobling"}.
{"Request has timed out","Tidsavbrudd for forespørsel"}.
{"Request is ignored","Forespørsel ignorert"}.
{"Requested role","Forespurt rolle"}.
{"Resources","Ressurser"}.
{"Restart Service","Omstart av tjeneste"}.
{"Restart","Start på ny"}.
{"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 immediately:","Gjenopprett binær sikkerhetskopi umiddelbart:"}.
@@ -276,10 +241,8 @@
{"Roster size","Kontaktlistestørrelse"}.
{"Running Nodes","Kjørende noder"}.
{"Saturday","lørdag"}.
{"Script check","Skript-sjekk"}.
{"Search Results for ","Søkeresultater for "}.
{"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","Send kunngjøring alle tilkoblede brukere"}.
{"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 event message type","Spesifiser hendelsesbeskjedtypen"}.
{"Specify the publisher model","Angi publiseringsmodell"}.
{"Statistics of ~p","Statistikk for ~p"}.
{"Statistics","Statistikk"}.
{"Stopped Nodes","Stoppede noder"}.
{"Stop","Stopp"}.
{"Storage Type","Lagringstype"}.
{"Store binary backup:","Lagre binær sikkerhetskopi:"}.
{"Store plain text backup:","Lagre klartekst-sikkerhetskopi:"}.
{"Subject","Emne"}.
{"Submit","Send"}.
{"Submitted","Innsendt"}.
{"Subscriber Address","Abonnementsadresse"}.
{"Subscribers may publish","Abonnenter kan publisere"}.
{"Subscription","Abonnement"}.
{"Subscriptions are not allowed","Abonnementer tillates ikke"}.
{"Sunday","søndag"}.
{"Text associated with a picture","Tekst tilknyttet et bilde"}.
@@ -334,17 +291,11 @@
{"This room is not anonymous","Dette rommet er ikke anonymt"}.
{"Thursday","torsdag"}.
{"Time delay","Tidsforsinkelse"}.
{"Time","Tid"}.
{"To register, visit ~s","Besøk ~s for registrering"}.
{"Too many CAPTCHA requests","For mange CAPTCHA-forespørsler"}.
{"Too many <item/> elements","For mange <item/>-elementer"}.
{"Too many <list/> elements","For mange <list/>-elementer"}.
{"To","Til"}.
{"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"}.
{"Unable to generate a CAPTCHA","Kunne ikke generere CAPTCHA"}.
{"Unauthorized","Uautorisert"}.
@@ -353,11 +304,6 @@
{"Unsupported version","Ustøttet versjon"}.
{"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 plan","Oppdateringplan"}.
{"Update ~p","Oppdater ~p"}.
{"Update script","Oppdateringsskript"}.
{"Update","Oppdater"}.
{"Uptime:","Oppetid:"}.
{"User already exists","Brukeren finnes allerede"}.
{"User Management","Brukerhåndtering"}.
{"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 Last Activity","Brukers siste aktivitet"}.
{"Users","Brukere"}.
{"Validate","Bekrefte gyldighet"}.
{"vCard User Search","vCard-brukersøk"}.
{"View Queue","Vis kø"}.
{"Virtual Hosts","Virtuelle maskiner"}.
{"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"}.
+3 -53
View File
@@ -6,11 +6,11 @@
{" has set the subject to: "," zmienił temat na: "}.
{"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 Web Page","Strona sieci Web"}.
{"Accept","Zaakceptuj"}.
{"Access denied by service policy","Dostęp zabroniony zgodnie z zasadami usługi"}.
{"Action on user","Wykonaj na użytkowniku"}.
{"Add Jabber ID","Dodaj Jabber ID"}.
{"Add New","Dodaj nowe"}.
{"Add a hat to a user","Dodaj kapelusz do użytkownika"}.
{"Add User","Dodaj użytkownika"}.
{"Administration of ","Zarządzanie "}.
{"Administration","Administracja"}.
@@ -18,6 +18,7 @@
{"All activity","Cała aktywność"}.
{"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 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 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"}.
@@ -60,22 +61,17 @@
{"Conference room does not exist","Pokój konferencyjny nie istnieje"}.
{"Configuration of room ~s","Konfiguracja pokoju ~s"}.
{"Configuration","Konfiguracja"}.
{"Connected Resources:","Zasoby zalogowane:"}.
{"Country","Państwo"}.
{"CPU Time:","Czas CPU:"}.
{"Database failure","Błąd bazy danych"}.
{"Database Tables at ~p","Tabele bazy na ~p"}.
{"Database Tables Configuration at ","Konfiguracja tabel bazy na "}.
{"Database","Baza danych"}.
{"December","Grudzień"}.
{"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","Usuń wiadomość dnia"}.
{"Delete Selected","Usuń zaznaczone"}.
{"Delete User","Usuń użytkownika"}.
{"Deliver event notifications","Dostarczaj powiadomienia o zdarzeniach"}.
{"Deliver payloads with event notifications","Dostarczaj zawartość publikacji wraz z powiadomieniami o zdarzeniach"}.
{"Description:","Opis:"}.
{"Disc only copy","Kopia tylko na dysku"}.
{"Dump Backup to Text File at ","Zapisz kopię zapasową w pliku tekstowym na "}.
{"Dump to Text File","Wykonaj kopie do pliku tekstowego"}.
@@ -87,7 +83,6 @@
{"ejabberd SOCKS5 Bytestreams module","Moduł SOCKS5 Bytestreams"}.
{"ejabberd vCard module","Moduł vCard ejabberd"}.
{"ejabberd Web Admin","ejabberd: Panel Administracyjny"}.
{"Elements","Elementy"}.
{"Email","Email"}.
{"Enable logging","Włącz logowanie"}.
{"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 text file","Wprowadź scieżkę do pliku tekstowego"}.
{"Enter the text you see","Przepisz tekst z obrazka"}.
{"Error","Błąd"}.
{"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 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"}.
{"File larger than ~w bytes","Plik jest większy niż ~w bajtów"}.
{"Friday","Piątek"}.
{"From","Od"}.
{"Full Name","Pełna nazwa"}.
{"Get Number of Online Users","Pokaż liczbę zalogowanych 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 Password","Pobierz hasło użytkownika"}.
{"Get User Statistics","Pobierz statystyki użytkownika"}.
{"Given Name","Imię"}.
{"Grant voice to this person?","Udzielić głosu tej osobie?"}.
{"Group","Grupa"}.
{"Groups","Grupy"}.
{"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 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","został wyrzucony"}.
{"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ą."}.
{"Import Directory","Importuj katalog"}.
{"Import File","Importuj plik"}.
@@ -144,7 +133,6 @@
{"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 message type","Nieprawidłowy typ wiadomości"}.
{"Incoming s2s Connections:","Przychodzące połączenia s2s:"}.
{"Incorrect CAPTCHA submit","Nieprawidłowa odpowiedz dla CAPTCHA"}.
{"Incorrect data form","Nieprawidłowe dane w formatce"}.
{"Incorrect password","Nieprawidłowe hasło"}.
@@ -169,8 +157,6 @@
{"Last month","Miniony miesiąc"}.
{"Last year","Miniony rok"}.
{"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 room CAPTCHA protected","Pokój zabezpieczony captchą"}.
{"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"}.
{"Maximum Number of Occupants","Maksymalna liczba uczestników"}.
{"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ść"}.
{"Memory","Pamięć"}.
{"Message body","Treść wiadomości"}.
{"Message not found in forwarded payload","Nie znaleziona wiadomości w przesyłanych dalej danych"}.
{"Middle Name","Drugie imię"}.
{"Minimum interval between voice requests (in seconds)","Minimalny odstęp między żądaniami głosowymi (w sekundach)"}.
{"Moderator privileges required","Wymagane uprawnienia moderatora"}.
{"Moderator","Moderatorzy"}.
{"Modified modules","Zmodyfikowane moduły"}.
{"Module failed to handle the query","Moduł nie był wstanie przetworzyć zapytania"}.
{"Monday","Poniedziałek"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Wieloosobowa rozmowa"}.
{"Name","Imię"}.
{"Name:","Nazwa:"}.
{"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'"}.
{"Never","Nigdy"}.
@@ -246,12 +228,9 @@
{"Number of online users","Liczba zalogowanych użytkowników"}.
{"Number of registered users","Liczba zarejestrowanych użytkowników"}.
{"October","Październik"}.
{"Offline Messages","Wiadomości offline"}.
{"Offline Messages:","Wiadomości offline:"}.
{"OK","OK"}.
{"Old Password:","Stare hasło:"}.
{"Online Users","Użytkownicy zalogowani"}.
{"Online Users:","Użytkownicy zalogowani:"}.
{"Online","Dostępny"}.
{"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/>"}.
@@ -266,9 +245,7 @@
{"Organization Name","Nazwa organizacji"}.
{"Organization Unit","Dział"}.
{"Outgoing s2s Connections","Wychodzące połączenia s2s"}.
{"Outgoing s2s Connections:","Wychodzące połączenia s2s:"}.
{"Owner privileges required","Wymagane uprawnienia właściciela"}.
{"Packet","Pakiet"}.
{"Participant","Uczestnicy"}.
{"Password Verification","Weryfikacja hasła"}.
{"Password Verification:","Weryfikacja hasła:"}.
@@ -276,7 +253,6 @@
{"Password:","Hasło:"}.
{"Path to Dir","Ścieżka do katalogu"}.
{"Path to File","Scieżka do pliku"}.
{"Pending","Oczekuje"}.
{"Period: ","Przedział czasu: "}.
{"Persist items to storage","Przechowuj na stałe dane PubSub"}.
{"Ping query is incorrect","Żądanie 'ping' nie jest prawidłowe"}.
@@ -295,17 +271,12 @@
{"RAM copy","Kopia w pamięci RAM"}.
{"Really delete message of the day?","Na pewno usunąć wiadomość dnia?"}.
{"Recipient is not in the conference room","Odbiorcy nie ma w pokoju"}.
{"Registered Users","Użytkownicy zarejestrowani"}.
{"Registered Users:","Użytkownicy zarejestrowani:"}.
{"Register","Zarejestruj"}.
{"Remote copy","Kopia zdalna"}.
{"Remove All Offline Messages","Usuń wszystkie wiadomości typu 'Offline'"}.
{"Remove User","Usuń użytkownika"}.
{"Remove","Usuń"}.
{"Replaced by new connection","Połączenie zostało zastąpione"}.
{"Resources","Zasoby"}.
{"Restart Service","Restart usługi"}.
{"Restart","Uruchom ponownie"}.
{"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 immediately:","Natychmiast odtwórz kopię binarną:"}.
@@ -319,10 +290,8 @@
{"Room title","Tytuł pokoju"}.
{"Roster groups allowed to subscribe","Grupy kontaktów uprawnione do subskrypcji"}.
{"Roster size","Rozmiar listy kontaktów"}.
{"RPC Call Error","Błąd żądania RPC"}.
{"Running Nodes","Uruchomione węzły"}.
{"Saturday","Sobota"}.
{"Script check","Sprawdź skrypt"}.
{"Search Results for ","Wyniki wyszukiwania dla "}.
{"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"}.
@@ -340,19 +309,13 @@
{"Specify the access model","Określ model dostępu"}.
{"Specify the event message type","Określ typ wiadomości"}.
{"Specify the publisher model","Określ model publikującego"}.
{"Statistics of ~p","Statystyki ~p"}.
{"Statistics","Statystyki"}.
{"Stopped Nodes","Zatrzymane węzły"}.
{"Stop","Zatrzymaj"}.
{"Storage Type","Typ bazy"}.
{"Store binary backup:","Zachowaj kopię binarną:"}.
{"Store plain text backup:","Zachowaj kopię w postaci tekstowej:"}.
{"Subject","Temat"}.
{"Submitted","Wprowadzone"}.
{"Submit","Wyślij"}.
{"Subscriber Address","Adres subskrybenta"}.
{"Subscriptions are not allowed","Subskrypcje nie są dozwolone"}.
{"Subscription","Subskrypcja"}.
{"Sunday","Niedziela"}.
{"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ę"}.
@@ -371,9 +334,7 @@
{"This room is not anonymous","Ten pokój nie jest anonimowy"}.
{"Thursday","Czwartek"}.
{"Time delay","Opóźnienie"}.
{"Time","Czas"}.
{"To register, visit ~s","Żeby się zarejestrować odwiedź ~s"}.
{"To","Do"}.
{"Token TTL","Limit czasu tokenu"}.
{"Too many active bytestreams","Zbyt wiele strumieni danych"}.
{"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 unacked stanzas","Zbyt wiele niepotwierdzonych pakietów"}.
{"Too many users in this conference","Zbyt wielu użytkowników konferencji"}.
{"Total rooms","Wszystkich pokoi"}.
{"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"}.
{"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"}.
@@ -397,11 +353,6 @@
{"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 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 JID","Użytkownik "}.
{"User (jid)","Użytkownik (jid)"}.
@@ -413,7 +364,6 @@
{"Users Last Activity","Ostatnia aktywność użytkowników"}.
{"Users","Użytkownicy"}.
{"User","Użytkownik"}.
{"Validate","Potwierdź"}.
{"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 datetime string","Wartość '~s' powinna być typu daty"}.
-70
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","A conta não existe"}.
{"Action on user","Ação no 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"}.
{"Administration of ","Administração de "}.
{"Administration","Administração"}.
@@ -48,7 +46,6 @@
{"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","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"}.
{"April","Abril"}.
{"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"}.
@@ -93,30 +90,20 @@
{"Conference room does not exist","A sala de conferência não existe"}.
{"Configuration of room ~s","Configuração para ~s"}.
{"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)"}.
{"Contrib Modules","Módulos contrib"}.
{"Country","País"}.
{"CPU Time:","Tempo da CPU:"}.
{"Current Discussion Topic","Assunto em discussão"}.
{"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","Base de dados"}.
{"December","Dezembro"}.
{"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","Apagar mensagem do dia"}.
{"Delete Selected","Remover os selecionados"}.
{"Delete table","Excluir a tabela"}.
{"Delete User","Deletar Usuário"}.
{"Deliver event notifications","Entregar as notificações de evento"}.
{"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"}.
{"'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."}.
{"Dump Backup to Text File at ","Exportar backup para texto em "}.
{"Dump to Text File","Exportar para arquivo texto"}.
@@ -132,7 +119,6 @@
{"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"ejabberd","ejabberd"}.
{"Elements","Elementos"}.
{"Email Address","Endereço de e-mail"}.
{"Email","Email"}.
{"Enable hats","Ativa chapéus"}.
@@ -147,7 +133,6 @@
{"Enter path to text file","Introduza caminho para o arquivo texto"}.
{"Enter the text you see","Insira o texto que você vê"}.
{"Erlang XMPP Server","Servidor XMPP Erlang"}.
{"Error","Erro"}.
{"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 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 +151,6 @@
{"Fill in the form to search for any matching XMPP User","Preencha campos para procurar por quaisquer usuários XMPP"}.
{"Friday","Sexta"}.
{"From ~ts","De ~s"}.
{"From","De"}.
{"Full List of Room Admins","Lista completa dos administradores das salas"}.
{"Full List of Room Owners","Lista completa dos proprietários das salas"}.
{"Full Name","Nome completo"}.
@@ -176,13 +160,9 @@
{"Get Number of Registered Users","Obter Número de Usuários Registrados"}.
{"Get Pending","Obter os pendentes"}.
{"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"}.
{"Given Name","Prenome"}.
{"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 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"}.
@@ -192,7 +172,6 @@
{"Hat URI","URI do chapéu"}.
{"Hats limit exceeded","O limite dos chapéus foi excedido"}.
{"Host unknown","Máquina desconhecida"}.
{"Host","Máquina"}.
{"HTTP File Upload","Upload de arquivo HTTP"}.
{"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."}.
@@ -206,7 +185,6 @@
{"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 message type","Tipo de mensagem incorreto"}.
{"Incoming s2s Connections:","Conexões s2s de Entrada:"}.
{"Incorrect CAPTCHA submit","CAPTCHA submetido incorretamente"}.
{"Incorrect data form","Formulário dos dados incorreto"}.
{"Incorrect password","Senha incorreta"}.
@@ -236,7 +214,6 @@
{"July","Julho"}.
{"June","Junho"}.
{"Just created","Acabou de ser criado"}.
{"Label:","Rótulo:"}.
{"Last Activity","Última atividade"}.
{"Last login","Último login"}.
{"Last message","Última mensagem"}.
@@ -244,11 +221,9 @@
{"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"}.
{"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 users with hats","Lista os usuários com chapéus"}.
{"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 room CAPTCHA protected","Tornar protegida a senha da sala"}.
{"Make room members-only","Tornar sala apenas para membros"}.
@@ -266,11 +241,8 @@
{"Maximum number of items to persist","Quantidade máxima dos itens para manter"}.
{"Maximum Number of Occupants","Número máximo de participantes"}.
{"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"}.
{"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."}.
{"Memory","Memória"}.
{"Mere Availability in XMPP (No Show Value)","Mera disponibilidade no XMPP (Sem valor para ser exibido)"}.
{"Message body","Corpo da mensagem"}.
{"Message not found in forwarded payload","Mensagem não encontrada em conteúdo encaminhado"}.
@@ -282,15 +254,12 @@
{"Moderator privileges required","Se necessita privilégios de moderador"}.
{"Moderator","Moderador"}.
{"Moderators Only","Somente moderadores"}.
{"Modified modules","Módulos atualizados"}.
{"Module failed to handle the query","Módulo falhou ao processar a consulta"}.
{"Monday","Segunda"}.
{"Multicast","Multicast"}.
{"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"}.
{"Name in the rosters where this group will be displayed","O nome nas listas onde este grupo será exibido"}.
{"Name","Nome"}.
{"Name:","Nome:"}.
{"Natural Language for Room Discussions","Idioma nativo para as discussões na sala"}.
{"Natural-Language Room Name","Nome da sala no idioma nativo"}.
{"Neither 'jid' nor 'nick' attribute found","Nem o atributo 'jid' nem 'nick' foram encontrados"}.
@@ -355,14 +324,10 @@
{"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"}.
{"October","Outubro"}.
{"Offline Messages","Mensagens offline"}.
{"Offline Messages:","Mensagens offline:"}.
{"OK","OK"}.
{"Old Password:","Senha Antiga:"}.
{"Online Users","Usuários conectados"}.
{"Online Users:","Usuários online:"}.
{"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 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"}.
@@ -382,10 +347,8 @@
{"Organization Unit","Departamento/Unidade"}.
{"Other Modules Available:","Outros módulos disponíveis:"}.
{"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"}.
{"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","Participante"}.
{"Password Verification:","Verificação da Senha:"}.
@@ -395,7 +358,6 @@
{"Path to Dir","Caminho para o diretório"}.
{"Path to File","Caminho do arquivo"}.
{"Payload semantic type information","Informações de tipo semântico de carga útil"}.
{"Pending","Pendente"}.
{"Period: ","Período: "}.
{"Persist items to storage","Persistir elementos ao armazenar"}.
{"Persistent","Persistente"}.
@@ -429,21 +391,16 @@
{"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"}.
{"Register an XMPP account","Registre uma conta XMPP"}.
{"Registered Users:","Usuários registrados:"}.
{"Registered Users","Usuários Registrados"}.
{"Register","Registrar"}.
{"Remote copy","Cópia remota"}.
{"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","Remover"}.
{"Replaced by new connection","Substituído por nova conexão"}.
{"Request has timed out","O pedido expirou"}.
{"Request is ignored","O pedido foi ignorado"}.
{"Requested role","Função solicitada"}.
{"Resources","Recursos"}.
{"Restart Service","Reiniciar Serviço"}.
{"Restart","Reiniciar"}.
{"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 immediately:","Restaurar imediatamente o backup binário:"}.
@@ -459,20 +416,15 @@
{"Room terminates","Terminação da sala"}.
{"Room title","Título da sala"}.
{"Roster groups allowed to subscribe","Listar grupos autorizados"}.
{"Roster of ~ts","Lista de ~ts"}.
{"Roster size","Tamanho da Lista"}.
{"Roster:","Lista:"}.
{"RPC Call Error","Erro de chamada RPC"}.
{"Running Nodes","Nós em execução"}.
{"~s invites you to the room ~s","~s convidaram você para a sala ~s"}.
{"Saturday","Sábado"}.
{"Script check","Verificação de Script"}.
{"Search from the date","Pesquise a partir da data"}.
{"Search Results for ","Resultados de pesquisa para "}.
{"Search the text","Pesquise o texto"}.
{"Search until the date","Pesquise até a data"}.
{"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","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"}.
@@ -496,23 +448,17 @@
{"Stanza id is not valid","A Stanza ID não é válido"}.
{"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ó"}.
{"Statistics of ~p","Estatísticas de ~p"}.
{"Statistics","Estatísticas"}.
{"Stop","Parar"}.
{"Stopped Nodes","Nós parados"}.
{"Storage Type","Tipo de armazenamento"}.
{"Store binary backup:","Armazenar backup binário:"}.
{"Store plain text backup:","Armazenar backup em texto:"}.
{"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"}.
{"Subject","Assunto"}.
{"Submit","Enviar"}.
{"Submitted","Submetido"}.
{"Subscriber Address","Endereço dos Assinantes"}.
{"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"}.
{"Subscriptions are not allowed","Subscrições não estão permitidas"}.
{"Subscription","Subscrição"}.
{"Sunday","Domingo"}.
{"Text associated with a picture","Um texto associado a uma imagem"}.
{"Text associated with a sound","Um texto associado a um som"}.
@@ -575,7 +521,6 @@
{"Thursday","Quinta"}.
{"Time delay","Intervalo (Tempo)"}.
{"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 ~ts","Para ~s"}.
{"Token TTL","Token TTL"}.
@@ -588,13 +533,7 @@
{"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 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"}.
{"Transactions Aborted:","Transações abortadas:"}.
{"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"}.
{"Tuesday","Terça"}.
{"Unable to generate a CAPTCHA","Impossível gerar um CAPTCHA"}.
@@ -605,19 +544,13 @@
{"Uninstall","Desinstalar"}.
{"Unregister an XMPP account","Excluir uma conta XMPP"}.
{"Unregister","Deletar registro"}.
{"Unselect All","Desmarcar todos"}.
{"Unsupported <index/> element","Elemento <index/> não suportado"}.
{"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 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","Atualizar as especificações"}.
{"Update","Atualizar"}.
{"Upgrade","Atualização"}.
{"Uptime:","Tempo de atividade:"}.
{"URL for Archived Discussion Logs","A URL para o arquivamento dos registros da discussão"}.
{"User already exists","Usuário já existe"}.
{"User (jid)","Usuário (jid)"}.
@@ -632,7 +565,6 @@
{"Users Last Activity","Últimas atividades dos usuários"}.
{"Users","Usuários"}.
{"User","Usuário"}.
{"Validate","Validar"}.
{"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 datetime string","Valor de '~s' deveria ser data e hora"}.
@@ -640,8 +572,6 @@
{"Value 'set' of 'type' attribute is not allowed","Valor 'set' não permitido para atributo 'type'"}.
{"vCard User Search","Busca de Usuário vCard"}.
{"View joined MIX channels","Exibir os canais MIX aderidos"}.
{"View Queue","Exibir a fila"}.
{"View Roster","Ver a lista"}.
{"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 send messages to all occupants","Os visitantes não podem enviar mensagens a todos os ocupantes"}.
-70
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","A conta não existe"}.
{"Action on user","Acção no utilizador"}.
{"Add a hat to a user","Adiciona um chapéu num utilizador"}.
{"Add Jabber ID","Adicionar ID jabber"}.
{"Add New","Adicionar novo"}.
{"Add User","Adicionar utilizador"}.
{"Administration of ","Administração de "}.
{"Administration","Administração"}.
@@ -48,7 +46,6 @@
{"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","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"}.
{"April","Abril"}.
{"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"}.
@@ -93,30 +90,20 @@
{"Conference room does not exist","A sala não existe"}.
{"Configuration of room ~s","Configuração para ~s"}.
{"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)"}.
{"Contrib Modules","Módulos contrib"}.
{"Country","País"}.
{"CPU Time:","Tempo da CPU:"}.
{"Current Discussion Topic","Assunto em discussão"}.
{"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","Base de dados"}.
{"December","Dezembro"}.
{"Default users as participants","Utilizadores padrões como participantes"}.
{"Delete content","Apagar 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","Apagar mensagem do dia"}.
{"Delete Selected","Eliminar os seleccionados"}.
{"Delete table","Apagar a tabela"}.
{"Delete User","Deletar Utilizador"}.
{"Deliver event notifications","Entregar as notificações de evento"}.
{"Deliver payloads with event notifications","Enviar payloads junto com as notificações de eventos"}.
{"Description:","Descrição:"}.
{"Disc only copy","Cópia apenas 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 palavra-passe a ninguém, nem mesmo para o administrador deste servidor XMPP."}.
{"Dump Backup to Text File at ","Exporta cópia de segurança para ficheiro de texto em "}.
{"Dump to Text File","Exportar para ficheiro de texto"}.
@@ -132,7 +119,6 @@
{"ejabberd vCard module","Módulo vCard de ejabberd"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"ejabberd","ejabberd"}.
{"Elements","Elementos"}.
{"Email Address","Endereço de e-mail"}.
{"Email","Email"}.
{"Enable hats","Ativa chapéus"}.
@@ -147,7 +133,6 @@
{"Enter path to text file","Introduza caminho para o ficheiro de texto"}.
{"Enter the text you see","Insira o texto que vê"}.
{"Erlang XMPP Server","Servidor XMPP Erlang"}.
{"Error","Erro"}.
{"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 ficheiro:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar todos os dados de todos os utilizadores no servidor, para ficheiros de formato PIEFXIS (XEP-0227):"}.
@@ -166,7 +151,6 @@
{"Fill in the form to search for any matching XMPP User","Preencha campos para procurar por quaisquer utilizadores XMPP"}.
{"Friday","Sexta"}.
{"From ~ts","De ~s"}.
{"From","De"}.
{"Full List of Room Admins","Lista completa dos administradores das salas"}.
{"Full List of Room Owners","Lista completa dos proprietários das salas"}.
{"Full Name","Nome completo"}.
@@ -176,13 +160,9 @@
{"Get Number of Registered Users","Obter quantidade de utilizadores registados"}.
{"Get Pending","Obter os pendentes"}.
{"Get User Last Login Time","Obter a data do último login"}.
{"Get User Password","Obter palavra-passe do utilizador"}.
{"Get User Statistics","Obter estatísticas do utilizador"}.
{"Given Name","Sobrenome"}.
{"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 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"}.
@@ -192,7 +172,6 @@
{"Hat URI","URI do chapéu"}.
{"Hats limit exceeded","O limite dos chapéus foi excedido"}.
{"Host unknown","Máquina desconhecida"}.
{"Host","Máquina"}.
{"HTTP File Upload","Upload de ficheiros por HTTP"}.
{"Idle connection","Conexão inativa"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Se não conseguir ver o CAPTCHA aqui, visite a web page."}.
@@ -206,7 +185,6 @@
{"Import Users From jabberd14 Spool Files","Importar utilizadores de ficheiros de jabberd14 (spool files)"}.
{"Improper domain part of 'from' attribute","Atributo 'from' contém domínio incorreto"}.
{"Improper message type","Tipo de mensagem incorrecto"}.
{"Incoming s2s Connections:","Conexões s2s de Entrada:"}.
{"Incorrect CAPTCHA submit","CAPTCHA submetido incorretamente"}.
{"Incorrect data form","Formulário dos dados incorreto"}.
{"Incorrect password","Palavra-chave incorrecta"}.
@@ -236,7 +214,6 @@
{"July","Julho"}.
{"June","Junho"}.
{"Just created","Acabou de ser criado"}.
{"Label:","Rótulo:"}.
{"Last Activity","Última actividade"}.
{"Last login","Último login"}.
{"Last message","Última mensagem"}.
@@ -244,11 +221,9 @@
{"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"}.
{"leaves the room","Sair da sala"}.
{"List of rooms","Lista de salas"}.
{"List of users with hats","Lista os utilizadores com chapéus"}.
{"List users with hats","Lista os utilizadores com chapéus"}.
{"Logging","Registando no log"}.
{"Low level update script","Script de atualização low level"}.
{"Make participants list public","Tornar pública a lista de participantes"}.
{"Make room CAPTCHA protected","Tornar protegida a palavra-passe da sala"}.
{"Make room members-only","Tornar sala apenas para membros"}.
@@ -266,11 +241,8 @@
{"Maximum number of items to persist","Quantidade máxima dos itens para manter"}.
{"Maximum Number of Occupants","Quantidate máxima de participantes"}.
{"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"}.
{"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 palavra-passe ou anote-a num papel guardado num local seguro. No XMPP, não há uma maneira automatizada de recuperar a sua palavra-passe caso a esqueça."}.
{"Memory","Memória"}.
{"Mere Availability in XMPP (No Show Value)","Mera disponibilidade no XMPP (Sem valor para ser exibido)"}.
{"Message body","Corpo da mensagem"}.
{"Message not found in forwarded payload","Mensagem não encontrada em conteúdo encaminhado"}.
@@ -282,15 +254,12 @@
{"Moderator privileges required","São necessários privilégios de moderador"}.
{"Moderator","Moderador"}.
{"Moderators Only","Somente moderadores"}.
{"Modified modules","Módulos atualizados"}.
{"Module failed to handle the query","Módulo falhou ao processar a consulta"}.
{"Monday","Segunda"}.
{"Multicast","Multicast"}.
{"Multiple <item/> elements are not allowed by RFC6121","Vários elementos <item/> não são permitidos pela RFC6121"}.
{"Multi-User Chat","Chat multi-utilizador"}.
{"Name in the rosters where this group will be displayed","O nome nas listas onde este grupo será exibido"}.
{"Name","Nome"}.
{"Name:","Nome:"}.
{"Natural Language for Room Discussions","Idioma nativo para as discussões na sala"}.
{"Natural-Language Room Name","Nome da sala no idioma nativo"}.
{"Neither 'jid' nor 'nick' attribute found","Nem o atributo 'jid' nem 'nick' foram encontrados"}.
@@ -355,14 +324,10 @@
{"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"}.
{"October","Outubro"}.
{"Offline Messages","Mensagens offline"}.
{"Offline Messages:","Mensagens offline:"}.
{"OK","OK"}.
{"Old Password:","Palavra-passe Antiga:"}.
{"Online Users","Utilizadores ligados"}.
{"Online Users:","Utilizadores online:"}.
{"Online","Ligado"}.
{"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 deliver notifications to available users","Somente enviar notificações aos utilizadores disponíveis"}.
{"Only <enable/> or <disable/> tags are allowed","Apenas tags <enable/> ou <disable/> são permitidas"}.
@@ -382,10 +347,8 @@
{"Organization Unit","Unidade da organização"}.
{"Other Modules Available:","Outros módulos disponíveis:"}.
{"Outgoing s2s Connections","Conexões s2s de Saída"}.
{"Outgoing s2s Connections:","Saída das conexões s2s:"}.
{"Owner privileges required","São necessários privilégios de dono"}.
{"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","Participante"}.
{"Password Verification:","Verificação da Palavra-passe:"}.
@@ -395,7 +358,6 @@
{"Path to Dir","Caminho para o directório"}.
{"Path to File","Caminho do ficheiro"}.
{"Payload semantic type information","Informações de tipo semântico de carga útil"}.
{"Pending","Pendente"}.
{"Period: ","Período: "}.
{"Persist items to storage","Persistir elementos ao armazenar"}.
{"Persistent","Persistente"}.
@@ -429,21 +391,16 @@
{"Receive notification of new nodes only","Receba apenas as notificações dos nós novos"}.
{"Recipient is not in the conference room","O destinatário não está na sala"}.
{"Register an XMPP account","Registe uma conta XMPP"}.
{"Registered Users","Utilizadores registados"}.
{"Registered Users:","Utilizadores registados:"}.
{"Register","Registar"}.
{"Remote copy","Cópia remota"}.
{"Remove a hat from a user","Remove um chapéu de um utilizador"}.
{"Remove All Offline Messages","Remover Todas as Mensagens Offline"}.
{"Remove User","Eliminar utilizador"}.
{"Remove","Remover"}.
{"Replaced by new connection","Substituído por nova conexão"}.
{"Request has timed out","O pedido expirou"}.
{"Request is ignored","O pedido foi ignorado"}.
{"Requested role","Função solicitada"}.
{"Resources","Recursos"}.
{"Restart Service","Reiniciar Serviço"}.
{"Restart","Reiniciar"}.
{"Restore Backup from File at ","Restaura cópia de segurança a partir do ficheiro 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 immediately:","Restaurar imediatamente o backup binário:"}.
@@ -459,20 +416,15 @@
{"Room terminates","Terminação da sala"}.
{"Room title","Título da sala"}.
{"Roster groups allowed to subscribe","Listar grupos autorizados"}.
{"Roster of ~ts","Lista de ~ts"}.
{"Roster size","Tamanho da Lista"}.
{"Roster:","Lista:"}.
{"RPC Call Error","Erro de chamada RPC"}.
{"Running Nodes","Nodos a correr"}.
{"~s invites you to the room ~s","~s convidaram-o à sala ~s"}.
{"Saturday","Sábado"}.
{"Script check","Verificação de Script"}.
{"Search from the date","Pesquise a partir da data"}.
{"Search Results for ","Resultados de pesquisa para "}.
{"Search the text","Pesquise o texto"}.
{"Search until the date","Pesquise até a data"}.
{"Search users in ","Procurar utilizadores em "}.
{"Select All","Selecione tudo"}.
{"Send announcement to all online users on all hosts","Enviar anúncio a todos utilizadores online em todas as máquinas"}.
{"Send announcement to all online users","Enviar anúncio a todos os utilizadorns online"}.
{"Send announcement to all users on all hosts","Enviar aviso para todos os utilizadores em todos os hosts"}.
@@ -496,23 +448,17 @@
{"Stanza id is not valid","A Stanza ID é inválido"}.
{"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ó"}.
{"Statistics of ~p","Estatísticas de ~p"}.
{"Statistics","Estatísticas"}.
{"Stop","Parar"}.
{"Stopped Nodes","Nodos parados"}.
{"Storage Type","Tipo de armazenagem"}.
{"Store binary backup:","Armazenar backup binário:"}.
{"Store plain text backup:","Armazenar backup em texto:"}.
{"Stream management is already enabled","A gestão do fluxo já está ativada"}.
{"Stream management is not enabled","A gestão do fluxo não está ativada"}.
{"Subject","Assunto"}.
{"Submit","Enviar"}.
{"Submitted","Submetido"}.
{"Subscriber Address","Endereço dos Assinantes"}.
{"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"}.
{"Subscriptions are not allowed","Subscrições não estão permitidas"}.
{"Subscription","Subscrição"}.
{"Sunday","Domingo"}.
{"Text associated with a picture","Um texto associado a uma imagem"}.
{"Text associated with a sound","Um texto associado a um som"}.
@@ -575,7 +521,6 @@
{"Thursday","Quinta"}.
{"Time delay","Intervalo (Tempo)"}.
{"Timed out waiting for stream resumption","Tempo limite expirou durante à espera da retomada da transmissão"}.
{"Time","Data"}.
{"To register, visit ~s","Para registar, visite ~s"}.
{"To ~ts","Para ~s"}.
{"Token TTL","Token TTL"}.
@@ -588,13 +533,7 @@
{"Too many receiver fields were specified","Foram definidos receptores demais nos campos"}.
{"Too many unacked stanzas","Quantidade excessiva de instâncias sem confirmação"}.
{"Too many users in this conference","Há uma quantidade excessiva de utilizadores nesta conferência"}.
{"To","Para"}.
{"Total rooms","Salas no total"}.
{"Traffic rate limit is exceeded","Limite de banda excedido"}.
{"Transactions Aborted:","Transações abortadas:"}.
{"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"}.
{"Tuesday","Terça"}.
{"Unable to generate a CAPTCHA","Impossível gerar um CAPTCHA"}.
@@ -605,19 +544,13 @@
{"Uninstall","Desinstalar"}.
{"Unregister an XMPP account","Excluir uma conta XMPP"}.
{"Unregister","Deletar registo"}.
{"Unselect All","Desmarcar todos"}.
{"Unsupported <index/> element","Elemento <index/> não suportado"}.
{"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 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","Atualizar as especificações"}.
{"Update","Actualizar"}.
{"Upgrade","Atualização"}.
{"Uptime:","Tempo de atividade:"}.
{"URL for Archived Discussion Logs","A URL para o arquivamento dos registos da discussão"}.
{"User already exists","Utilizador já existe"}.
{"User (jid)","Utilizador (jid)"}.
@@ -632,7 +565,6 @@
{"Users Last Activity","Últimas atividades dos utilizadores"}.
{"Users","Utilizadores"}.
{"User","Utilizador"}.
{"Validate","Validar"}.
{"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 datetime string","Valor de '~s' deveria ser data e hora"}.
@@ -640,8 +572,6 @@
{"Value 'set' of 'type' attribute is not allowed","Valor 'set' não permitido para atributo 'type'"}.
{"vCard User Search","Busca de Utilizador vCard"}.
{"View joined MIX channels","Exibir os canais MIX aderidos"}.
{"View Queue","Exibir a fila"}.
{"View Roster","Ver a lista"}.
{"Virtual Hosts","Hosts virtuais"}.
{"Visitors are not allowed to change their nicknames in this room","Nesta sala, os visitantes não podem mudar os apelidos deles"}.
{"Visitors are not allowed to send messages to all occupants","Os visitantes não podem enviar mensagens para todos os ocupantes"}.
-57
View File
@@ -12,8 +12,6 @@
{"Access denied by service policy","Доступ запрещён политикой службы"}.
{"Account doesn't exist","Учётная запись не существует"}.
{"Action on user","Действие над пользователем"}.
{"Add Jabber ID","Добавить Jabber ID"}.
{"Add New","Добавить"}.
{"Add User","Добавить пользователя"}.
{"Administration of ","Администрирование "}.
{"Administration","Администрирование"}.
@@ -72,24 +70,17 @@
{"Conference room does not exist","Конференция не существует"}.
{"Configuration of room ~s","Конфигурация комнаты ~s"}.
{"Configuration","Конфигурация"}.
{"Connected Resources:","Подключённые ресурсы:"}.
{"Country","Страна"}.
{"CPU Time:","Процессорное время:"}.
{"Database failure","Ошибка базы данных"}.
{"Database Tables at ~p","Таблицы базы данных на ~p"}.
{"Database Tables Configuration at ","Конфигурация таблиц базы данных на "}.
{"Database","База данных"}.
{"December","декабря"}.
{"Default users as participants","Сделать пользователей участниками по умолчанию"}.
{"Delete content","Удалить содержимое"}.
{"Delete message of the day on all hosts","Удалить сообщение дня со всех виртуальных серверов"}.
{"Delete message of the day","Удалить сообщение дня"}.
{"Delete Selected","Удалить выделенные"}.
{"Delete table","Удалить таблицу"}.
{"Delete User","Удалить пользователя"}.
{"Deliver event notifications","Доставлять уведомления о событиях"}.
{"Deliver payloads with event notifications","Доставлять вместе с уведомлениями o публикациях сами публикации"}.
{"Description:","Описание:"}.
{"Disc only copy","только диск"}.
{"Dump Backup to Text File at ","Копирование в текстовый файл на "}.
{"Dump to Text File","Копирование в текстовый файл"}.
@@ -102,7 +93,6 @@
{"ejabberd vCard module","ejabberd vCard модуль"}.
{"ejabberd Web Admin","Web-интерфейс администрирования ejabberd"}.
{"ejabberd","ejabberd"}.
{"Elements","Элементы"}.
{"Email","Электронная почта"}.
{"Enable logging","Включить журналирование"}.
{"Enable message archiving","Включить хранение сообщений"}.
@@ -114,7 +104,6 @@
{"Enter path to jabberd14 spool file","Введите путь к файлу из спула jabberd14"}.
{"Enter path to text file","Введите путь к текстовому файлу"}.
{"Enter the text you see","Введите увиденный текст"}.
{"Error","Ошибка"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Исключить показ капчи для списка Jabber ID"}.
{"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):"}.
@@ -130,25 +119,20 @@
{"February","февраля"}.
{"File larger than ~w bytes","Файл больше ~w байт"}.
{"Friday","Пятница"}.
{"From","От кого"}.
{"Full Name","Полное имя"}.
{"Get Number of Online Users","Получить количество подключённых пользователей"}.
{"Get Number of Registered Users","Получить количество зарегистрированных пользователей"}.
{"Get Pending","Получить отложенные"}.
{"Get User Last Login Time","Получить время последнего подключения пользователя"}.
{"Get User Password","Получить пароль пользователя"}.
{"Get User Statistics","Получить статистику по пользователю"}.
{"Given Name","Имя"}.
{"Grant voice to this person?","Предоставить голос?"}.
{"Groups","Группы"}.
{"Group","Группа"}.
{"has been banned","запретили входить в комнату"}.
{"has been kicked because of a system shutdown","выгнали из комнаты из-за останова системы"}.
{"has been kicked because of an affiliation change","выгнали из комнаты вследствие смены ранга"}.
{"has been kicked because the room has been changed to members-only","выгнали из комнаты потому что она стала только для членов"}.
{"has been kicked","выгнали из комнаты"}.
{"Host unknown","Неизвестное имя сервера"}.
{"Host","Хост"}.
{"HTTP File Upload","Передача файлов по HTTP"}.
{"Idle connection","Неиспользуемое соединение"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Если вы не видите изображение капчи, перейдите по ссылке."}.
@@ -162,7 +146,6 @@
{"Import Users From jabberd14 Spool Files","Импорт пользователей из спула jabberd14"}.
{"Improper domain part of 'from' attribute","Неправильная доменная часть атрибута 'from'"}.
{"Improper message type","Неправильный тип сообщения"}.
{"Incoming s2s Connections:","Входящие s2s соединения:"}.
{"Incorrect CAPTCHA submit","Неверный ввод капчи"}.
{"Incorrect data form","Некорректная форма данных"}.
{"Incorrect password","Неправильный пароль"}.
@@ -190,8 +173,6 @@
{"Last month","За последний месяц"}.
{"Last year","За последний год"}.
{"leaves the room","вышел(а) из комнаты"}.
{"List of rooms","Список комнат"}.
{"Low level update script","Низкоуровневый сценарий обновления"}.
{"Make participants list public","Сделать список участников видимым всем"}.
{"Make room CAPTCHA protected","Сделать комнату защищённой капчей"}.
{"Make room members-only","Комната только для зарегистрированных участников"}.
@@ -206,21 +187,17 @@
{"Maximum Number of Occupants","Максимальное количество участников"}.
{"May","мая"}.
{"Membership is required to enter this room","В эту конференцию могут входить только её члены"}.
{"Members:","Члены:"}.
{"Memory","Память"}.
{"Message body","Тело сообщения"}.
{"Message not found in forwarded payload","Сообщение не найдено в пересылаемом вложении"}.
{"Messages from strangers are rejected","Сообщения от незнакомцев запрещены"}.
{"Middle Name","Отчество"}.
{"Minimum interval between voice requests (in seconds)","Минимальный интервал между запросами на право голоса"}.
{"Moderator privileges required","Требуются права модератора"}.
{"Modified modules","Изменённые модули"}.
{"Module failed to handle the query","Ошибка модуля при обработке запроса"}.
{"Monday","Понедельник"}.
{"Multicast","Мультикаст"}.
{"Multi-User Chat","Конференция"}.
{"Name","Название"}.
{"Name:","Название:"}.
{"Neither 'jid' nor 'nick' attribute found","Не найден атрибут 'jid' или 'nick'"}.
{"Neither 'role' nor 'affiliation' attribute found","Не найден атрибут 'role' или 'affiliation'"}.
{"Never","Никогда"}.
@@ -275,12 +252,9 @@
{"Number of online users","Количество подключённых пользователей"}.
{"Number of registered users","Количество зарегистрированных пользователей"}.
{"October","октября"}.
{"Offline Messages","Офлайновые сообщения"}.
{"Offline Messages:","Офлайновые сообщения:"}.
{"OK","Продолжить"}.
{"Old Password:","Старый пароль:"}.
{"Online Users","Подключённые пользователи"}.
{"Online Users:","Подключённые пользователи:"}.
{"Online","Подключён"}.
{"Only deliver notifications to available users","Доставлять уведомления только доступным пользователям"}.
{"Only <enable/> or <disable/> tags are allowed","Допустимы только тэги <enable/> или <disable/>"}.
@@ -294,18 +268,15 @@
{"Only service administrators are allowed to send service messages","Только администратор службы может посылать служебные сообщения"}.
{"Organization Name","Название организации"}.
{"Organization Unit","Отдел организации"}.
{"Outgoing s2s Connections:","Исходящие s2s-серверы:"}.
{"Outgoing s2s Connections","Исходящие s2s-соединения"}.
{"Owner privileges required","Требуются права владельца"}.
{"Packet relay is denied by service policy","Пересылка пакетов запрещена политикой службы"}.
{"Packet","Пакет"}.
{"Password Verification","Проверка пароля"}.
{"Password Verification:","Проверка пароля:"}.
{"Password","Пароль"}.
{"Password:","Пароль:"}.
{"Path to Dir","Путь к директории"}.
{"Path to File","Путь к файлу"}.
{"Pending","Ожидание"}.
{"Period: ","Период"}.
{"Persist items to storage","Сохранять публикации в хранилище"}.
{"Ping query is incorrect","Некорректный пинг-запрос"}.
@@ -330,18 +301,13 @@
{"RAM copy","ОЗУ"}.
{"Really delete message of the day?","Действительно удалить сообщение дня?"}.
{"Recipient is not in the conference room","Адресата нет в конференции"}.
{"Registered Users","Зарегистрированные пользователи"}.
{"Registered Users:","Зарегистрированные пользователи:"}.
{"Register","Зарегистрировать"}.
{"Remote copy","не хранится локально"}.
{"Remove All Offline Messages","Удалить все офлайновые сообщения"}.
{"Remove User","Удалить пользователя"}.
{"Remove","Удалить"}.
{"Replaced by new connection","Заменено новым соединением"}.
{"Request has timed out","Истекло время ожидания запроса"}.
{"Resources","Ресурсы"}.
{"Restart Service","Перезапустить службу"}.
{"Restart","Перезапустить"}.
{"Restore Backup from File at ","Восстановление из резервной копии на "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Восстановить из бинарной резервной копии при следующем запуске (требует меньше памяти):"}.
{"Restore binary backup immediately:","Восстановить из бинарной резервной копии немедленно:"}.
@@ -355,13 +321,10 @@
{"Room title","Название комнаты"}.
{"Roster groups allowed to subscribe","Группы списка контактов, которым разрешена подписка"}.
{"Roster size","Размер списка контактов"}.
{"RPC Call Error","Ошибка вызова RPC"}.
{"Running Nodes","Работающие узлы"}.
{"Saturday","Суббота"}.
{"Script check","Проверка сценария"}.
{"Search Results for ","Результаты поиска в "}.
{"Search users in ","Поиск пользователей в "}.
{"Select All","Выбрать всё"}.
{"Send announcement to all online users on all hosts","Разослать объявление всем подключённым пользователям на всех виртуальных серверах"}.
{"Send announcement to all online users","Разослать объявление всем подключённым пользователям"}.
{"Send announcement to all users on all hosts","Разослать объявление всем пользователям на всех виртуальных серверах"}.
@@ -379,21 +342,15 @@
{"Specify the access model","Укажите механизм управления доступом"}.
{"Specify the event message type","Укажите тип сообщения о событии"}.
{"Specify the publisher model","Условия публикации"}.
{"Statistics of ~p","статистика узла ~p"}.
{"Statistics","Статистика"}.
{"Stopped Nodes","Остановленные узлы"}.
{"Stop","Остановить"}.
{"Storage Type","Тип таблицы"}.
{"Store binary backup:","Сохранить бинарную резервную копию:"}.
{"Store plain text backup:","Сохранить текстовую резервную копию:"}.
{"Stream management is already enabled","Управление потоком уже активировано"}.
{"Stream management is not enabled","Управление потоком не активировано"}.
{"Subject","Тема"}.
{"Submitted","Отправлено"}.
{"Submit","Отправить"}.
{"Subscriber Address","Адрес подписчика"}.
{"Subscriptions are not allowed","Подписки недопустимы"}.
{"Subscription","Подписка"}.
{"Sunday","Воскресенье"}.
{"That nickname is already in use by another occupant","Этот псевдоним уже занят другим участником"}.
{"That nickname is registered by another person","Этот псевдоним зарегистрирован кем-то другим"}.
@@ -418,7 +375,6 @@
{"Thursday","Четверг"}.
{"Time delay","По истечение"}.
{"Timed out waiting for stream resumption","Истекло время ожидания возобновления потока"}.
{"Time","Время"}.
{"To register, visit ~s","Для регистрации посетите ~s"}.
{"Token TTL","Токен TTL"}.
{"Too many active bytestreams","Слишком много активных потоков данных"}.
@@ -430,13 +386,7 @@
{"Too many receiver fields were specified","Указано слишком много получателей"}.
{"Too many unacked stanzas","Слишком много неподтверждённых пакетов"}.
{"Too many users in this conference","Слишком много пользователей в этой конференции"}.
{"Total rooms","Все комнаты"}.
{"To","Кому"}.
{"Traffic rate limit is exceeded","Превышен лимит скорости посылки информации"}.
{"Transactions Aborted:","Транзакции отмененные:"}.
{"Transactions Committed:","Транзакции завершенные:"}.
{"Transactions Logged:","Транзакции запротоколированные:"}.
{"Transactions Restarted:","Транзакции перезапущенные:"}.
{"Tuesday","Вторник"}.
{"Unable to generate a CAPTCHA","Не получилось создать капчу"}.
{"Unable to register route on existing local domain","Нельзя регистрировать маршруты на существующие локальные домены"}.
@@ -444,16 +394,10 @@
{"Unexpected action","Неожиданное действие"}.
{"Unexpected error condition: ~p","Неожиданная ошибка: ~p"}.
{"Unregister","Удалить"}.
{"Unselect All","Снять всё выделение"}.
{"Unsupported <index/> element","Элемент <index/> не поддерживается"}.
{"Unsupported version","Неподдерживаемая версия"}.
{"Update message of the day (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 JID","JID пользователя"}.
{"User (jid)","Пользователь (XMPP адрес)"}.
@@ -466,7 +410,6 @@
{"Users Last Activity","Статистика последнего подключения пользователей"}.
{"Users","Пользователи"}.
{"User","Пользователь"}.
{"Validate","Утвердить"}.
{"Value 'get' of 'type' attribute is not allowed","Значение 'get' атрибута 'type' недопустимо"}.
{"Value of '~s' should be boolean","Значение '~s' должно быть булевым"}.
{"Value of '~s' should be datetime string","Значение '~s' должно быть датой"}.
-48
View File
@@ -8,8 +8,6 @@
{"A password is required to enter this room","Pre vstup do miestnosti je potrebné heslo"}.
{"Access denied by service policy","Prístup bol zamietnutý nastavením služby"}.
{"Action on user","Operácia aplikovaná na užívateľa"}.
{"Add Jabber ID","Pridať Jabber ID"}.
{"Add New","Pridať nový"}.
{"Add User","Pridať používateľa"}.
{"Administration of ","Administrácia "}.
{"Administration","Administrácia"}.
@@ -51,20 +49,16 @@
{"Conference room does not exist","Diskusná miestnosť neexistuje"}.
{"Configuration of room ~s","Konfigurácia miestnosti ~s"}.
{"Configuration","Konfigurácia"}.
{"Connected Resources:","Pripojené zdroje:"}.
{"Country","Krajina"}.
{"CPU Time:","Čas procesoru"}.
{"Database Tables Configuration at ","Konfigurácia databázových tabuliek "}.
{"Database","Databáza"}.
{"December","December"}.
{"Default users as participants","Užívatelia sú implicitne členmi"}.
{"Delete message of the day on all hosts","Zmazať správu dňa na všetkých serveroch"}.
{"Delete message of the day","Zmazať správu dňa"}.
{"Delete Selected","Zmazať vybrané"}.
{"Delete User","Vymazať užívateľa"}.
{"Deliver event notifications","Doručiť oznamy o udalosti"}.
{"Deliver payloads with event notifications","Doručiť náklad s upozornením na udalosť"}.
{"Description:","Popis:"}.
{"Disc only copy","Len kópia disku"}.
{"Dump Backup to Text File at ","Uložiť zálohu do textového súboru na "}.
{"Dump to Text File","Uložiť do textového súboru"}.
@@ -75,7 +69,6 @@
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams modul"}.
{"ejabberd vCard module","ejabberd vCard modul"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"Elements","Prvky"}.
{"Email","E-mail"}.
{"Enable logging","Zapnúť zaznamenávanie histórie"}.
{"End User Session","Ukončiť reláciu užívateľa"}.
@@ -85,7 +78,6 @@
{"Enter path to jabberd14 spool file","Zadajte cestu k spool súboru jabberd14"}.
{"Enter path to text file","Zadajte cestu k textovému súboru"}.
{"Enter the text you see","Zadajte zobrazený text"}.
{"Error","Chyba"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Nepoužívať CAPTCHA pre nasledujúce Jabber ID"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportovať dáta všetkých uživateľov na serveri do súborov PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportovať dáta uživateľov na hostitelovi do súborov PIEFXIS (XEP-0227):"}.
@@ -93,22 +85,17 @@
{"Family Name","Priezvisko"}.
{"February","Február"}.
{"Friday","Piatok"}.
{"From","Od"}.
{"Full Name","Celé meno: "}.
{"Get Number of Online Users","Zobraziť počet pripojených užívateľov"}.
{"Get Number of Registered Users","Zobraziť počet registrovaných užívateľov"}.
{"Get User Last Login Time","Zobraziť čas posledného prihlásenia"}.
{"Get User Password","Zobraziť heslo užívateľa"}.
{"Get User Statistics","Zobraziť štatistiku užívateľa"}.
{"Grant voice to this person?","Prideltiť Voice tejto osobe?"}.
{"Group","Skupina"}.
{"Groups","Skupiny"}.
{"has been banned","bol(a) zablokovaný(á)"}.
{"has been kicked because of a system shutdown","bol vyhodený(á) kvôli reštartu systému"}.
{"has been kicked because of an affiliation change","bol vyhodený(á) kvôli zmene priradenia"}.
{"has been kicked because the room has been changed to members-only","bol vyhodený(á), pretože miestnosť bola vyhradená len pre členov"}.
{"has been kicked","bol(a) vyhodený(á) z miestnosti"}.
{"Host","Server"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Pokiaľ nevidíte obrázok CAPTCHA, navštívte webovú stránku."}.
{"Import Directory","Import adresára"}.
{"Import File","Import súboru"}.
@@ -134,7 +121,6 @@
{"Last month","Posledný mesiac"}.
{"Last year","Posledný rok"}.
{"leaves the room","odišiel(a) z miestnosti"}.
{"Low level update script","Nízkoúrovňový aktualizačný skript"}.
{"Make participants list public","Nastaviť zoznam zúčastnených ako verejný"}.
{"Make room CAPTCHA protected","Chrániť miestnosť systémom CAPTCHA"}.
{"Make room members-only","Nastaviť miestnosť len pre členov"}.
@@ -146,17 +132,13 @@
{"Max payload size in bytes","Maximálny náklad v bajtoch"}.
{"Maximum Number of Occupants","Počet účastníkov"}.
{"May","Máj"}.
{"Members:","Členovia:"}.
{"Membership is required to enter this room","Pre vstup do miestnosti je potrebné byť členom"}.
{"Memory","Pamäť"}.
{"Message body","Telo správy"}.
{"Middle Name","Prostredné meno: "}.
{"Minimum interval between voice requests (in seconds)","Minimum interval between voice requests (in seconds)"}.
{"Moderator privileges required","Sú potrebné práva moderátora"}.
{"Modified modules","Modifikované moduly"}.
{"Monday","Pondelok"}.
{"Name","Meno"}.
{"Name:","Meno:"}.
{"Never","Nikdy"}.
{"New Password:","Nové heslo:"}.
{"Nickname Registration at ","Registrácia prezývky na "}.
@@ -178,11 +160,8 @@
{"Number of online users","Počet online užívateľov"}.
{"Number of registered users","Počet registrovaných užívateľov"}.
{"October","Október"}.
{"Offline Messages","Offline správy"}.
{"Offline Messages:","Offline správy"}.
{"OK","OK"}.
{"Old Password:","Staré heslo:"}.
{"Online Users:","Online používatelia:"}.
{"Online Users","Online užívatelia"}.
{"Online","Online"}.
{"Only deliver notifications to available users","Doručovať upozornenia len aktuálne prihláseným používateľom"}.
@@ -195,16 +174,13 @@
{"Organization Name","Meno organizácie: "}.
{"Organization Unit","Organizačná jednotka: "}.
{"Outgoing s2s Connections","Odchádzajúce s2s spojenia"}.
{"Outgoing s2s Connections:","Odchádzajúce s2s spojenia:"}.
{"Owner privileges required","Sú vyžadované práva vlastníka"}.
{"Packet","Paket"}.
{"Password Verification","Overenie hesla"}.
{"Password Verification:","Overenie hesla"}.
{"Password","Heslo"}.
{"Password:","Heslo:"}.
{"Path to Dir","Cesta k adresáru"}.
{"Path to File","Cesta k súboru"}.
{"Pending","Čakajúce"}.
{"Period: ","Čas:"}.
{"Persist items to storage","Uložiť položky natrvalo do úložiska"}.
{"Ping","Ping"}.
@@ -221,17 +197,12 @@
{"RAM copy","Kópia RAM"}.
{"Really delete message of the day?","Skutočne zmazať správu dňa?"}.
{"Recipient is not in the conference room","Príjemca sa nenachádza v konferenčnej miestnosti"}.
{"Registered Users","Registrovaní používatelia"}.
{"Registered Users:","Registrovaní používatelia:"}.
{"Register","Zoznam kontaktov"}.
{"Remote copy","Vzdialená kópia"}.
{"Remove All Offline Messages","Odstrániť všetky offline správy"}.
{"Remove User","Odstrániť užívateľa"}.
{"Remove","Odstrániť"}.
{"Replaced by new connection","Nahradené novým spojením"}.
{"Resources","Zdroje"}.
{"Restart Service","Reštartovať službu"}.
{"Restart","Reštart"}.
{"Restore Backup from File at ","Obnoviť zálohu zo súboru na "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Obnoviť binárnu zálohu pri nasledujúcom reštarte ejabberd (vyžaduje menej pamäte)"}.
{"Restore binary backup immediately:","Okamžite obnoviť binárnu zálohu:"}.
@@ -244,10 +215,8 @@
{"Room title","Názov miestnosti"}.
{"Roster groups allowed to subscribe","Skupiny kontaktov, ktoré môžu odoberať"}.
{"Roster size","Počet kontaktov v zozname"}.
{"RPC Call Error","Chyba RPC volania"}.
{"Running Nodes","Bežiace uzly"}.
{"Saturday","Sobota"}.
{"Script check","Kontrola skriptu"}.
{"Search Results for ","Hľadať výsledky pre "}.
{"Search users in ","Hľadať užívateľov v "}.
{"Send announcement to all online users on all hosts","Odoslať oznam všetkým online používateľom na všetkých serveroch"}.
@@ -264,18 +233,12 @@
{"Specify the access model","Uveďte model prístupu"}.
{"Specify the event message type","Uveďte typ pre správu o udalosti"}.
{"Specify the publisher model","Špecifikovať model publikovania"}.
{"Statistics of ~p","Štatistiky ~p"}.
{"Statistics","Štatistiky"}.
{"Stopped Nodes","Zastavené uzly"}.
{"Stop","Zastaviť"}.
{"Storage Type","Typ úložiska"}.
{"Store binary backup:","Uložiť binárnu zálohu:"}.
{"Store plain text backup:","Uložiť zálohu do textového súboru:"}.
{"Subject","Predmet"}.
{"Submit","Odoslať"}.
{"Submitted","Odoslané"}.
{"Subscriber Address","Adresa odberateľa"}.
{"Subscription","Prihlásenie"}.
{"Sunday","Nedeľa"}.
{"That nickname is already in use by another occupant","Prezývka je už používaná iným členom"}.
{"That nickname is registered by another person","Prezývka je už zaregistrovaná inou osobou"}.
@@ -289,24 +252,14 @@
{"This room is not anonymous","Táto miestnosť nie je anonymná"}.
{"Thursday","Štvrtok"}.
{"Time delay","Časový posun"}.
{"Time","Čas"}.
{"Too many CAPTCHA requests","Príliš veľa žiadostí o CAPTCHA"}.
{"To","Pre"}.
{"Traffic rate limit is exceeded","Bol prekročený prenosový limit"}.
{"Transactions Aborted:","Transakcie zrušená"}.
{"Transactions Committed:","Transakcie potvrdená"}.
{"Transactions Logged:","Transakcie zaznamenaná"}.
{"Transactions Restarted:","Transakcie reštartovaná"}.
{"Tuesday","Utorok"}.
{"Unable to generate a CAPTCHA","Nepodarilo sa vygenerovat CAPTCHA"}.
{"Unauthorized","Neautorizovaný"}.
{"Unregister","Zrušiť účet"}.
{"Update message of the day (don't send)","Aktualizovať správu dňa (neodosielať)"}.
{"Update message of the day on all hosts (don't send)","Upraviť správu dňa na všetkých serveroch"}.
{"Update plan","Aktualizovať plán"}.
{"Update script","Aktualizované skripty"}.
{"Update","Aktualizovať"}.
{"Uptime:","Uptime:"}.
{"User JID","Používateľ "}.
{"User Management","Správa užívateľov"}.
{"Username:","IRC prezývka"}.
@@ -314,7 +267,6 @@
{"Users Last Activity","Posledná aktivita používateľa"}.
{"Users","Používatelia"}.
{"User","Užívateľ"}.
{"Validate","Overiť"}.
{"vCard User Search","Hľadať užívateľov vo vCard"}.
{"Virtual Hosts","Virtuálne servery"}.
{"Visitors are not allowed to change their nicknames in this room","V tejto miestnosti nieje povolené meniť prezývky"}.
-50
View File
@@ -11,8 +11,6 @@
{"A Web Page","Faqe Web"}.
{"Accept","Pranoje"}.
{"Account doesn't exist","Llogaria sekziston"}.
{"Add Jabber ID","Shtoni ID Jabber"}.
{"Add New","Shtoni të Ri"}.
{"Add User","Shtoni Përdorues"}.
{"Administration of ","Administrim i "}.
{"Administration","Administrim"}.
@@ -68,25 +66,18 @@
{"Configuration of room ~s","Formësim i dhomë ~s"}.
{"Configuration","Formësim"}.
{"Country","Vend"}.
{"CPU Time:","Kohë CPU-je:"}.
{"Current Discussion Topic","Tema e Tanishme e Diskutimit"}.
{"Database failure","Dështim baze të dhënash"}.
{"Database Tables at ~p","Tabela Baze të Dhënash te ~p"}.
{"Database Tables Configuration at ","Formësim Tabelash Baze të Dhënash te "}.
{"Database","Bazë të dhënash"}.
{"December","Dhjetor"}.
{"Delete content","Fshini lëndë"}.
{"Delete message of the day","Fshini mesazhin e ditës"}.
{"Delete Selected","Fshi të Përzgjedhurin"}.
{"Delete table","Fshini tabelën"}.
{"Delete User","Fshi Përdorues"}.
{"Deliver event notifications","Dërgo njoftime aktesh"}.
{"Description:","Përshkrim:"}.
{"Disc only copy","Kopje vetëm në disk"}.
{"Duplicated groups are not allowed by RFC6121","Grupe të përsëdytur slejohen nga RFC6121"}.
{"Edit Properties","Përpunoni Veti"}.
{"ejabberd","ejabberd"}.
{"Elements","Elementë"}.
{"Email Address","Adresë Email"}.
{"Email","Email"}.
{"Enable logging","Aktivizo regjistrim"}.
@@ -94,7 +85,6 @@
{"Enter path to backup file","Jepni shteg për te kartelë kopjeruajtje"}.
{"Enter path to text file","Jepni shteg për te kartelë tekst"}.
{"Enter the text you see","Jepni tekstin që shihni"}.
{"Error","Gabim"}.
{"External component failure","Dështim përbërësi të jashtëm"}.
{"External component timeout","Mbarim kohe për përbërës të jashtëm"}.
{"Failed to parse HTTP response","Su arrit të përtypet përgjigje HTTP"}.
@@ -106,23 +96,17 @@
{"Fill in the form to search for any matching XMPP User","Plotësoni formularin që të kërkohet për çfarëdo përdoruesi XMPP me përputhje"}.
{"Friday","E premte"}.
{"From ~ts","Nga ~ts"}.
{"From","Nga"}.
{"Full List of Room Admins","Listë e Plotë Përgjegjësish Dhome"}.
{"Full List of Room Owners","Listë e Plotë të Zotësh Dhome"}.
{"Full Name","Emër i Plotë"}.
{"Get Number of Online Users","Merr Numër Përdoruesish Në Linjë"}.
{"Get Number of Registered Users","Merr Numër Përdoruesish të Regjistruar"}.
{"Get User Password","Merr Fjalëkalim Përdoruesi"}.
{"Get User Statistics","Merr Statistika Përdoruesi"}.
{"Given Name","Emër"}.
{"Grant voice to this person?","Ti akordohet zë këtij personi?"}.
{"Group","Grup"}.
{"Groups that will be displayed to the members","Grupe që do tu shfaqen anëtarëve"}.
{"Groups","Grupe"}.
{"has been banned","është dëbuar"}.
{"has been kicked","është përzënë"}.
{"Host unknown","Strehë e panjohur"}.
{"Host","Strehë"}.
{"HTTP File Upload","Ngarkim Kartelash HTTP"}.
{"Idle connection","Lidhje e plogësht"}.
{"Import Directory","Importoni Drejtori"}.
@@ -130,7 +114,6 @@
{"Import User from File at ","Importo Përdorues prej Kartele te "}.
{"Import Users from Dir at ","Importo Përdorues nga Drejtori te "}.
{"Improper message type","Lloj i pasaktë mesazhesh"}.
{"Incoming s2s Connections:","Lidhje s2s Ardhëse:"}.
{"Incorrect CAPTCHA submit","Parashtim Captcha-je të pasaktë"}.
{"Incorrect password","Fjalëkalim i pasaktë"}.
{"Incorrect value of 'action' attribute","Vlerë e pavlefshme atributi 'action'"}.
@@ -149,14 +132,12 @@
{"July","Korrik"}.
{"June","Qershor"}.
{"Just created","Të sapokrijuara"}.
{"Label:","Etiketë:"}.
{"Last Activity","Veprimtaria e Fundit"}.
{"Last login","Hyrja e fundit"}.
{"Last message","Mesazhi i fundit"}.
{"Last month","Muaji i fundit"}.
{"Last year","Viti i shkuar"}.
{"leaves the room","del nga dhoma"}.
{"List of rooms","Listë dhomash"}.
{"Logging","Regjistrim"}.
{"Make participants list public","Bëje publike listën e pjesëmarrësve"}.
{"Make room CAPTCHA protected","Bëje dhomën të mbrojtur me CAPTCHA"}.
@@ -171,10 +152,7 @@
{"Maximum file size","Madhësi maksimum kartelash"}.
{"Maximum Number of Occupants","Numër Maksimum të Pranishmish"}.
{"May","Maj"}.
{"Members not added (inexistent vhost!): ","Su shtuan anëtarë (vhost joekzistuese!): "}.
{"Members:","Anëtarë:"}.
{"Membership is required to enter this room","Lypset anëtarësim për të hyrë në këtë dhomë"}.
{"Memory","Kujtesë"}.
{"Message body","Lëndë mesazhi"}.
{"Messages from strangers are rejected","Mesazhet prej të panjohurish hidhen tej"}.
{"Messages of type headline","Mesazhe të llojit titull"}.
@@ -188,7 +166,6 @@
{"Multicast","Multikast"}.
{"Multi-User Chat","Fjalosje Me Shumë Përdorues Njëherësh"}.
{"Name","Emër"}.
{"Name:","Emër:"}.
{"Natural-Language Room Name","Emër Dhome Në Gjuhë Natyrale"}.
{"Never","Kurrë"}.
{"New Password:","Fjalëkalim i Ri:"}.
@@ -228,23 +205,17 @@
{"Occupants are allowed to invite others","Të pranishmëve u është lejuar të ftojnë të tjerë"}.
{"Occupants May Change the Subject","Të pranishmit Mund të Ndryshojnë Subjektin"}.
{"October","Tetor"}.
{"Offline Messages","Mesazhe Jo Në Linjë"}.
{"Offline Messages:","Mesazhe Jo Në Linjë:"}.
{"OK","OK"}.
{"Old Password:","Fjalëkalimi i Vjetër:"}.
{"Online Users","Përdorues Në Linjë"}.
{"Online Users:","Përdorues Në Linjë:"}.
{"Online","Në linjë"}.
{"Only admins can see this","Këtë mund ta shohin vetëm përgjegjësit"}.
{"Only deliver notifications to available users","Dorëzo njoftime vetëm te përdoruesit e pranishëm"}.
{"Only occupants are allowed to send messages to the conference","Vetëm të pranishmëve u lejohet të dërgojnë mesazhe te konferenca"}.
{"Only publishers may publish","Vetëm botuesit mund të botojnë"}.
{"Organization Name","Emër Enti"}.
{"Organization Unit","Njësi Organizative"}.
{"Outgoing s2s Connections","Lidhje s2s Ikëse"}.
{"Outgoing s2s Connections:","Lidhje s2s Ikëse:"}.
{"Owner privileges required","Lypset privilegje të zoti"}.
{"Packet","Paketë"}.
{"Participant","Pjesëmarrës"}.
{"Password Verification","Verifikim Fjalëkalimi"}.
{"Password Verification:","Verifikim Fjalëkalimi:"}.
@@ -252,7 +223,6 @@
{"Password:","Fjalëkalim:"}.
{"Path to Dir","Shteg për te Drejtori"}.
{"Path to File","Shteg për te Kartelë"}.
{"Pending","Pezull"}.
{"Period: ","Periudhë: "}.
{"Ping","Ping"}.
{"Pong","Pong"}.
@@ -265,27 +235,21 @@
{"Really delete message of the day?","Të fshihet vërtet mesazhi i ditës?"}.
{"Recipient is not in the conference room","Pjesëmarrësi s’është në dhomën e konferencës"}.
{"Register an XMPP account","Regjistroni një llogari XMPP"}.
{"Registered Users","Përdorues të Regjistruar"}.
{"Registered Users:","Përdorues të Regjistruar:"}.
{"Register","Regjistrohuni"}.
{"Remote copy","Kopje e largët"}.
{"Remove All Offline Messages","Hiq Krejt Mesazhet Jo Në Linjë"}.
{"Remove User","Hiqeni Përdoruesin"}.
{"Remove","Hiqe"}.
{"Replaced by new connection","Zëvendësuar nga lidhje e re"}.
{"Request has timed out","Kërkesës i mbaroi koha"}.
{"Request is ignored","Kërkesa u shpërfill"}.
{"Requested role","Rol i domosdoshëm"}.
{"Resources","Burime"}.
{"Restart Service","Rinise Shërbimin"}.
{"Restart","Rinise"}.
{"Restore","Riktheje"}.
{"Roles that May Send Private Messages","Role që Mund të Dërgojnë Mesazhe Private"}.
{"Room Configuration","Formësim Dhome"}.
{"Room description","Përshkrim i dhomës"}.
{"Room Occupants","Të pranishëm Në Dhomë"}.
{"Room title","Titull dhome"}.
{"RPC Call Error","Gabim Thirrjeje RPC"}.
{"Running Nodes","Nyje Në Punë"}.
{"Saturday","E shtunë"}.
{"Search from the date","Kërko nga data"}.
@@ -293,7 +257,6 @@
{"Search the text","Kërkoni për tekst"}.
{"Search until the date","Kërko deri më datën"}.
{"Search users in ","Kërko përdorues te "}.
{"Select All","Përzgjidheni Krejt"}.
{"Send announcement to all users","Dërgo njoftim krejt përdoruesve"}.
{"September","Shtator"}.
{"Server:","Shërbyes:"}.
@@ -303,16 +266,10 @@
{"Specify the access model","Specifikoni model hyrjeje"}.
{"Specify the event message type","Përcaktoni llojin e mesazhit për aktin"}.
{"Specify the publisher model","Përcaktoni model botuesi"}.
{"Statistics of ~p","Statistika për ~p"}.
{"Statistics","Statistika"}.
{"Stop","Ndale"}.
{"Stopped Nodes","Nyja të Ndalura"}.
{"Storage Type","Lloj Depozitimi"}.
{"Subject","Subjekti"}.
{"Submit","Parashtrojeni"}.
{"Submitted","Parashtruar"}.
{"Subscriber Address","Adresë e Pajtimtarit"}.
{"Subscription","Pajtim"}.
{"Sunday","E diel"}.
{"The account already exists","Ka tashmë një llogari të tillë"}.
{"The account was not unregistered","Llogaria sqe çregjistruar"}.
@@ -334,23 +291,18 @@
{"This room is not anonymous","Kjo dhomë s’është anonime"}.
{"Thursday","E enjte"}.
{"Time delay","Vonesë kohore"}.
{"Time","Kohë"}.
{"Too many CAPTCHA requests","Shumë kërkesa ndaj CAPTCHA-s"}.
{"Too many child elements","Shumë elementë pjella"}.
{"Too many <item/> elements","Shumë elementë <item/>"}.
{"Too many <list/> elements","Shumë elementë <list/>"}.
{"Too many users in this conference","Shumë përdorues në këtë konferencë"}.
{"Total rooms","Dhoma gjithsej"}.
{"Tuesday","E martë"}.
{"Unable to generate a CAPTCHA","Sarrihet të prodhohet një CAPTCHA"}.
{"Unauthorized","E paautorizuar"}.
{"Unexpected action","Veprim i papritur"}.
{"Unregister an XMPP account","Çregjistroni një llogari XMPP"}.
{"Unregister","Çregjistrohuni"}.
{"Unselect All","Shpërzgjidhi Krejt"}.
{"Unsupported version","Version i pambuluar"}.
{"Update","Përditësoje"}.
{"Uptime:","Kohëpunim:"}.
{"User already exists","Ka tashmë një përdorues të tillë"}.
{"User JID","JID përdoruesi"}.
{"User (jid)","Përdorues (jid)"}.
@@ -362,8 +314,6 @@
{"User","Përdorues"}.
{"Users Last Activity","Veprimtaria e Fundit Nga Përdorues"}.
{"Users","Përdorues"}.
{"Validate","Vleftësoje"}.
{"View Queue","Shihni Radhën"}.
{"Virtual Hosts","Streha Virtuale"}.
{"Visitor","Vizitor"}.
{"Wednesday","E mërkurë"}.
-47
View File
@@ -7,8 +7,6 @@
{"A friendly name for the node","Ett vänligt namn for noden"}.
{"Access denied by service policy","Åtkomst nekad enligt lokal policy"}.
{"Action on user","Handling mot användare"}.
{"Add Jabber ID","Lägg till Jabber ID"}.
{"Add New","Lägg till ny"}.
{"Add User","Lägg till användare"}.
{"Administration of ","Administration av "}.
{"Administration","Administration"}.
@@ -42,20 +40,16 @@
{"Conference room does not exist","Rummet finns inte"}.
{"Configuration of room ~s","Konfiguration för ~s"}.
{"Configuration","Konfiguration"}.
{"Connected Resources:","Anslutna resurser:"}.
{"Country","Land"}.
{"CPU Time:","CPU tid"}.
{"Database Tables Configuration at ","Databastabellers konfiguration"}.
{"Database","Databas"}.
{"December","December"}.
{"Default users as participants","Gör om användare till deltagare"}.
{"Delete message of the day on all hosts","Ta bort dagens meddelande på alla värdar"}.
{"Delete message of the day","Ta bort dagens meddelande"}.
{"Delete Selected","Tabort valda"}.
{"Delete User","Ta bort användare"}.
{"Deliver event notifications","Skicka eventnotifikation"}.
{"Deliver payloads with event notifications","Skicka innehåll tillsammans med notifikationer"}.
{"Description:","Beskrivning:"}.
{"Disc only copy","Endast diskkopia"}.
{"Dump Backup to Text File at ","Dumpa säkerhetskopia till textfil på "}.
{"Dump to Text File","Dumpa till textfil"}.
@@ -65,7 +59,6 @@
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestrem modul"}.
{"ejabberd vCard module","ejabberd vCard-modul"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"Elements","Elements"}.
{"Email","Email"}.
{"Enable logging","Möjliggör login"}.
{"End User Session","Avsluta användarsession"}.
@@ -75,27 +68,21 @@
{"Enter path to jabberd14 spool file","Skriv in sökväg till spoolfil från jabberd14"}.
{"Enter path to text file","Skriv in sökväg till textfil"}.
{"Enter the text you see","Skriv in sökväg till textfil"}.
{"Error","Fel"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportera data av alla användare i servern till en PIEFXIS fil (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportera data av användare i en host till PIEFXIS fil (XEP-0227):"}.
{"Family Name","Efternamn"}.
{"February","Februari"}.
{"Friday","Fredag"}.
{"From","Från"}.
{"Full Name","Fullständigt namn"}.
{"Get Number of Online Users","Hämta antal inloggade användare"}.
{"Get Number of Registered Users","Hämta antal registrerade användare"}.
{"Get User Last Login Time","Hämta användarens senast inloggade tid"}.
{"Get User Password","Hämta användarlösenord"}.
{"Get User Statistics","Hämta användarstatistik"}.
{"Group","Grupp"}.
{"Groups","Grupper"}.
{"has been banned","har blivit bannad"}.
{"has been kicked because of a system shutdown","har blivit kickad p.g.a en systemnerstängning"}.
{"has been kicked because of an affiliation change","har blivit kickad p.g.a en ändring av tillhörighet"}.
{"has been kicked because the room has been changed to members-only","har blivit kickad p.g.a att rummet har ändrats till endast användare"}.
{"has been kicked","har blivit kickad"}.
{"Host","Server"}.
{"Import Directory","Importera katalog"}.
{"Import File","Importera fil"}.
{"Import user data from jabberd14 spool file:","Importera användare från jabberd14 Spool filer"}.
@@ -120,7 +107,6 @@
{"Last month","Senaste månaden"}.
{"Last year","Senaste året"}.
{"leaves the room","lämnar rummet"}.
{"Low level update script","Uppdaterade laglevel skript"}.
{"Make participants list public","Gör deltagarlistan publik"}.
{"Make room members-only","Gör om rummet till endast medlemmar"}.
{"Make room moderated","Gör rummet modererat"}.
@@ -132,15 +118,11 @@
{"Maximum Number of Occupants","Maximalt antal av användare"}.
{"May","Maj"}.
{"Membership is required to enter this room","Du måste vara medlem för att komma in i det här rummet"}.
{"Members:","Medlemmar:"}.
{"Memory","Minne"}.
{"Message body","Meddelande kropp"}.
{"Middle Name","Mellannamn"}.
{"Moderator privileges required","Moderatorprivilegier krävs"}.
{"Modified modules","Uppdaterade moduler"}.
{"Monday","Måndag"}.
{"Name","Namn"}.
{"Name:","Namn:"}.
{"Never","Aldrig"}.
{"Nickname Registration at ","Registrera smeknamn på "}.
{"Nickname ~s does not exist in the room","Smeknamnet ~s existerar inte i det här rummet"}.
@@ -161,11 +143,8 @@
{"Number of online users","Antal inloggade användare"}.
{"Number of registered users","Antal registrerade användare"}.
{"October","Oktober"}.
{"Offline Messages","Offline meddelanden"}.
{"Offline Messages:","Offline meddelanden:"}.
{"OK","OK"}.
{"Online Users","Anslutna användare"}.
{"Online Users:","Inloggade användare"}.
{"Online","Ansluten"}.
{"Only deliver notifications to available users","Skicka notifikationer bara till uppkopplade användare"}.
{"Only moderators and participants are allowed to change the subject in this room","Endast moderatorer och deltagare har tillåtelse att ändra ämnet i det här rummet"}.
@@ -175,15 +154,12 @@
{"Organization Name","Organisationsnamn"}.
{"Organization Unit","Organisationsenhet"}.
{"Outgoing s2s Connections","Utgaende s2s anslutning"}.
{"Outgoing s2s Connections:","Utgående s2s anslutning"}.
{"Owner privileges required","Ägarprivilegier krävs"}.
{"Packet","Paket"}.
{"Password Verification","Lösenordsverifikation"}.
{"Password","Lösenord"}.
{"Password:","Lösenord:"}.
{"Path to Dir","Sökväg till katalog"}.
{"Path to File","Sökväg till fil"}.
{"Pending","Ännu inte godkända"}.
{"Period: ","Period: "}.
{"Persist items to storage","Spara dataposter permanent"}.
{"Ping","Ping"}.
@@ -198,15 +174,11 @@
{"RAM copy","RAM-kopia"}.
{"Really delete message of the day?","Verkligen ta bort dagens meddelanden?"}.
{"Recipient is not in the conference room","Mottagaren finns inte i rummet"}.
{"Registered Users","Registrerade användare"}.
{"Registered Users:","Registrerade användare"}.
{"Remote copy","Sparas inte lokalt"}.
{"Remove User","Ta bort användare"}.
{"Remove","Ta bort"}.
{"Replaced by new connection","Ersatt av ny anslutning"}.
{"Resources","Resurser"}.
{"Restart Service","Starta om servicen"}.
{"Restart","Omstart"}.
{"Restore Backup from File at ","Återställ säkerhetskopia från fil på "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","återställ den binära backupen efter nästa ejabberd omstart"}.
{"Restore binary backup immediately:","återställ den binära backupen omedelbart"}.
@@ -218,10 +190,8 @@
{"Room title","Rumstitel"}.
{"Roster groups allowed to subscribe","Rostergrupper tillåts att prenumerera"}.
{"Roster size","Roster storlek"}.
{"RPC Call Error","RPC Uppringningserror"}.
{"Running Nodes","Körande noder"}.
{"Saturday","Lördag"}.
{"Script check","Skript kollat"}.
{"Search Results for ","Sökresultat för"}.
{"Search users in ","Sök efter användare på "}.
{"Send announcement to all online users on all hosts","Sänd meddelanden till alla inloggade användare på alla värdar"}.
@@ -237,18 +207,12 @@
{"Shut Down Service","Stäng ner servicen"}.
{"Specify the access model","Specificera accessmodellen"}.
{"Specify the publisher model","Ange publiceringsmodell"}.
{"Statistics of ~p","Statistik på ~p"}.
{"Statistics","Statistik"}.
{"Stopped Nodes","Stannade noder"}.
{"Stop","Stoppa"}.
{"Storage Type","Lagringstyp"}.
{"Store binary backup:","Lagra den binära backupen"}.
{"Store plain text backup:","Lagra textbackup"}.
{"Subject","Ämne"}.
{"Submit","Skicka"}.
{"Submitted","Skicka in"}.
{"Subscriber Address","Prenumerationsadress"}.
{"Subscription","Prenumeration"}.
{"Sunday","Söndag"}.
{"That nickname is registered by another person","Smeknamnet är reserverat"}.
{"The CAPTCHA is valid.","Din CAPTCHA är godkänd."}.
@@ -256,27 +220,16 @@
{"This room is not anonymous","Detta rum är inte anonymt"}.
{"Thursday","Torsdag"}.
{"Time delay","Tidsförsening"}.
{"Time","Tid"}.
{"To","Till"}.
{"Traffic rate limit is exceeded","Trafikgränsen har överstigits"}.
{"Transactions Aborted:","Transaktioner borttagna"}.
{"Transactions Committed:","Transaktioner kommittade"}.
{"Transactions Logged:","Transaktioner loggade "}.
{"Transactions Restarted:","Transaktioner omstartade"}.
{"Tuesday","Tisdag"}.
{"Unauthorized","Ej auktoriserad"}.
{"Update message of the day (don't send)","Uppdatera dagens status meddelande (skicka inte)"}.
{"Update message of the day on all hosts (don't send)","Uppdatera dagens status meddelande på alla värdar (skicka inte)"}.
{"Update plan","Uppdateringsplan"}.
{"Update script","Uppdatera skript"}.
{"Update","Uppdatera"}.
{"Uptime:","Tid upp"}.
{"User Management","Användarmanagement"}.
{"User","Användarnamn"}.
{"Users are not allowed to register accounts so quickly","Det är inte tillåtet för användare att skapa konton så fort"}.
{"Users Last Activity","Användarens senaste aktivitet"}.
{"Users","Användare"}.
{"Validate","Validera"}.
{"vCard User Search","vCard användare sök"}.
{"Virtual Hosts","Virtuella servrar"}.
{"Visitors are not allowed to change their nicknames in this room","Det är inte tillåtet for gäster att ändra sina smeknamn i detta rummet"}.
-44
View File
@@ -6,8 +6,6 @@
{" has set the subject to: "," ตั้งหัวข้อว่า: "}.
{"Access denied by service policy","การเข้าถึงถูกปฏิเสธโดยนโยบายการบริการ"}.
{"Action on user","การดำเนินการกับผู้ใช้"}.
{"Add Jabber ID","เพิ่ม Jabber ID"}.
{"Add New","เพิ่มผู้ใช้ใหม่"}.
{"Add User","เพิ่มผู้ใช้"}.
{"Administration of ","การดูแล "}.
{"Administration","การดูแล"}.
@@ -37,20 +35,16 @@
{"Commands","คำสั่ง"}.
{"Conference room does not exist","ไม่มีห้องประชุม"}.
{"Configuration","การกำหนดค่า"}.
{"Connected Resources:","ทรัพยากรที่เชื่อมต่อ:"}.
{"Country","ประเทศ"}.
{"CPU Time:","เวลาการทำงานของ CPU:"}.
{"Database Tables Configuration at ","การกำหนดค่าตารางฐานข้อมูลที่"}.
{"Database","ฐานข้อมูล"}.
{"December","ธันวาคม"}.
{"Default users as participants","ผู้ใช้เริ่มต้นเป็นผู้เข้าร่วม"}.
{"Delete message of the day on all hosts","ลบข้อความของวันบนโฮสต์ทั้งหมด"}.
{"Delete message of the day","ลบข้อความของวัน"}.
{"Delete Selected","ลบข้อความที่เลือก"}.
{"Delete User","ลบผู้ใช้"}.
{"Deliver event notifications","ส่งการแจ้งเตือนเหตุการณ์"}.
{"Deliver payloads with event notifications","ส่งส่วนของข้อมูล (payload) พร้อมกับการแจ้งเตือนเหตุการณ์"}.
{"Description:","รายละเอียด:"}.
{"Disc only copy","คัดลอกเฉพาะดิสก์"}.
{"Dump Backup to Text File at ","ถ่ายโอนการสำรองข้อมูลไปยังไฟล์ข้อความที่"}.
{"Dump to Text File","ถ่ายโอนข้อมูลไปยังไฟล์ข้อความ"}.
@@ -70,18 +64,13 @@
{"Family Name","นามสกุล"}.
{"February","กุมภาพันธ์"}.
{"Friday","วันศุกร์"}.
{"From","จาก"}.
{"Full Name","ชื่อเต็ม"}.
{"Get Number of Online Users","แสดงจำนวนผู้ใช้ออนไลน์"}.
{"Get Number of Registered Users","แสดงจำนวนผู้ใช้ที่ลงทะเบียน"}.
{"Get User Last Login Time","แสดงเวลาเข้าสู่ระบบครั้งล่าสุดของผู้ใช้"}.
{"Get User Password","ขอรับรหัสผ่านของผู้ใช้"}.
{"Get User Statistics","แสดงสถิติของผู้ใช้"}.
{"Groups","กลุ่ม"}.
{"Group","กลุ่"}.
{"has been banned","ถูกสั่งห้าม"}.
{"has been kicked","ถูกไล่ออก"}.
{"Host","โฮสต์"}.
{"Import Directory","อิมพอร์ตไดเร็กทอรี"}.
{"Import File","อิมพอร์ตไฟล์"}.
{"Import User from File at ","อิมพอร์ตผู้ใช้จากไฟล์ที่"}.
@@ -103,7 +92,6 @@
{"Last month","เดือนที่แล้ว"}.
{"Last year","ปีที่แล้ว"}.
{"leaves the room","ออกจากห้อง"}.
{"Low level update script","อัพเดตสคริปต์ระดับต่ำ"}.
{"Make participants list public","สร้างรายการผู้เข้าร่วมสำหรับใช้งานโดยบุคคลทั่วไป"}.
{"Make room members-only","สร้างห้องสำหรับสมาชิกเท่านั้น"}.
{"Make room password protected","สร้างห้องที่มีการป้องกันด้วยรหัสผ่าน"}.
@@ -113,14 +101,11 @@
{"Max payload size in bytes","ขนาดสูงสุดของส่วนของข้อมูล (payload) มีหน่วยเป็นไบต์"}.
{"Maximum Number of Occupants","จำนวนผู้ครอบครองห้องสูงสุด"}.
{"May","พฤษภาคม"}.
{"Members:","สมาชิก:"}.
{"Memory","หน่วยความจำ"}.
{"Message body","เนื้อหาของข้อความ"}.
{"Middle Name","ชื่อกลาง"}.
{"Moderator privileges required","ต้องมีสิทธิพิเศษของผู้ดูแลการสนทนา"}.
{"Monday","วันจันทร์"}.
{"Name","ชื่อ"}.
{"Name:","ชื่อ:"}.
{"Never","ไม่เคย"}.
{"Nickname Registration at ","การลงทะเบียนชื่อเล่นที่ "}.
{"Nickname","ชื่อเล่น"}.
@@ -139,11 +124,8 @@
{"Number of online users","จำนวนผู้ใช้ออนไลน์"}.
{"Number of registered users","จำนวนผู้ใช้ที่ลงทะเบียน"}.
{"October","ตุลาคม"}.
{"Offline Messages","ข้อความออฟไลน์"}.
{"Offline Messages:","ข้อความออฟไลน์:"}.
{"OK","ตกลง"}.
{"Online Users","ผู้ใช้ออนไลน์"}.
{"Online Users:","ผู้ใช้ออนไลน์:"}.
{"Online","ออนไลน์"}.
{"Only deliver notifications to available users","ส่งการแจ้งเตือนถึงผู้ใช้ที่สามารถติดต่อได้เท่านั้น"}.
{"Only occupants are allowed to send messages to the conference","ผู้ครอบครองห้องเท่านั้นที่ได้รับอนุญาตให้ส่งข้อความไปยังห้องประชุม"}.
@@ -152,15 +134,12 @@
{"Organization Name","ชื่อองค์กร"}.
{"Organization Unit","หน่วยขององค์กร"}.
{"Outgoing s2s Connections","การเชื่อมต่อ s2s ขาออก"}.
{"Outgoing s2s Connections:","การเชื่อมต่อ s2s ขาออก:"}.
{"Owner privileges required","ต้องมีสิทธิพิเศษของเจ้าของ"}.
{"Packet","แพ็กเก็ต"}.
{"Password Verification","การตรวจสอบรหัสผ่าน"}.
{"Password","รหัสผ่าน"}.
{"Password:","รหัสผ่าน:"}.
{"Path to Dir","พาธไปยัง Dir"}.
{"Path to File","พาธของไฟล์ข้อมูล"}.
{"Pending","ค้างอยู่"}.
{"Period: ","ระยะเวลา:"}.
{"Persist items to storage","ยืนยันรายการที่จะจัดเก็บ"}.
{"Ping","Ping"}.
@@ -174,15 +153,11 @@
{"RAM copy","คัดลอก RAM"}.
{"Really delete message of the day?","แน่ใจว่าต้องการลบข้อความของวันหรือไม่"}.
{"Recipient is not in the conference room","ผู้รับไม่ได้อยู่ในห้องประชุม"}.
{"Registered Users","ผู้ใช้ที่ลงทะเบียน"}.
{"Registered Users:","ผู้ใช้ที่ลงทะเบียน:"}.
{"Remote copy","คัดลอกระยะไกล"}.
{"Remove User","ลบผู้ใช้"}.
{"Remove","ลบ"}.
{"Replaced by new connection","แทนที่ด้วยการเชื่อมต่อใหม่"}.
{"Resources","ทรัพยากร"}.
{"Restart Service","เริ่มต้นการบริการใหม่อีกครั้ง"}.
{"Restart","เริ่มต้นใหม่"}.
{"Restore Backup from File at ","คืนค่าการสำรองข้อมูลจากไฟล์ที่"}.
{"Restore binary backup after next ejabberd restart (requires less memory):","คืนค่าข้อมูลสำรองแบบไบนารีหลังจากที่ ejabberd ถัดไปเริ่มการทำงานใหม่ (ใช้หน่วยความจำน้อยลง):"}.
{"Restore binary backup immediately:","คืนค่าข้อมูลสำรองแบบไบนารีโดยทันที:"}.
@@ -192,10 +167,8 @@
{"Room creation is denied by service policy","การสร้างห้องสนทนาถูกปฏิเสธโดยนโยบายการบริการ"}.
{"Room title","ชื่อห้อง"}.
{"Roster size","ขนาดของบัญชีรายชื่อ"}.
{"RPC Call Error","ข้อผิดพลาดจากการเรียกใช้ RPC"}.
{"Running Nodes","โหนดที่ทำงาน"}.
{"Saturday","วันเสาร์"}.
{"Script check","ตรวจสอบคริปต์"}.
{"Search Results for ","ผลการค้นหาสำหรับ "}.
{"Search users in ","ค้นหาผู้ใช้ใน "}.
{"Send announcement to all online users on all hosts","ส่งประกาศถึงผู้ใช้ออนไลน์ทั้งหมดบนโฮสต์ทั้งหมด"}.
@@ -211,42 +184,25 @@
{"Shut Down Service","ปิดการบริการ"}.
{"Specify the access model","ระบุโมเดลการเข้าถึง"}.
{"Specify the publisher model","ระบุโมเดลผู้เผยแพร่"}.
{"Statistics of ~p","สถิติของ ~p"}.
{"Statistics","สถิติ"}.
{"Stopped Nodes","โหนดที่หยุด"}.
{"Stop","หยุด"}.
{"Storage Type","ชนิดที่เก็บข้อมูล"}.
{"Store binary backup:","จัดเก็บข้อมูลสำรองแบบไบนารี:"}.
{"Store plain text backup:","จัดเก็บข้อมูลสำรองที่เป็นข้อความธรรมดา:"}.
{"Subject","หัวเรื่อง"}.
{"Submitted","ส่งแล้ว"}.
{"Submit","ส่ง"}.
{"Subscriber Address","ที่อยู่ของผู้สมัคร"}.
{"Subscription","การสมัครสมาชิก"}.
{"Sunday","วันอาทิตย์"}.
{"the password is","รหัสผ่านคือ"}.
{"This room is not anonymous","ห้องนี้ไม่ปิดบังชื่อ"}.
{"Thursday","วันพฤหัสบดี"}.
{"Time delay","การหน่วงเวลา"}.
{"Time","เวลา"}.
{"To","ถึง"}.
{"Traffic rate limit is exceeded","อัตราของปริมาณการเข้าใช้เกินขีดจำกัด"}.
{"Transactions Aborted:","ทรานแซกชันที่ถูกยกเลิก:"}.
{"Transactions Committed:","ทรานแซกชันที่ได้รับมอบหมาย:"}.
{"Transactions Logged:","ทรานแซกชันที่บันทึก:"}.
{"Transactions Restarted:","ทรานแซกชันที่เริ่มทำงานใหม่อีกครั้ง:"}.
{"Tuesday","วันอังคาร"}.
{"Update message of the day (don't send)","อัพเดตข้อความของวัน (ไม่ต้องส่ง)"}.
{"Update message of the day on all hosts (don't send)","อัพเดตข้อความของวันบนโฮสต์ทั้งหมด (ไม่ต้องส่ง) "}.
{"Update plan","แผนการอัพเดต"}.
{"Update script","อัพเดตสคริปต์"}.
{"Update","อัพเดต"}.
{"Uptime:","เวลาการทำงานต่อเนื่อง:"}.
{"User Management","การจัดการผู้ใช้"}.
{"Users Last Activity","กิจกรรมล่าสุดของผู้ใช้"}.
{"Users","ผู้ใช้"}.
{"User","ผู้ใช้"}.
{"Validate","ตรวจสอบ"}.
{"vCard User Search","ค้นหาผู้ใช้ vCard "}.
{"Virtual Hosts","โฮสต์เสมือน"}.
{"Visitors are not allowed to send messages to all occupants","ผู้เยี่ยมเยือนไม่ได้รับอนุญาตให้ส่งข้อความถึงผู้ครอบครองห้องทั้งหมด"}.
-47
View File
@@ -8,8 +8,6 @@
{"A password is required to enter this room","Bu odaya girmek için parola gerekiyor"}.
{"Access denied by service policy","Servis politikası gereği erişim engellendi"}.
{"Action on user","Kullanıcıya uygulanacak eylem"}.
{"Add Jabber ID","Jabber ID'si Ekle"}.
{"Add New","Yeni Ekle"}.
{"Add User","Kullanıcı Ekle"}.
{"Administration of ","Yönetim : "}.
{"Administration","Yönetim"}.
@@ -51,20 +49,16 @@
{"Conference room does not exist","Konferans odası bulunamadı"}.
{"Configuration of room ~s","~s odasının ayarları"}.
{"Configuration","Ayarlar"}.
{"Connected Resources:","Bağlı Kaynaklar:"}.
{"Country","Ülke"}.
{"CPU Time:","İşlemci Zamanı:"}.
{"Database Tables Configuration at ","Veritabanı Tablo Ayarları : "}.
{"Database","Veritabanı"}.
{"December","Aralık"}.
{"Default users as participants","Kullanıcılar öntanımlı olarak katılımcı olsun"}.
{"Delete message of the day on all hosts","Tüm sunuculardaki günün mesajını sil"}.
{"Delete message of the day","Günün mesajını sil"}.
{"Delete Selected","Seçilenleri Sil"}.
{"Delete User","Kullanıcıyı Sil"}.
{"Deliver event notifications","Olay uyarıları gönderilsin"}.
{"Deliver payloads with event notifications","Yükleri (payload) olay uyarıları ile beraber gönder"}.
{"Description:","Tanım:"}.
{"Disc only copy","Sadece disk kopyala"}.
{"Dump Backup to Text File at ","Metin Dosyasına Döküm Alarak Yedekle : "}.
{"Dump to Text File","Metin Dosyasına Döküm Al"}.
@@ -75,7 +69,6 @@
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams modülü"}.
{"ejabberd vCard module","ejabberd vCard modülü"}.
{"ejabberd Web Admin","ejabberd Web Yöneticisi"}.
{"Elements","Elementler"}.
{"Email","E-posta"}.
{"Enable logging","Kayıt tutma özelliğini aç"}.
{"End User Session","Kullanıcı Oturumunu Kapat"}.
@@ -85,7 +78,6 @@
{"Enter path to jabberd14 spool file","jabberd14 spool dosyası için yol giriniz"}.
{"Enter path to text file","Metin dosyasının yolunu giriniz"}.
{"Enter the text you see","Gördüğünüz metni giriniz"}.
{"Error","Hata"}.
{"Exclude Jabber IDs from CAPTCHA challenge","CAPTCHA doğrulamasını şu Jabber ID'ler için yapma"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Sunucudaki tüm kullanıcıların verisini PIEFXIS dosyalarına (XEP-0227) dışa aktar:"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Bir sunucudaki kullanıcıların verisini PIEFXIS dosyalarına (XEP-0227) dışa aktar:"}.
@@ -93,21 +85,17 @@
{"Family Name","Soyisim"}.
{"February","Şubat"}.
{"Friday","Cuma"}.
{"From","Kimden"}.
{"Full Name","Tam İsim"}.
{"Get Number of Online Users","Bağlı Kullanıcı Sayısını Al"}.
{"Get Number of Registered Users","Kayıtlı Kullanıcı Sayısını Al"}.
{"Get User Last Login Time","Kullanıcı Son Giriş Zamanınlarını Al"}.
{"Get User Password","Kullanıcı Parolasını Al"}.
{"Get User Statistics","Kullanıcı İstatistiklerini Al"}.
{"Grant voice to this person?","Bu kişiye ses verelim mi?"}.
{"Groups","Gruplar"}.
{"has been banned","odaya girmesi yasaklandı"}.
{"has been kicked because of a system shutdown","sistem kapandığından dolayı atıldı"}.
{"has been kicked because of an affiliation change","ilişki değişikliğinden dolayı atıldı"}.
{"has been kicked because the room has been changed to members-only","oda üyelere-özel hale getirildiğinden dolayı atıldı"}.
{"has been kicked","odadan atıldı"}.
{"Host","Sunucu"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Eğer burada CAPTCHA resmini göremiyorsanız, web sayfasını ziyaret edin."}.
{"Import Directory","Dizini İçe Aktar"}.
{"Import File","Dosyayı İçe Aktar"}.
@@ -133,7 +121,6 @@
{"Last month","Geçen ay"}.
{"Last year","Geçen yıl"}.
{"leaves the room","odadan ayrıldı"}.
{"Low level update script","Düşük seviye güncelleme betiği"}.
{"Make participants list public","Katılımcı listesini herkese açık hale getir"}.
{"Make room CAPTCHA protected","Odayı insan doğrulaması (captcha) korumalı hale getir"}.
{"Make room members-only","Odayı sadece üyelere açık hale getir"}.
@@ -146,16 +133,12 @@
{"Maximum Number of Occupants","Odada En Fazla Bulunabilecek Kişi Sayısı"}.
{"May","Mayıs"}.
{"Membership is required to enter this room","Bu odaya girmek için üyelik gerekiyor"}.
{"Members:","Üyeler:"}.
{"Memory","Bellek"}.
{"Message body","Mesajın gövdesi"}.
{"Middle Name","Ortanca İsim"}.
{"Minimum interval between voice requests (in seconds)","Ses istekleri arasında olabilecek en az aralık (saniye olarak)"}.
{"Moderator privileges required","Moderatör yetkileri gerekli"}.
{"Modified modules","Değişen modüller"}.
{"Monday","Pazartesi"}.
{"Name","İsim"}.
{"Name:","İsim:"}.
{"Never","Asla"}.
{"New Password:","Yeni Parola:"}.
{"Nickname Registration at ","Takma İsim Kaydı : "}.
@@ -177,12 +160,9 @@
{"Number of online users","Bağlı kullanıcı sayısı"}.
{"Number of registered users","Kayıtlı kullanıcı sayısı"}.
{"October","Ekim"}.
{"Offline Messages","Çevirim-dışı Mesajlar"}.
{"Offline Messages:","Çevirim-dışı Mesajlar:"}.
{"OK","Tamam"}.
{"Old Password:","Eski Parola:"}.
{"Online Users","Bağlı Kullanıcılar"}.
{"Online Users:","Bağlı Kullanıcılar:"}.
{"Online","Bağlı"}.
{"Only deliver notifications to available users","Uyarıları sadece durumu uygun kullanıcılara ulaştır"}.
{"Only moderators and participants are allowed to change the subject in this room","Sadece moderatörlerin ve katılımcıların bu odanın konusunu değiştirmesine izin veriliyor"}.
@@ -194,16 +174,13 @@
{"Organization Name","Kurum İsmi"}.
{"Organization Unit","Kurumun İlgili Birimi"}.
{"Outgoing s2s Connections","Giden s2s Bağlantıları"}.
{"Outgoing s2s Connections:","Giden s2s Bağlantıları:"}.
{"Owner privileges required","Sahip yetkileri gerekli"}.
{"Packet","Paket"}.
{"Password Verification","Parola Doğrulaması"}.
{"Password Verification:","Parola Doğrulaması:"}.
{"Password","Parola"}.
{"Password:","Parola:"}.
{"Path to Dir","Dizinin Yolu"}.
{"Path to File","Dosyanın Yolu"}.
{"Pending","Sıra Bekleyen"}.
{"Period: ","Periyot:"}.
{"Persist items to storage","Öğeleri depoda kalıcı hale getir"}.
{"Ping","Ping"}.
@@ -220,17 +197,12 @@
{"RAM copy","RAM kopyala"}.
{"Really delete message of the day?","Günün mesajını silmek istediğinize emin misiniz?"}.
{"Recipient is not in the conference room","Alıcı konferans odasında değil"}.
{"Registered Users","Kayıtlı Kullanıcılar"}.
{"Registered Users:","Kayıtlı Kullanıcılar:"}.
{"Register","Kayıt Ol"}.
{"Remote copy","Uzak kopyala"}.
{"Remove All Offline Messages","Tüm Çevirim-dışı Mesajları Kaldır"}.
{"Remove User","Kullanıcıyı Kaldır"}.
{"Remove","Kaldır"}.
{"Replaced by new connection","Eski bağlantı yenisi ile değiştirildi"}.
{"Resources","Kaynaklar"}.
{"Restart Service","Servisi Tekrar Başlat"}.
{"Restart","Tekrar Başlat"}.
{"Restore Backup from File at ","Dosyadaki Yedekten Geri Al : "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","ejabberd'nin bir sonraki tekrar başlatılışında ikili yedekten geri al (daha az bellek gerektirir)"}.
{"Restore binary backup immediately:","Hemen ikili yedekten geri al:"}.
@@ -243,10 +215,8 @@
{"Room title","Oda başlığı"}.
{"Roster groups allowed to subscribe","Üye olunmasına izin verilen kontak listesi grupları"}.
{"Roster size","İsim listesi boyutu"}.
{"RPC Call Error","RPC Çağrı Hatası"}.
{"Running Nodes","Çalışan Düğümler"}.
{"Saturday","Cumartesi"}.
{"Script check","Betik kontrolü"}.
{"Search Results for ","Arama sonuçları : "}.
{"Search users in ","Kullanıcılarda arama yap : "}.
{"Send announcement to all online users on all hosts","Duyuruyu tüm sunuculardaki tüm bağlı kullanıcılara yolla"}.
@@ -264,18 +234,12 @@
{"Specify the access model","Erişim modelini belirtiniz"}.
{"Specify the event message type","Olay mesaj tipini belirtiniz"}.
{"Specify the publisher model","Yayıncı modelini belirtiniz"}.
{"Statistics of ~p","~p istatistikleri"}.
{"Statistics","İstatistikler"}.
{"Stop","Durdur"}.
{"Stopped Nodes","Durdurulmuş Düğümler"}.
{"Storage Type","Depolama Tipi"}.
{"Store binary backup:","İkili yedeği sakla:"}.
{"Store plain text backup:","Düz metin yedeği sakla:"}.
{"Subject","Konu"}.
{"Submit","Gönder"}.
{"Submitted","Gönderilenler"}.
{"Subscriber Address","Üye Olanın Adresi"}.
{"Subscription","Üyelik"}.
{"Sunday","Pazar"}.
{"That nickname is already in use by another occupant","Takma isim odanın başka bir sakini tarafından halihazırda kullanımda"}.
{"That nickname is registered by another person","O takma isim başka biri tarafından kaydettirilmiş"}.
@@ -289,24 +253,14 @@
{"This room is not anonymous","Bu oda anonim değil"}.
{"Thursday","Perşembe"}.
{"Time delay","Zaman gecikmesi"}.
{"Time","Zaman"}.
{"To","Kime"}.
{"Too many CAPTCHA requests","Çok fazla CAPTCHA isteği"}.
{"Traffic rate limit is exceeded","Trafik oran sınırı aşıldı"}.
{"Transactions Aborted:","İptal Edilen Hareketler (Transactions):"}.
{"Transactions Committed:","Tamamlanan Hareketler (Transactions Committed):"}.
{"Transactions Logged:","Kaydı Tutulan Hareketler (Transactions):"}.
{"Transactions Restarted:","Tekrar Başlatılan Hareketler (Transactions):"}.
{"Tuesday","Salı"}.
{"Unable to generate a CAPTCHA","İnsan doğrulaması (CAPTCHA) oluşturulamadı"}.
{"Unauthorized","Yetkisiz"}.
{"Unregister","Kaydı Sil"}.
{"Update message of the day (don't send)","Günün mesajını güncelle (gönderme)"}.
{"Update message of the day on all hosts (don't send)","Tüm sunuculardaki günün mesajını güncelle (gönderme)"}.
{"Update plan","Planı güncelle"}.
{"Update script","Betiği Güncelle"}.
{"Update","GÜncelle"}.
{"Uptime:","Hizmet Süresi:"}.
{"User JID","Kullanıcı JID"}.
{"User Management","Kullanıcı Yönetimi"}.
{"User","Kullanıcı"}.
@@ -314,7 +268,6 @@
{"Users are not allowed to register accounts so quickly","Kullanıcıların bu kadar hızlı hesap açmalarına izin verilmiyor"}.
{"Users Last Activity","Kullanıcıların Son Aktiviteleri"}.
{"Users","Kullanıcılar"}.
{"Validate","Geçerli"}.
{"vCard User Search","vCard Kullanıcı Araması"}.
{"Virtual Hosts","Sanal Sunucuları"}.
{"Visitors are not allowed to change their nicknames in this room","Bu odada ziyaretçilerin takma isimlerini değiştirmesine izin verilmiyor"}.
-68
View File
@@ -16,8 +16,6 @@
{"Account doesn't exist","Обліковий запис не існує"}.
{"Action on user","Дія над користувачем"}.
{"Add a hat to a user","Додати капелюх користувачу"}.
{"Add Jabber ID","Додати Jabber ID"}.
{"Add New","Додати"}.
{"Add User","Додати користувача"}.
{"Administration of ","Адміністрування "}.
{"Administration","Адміністрування"}.
@@ -48,7 +46,6 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Будь-хто, хто має підписку на отримання інформації про присутність в обох випадках або може підписуватись та отримувати матеріали"}.
{"Anyone with Voice","Будь-хто, хто має голос"}.
{"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","Квітень"}.
{"Attribute 'channel' is required for this request","Атрибут \"канал\" є обов'язковим для цього запиту"}.
{"Attribute 'id' is mandatory for MIX messages","Атрибут 'id' обов'язковий для MIX повідомлень"}.
@@ -93,30 +90,20 @@
{"Conference room does not exist","Кімната для переговорів відсутня"}.
{"Configuration of room ~s","Конфігурація кімнати ~s"}.
{"Configuration","Конфігурація"}.
{"Connected Resources:","Підключені ресурси:"}.
{"Contact Addresses (normally, room owner or owners)","Контактні адреси (зазвичай, власника або власників кімнати)"}.
{"Contrib Modules","Запуск модулів"}.
{"Country","Країна"}.
{"CPU Time:","Час роботи процесора:"}.
{"Current Discussion Topic","Поточна тема обговорення"}.
{"Database failure","Збій бази даних"}.
{"Database Tables at ~p","Таблиці бази даних на ~p"}.
{"Database Tables Configuration at ","Конфігурація таблиць бази даних на "}.
{"Database","База даних"}.
{"December","Грудень"}.
{"Default users as participants","Користувачі за замовчуванням як учасники"}.
{"Delete content","Видалити вміст"}.
{"Delete message of the day on all hosts","Видалити повідомлення дня на усіх хостах"}.
{"Delete message of the day","Видалити повідомлення дня"}.
{"Delete Selected","Видалити вибране"}.
{"Delete table","Видалити таблицю"}.
{"Delete User","Видалити користувача"}.
{"Deliver event notifications","Доставляти сповіщення про події"}.
{"Deliver payloads with event notifications","Доставляти разом з повідомленнями про публікації самі публікації"}.
{"Description:","Опис:"}.
{"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-сервера."}.
{"Dump Backup to Text File at ","Копіювання в текстовий файл на "}.
{"Dump to Text File","Копіювання в текстовий файл"}.
@@ -131,7 +118,6 @@
{"ejabberd vCard module","ejabberd vCard модуль"}.
{"ejabberd Web Admin","Веб-інтерфейс Адміністрування ejabberd"}.
{"ejabberd","ejabberd"}.
{"Elements","Елементи"}.
{"Email Address","Адреса ел. пошти"}.
{"Email","Електронна пошта"}.
{"Enable hats","Увімкнути капелюхи"}.
@@ -145,7 +131,6 @@
{"Enter path to text file","Введіть шлях до текстового файла"}.
{"Enter the text you see","Введіть текст, що ви бачите"}.
{"Erlang XMPP Server","Ерланґ XMPP Сервер"}.
{"Error","Помилка"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Пропускати ці Jabber ID без CAPTCHA-запиту"}.
{"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):"}.
@@ -164,7 +149,6 @@
{"Fill in the form to search for any matching XMPP User","Заповніть форму для пошуку будь-якого відповідного користувача XMPP"}.
{"Friday","П'ятниця"}.
{"From ~ts","Від ~ts"}.
{"From","Від кого"}.
{"Full List of Room Admins","Повний перелік адміністраторів кімнати"}.
{"Full List of Room Owners","Повний перелік власників кімнати"}.
{"Full Name","Повне ім'я"}.
@@ -174,13 +158,9 @@
{"Get Number of Registered Users","Отримати Кількість Зареєстрованих Користувачів"}.
{"Get Pending","Очікування"}.
{"Get User Last Login Time","Отримати Час Останнього Підключення Користувача"}.
{"Get User Password","Отримати Пароль Користувача"}.
{"Get User Statistics","Отримати Статистику по Користувачу"}.
{"Given Name","По-батькові"}.
{"Grant voice to this person?","Надати голос персоні?"}.
{"Groups that will be displayed to the members","Групи, які показуватимуться учасникам"}.
{"Groups","Групи"}.
{"Group","Група"}.
{"has been banned","заборонили вхід в кімнату"}.
{"has been kicked because of a system shutdown","вигнано з кімнати внаслідок зупинки системи"}.
{"has been kicked because of an affiliation change","вигнано з кімнати внаслідок зміни рангу"}.
@@ -190,7 +170,6 @@
{"Hat URI","Назва URI"}.
{"Hats limit exceeded","Перевищено швидкість передачі інформації"}.
{"Host unknown","Невідоме ім'я сервера"}.
{"Host","Хост"}.
{"HTTP File Upload","Відвантаження файлів по HTTP"}.
{"Idle connection","Неактивне підключення"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Якщо ви не бачите зображення CAPTCHA, перейдіть за адресою."}.
@@ -204,7 +183,6 @@
{"Import Users From jabberd14 Spool Files","Імпорт користувачів з jabberd14 файлів \"Spool\""}.
{"Improper domain part of 'from' attribute","Неправильна доменна частина атрибута \"from\""}.
{"Improper message type","Неправильний тип повідомлення"}.
{"Incoming s2s Connections:","Вхідні s2s-з'єднання:"}.
{"Incorrect CAPTCHA submit","Неправильний ввід CAPTCHA"}.
{"Incorrect data form","Неправильна форма даних"}.
{"Incorrect password","Неправильний пароль"}.
@@ -232,7 +210,6 @@
{"July","липня"}.
{"June","червня"}.
{"Just created","Щойно створено"}.
{"Label:","Мітка:"}.
{"Last Activity","Останнє підключення"}.
{"Last login","Останнє підключення"}.
{"Last message","Останнє повідомлення"}.
@@ -240,11 +217,9 @@
{"Last year","За останній рік"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Найменш значущі біти хеш-функції SHA-256 від тексту мають відповідати шістнадцятковій мітці."}.
{"leaves the room","вийшов(ла) з кімнати"}.
{"List of rooms","Перелік кімнат"}.
{"List of users with hats","Список користувачів із капелюхами"}.
{"List users with hats","Список користувачів із капелюхами"}.
{"Logging","Журналювання"}.
{"Low level update script","Низькорівневий сценарій поновлення"}.
{"Make participants list public","Зробити список учасників видимим всім"}.
{"Make room CAPTCHA protected","Зробити кімнату захищеною капчею"}.
{"Make room members-only","Кімната тільки для зареєтрованых учасників"}.
@@ -262,11 +237,8 @@
{"Maximum number of items to persist","Максимальна кількість елементів для збереження"}.
{"Maximum Number of Occupants","Максимальна кількість учасників"}.
{"May","травня"}.
{"Members not added (inexistent vhost!): ","Учасників не додано (вірт. сервер не існує!): "}.
{"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 не існує автоматизованого способу відновлення паролю, якщо ви його забудете."}.
{"Memory","Пам'ять"}.
{"Mere Availability in XMPP (No Show Value)","Проста доступність у XMPP (без показу статусу)"}.
{"Message body","Тіло повідомлення"}.
{"Message not found in forwarded payload","Повідомлення не знайдено в пересланому вмісті"}.
@@ -278,15 +250,12 @@
{"Moderator privileges required","Необхідні права модератора"}.
{"Moderators Only","Тільки модераторам"}.
{"Moderator","Модератор"}.
{"Modified modules","Змінені модулі"}.
{"Module failed to handle the query","Модулю не вдалося обробити запит"}.
{"Monday","Понеділок"}.
{"Multicast","Мультікаст"}.
{"Multiple <item/> elements are not allowed by RFC6121","Кілька елементів <item/> не дозволені RFC6121"}.
{"Multi-User Chat","Багато-користувальницький чат"}.
{"Name in the rosters where this group will be displayed","Назва у списку контактів, де ця група буде відображена"}.
{"Name","Назва"}.
{"Name:","Назва:"}.
{"Natural Language for Room Discussions","Розмовна мова для обговорень у кімнаті"}.
{"Natural-Language Room Name","Назва кімнати розмовною мовою"}.
{"Neither 'jid' nor 'nick' attribute found","Не знайдено ні атрибута \"jid\", ні \"nick\""}.
@@ -351,14 +320,10 @@
{"Occupants are allowed to query others","Учасникам дозволено ставити запитання іншим"}.
{"Occupants May Change the Subject","Учасникам дозволено змінювати тему"}.
{"October","грудня"}.
{"Offline Messages","Офлайнові повідомлення"}.
{"Offline Messages:","Офлайнові повідомлення:"}.
{"OK","Продовжити"}.
{"Old Password:","Старий пароль:"}.
{"Online Users","Підключені користувачі"}.
{"Online Users:","Підключені користувачі:"}.
{"Online","Підключений"}.
{"Only admins can see this","Тільки адміністратори можуть це бачити"}.
{"Only collection node owners may associate leaf nodes with the collection","Лише власники вузлів колекції можуть асоціювати листові вузли з колекцією"}.
{"Only deliver notifications to available users","Доставляти повідомленнями тільки доступним користувачам"}.
{"Only <enable/> or <disable/> tags are allowed","Дозволені лише теги <enable/> або <disable/>"}.
@@ -378,10 +343,8 @@
{"Organization Unit","Відділ організації"}.
{"Other Modules Available:","Інші доступні модулі:"}.
{"Outgoing s2s Connections","Вихідні s2s-з'єднання"}.
{"Outgoing s2s Connections:","Вихідні s2s-з'єднання:"}.
{"Owner privileges required","Необхідні права власника"}.
{"Packet relay is denied by service policy","Пересилання пакетів заборонене політикою сервісу"}.
{"Packet","Пакет"}.
{"Participant ID","ID учасника"}.
{"Participant","Учасник"}.
{"Password Verification","Перевірка Пароля"}.
@@ -391,7 +354,6 @@
{"Path to Dir","Шлях до директорії"}.
{"Path to File","Шлях до файла"}.
{"Payload semantic type information","Інформація про тип вмісту даних"}.
{"Pending","Очікування"}.
{"Period: ","Період: "}.
{"Persist items to storage","Зберігати елементи в сховищі"}.
{"Persistent","Тривалий"}.
@@ -422,17 +384,12 @@
{"Receive notification from all descendent nodes","Отримувати сповіщення від усіх підпорядкованих вузлів"}.
{"Recipient is not in the conference room","Адресата немає в конференції"}.
{"Register an XMPP account","Зареєструвати XMPP-запис"}.
{"Registered Users","Зареєстровані користувачі"}.
{"Registered Users:","Зареєстровані користувачі:"}.
{"Register","Реєстрація"}.
{"Remote copy","не зберігаеться локально"}.
{"Remove All Offline Messages","Видалити всі офлайнові повідомлення"}.
{"Remove User","Видалити користувача"}.
{"Remove","Видалити"}.
{"Replaced by new connection","Замінено новим з'єднанням"}.
{"Resources","Ресурси"}.
{"Restart Service","Перезапустити Сервіс"}.
{"Restart","Перезапустити"}.
{"Restore Backup from File at ","Відновлення з резервної копії на "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Відновити з бінарної резервної копії при наступному запуску (потребує менше пам'яті):"}.
{"Restore binary backup immediately:","Відновити з бінарної резервної копії негайно:"}.
@@ -447,14 +404,10 @@
{"Room terminates","Кімната припиняється"}.
{"Room title","Назва кімнати"}.
{"Roster groups allowed to subscribe","Дозволені для підписки групи ростера"}.
{"Roster of ~ts","Список контактів ~ts"}.
{"Roster size","Кількість контактів"}.
{"Roster:","Список контактів:"}.
{"RPC Call Error","Помилка виклику RPC"}.
{"Running Nodes","Працюючі вузли"}.
{"~s invites you to the room ~s","~s запрошує вас до кімнати ~s"}.
{"Saturday","Субота"}.
{"Script check","Перевірка сценарію"}.
{"Search Results for ","Результати пошуку в "}.
{"Search users in ","Пошук користувачів в "}.
{"Send announcement to all online users on all hosts","Надіслати сповіщення всім підключеним користувачам на всіх віртуальних серверах"}.
@@ -472,18 +425,12 @@
{"Specify the access model","Визначити модель доступу"}.
{"Specify the event message type","Вкажіть тип повідомлень зі сповіщеннями про події"}.
{"Specify the publisher model","Умови публікації"}.
{"Statistics of ~p","Статистика вузла ~p"}.
{"Statistics","Статистика"}.
{"Stopped Nodes","Зупинені вузли"}.
{"Stop","Зупинити"}.
{"Storage Type","Тип таблиці"}.
{"Store binary backup:","Зберегти бінарну резервну копію:"}.
{"Store plain text backup:","Зберегти текстову резервну копію:"}.
{"Subject","Тема"}.
{"Submitted","Відправлено"}.
{"Submit","Надіслати"}.
{"Subscriber Address","Адреса абонента"}.
{"Subscription","Підписка"}.
{"Sunday","Неділя"}.
{"That nickname is already in use by another occupant","Псевдонім зайнято кимось з присутніх"}.
{"That nickname is registered by another person","Псевдонім зареєстровано кимось іншим"}.
@@ -508,7 +455,6 @@
{"Thursday","Четвер"}.
{"Time delay","Час затримки"}.
{"Timed out waiting for stream resumption","Час очікування на відновлення потоку закінчився"}.
{"Time","Час"}.
{"To register, visit ~s","Щоб зареєструватися, відвідайте ~s"}.
{"To ~ts","До ~ts"}.
{"Token TTL","Токен TTL"}.
@@ -521,13 +467,7 @@
{"Too many receiver fields were specified","Вказано забагато одержувачів"}.
{"Too many unacked stanzas","Занадто багато пакетів без відповідей"}.
{"Too many users in this conference","Надто багато користувачів у цій конференції"}.
{"Total rooms","Всього кімнат"}.
{"To","Кому"}.
{"Traffic rate limit is exceeded","Швидкість передачі інформації було перевищено"}.
{"Transactions Aborted:","Транзакції відмінені:"}.
{"Transactions Committed:","Транзакції завершені:"}.
{"Transactions Logged:","Транзакції запротокольовані:"}.
{"Transactions Restarted:","Транзакції перезапущені:"}.
{"~ts's Offline Messages Queue","Черга автономних повідомлень ~ts"}.
{"Tuesday","Вівторок"}.
{"Unable to generate a CAPTCHA","Нема можливості згенерувати капчу"}.
@@ -537,16 +477,10 @@
{"Unexpected error condition: ~p","Умова несподіваної помилки: ~p"}.
{"Unregister an XMPP account","Видалити обліковий запис XMPP"}.
{"Unregister","Видалити"}.
{"Unselect All","Скасувати виділення з усіх"}.
{"Unsupported <index/> element","Непідтримуваний елемент <index/>"}.
{"Unsupported version","Непідтримувана версія"}.
{"Update message of the day (don't send)","Оновити повідомлення дня (не надсилати)"}.
{"Update message of the day on all hosts (don't send)","Оновити повідомлення дня на всіх хостах (не надсилати)"}.
{"Update plan","План оновлення"}.
{"Update ~p","Оновлення ~p"}.
{"Update script","Сценарій поновлення"}.
{"Update","Обновити"}.
{"Uptime:","Час роботи:"}.
{"URL for Archived Discussion Logs","URL-адреса для журналів архівних обговорень"}.
{"User already exists","Користувач уже існує"}.
{"User JID","JID Користувача"}.
@@ -561,12 +495,10 @@
{"Users Last Activity","Статистика останнього підключення користувачів"}.
{"Users","Користувачі"}.
{"User","Користувач"}.
{"Validate","Затвердити"}.
{"Value of '~s' should be boolean","Значення \"~s\" має бути логічним"}.
{"Value of '~s' should be datetime string","Значення \"~s\" має бути рядком дати і часу"}.
{"Value of '~s' should be integer","Значення \"~s\" має бути цілим числом"}.
{"vCard User Search","Пошук користувачів по vCard"}.
{"View Queue","Переглянути чергу"}.
{"Virtual Hosts","віртуальні хости"}.
{"Visitors are not allowed to change their nicknames in this room","Відвідувачам не дозволяється змінювати псевдонім в цій кімнаті"}.
{"Visitors are not allowed to send messages to all occupants","Відвідувачам не дозволяється надсилати повідомлення всім присутнім"}.
-44
View File
@@ -6,8 +6,6 @@
{" has set the subject to: "," đã đặt chủ đề thành: "}.
{"Access denied by service policy","Sự truy cập bị chặn theo chính sách phục vụ"}.
{"Action on user","Hành động đối với người sử dụng"}.
{"Add Jabber ID","Thêm Jabber ID"}.
{"Add New","Thêm Mới"}.
{"Add User","Thêm Người Sử Dụng"}.
{"Administration of ","Quản trị về "}.
{"Administration","Quản trị"}.
@@ -37,20 +35,16 @@
{"Commands","Lệnh"}.
{"Conference room does not exist","Phòng họp không tồn tại"}.
{"Configuration","Cấu hình"}.
{"Connected Resources:","Tài Nguyên Được Kết Nối:"}.
{"Country","Quốc gia"}.
{"CPU Time:","Thời Gian CPU:"}.
{"Database Tables Configuration at ","Cấu Hình Bảng Cơ Sở Dữ Liệu tại"}.
{"Database","Cơ sở dữ liệu"}.
{"December","Tháng Mười Hai"}.
{"Default users as participants","Người sử dụng mặc định là người tham dự"}.
{"Delete message of the day on all hosts","Xóa thư trong ngày trên tất cả các máy chủ"}.
{"Delete message of the day","Xóa thư trong ngày"}.
{"Delete Selected","Tùy chọn Xóa được Chọn"}.
{"Delete User","Xóa Người Sử Dụng"}.
{"Deliver event notifications","Đưa ra các thông báo sự kiện"}.
{"Deliver payloads with event notifications","Đưa ra thông tin dung lượng với các thông báo sự kiện"}.
{"Description:","Miêu tả:"}.
{"Disc only copy","Chỉ sao chép vào đĩa"}.
{"Dump Backup to Text File at ","Kết Xuất Sao Lưu ra Tập Tin Văn Bản tại"}.
{"Dump to Text File","Kết xuất ra Tập Tin Văn Bản"}.
@@ -70,18 +64,13 @@
{"Family Name","Họ"}.
{"February","Tháng Hai"}.
{"Friday","Thứ Sáu"}.
{"From","Từ"}.
{"Full Name","Tên Đầy Đủ"}.
{"Get Number of Online Users","Nhận Số Người Sử Dụng Trực Tuyến"}.
{"Get Number of Registered Users","Nhận Số Người Sử Dụng Đã Đăng Ký"}.
{"Get User Last Login Time","Nhận Thời Gian Đăng Nhập Cuối Cùng Của Người Sử Dụng"}.
{"Get User Password","Nhận Mật Khẩu Người Sử Dụng"}.
{"Get User Statistics","Nhận Thông Tin Thống Kê Người Sử Dụng"}.
{"Group","Nhóm"}.
{"Groups","Nhóm"}.
{"has been banned","đã bị cấm"}.
{"has been kicked","đã bị đẩy ra khỏi"}.
{"Host","Máy chủ"}.
{"Import Directory","Nhập Thư Mục"}.
{"Import File","Nhập Tập Tin"}.
{"Import User from File at ","Nhập Người Sử Dụng từ Tập Tin tại"}.
@@ -103,7 +92,6 @@
{"Last month","Tháng trước"}.
{"Last year","Năm trước"}.
{"leaves the room","rời khỏi phòng này"}.
{"Low level update script","Lệnh cập nhật mức độ thấp"}.
{"Make participants list public","Tạo danh sách người tham dự công khai"}.
{"Make room members-only","Tạo phòng chỉ cho phép tư cách thành viên tham gia"}.
{"Make room password protected","Tạo phòng được bảo vệ bằng mật khẩu"}.
@@ -113,14 +101,11 @@
{"Max payload size in bytes","Kích thước dung lượng byte tối đa"}.
{"Maximum Number of Occupants","Số Lượng Người Tham Dự Tối Đa"}.
{"May","Tháng Năm"}.
{"Members:","Thành viên:"}.
{"Memory","Bộ Nhớ"}.
{"Message body","Thân thư"}.
{"Middle Name","Họ Đệm"}.
{"Moderator privileges required","Yêu cầu đặc quyền của nhà điều phối"}.
{"Monday","Thứ Hai"}.
{"Name","Tên"}.
{"Name:","Tên:"}.
{"Never","Không bao giờ"}.
{"Nickname Registration at ","Đăng Ký Bí Danh tại"}.
{"Nickname ~s does not exist in the room","Bí danh ~s không tồn tại trong phòng này"}.
@@ -140,11 +125,8 @@
{"Number of online users","Số người sử dụng trực tuyến"}.
{"Number of registered users","Số người sử dụng đã đăng ký"}.
{"October","Tháng Mười"}.
{"Offline Messages","Thư Ngoại Tuyến"}.
{"Offline Messages:","Thư Ngoại Tuyến:"}.
{"OK","OK"}.
{"Online Users","Người Sử Dụng Trực Tuyến"}.
{"Online Users:","Người Sử Dụng Trực Tuyến:"}.
{"Online","Trực tuyến"}.
{"Only deliver notifications to available users","Chỉ gửi thông báo đến những người sử dụng hiện có"}.
{"Only occupants are allowed to send messages to the conference","Chỉ có những đối tượng tham gia mới được phép gửi thư đến phòng họp"}.
@@ -153,15 +135,12 @@
{"Organization Name","Tên Tổ Chức"}.
{"Organization Unit","Bộ Phận"}.
{"Outgoing s2s Connections","Kết Nối Bên Ngoài s2s"}.
{"Outgoing s2s Connections:","Kết Nối Bên Ngoài s2s:"}.
{"Owner privileges required","Yêu cầu đặc quyền của người sở hữu"}.
{"Packet","Gói thông tin"}.
{"Password Verification","Kiểm Tra Mật Khẩu"}.
{"Password","Mật Khẩu"}.
{"Password:","Mật Khẩu:"}.
{"Path to Dir","Đường Dẫn đến Thư Mục"}.
{"Path to File","Đường dẫn đến Tập Tin"}.
{"Pending","Chờ"}.
{"Period: ","Giai đoạn: "}.
{"Persist items to storage","Những mục cần để lưu trữ"}.
{"Ping","Ping"}.
@@ -175,15 +154,11 @@
{"RAM copy","Sao chép vào RAM"}.
{"Really delete message of the day?","Có thực sự xóa thư trong ngày này không?"}.
{"Recipient is not in the conference room","Người nhận không có trong phòng họp"}.
{"Registered Users","Người Sử Dụng Đã Đăng Ký"}.
{"Registered Users:","Người Sử Dụng Đã Đăng Ký:"}.
{"Remote copy","Sao chép từ xa"}.
{"Remove User","Gỡ Bỏ Người Sử Dụng"}.
{"Remove","Gỡ bỏ"}.
{"Replaced by new connection","Được thay thế bởi kết nối mới"}.
{"Resources","Nguồn tài nguyên"}.
{"Restart Service","Khởi Động Lại Dịch Vụ"}.
{"Restart","Khởi động lại"}.
{"Restore Backup from File at ","Phục hồi Sao Lưu từ Tập Tin tại "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Khôi phục bản sao lưu dự phòng dạng nhị phân sau lần khởi động ejabberd kế tiếp (yêu cầu ít bộ nhớ hơn):"}.
{"Restore binary backup immediately:","Khôi phục bản sao lưu dự phòng dạng nhị phận ngay lập tức:"}.
@@ -193,10 +168,8 @@
{"Room creation is denied by service policy","Việc tạo phòng bị ngăn lại theo chính sách dịch vụ"}.
{"Room title","Tên phòng"}.
{"Roster size","Kích thước bảng phân công"}.
{"RPC Call Error","Lỗi Gọi RPC"}.
{"Running Nodes","Nút Hoạt Động"}.
{"Saturday","Thứ Bảy"}.
{"Script check","Lệnh kiểm tra"}.
{"Search Results for ","Kết Quả Tìm Kiếm cho "}.
{"Search users in ","Tìm kiếm người sử dụng trong"}.
{"Send announcement to all online users on all hosts","Gửi thông báo đến tất cả người sử dụng trực tuyến trên tất cả các máy chủ"}.
@@ -212,42 +185,25 @@
{"Shut Down Service","Tắt Dịch Vụ"}.
{"Specify the access model","Xác định mô hình truy cập"}.
{"Specify the publisher model","Xác định mô hình nhà xuất bản"}.
{"Statistics of ~p","Thống kê về ~p"}.
{"Statistics","Số liệu thống kê"}.
{"Stop","Dừng"}.
{"Stopped Nodes","Nút Dừng"}.
{"Storage Type","Loại Lưu Trữ"}.
{"Store binary backup:","Lưu dữ liệu sao lưu dạng nhị phân:"}.
{"Store plain text backup:","Khôi phục bản sao lưu dự phòng thuần văn bản"}.
{"Subject","Tiêu đề"}.
{"Submit","Gửi"}.
{"Submitted","Đã gửi"}.
{"Subscriber Address","Địa Chỉ Người Đăng Ký"}.
{"Subscription","Đăng ký"}.
{"Sunday","Chủ Nhật"}.
{"the password is","mật khẩu là"}.
{"This room is not anonymous","Phòng này không nặc danh"}.
{"Thursday","Thứ Năm"}.
{"Time delay","Thời gian trì hoãn"}.
{"Time","Thời Gian"}.
{"To","Đến"}.
{"Traffic rate limit is exceeded","Quá giới hạn tỷ lệ lưu lượng truyền tải"}.
{"Transactions Aborted:","Giao Dịch Hủy Bỏ:"}.
{"Transactions Committed:","Giao Dịch Được Cam Kết:"}.
{"Transactions Logged:","Giao Dịch Được Ghi Nhận:"}.
{"Transactions Restarted:","Giao Dịch Khởi Động Lại:"}.
{"Tuesday","Thứ Ba"}.
{"Update message of the day (don't send)","Cập nhật thư trong ngày (không gửi)"}.
{"Update message of the day on all hosts (don't send)","Cập nhật thư trong ngày trên tất cả các máy chủ (không gửi)"}.
{"Update plan","Kế hoạch cập nhật"}.
{"Update script","Cập nhận lệnh"}.
{"Update","Cập Nhật"}.
{"Uptime:","Thời gian tải lên:"}.
{"User Management","Quản Lý Người Sử Dụng"}.
{"User","Người sử dụng"}.
{"Users Last Activity","Hoạt Động Cuối Cùng Của Người Sử Dụng"}.
{"Users","Người sử dụng"}.
{"Validate","Xác nhận hợp lệ"}.
{"vCard User Search","Tìm Kiếm Người Sử Dụng vCard"}.
{"Virtual Hosts","Máy Chủ Ảo"}.
{"Visitors are not allowed to send messages to all occupants","Người ghé thăm không được phép gửi thư đến tất cả các người tham dự"}.
-53
View File
@@ -9,8 +9,6 @@
{"Accept","Accepter"}.
{"Access denied by service policy","L' accès a stî rfuzé pal politike do siervice"}.
{"Action on user","Accion so l' uzeu"}.
{"Add Jabber ID","Radjouter èn ID Jabber"}.
{"Add New","Radjouter"}.
{"Add User","Radjouter èn uzeu"}.
{"Administration of ","Manaedjaedje di "}.
{"Administration","Manaedjaedje"}.
@@ -53,21 +51,16 @@
{"Conference room does not exist","Li såle di conferince n' egzistêye nén"}.
{"Configuration of room ~s","Apontiaedje del såle ~s"}.
{"Configuration","Apontiaedjes"}.
{"Connected Resources:","Raloyî avou les rsoûces:"}.
{"Country","Payis"}.
{"CPU Time:","Tins CPU:"}.
{"Database Tables at ~p","Tåves del båze di dnêyes so ~p"}.
{"Database Tables Configuration at ","Apontiaedje des tåves del båze di dnêyes so "}.
{"Database","Båze di dnêyes"}.
{"December","decimbe"}.
{"Default users as participants","Les uzeus sont des pårticipants come prémetowe dujhance"}.
{"Delete message of the day on all hosts","Disfacer l' messaedje do djoû so tos les lodjoes"}.
{"Delete message of the day","Disfacer l' messaedje do djoû"}.
{"Delete Selected","Disfacer les elemints tchoezis"}.
{"Delete User","Disfacer èn uzeu"}.
{"Deliver event notifications","Evoyî des notifiaedjes d' evenmints"}.
{"Deliver payloads with event notifications","Evoyî l' contnou avou les notifiaedjes d' evenmints"}.
{"Description:","Discrijhaedje:"}.
{"Disc only copy","Copeye seulmint sol deure plake"}.
{"Dump Backup to Text File at ","Copeye di såvritè viè on fitchî tecse so "}.
{"Dump to Text File","Schaper en on fitchî tecse"}.
@@ -79,7 +72,6 @@
{"ejabberd SOCKS5 Bytestreams module","Module SOCKS5 Bytestreams po ejabberd"}.
{"ejabberd vCard module","Module vCard ejabberd"}.
{"ejabberd Web Admin","Manaedjeu waibe ejabberd"}.
{"Elements","Elemints"}.
{"Email","Emile"}.
{"Enable logging","Mete en alaedje li djournå"}.
{"Enable message archiving","Mete en alaedje l' årtchivaedje des messaedjes"}.
@@ -90,7 +82,6 @@
{"Enter path to jabberd14 spool file","Dinez l' tchimin viè l' fitchî di spool jabberd14"}.
{"Enter path to text file","Dinez l' tchimin viè l' fitchî tecse"}.
{"Enter the text you see","Tapez l' tecse ki vos voeyoz"}.
{"Error","Aroke"}.
{"Exclude Jabber IDs from CAPTCHA challenge","Esclure les IDs Jabber des kesses CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Espoirter totes les tåves, come des cmandes SQL, viè on fitchî"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Espoirter les dnêyes di tos les uzeus do sierveu viè des fitchîs PIEFXIS (XEP-0227):"}.
@@ -99,22 +90,17 @@
{"Family Name","No d' famile"}.
{"February","fevrî"}.
{"Friday","vénrdi"}.
{"From","Di"}.
{"Full Name","No etir"}.
{"Get Number of Online Users","Riçure li nombe d' uzeus raloyîs"}.
{"Get Number of Registered Users","Riçure li nombe d' uzeus edjîstrés"}.
{"Get User Last Login Time","Riçure li date/eure do dierin elodjaedje di l' uzeu"}.
{"Get User Password","Riçure sicret d' l' uzeu"}.
{"Get User Statistics","Riçure les statistikes di l' uzeu"}.
{"Grant voice to this person?","Permete li vwès po cisse djin ci?"}.
{"Group","Groupe"}.
{"Groups","Groupes"}.
{"has been banned","a stî bani"}.
{"has been kicked because of a system shutdown","a stî pité evoye cåze d' èn arestaedje do sistinme"}.
{"has been kicked because of an affiliation change","a stî pité evoye cåze d' on candjmint d' afiyaedje"}.
{"has been kicked because the room has been changed to members-only","a stî pité evoye cåze ki l' såle a stî ristrindowe åzès mimbes seulmint"}.
{"has been kicked","a stî pité evoye"}.
{"Host","Sierveu"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Si vos n' voeyoz nole imådje CAPTCHA chal, vizitez l' pådje waibe."}.
{"Import Directory","Sititchî d' on ridant"}.
{"Import File","Sititchî d' on fitchî"}.
@@ -125,7 +111,6 @@
{"Import Users from Dir at ","Sitichî des uzeus d' on ridant so "}.
{"Import Users From jabberd14 Spool Files","Sititchî des uzeus Jabberd 1.4"}.
{"Improper message type","Sôre di messaedje nén valide"}.
{"Incoming s2s Connections:","Raloyaedjes s2s en intrêye:"}.
{"Incorrect password","Sicret nén corek"}.
{"IP addresses","Adresses IP"}.
{"is now known as","est asteure kinoxhou come"}.
@@ -142,8 +127,6 @@
{"Last month","Dierin moes"}.
{"Last year","Dierinne anêye"}.
{"leaves the room","cwite li såle"}.
{"List of rooms","Djivêye des såles"}.
{"Low level update script","Sicripe di metaedje a djoû d' bas livea"}.
{"Make participants list public","Rinde publike li djivêye des pårticipants"}.
{"Make room CAPTCHA protected","Rinde li såle di berdelaedje protedjeye pa CAPTCHA"}.
{"Make room members-only","Rinde li såle di berdelaedje ristrindowe ås mimbes seulmint"}.
@@ -156,19 +139,15 @@
{"Maximum Number of Occupants","Nombe macsimom di prezints"}.
{"May","may"}.
{"Membership is required to enter this room","I fåt esse mimbe po poleur intrer dins cisse såle ci"}.
{"Members:","Mimbes:"}.
{"Memory","Memwere"}.
{"Message body","Coir do messaedje"}.
{"Middle Name","No do mitan"}.
{"Minimum interval between voice requests (in seconds)","Tins minimom etur deus dmandes di vwès (e segondes)"}.
{"Moderator privileges required","I fåt des priviledjes di moderateu"}.
{"Moderator","Moderateu"}.
{"Modified modules","Modules di candjîs"}.
{"Monday","londi"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Berdelaedje a sacwants"}.
{"Name","No"}.
{"Name:","Pitit no:"}.
{"Never","Måy"}.
{"New Password:","Novea scret:"}.
{"Nickname Registration at ","Edjîstraedje di metou no amon "}.
@@ -191,12 +170,9 @@
{"Number of online users","Nombe d' uzeus raloyîs"}.
{"Number of registered users","Nombe d' uzeus edjîstrés"}.
{"October","octôbe"}.
{"Offline Messages","Messaedjes ki ratindèt"}.
{"Offline Messages:","Messaedjes ki ratindèt:"}.
{"OK","'l est bon"}.
{"Old Password:","Vî scret:"}.
{"Online Users","Uzeus raloyîs"}.
{"Online Users:","Uzeus raloyîs:"}.
{"Online","Raloyî"}.
{"Only deliver notifications to available users","Seulmint evoyî des notifiaedje åzès uzeus disponibes"}.
{"Only members may query archives of this room","Seulmint les mimbes polèt cweri les årtchives dins cisse såle ci"}.
@@ -209,9 +185,7 @@
{"Organization Name","No d' l' organizåcion"}.
{"Organization Unit","Unité d' l' organizåcion"}.
{"Outgoing s2s Connections","Raloyaedjes s2s e rexhowe"}.
{"Outgoing s2s Connections:","Raloyaedjes s2s e rexhowe:"}.
{"Owner privileges required","I fåt des priviledjes di prôpietaire"}.
{"Packet","Paket"}.
{"Participant","Pårticipant"}.
{"Password Verification","Acertinaedje do scret"}.
{"Password Verification:","Acertinaedje do scret:"}.
@@ -219,7 +193,6 @@
{"Password:","Sicret:"}.
{"Path to Dir","Tchimin viè l' ridant"}.
{"Path to File","Tchimin viè l' fitchî"}.
{"Pending","Ratindant"}.
{"Period: ","Termene:"}.
{"Persist items to storage","Cayets permanints a wårder"}.
{"Ping","Ping"}.
@@ -236,17 +209,12 @@
{"RAM copy","Copeye e memwere (RAM)"}.
{"Really delete message of the day?","Voloz vs vormint disfacer l' messaedje do djoû?"}.
{"Recipient is not in the conference room","Li riçuveu n' est nén dins l' såle di conferince"}.
{"Registered Users","Uzeus edjistrés"}.
{"Registered Users:","Uzeus edjistrés:"}.
{"Register","Edjîstrer"}.
{"Remote copy","Copeye å lon"}.
{"Remove All Offline Messages","Oister tos les messaedjes ki ratindèt"}.
{"Remove User","Disfacer l' uzeu"}.
{"Remove","Oister"}.
{"Replaced by new connection","Replaecî pa on novea raloyaedje"}.
{"Resources","Rissoûces"}.
{"Restart Service","Renonder siervice"}.
{"Restart","Renonder"}.
{"Restore Backup from File at ","Rapexhî dispoy li fitchî copeye di såvrité so "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Rapexhî l' copeye di såvrité binaire après l' renondaedje ki vént d' ejabberd (çoula prind moens d' memwere del fé insi):"}.
{"Restore binary backup immediately:","Rapexhî do côp foû d' ene copeye di såvrité binaire:"}.
@@ -260,10 +228,8 @@
{"Room title","Tite del såle"}.
{"Roster groups allowed to subscribe","Pårtaedjîs groupes di soçons k' on s' î pout abouner"}.
{"Roster size","Grandeu del djivêye des soçons"}.
{"RPC Call Error","Aroke di houcaedje RPC"}.
{"Running Nodes","Nuks en alaedje"}.
{"Saturday","semdi"}.
{"Script check","Acertinaedje do scripe"}.
{"Search Results for ","Rizultats do cweraedje po "}.
{"Search users in ","Cweri des uzeus dins "}.
{"Send announcement to all online users on all hosts","Evoyî l' anonce a tos les uzeus raloyîs so tos les lodjoes"}.
@@ -281,18 +247,12 @@
{"Specify the access model","Sipecifyî l' modele d' accès"}.
{"Specify the event message type","Sipecifyî l' sôre do messaedje d' evenmint"}.
{"Specify the publisher model","Dinez l' modele d' eplaideu"}.
{"Statistics of ~p","Sitatistikes di ~p"}.
{"Statistics","Sitatistikes"}.
{"Stop","Arester"}.
{"Stopped Nodes","Nuks essoctés"}.
{"Storage Type","Sôre di wårdaedje"}.
{"Store binary backup:","Copeye di såvrité binaire:"}.
{"Store plain text backup:","Copeye di såvrité tecse:"}.
{"Subject","Sudjet"}.
{"Submit","Evoyî"}.
{"Submitted","Candjmints evoyîs"}.
{"Subscriber Address","Adresse di l' abouné"}.
{"Subscription","Abounmimnt"}.
{"Sunday","dimegne"}.
{"That nickname is already in use by another occupant","Li metou no est ddja eployî pa ene ôte sakî sol såle"}.
{"That nickname is registered by another person","Li metou no est ddja edjîstré pa ene ôte sakî"}.
@@ -306,28 +266,16 @@
{"This room is not anonymous","Cisse såle ci n' est nén anonime"}.
{"Thursday","djudi"}.
{"Time delay","Tårdjaedje"}.
{"Time","Date"}.
{"Too many CAPTCHA requests","Pår trop di dmandes CAPTCHA"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","I gn a-st avou pår trop (~p) d' otintifiaedjes k' ont fwait berwete vinant di ciste adresse IP la (~s). L' adresse serè disblokêye a ~s UTC"}.
{"Too many unacked stanzas","Pår trop di messaedjes sins acertinaedje di rçuvaedje"}.
{"To","Po"}.
{"Total rooms","Totå di såles"}.
{"Traffic rate limit is exceeded","Li limite pol volume di trafik a stî passêye"}.
{"Transactions Aborted:","Transaccions arestêyes:"}.
{"Transactions Committed:","Transaccions evoyeyes:"}.
{"Transactions Logged:","Transaccions wårdêyes e djournå:"}.
{"Transactions Restarted:","Transaccions renondêyes:"}.
{"Tuesday","mårdi"}.
{"Unable to generate a CAPTCHA","Nén moyén di djenerer on CAPTCHA"}.
{"Unauthorized","Nén otorijhî"}.
{"Unregister","Disdjîstrer"}.
{"Update message of the day (don't send)","Mete a djoû l' messaedje do djoû (nén l' evoyî)"}.
{"Update message of the day on all hosts (don't send)","Mete a djoû l' messaedje do djoû so tos les lodjoes (nén l' evoyî)"}.
{"Update plan","Plan d' metaedje a djoû"}.
{"Update ~p","Metaedje a djoû di ~p"}.
{"Update script","Sicripe di metaedje a djoû"}.
{"Update","Mete a djoû"}.
{"Uptime:","Tins dispoy l' enondaedje:"}.
{"User JID","JID d' l' uzeu"}.
{"User Management","Manaedjaedje des uzeus"}.
{"Username:","No d' uzeu:"}.
@@ -335,7 +283,6 @@
{"Users Last Activity","Dierinne activité des uzeus"}.
{"Users","Uzeus"}.
{"User","Uzeu"}.
{"Validate","Valider"}.
{"vCard User Search","Calpin des uzeus"}.
{"Virtual Hosts","Forveyous sierveus"}.
{"Visitors are not allowed to change their nicknames in this room","Les viziteus èn polèt nén candjî leus metous no po ç' såle ci"}.
+174 -244
View File
@@ -3,21 +3,19 @@
%% To improve translations please read:
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
{" (Add * to the end of field to match substring)"," (在字段末添加*来匹配子串)"}.
{" has set the subject to: "," 已将题设置为: "}.
{" (Add * to the end of field to match substring)"," 在字段末添加 * 以匹配子字符串)"}.
{" has set the subject to: "," 已将题设置为: "}.
{"# participants","# 参与者"}.
{"A description of the node","节点的描述"}.
{"A friendly name for the node","节点的友好名称"}.
{"A password is required to enter this room","进入此房间需要密码"}.
{"A description of the node","节点的描述"}.
{"A friendly name for the node","节点的易记名称"}.
{"A password is required to enter this room","进入此群聊需要密码"}.
{"A Web Page","网页"}.
{"Accept","接受"}.
{"Access denied by service policy","访问被服务策略拒绝"}.
{"Access denied by service policy","服务策略拒绝访问"}.
{"Access model","访问模型"}.
{"Account doesn't exist","账号不存在"}.
{"Action on user","对用户执行的操作"}.
{"Action on user","对用户的操作"}.
{"Add a hat to a user","给用户添加头衔"}.
{"Add Jabber ID","添加 Jabber ID"}.
{"Add New","添加新用户"}.
{"Add User","添加用户"}.
{"Administration of ","管理 "}.
{"Administration","管理"}.
@@ -26,21 +24,21 @@
{"All Users","所有用户"}.
{"Allow subscription","允许订阅"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","允许此 Jabber ID 订阅此 pubsub 节点?"}.
{"Allow this person to register with the room?","允许此用户注册此房间"}.
{"Allow users to change the subject","允许用户更改题"}.
{"Allow users to query other users","允许用户查询其用户"}.
{"Allow this person to register with the room?","允许此用户注册此群聊"}.
{"Allow users to change the subject","允许用户更改题"}.
{"Allow users to query other users","允许用户查询其用户"}.
{"Allow users to send invites","允许用户发送邀请"}.
{"Allow users to send private messages","允许用户发送私信"}.
{"Allow visitors to change nickname","允许访客更改昵称"}.
{"Allow visitors to send private messages to","允许访客发送私信至"}.
{"Allow visitors to send status text in presence updates","允许访客在在线状态更新中发送状态文本"}.
{"Allow visitors to send voice requests","允许访客发送发言请求"}.
{"An associated LDAP group that defines room membership; this should be an LDAP Distinguished Name according to an implementation-specific or deployment-specific definition of a group.","与定义房间成员资格相关联的 LDAP 群组;按群组特定于实现或特定于部署的定义,应该是一个 LDAP 专有名称。"}.
{"An associated LDAP group that defines room membership; this should be an LDAP Distinguished Name according to an implementation-specific or deployment-specific definition of a group.","与定义群聊成员资格相关联的 LDAP 群组;按群组特定于实现或特定于部署的定义,应该是一个 LDAP 专有名称。"}.
{"Announcements","公告"}.
{"Answer associated with a picture","与图片关联的回答"}.
{"Answer associated with a video","与视频关联的回答"}.
{"Answer associated with speech","与讲话关联的回答"}.
{"Answer to a question","问题的答"}.
{"Answer associated with a picture","与图片相关的答案"}.
{"Answer associated with a video","与视频相关的答案"}.
{"Answer associated with speech","与讲话相关的答案"}.
{"Answer to a question","问题的答"}.
{"Anyone in the specified roster group(s) may subscribe and retrieve items","指定花名册群组中的人可以订阅并检索内容项"}.
{"Anyone may associate leaf nodes with the collection","任何人都可以将叶子节点与集合关联"}.
{"Anyone may publish","任何人都可以发布"}.
@@ -48,76 +46,65 @@
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","对全部或来源进行了状态订阅的任何人均可订阅并检索内容项"}.
{"Anyone with Voice","任何有发言权的人"}.
{"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","四月"}.
{"Attribute 'channel' is required for this request","此请求要求'频道'属性"}.
{"Attribute 'id' is mandatory for MIX messages","对 MIX 消息,'id' 属性为必填项"}.
{"Attribute 'jid' is not allowed here","此处不允许 'jid' 属性"}.
{"Attribute 'node' is not allowed here","此处不允许 'node' 属性"}.
{"Attribute 'to' of stanza that triggered challenge","触发挑战节的 'to' 属性"}.
{"Attribute 'channel' is required for this request","此请求要求“channel”属性"}.
{"Attribute 'id' is mandatory for MIX messages","对 MIX 消息,id”属性是必需的"}.
{"Attribute 'jid' is not allowed here","此处不允许jid属性"}.
{"Attribute 'node' is not allowed here","此处不允许node属性"}.
{"Attribute 'to' of stanza that triggered challenge","触发挑战节的“to”属性"}.
{"August","八月"}.
{"Automatic node creation is not enabled","未启用自动节点创建"}.
{"Backup Management","备份管理"}.
{"Backup of ~p","~p的备份"}.
{"Backup of ~p","~p 的备份"}.
{"Backup to File at ","备份文件位于 "}.
{"Backup","备份"}.
{"Bad format","格式错误"}.
{"Birthday","生日"}.
{"Birthday","生日"}.
{"Both the username and the resource are required","用户名和资源均为必填项"}.
{"Bytestream already activated","字节流已经被激活"}.
{"Bytestream already activated","字节流已激活"}.
{"Cannot remove active list","无法移除活动列表"}.
{"Cannot remove default list","无法移除默认列表"}.
{"CAPTCHA web page","验证码网页"}.
{"Challenge ID","挑战 ID"}.
{"Change Password","更改密码"}.
{"Change User Password","更改用户密码"}.
{"Changing password is not allowed","不允许改密码"}.
{"Changing role/affiliation is not allowed","不允许改角色/从属关系"}.
{"Changing password is not allowed","不允许改密码"}.
{"Changing role/affiliation is not allowed","不允许改角色/从属关系"}.
{"Channel already exists","频道已存在"}.
{"Channel does not exist","频道不存在"}.
{"Channel JID","频道 JID"}.
{"Channels","频道"}.
{"Characters not allowed:","不允许字符:"}.
{"Chatroom configuration modified","聊天室配置已修改"}.
{"Chatroom is created","聊天室已创建"}.
{"Chatroom is destroyed","聊天室已解散"}.
{"Chatroom is started","聊天室已启动"}.
{"Chatroom is stopped","聊天室已停"}.
{"Chatrooms","聊天室"}.
{"Choose a username and password to register with this server","选择要在此服务器注册的用户名和密码"}.
{"Choose storage type of tables","请选择表的存储类型"}.
{"Choose whether to approve this entity's subscription.","选择是否允许该实体的订阅。"}.
{"Chatroom configuration modified","聊配置已修改"}.
{"Chatroom is created","聊已创建"}.
{"Chatroom is destroyed","聊已解散"}.
{"Chatroom is started","群聊已开始"}.
{"Chatroom is stopped","聊已停"}.
{"Chatrooms","聊"}.
{"Choose a username and password to register with this server","选择要在此服务器注册的用户名和密码"}.
{"Choose storage type of tables","请选择表的存储类型"}.
{"Choose whether to approve this entity's subscription.","选择是否批准此实体的订阅。"}.
{"City","城市"}.
{"Client acknowledged more stanzas than sent by server","客户端确认的节数多于服务器发送的节数"}.
{"Commands","命令"}.
{"Conference room does not exist","会议室不存在"}.
{"Configuration of room ~s","房间~s的配置"}.
{"Conference room does not exist","群聊不存在"}.
{"Configuration of room ~s","群聊 ~s 的配置"}.
{"Configuration","配置"}.
{"Connected Resources:","已连接资源:"}.
{"Contact Addresses (normally, room owner or owners)","联系人地址(通常为房间所有者)"}.
{"Contrib Modules","Contrib 模块"}.
{"Contact Addresses (normally, room owner or owners)","联系人地址(通常为群聊所有者)"}.
{"Country","国家/地区"}.
{"CPU Time:","CPU 时间:"}.
{"Current Discussion Topic","当前讨论话题"}.
{"Database failure","数据库失败"}.
{"Database Tables at ~p","位于~p的数据库表"}.
{"Database Tables Configuration at ","数据库表格配置位于 "}.
{"Database","数据库"}.
{"December","十二月"}.
{"Default users as participants","默认用户为参与者"}.
{"Delete content","删除内容"}.
{"Delete message of the day on all hosts","删除所有主机上的每日消息"}.
{"Delete message of the day","删除每日消息"}.
{"Delete Selected","删除已选内容"}.
{"Delete table","删除表格"}.
{"Delete User","删除用户"}.
{"Deliver event notifications","传递事件通知"}.
{"Deliver payloads with event notifications","用事件通告传输有效负载"}.
{"Description:","描述:"}.
{"Deliver payloads with event notifications","用事件通知传递有效负载"}.
{"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 to Text File","转储到文本文件"}.
{"Duplicated groups are not allowed by RFC6121","按照 RFC6121 的规则,不允许有重复的群组"}.
@@ -127,103 +114,94 @@
{"ejabberd HTTP Upload service","ejabberd HTTP 上传服务"}.
{"ejabberd MUC module","ejabberd MUC 模块"}.
{"ejabberd Multicast service","ejabberd 多重映射服务"}.
{"ejabberd Publish-Subscribe module","ejabberd 发行-订阅模块"}.
{"ejabberd Publish-Subscribe module","ejabberd 发布—订阅模块"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 字节流模块"}.
{"ejabberd vCard module","ejabberd vCard 模块"}.
{"ejabberd Web Admin","ejabberd Web 管理员"}.
{"ejabberd","ejabberd"}.
{"Elements","元素"}.
{"Email Address","电子邮件地址"}.
{"Email","电子邮件"}.
{"Enable hats","启用头衔"}.
{"Enable logging","启用服务器端聊天记录"}.
{"Enable logging","启用日志记录"}.
{"Enable message archiving","启用消息存档"}.
{"Enabling push without 'node' attribute is not supported","不支持未使用'node'属性就启推送"}.
{"Enabling push without 'node' attribute is not supported","不支持没有“node属性就启推送"}.
{"End User Session","结束用户会话"}.
{"Enter nickname you want to register","请输入您想要注册的昵称"}.
{"Enter nickname you want to register","请输入要注册的昵称"}.
{"Enter path to backup file","请输入备份文件的路径"}.
{"Enter path to jabberd14 spool dir","请输入 jabberd14 spool 目录的路径"}.
{"Enter path to jabberd14 spool file","请输入 jabberd14 spool 文件的路径"}.
{"Enter path to text file","请输入文本文件的路径"}.
{"Enter the text you see","请输入您看到的文本"}.
{"Enter the text you see","请输入您看到的文本"}.
{"Erlang XMPP Server","Erlang XMPP 服务器"}.
{"Error","错误"}.
{"Exclude Jabber IDs from CAPTCHA challenge","从验证码挑战中排除 Jabber ID"}.
{"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 users in a host to PIEFXIS files (XEP-0227):","将主机用户数据导出到 PIEFXIS 文件(XEP-0227)"}.
{"External component failure","外部组件失败"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","将服务器所有用户的数据导出到 PIEFXIS 文件XEP-0227"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","将主机用户数据导出到 PIEFXIS 文件XEP-0227"}.
{"External component failure","外部组件故障"}.
{"External component timeout","外部组件超时"}.
{"Failed to activate bytestream","激活字节流失败"}.
{"Failed to extract JID from your voice request approval","从您的发言请求批准提取 JID 失败"}.
{"Failed to extract JID from your voice request approval","无法从您的发言请求批准提取 JID"}.
{"Failed to map delegated namespace to external component","未能将代理命名空间映射到外部组件"}.
{"Failed to parse HTTP response","HTTP 响应解析失败"}.
{"Failed to process option '~s'","选项'~s'处理失败"}.
{"Failed to process option '~s'","无法处理选项~s"}.
{"Family Name","姓氏"}.
{"FAQ Entry","常见问题入口"}.
{"FAQ Entry","常见问题解答"}.
{"February","二月"}.
{"File larger than ~w bytes","文件大于 ~w 字节"}.
{"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","星期五"}.
{"From ~ts","来自 ~ts"}.
{"From","从"}.
{"Full List of Room Admins","房间管理员完整列表"}.
{"Full List of Room Owners","房间所有者完整列表"}.
{"Full List of Room Admins","群聊管理员完整列表"}.
{"Full List of Room Owners","群聊所有者完整列表"}.
{"Full Name","全名"}.
{"Get List of Online Users","获取在线用户列表"}.
{"Get List of Registered Users","获取注册用户列表"}.
{"Get Number of Online Users","获取在线用户数"}.
{"Get Number of Registered Users","获取注册用户数"}.
{"Get Pending","获取挂起"}.
{"Get Pending","获取待处理"}.
{"Get User Last Login Time","获取用户上次登录时间"}.
{"Get User Password","获取用户密码"}.
{"Get User Statistics","获取用户统计"}.
{"Given Name","中间名"}.
{"Grant voice to this person?","允许此用户发言?"}.
{"Groups that will be displayed to the members","将显示给成员的群组"}.
{"Groups","组"}.
{"Group","组"}.
{"has been banned","已被禁止"}.
{"Grant voice to this person?","授予此用户发言"}.
{"has been banned","已被封禁"}.
{"has been kicked because of a system shutdown","因系统关机而被踢出"}.
{"has been kicked because of an affiliation change","从属关系改变而踢出"}.
{"has been kicked because the room has been changed to members-only","被踢,因为房间已改为仅成员进入"}.
{"has been kicked because of an affiliation change","由于从属关系改变而踢出"}.
{"has been kicked because the room has been changed to members-only","被踢,因为群聊已更改为仅成员进入"}.
{"has been kicked","已被踢出"}.
{"Hat title","头衔标题"}.
{"Hat URI","头衔 URI"}.
{"Hats limit exceeded","已超过头衔限制"}.
{"Host unknown","主机未知"}.
{"Host","主机"}.
{"HTTP File Upload","HTTP 文件上传"}.
{"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.","如果您在此处没有看到验证码图片,请访问网页。"}.
{"Import Directory","导入目录"}.
{"Import File","导入文件"}.
{"Import user data from jabberd14 spool file:","从 jabberd14 Spool 文件导入用户数据:"}.
{"Import User from File at ","从以下位置的文件导入用户 "}.
{"Import users data from a PIEFXIS file (XEP-0227):","从 PIEFXIS 文件(XEP-0227) 导入用户数据:"}.
{"Import users data from a PIEFXIS file (XEP-0227):","从 PIEFXIS 文件XEP-0227导入用户数据:"}.
{"Import users data from jabberd14 spool directory:","从jabberd14 Spool目录导入用户数据:"}.
{"Import Users from Dir at ","从以下位置目录导入用户 "}.
{"Import Users From jabberd14 Spool Files","从 jabberd14 Spool 文件导入用户"}.
{"Improper domain part of 'from' attribute","不恰当的'from'属性域名部分"}.
{"Improper message type","不恰当的消息类型"}.
{"Incoming s2s Connections:","入站 s2s 连接:"}.
{"Improper domain part of 'from' attribute","from属性域名部分不正确"}.
{"Improper message type","消息类型不正确"}.
{"Incorrect CAPTCHA submit","提交的验证码不正确"}.
{"Incorrect data form","数据形式不正确"}.
{"Incorrect password","密码不正确"}.
{"Incorrect value of 'action' attribute","'action' 属性的值不正确"}.
{"Incorrect value of 'action' in data form","数据表单中 'action' 的值不正确"}.
{"Incorrect value of 'path' in data form","数据表单中 'path' 的值不正确"}.
{"Incorrect value of 'action' attribute","action属性的值不正确"}.
{"Incorrect value of 'action' in data form","数据表单中action的值不正确"}.
{"Incorrect value of 'path' in data form","数据表单中path的值不正确"}.
{"Installed Modules:","已安装的模块:"}.
{"Install","安装"}.
{"Insufficient privilege","权限不足"}.
{"Internal server error","内部服务器错误"}.
{"Invalid 'from' attribute in forwarded message","转发的信息中 'from' 属性的值无效"}.
{"Invalid 'from' attribute in forwarded message","转发消息中的“from”属性无效"}.
{"Invalid node name","无效的节点名称"}.
{"Invalid 'previd' value","无效的 'previd' 值"}.
{"Invalid 'previd' value","previd”值无效"}.
{"Invitations are not allowed in this conference","此群聊不允许邀请"}.
{"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),被踢出了此房间"}.
{"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 private messages of type \"groupchat\"","不允许发送“群聊”类型的私信"}.
{"It is not allowed to send private messages to the conference","不允许向群聊发送私信"}.
{"Jabber ID","Jabber ID"}.
@@ -232,80 +210,71 @@
{"JID normalization failed","JID 规范化失败"}.
{"Joined MIX channels of ~ts","加入了 ~ts 的 MIX 频道"}.
{"Joined MIX channels:","加入了 MIX 频道:"}.
{"joins the room","加入房间"}.
{"joins the room","加入群聊"}.
{"July","七月"}.
{"June","六月"}.
{"Just created","刚刚创建"}.
{"Label:","标签:"}.
{"Last Activity","上次活动"}.
{"Last login","上次登录"}.
{"Last message","最近消息"}.
{"Last month","上个月"}.
{"Last year","上一年"}.
{"Last year","年"}.
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","文本的 SHA-256 哈希的最低有效位应等于十六进制标签"}.
{"leaves the room","离开房间"}.
{"List of rooms","房间列表"}.
{"leaves the room","离开群聊"}.
{"List of users with hats","有头衔用户的列表"}.
{"List users with hats","有头衔用户列表"}.
{"Logging","正在记录"}.
{"Low level update script","低级别更新脚本"}.
{"Make participants list public","公开参与者列表"}.
{"Make room CAPTCHA protected","使房间受验证码保护"}.
{"Make room members-only","使房间仅成员进入"}.
{"Make room moderated","对房间进行审核"}.
{"Make room password protected","使房间受密码保护"}.
{"Make room persistent","使房间持久"}.
{"Make room public searchable","使房间可公开搜索"}.
{"Make room CAPTCHA protected","让群聊受验证码保护"}.
{"Make room members-only","让群聊仅成员进入"}.
{"Make room moderated","开启群聊发言审核"}.
{"Make room password protected","让群聊受密码保护"}.
{"Make room persistent","让群聊持续存在"}.
{"Make room public searchable","让群聊可公开搜索"}.
{"Malformed username","用户名格式不正确"}.
{"MAM preference modification denied by service policy","MAM 偏好被服务策略拒绝"}.
{"March","三月"}.
{"Max # of items to persist, or `max` for no specific limit other than a server imposed maximum","要保留的最大项目数 #`max`表示除服务器加的最大值之外没有特定限制"}.
{"Max # of items to persist, or `max` for no specific limit other than a server imposed maximum","要持久化的最大项目数 #或“max表示除服务器加的最大值之外没有特定限制"}.
{"Max payload size in bytes","最大有效负载字节数"}.
{"Maximum file size","最大文件大小"}.
{"Maximum Number of History Messages Returned by Room","房间返回的历史消息最大值"}.
{"Maximum number of items to persist","持久化内容的最大目数"}.
{"Maximum Number of History Messages Returned by Room","群聊返回的聊天记录消息最大值"}.
{"Maximum number of items to persist","持久化的最大目数"}.
{"Maximum Number of Occupants","最大占用人数"}.
{"May","五月"}.
{"Members not added (inexistent vhost!): ","成员未添加(不存在的vhost!) "}.
{"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 中,如果您忘记密码,则没有自动恢复密码的方法。"}.
{"Memory","内存"}.
{"Mere Availability in XMPP (No Show Value)","仅 XMPP 中的可用性(不显示值)"}.
{"Membership is required to enter this room","进入此群聊需要成员资格"}.
{"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 中,如果您忘记密码,没有自动恢复密码的方法。"}.
{"Mere Availability in XMPP (No Show Value)","XMPP 中的可用性(无显示值)"}.
{"Message body","消息主体"}.
{"Message not found in forwarded payload","转发的有效载荷中找不到消息"}.
{"Messages from strangers are rejected","拒绝来自陌生人的消息"}.
{"Messages of type headline","标题类型的消息"}.
{"Messages of type normal","普通类型的消息"}.
{"Middle Name","中间名"}.
{"Minimum interval between voice requests (in seconds)","发言请求的最间隔(秒)"}.
{"Minimum interval between voice requests (in seconds)","发言请求之间的最间隔时间(秒)"}.
{"Moderator privileges required","需要主持人权限"}.
{"Moderators Only","仅主持人"}.
{"Moderators Only","仅主持人"}.
{"Moderator","主持人"}.
{"Modified modules","被修改模块"}.
{"Module failed to handle the query","模块未能处理查询"}.
{"Module failed to handle the query","模块无法处理查询"}.
{"Monday","星期一"}.
{"Multicast","多重映射"}.
{"Multiple <item/> elements are not allowed by RFC6121","按照 RFC6121,多个 <item/> 元素是不允许的"}.
{"Multi-User Chat","多用户聊天"}.
{"Name in the rosters where this group will be displayed","花名册中将显示的该分组的名称"}.
{"Name","姓名"}.
{"Name:","姓名:"}.
{"Natural Language for Room Discussions","房间讨论的自然语言"}.
{"Natural-Language Room Name","自然语言房间名称"}.
{"Neither 'jid' nor 'nick' attribute found","属性 'jid' 或 'nick' 均未发现"}.
{"Neither 'role' nor 'affiliation' attribute found","属性 'role' 或 'affiliation' 均未发现"}.
{"Never","从未"}.
{"Name","名称"}.
{"Natural Language for Room Discussions","群聊讨论的自然语言"}.
{"Natural-Language Room Name","自然语言群聊名称"}.
{"Neither 'jid' nor 'nick' attribute found","未找到“jid”和“nick”属性"}.
{"Neither 'role' nor 'affiliation' attribute found","未找到“role”或“affiliation”属性"}.
{"Never","从不"}.
{"New Password:","新密码:"}.
{"Nickname can't be empty","昵称不能为空"}.
{"Nickname Registration at ","昵称注册于 "}.
{"Nickname ~s does not exist in the room","昵称~s不在该房间"}.
{"Nickname ~s does not exist in the room","昵称 ~s 不在此群聊"}.
{"Nickname","昵称"}.
{"No address elements found","没有找到地址的各元素"}.
{"No addresses element found","没有找到各地址元素"}.
{"No 'affiliation' attribute found","未发现 'affiliation' 属性"}.
{"No available resource found","没发现可用资源"}.
{"No body provided for announce message","通知消息无正文内容"}.
{"No address elements found","找到地址元素"}.
{"No addresses element found","找不到地址元素"}.
{"No 'affiliation' attribute found","未找到“affiliation属性"}.
{"No available resource found","找不到可用资源"}.
{"No body provided for announce message","没有为公告消息提供正文"}.
{"No child elements found","没有找到子元素"}.
{"No data form found","没有找到数据表单"}.
{"No Data","没有数据"}.
@@ -313,27 +282,27 @@
{"No <forwarded/> element found","未找到 <forwarded/> 元素"}.
{"No hook has processed this command","没有任何钩子已处理此命令"}.
{"No info about last activity found","未找到上次活动的信息"}.
{"No 'item' element found","没有找到 'item' 元素"}.
{"No items found in this query","此查询中没发现任何项"}.
{"No 'item' element found","未找到“item元素"}.
{"No items found in this query","此查询中找不到任何项"}.
{"No limit","不限"}.
{"No module is handling this query","没有正在处理此查询的模块"}.
{"No node specified","指定节点"}.
{"No 'password' found in data form","数据表单中未发现 'password'"}.
{"No 'password' found in this query","此查询中未发现 'password'"}.
{"No 'path' found in data form","数据表单中未发现 'path'"}.
{"No pending subscriptions found","未发现挂起的订阅"}.
{"No module is handling this query","没有模块正在处理此查询"}.
{"No node specified","指定节点"}.
{"No 'password' found in data form","数据表单中找不到“password"}.
{"No 'password' found in this query","此查询中找不到“password"}.
{"No 'path' found in data form","数据表单中找不到“path"}.
{"No pending subscriptions found","未找到待处理的订阅"}.
{"No privacy list with this name found","未找到带此名称的隐私列表"}.
{"No private data found in this query","此查询中未发现私有数据"}.
{"No running node found","没有找到运行中的节点"}.
{"No services available","无可用服务"}.
{"No statistics found for this item","未找到此项的统计数据"}.
{"No 'to' attribute found in the invitation","邀请中未发现 'to' 标签"}.
{"No 'to' attribute found in the invitation","邀请中未找到“to”属性"}.
{"Nobody","没有人"}.
{"Node already exists","节点已存在"}.
{"Node ID","节点 ID"}.
{"Node index not found","没有找到节点索引"}.
{"Node not found","没有找到节点"}.
{"Node ~p","节点~p"}.
{"Node ~p","节点 ~p"}.
{"Nodeprep has failed","Nodeprep 已失效"}.
{"Nodes","节点"}.
{"Node","节点"}.
@@ -345,7 +314,7 @@
{"Notify subscribers when the node configuration changes","当节点设置改变时通知订阅者"}.
{"Notify subscribers when the node is deleted","当节点被删除时通知订阅者"}.
{"November","十一月"}.
{"Number of answers required","需要的回答数量"}.
{"Number of answers required","所需答案数量"}.
{"Number of occupants","占用人数"}.
{"Number of Offline Messages","离线消息数量"}.
{"Number of online users","在线用户数"}.
@@ -353,23 +322,19 @@
{"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 query others","允许占用者查询别人"}.
{"Occupants May Change the Subject","占用者可以修改主题"}.
{"Occupants May Change the Subject","占用者可以更改话题"}.
{"October","十月"}.
{"Offline Messages","离线消息"}.
{"Offline Messages:","离线消息:"}.
{"OK","确定"}.
{"Old Password:","旧密码:"}.
{"Online Users","在线用户"}.
{"Online Users:","在线用户:"}.
{"Online","在线"}.
{"Only admins can see this","仅管理员可以看见此内容"}.
{"Only collection node owners may associate leaf nodes with the collection","只有集合节点所有者可以将叶子节点与集合关联"}.
{"Only deliver notifications to available users","仅将通知发送给可发送的用户"}.
{"Only <enable/> or <disable/> tags are allowed","仅允许 <enable/> 或 <disable/> 标签"}.
{"Only <list/> element is allowed in this query","此查询中只允许 <list/> 元素"}.
{"Only members may query archives of 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 members may query archives of 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 retract messages","只有主持人才允许撤回消息"}.
{"Only moderators can approve voice requests","只有主持人才能批准发言请求"}.
{"Only occupants are allowed to send messages to the conference","只有占用者才允许向群聊发送消息"}.
@@ -382,20 +347,17 @@
{"Organization Unit","组织单位"}.
{"Other Modules Available:","其他可用模块:"}.
{"Outgoing s2s Connections","出站 s2s 连接"}.
{"Outgoing s2s Connections:","出站 s2s 连接:"}.
{"Owner privileges required","需要所有者权限"}.
{"Packet relay is denied by service policy","包中继被服务策略拒绝"}.
{"Packet","数据包"}.
{"Participant ID","参与者 ID"}.
{"Participant","参与者"}.
{"Password Verification:","密码确认:"}.
{"Password Verification","确认密码"}.
{"Password Verification","密码验证"}.
{"Password Verification:","密码验证:"}.
{"Password","密码"}.
{"Password:","密码:"}.
{"Path to Dir","目录的路径"}.
{"Path to File","文件路径"}.
{"Payload semantic type information","有效载荷语义类型信息"}.
{"Pending","挂起"}.
{"Period: ","持续时间: "}.
{"Persist items to storage","持久化内容条目"}.
{"Persistent","持久"}.
@@ -404,17 +366,17 @@
{"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.","注意:这些选项仅将备份内置的 Mnesia 数据库。如果您正在使用 ODBC 模块,您还需要分别备份您的数据库。"}.
{"Please, wait for a while before sending new voice request","请稍候,然后再发送新的发言请求"}.
{"Pong","Pong"}.
{"Possessing 'ask' attribute is not allowed by RFC6121","按照 RFC6121 不允许处理 'ask' 属性"}.
{"Present real Jabber IDs to","将真实 Jabber ID 显示给"}.
{"Possessing 'ask' attribute is not allowed by RFC6121","按照 RFC6121 不允许有“ask属性"}.
{"Present real Jabber IDs to","将用户真实 JID 显示给"}.
{"Previous session not found","上一个会话未找到"}.
{"Previous session PID has been killed","上一个会话的 PID 已被杀掉"}.
{"Previous session PID has exited","上一个会话的 PID 已退出"}.
{"Previous session PID is dead","上一个会话的 PID 已死"}.
{"Previous session timed out","上一个会话已超时"}.
{"private, ","保密 "}.
{"private, ","私人 "}.
{"Public","公开"}.
{"Publish model","发布模型"}.
{"Publish-Subscribe","发布-订阅"}.
{"Publish-Subscribe","发布订阅"}.
{"PubSub subscriber request","PubSub 订阅者请求"}.
{"Purge all items when the relevant publisher goes offline","相关发布人离线后清除所有选项"}.
{"Push record not found","没有找到推送记录"}.
@@ -427,52 +389,42 @@
{"Receive notification from direct child nodes only","仅接收所有直接子节点的通知"}.
{"Receive notification of new items 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 账号"}.
{"Registered Users","注册用户"}.
{"Registered Users:","注册用户:"}.
{"Register","注册"}.
{"Remote copy","远程复制"}.
{"Remove a hat from a user","移除用户头衔"}.
{"Remove All Offline Messages","移除所有离线消息"}.
{"Remove User","删除用户"}.
{"Remove","移除"}.
{"Remove User","移除用户"}.
{"Replaced by new connection","被新的连接替换"}.
{"Request has timed out","请求已超时"}.
{"Request is ignored","请求被忽略"}.
{"Requested role","请求的角色"}.
{"Resources","资源"}.
{"Restart Service","重启服务"}.
{"Restart","重启"}.
{"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 plain text backup immediately:","立即恢复普通文本备份:"}.
{"Restore plain text backup immediately:","立即恢复明文备份:"}.
{"Restore","恢复"}.
{"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","可以发送私信的角色"}.
{"Room Configuration","房间配置"}.
{"Room creation is denied by service policy","创建房间被服务策略拒绝"}.
{"Room description","房间描述"}.
{"Room Occupants","房间占用者"}.
{"Room terminates","房间终止"}.
{"Room title","房间标题"}.
{"Room Configuration","群聊配置"}.
{"Room creation is denied by service policy","群聊创建被服务策略拒绝"}.
{"Room description","群聊描述"}.
{"Room Occupants","群聊占用者"}.
{"Room terminates","群聊终止"}.
{"Room title","群聊标题"}.
{"Roster groups allowed to subscribe","允许订阅的花名册组"}.
{"Roster of ~ts","~ts的花名册"}.
{"Roster size","花名册大小"}.
{"Roster:","花名册:"}.
{"RPC Call Error","RPC 调用错误"}.
{"Running Nodes","运行中的节点"}.
{"~s invites you to the room ~s","~s 邀请您到房间 ~s"}.
{"~s invites you to the room ~s","~s 邀请您加入群聊 ~s"}.
{"Saturday","星期六"}.
{"Script check","脚本检查"}.
{"Search from the date","从日期搜索"}.
{"Search Results for ","搜索结果属于关键词 "}.
{"Search Results for ","搜索结果 "}.
{"Search the text","搜索文本"}.
{"Search until the date","搜索截至日期"}.
{"Search users in ","在以下位置搜索用户 "}.
{"Select All","全选"}.
{"Send announcement to all online users on all hosts","发送通知给所有主机的在线用户"}.
{"Send announcement to all online users","发送通知给所有在线用户"}.
{"Send announcement to all users on all hosts","发送通知给所有主机上的所有用户"}.
@@ -481,14 +433,14 @@
{"Server:","服务器:"}.
{"Service list retrieval timed out","服务列表检索超时"}.
{"Session state copying timed out","会话状态复制超时"}.
{"Set message of the day and send to online users","设每日消息并发送给所有在线用户"}.
{"Set message of the day on all hosts and send to online users","设置所有主机上每日消息并发送给在线用户"}.
{"Set message of the day and send to online users","设每日消息并发送给在线用户"}.
{"Set message of the day on all hosts and send to online users","所有主机上设置每日消息并发送给在线用户"}.
{"Shared Roster Groups","共享的花名册组群"}.
{"Show Integral Table","显示完整列表"}.
{"Show Ordinary Table","显示普通列表"}.
{"Shut Down Service","关闭服务"}.
{"SOCKS5 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 event message type","指定事件消息类型"}.
@@ -496,23 +448,17 @@
{"Stanza id is not valid","节 id 无效"}.
{"Stanza ID","节 ID"}.
{"Statically specify a replyto of the node owner(s)","静态指定节点所有者的回复"}.
{"Statistics of ~p","~p的统计"}.
{"Statistics","统计"}.
{"Stopped Nodes","已经停止的节点"}.
{"Stop","停止"}.
{"Storage Type","存储类型"}.
{"Store binary backup:","存储为二进制备份:"}.
{"Store plain text backup:","存储为普通文本备份:"}.
{"Stream management is already enabled","流管理已启用"}.
{"Stream management is not enabled","流管理未启用"}.
{"Subject","题"}.
{"Subject","题"}.
{"Submitted","已提交"}.
{"Submit","提交"}.
{"Subscriber Address","订阅者地址"}.
{"Subscribers may publish","订阅者可以发布"}.
{"Subscription requests must be approved and only subscribers may retrieve items","订阅请求必须得到批准,只有订阅者才能检索项目"}.
{"Subscriptions are not allowed","不允许订阅"}.
{"Subscription","订阅"}.
{"Sunday","星期天"}.
{"Text associated with a picture","与图片相关的文字"}.
{"Text associated with a sound","与声音相关的文字"}.
@@ -525,17 +471,17 @@
{"The body text of the last received message","最后收到的消息的正文"}.
{"The CAPTCHA is valid.","验证码有效。"}.
{"The CAPTCHA verification has failed","验证码检查失败"}.
{"The captcha you entered is wrong","您输入的验证码误"}.
{"The captcha you entered is wrong","您输入的验证码误"}.
{"The child nodes (leaf or collection) associated with a collection","关联集合的字节点(叶子或集合)"}.
{"The collections with which a node is affiliated","加入结点的集合"}.
{"The DateTime at which a leased subscription will end or has ended","租赁订阅将结束或已结束的日期时间"}.
{"The datetime when the node was created","节点创建的日期时间"}.
{"The default language of the node","该节点的默认语言"}.
{"The feature requested is not supported by the conference","会议不支持请求的特征"}.
{"The JID of the node creator","节点创建的 JID"}.
{"The feature requested is not supported by the conference","群聊不支持请求的功能"}.
{"The JID of the node creator","节点创建的 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 publisher","隶属发布人的 JID"}.
{"The JIDs of those with an affiliation of publisher","与发布者的从属关系有关的用户 JID"}.
{"The list of all online users","所有在线用户列表"}.
{"The list of all users","所有用户列表"}.
{"The list of JIDs that may associate leaf nodes with a collection","可以将叶节点与集合关联的 JID 列表"}.
@@ -552,30 +498,29 @@
{"The password is too weak","密码强度太弱"}.
{"the password is","密码是"}.
{"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 presence states for which an entity wants to receive notifications","实体要为其接收通知的状态"}.
{"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 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 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 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 URL of an XSL transformation which can be applied to payloads in order to generate an appropriate message body element.","XSL 转换的 URL,可以将其应用于有效负载以生成适当的消息正文元素。"}.
{"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","XSL 转换的 URL,可以将其应用于有效负载格式,以生成有效的数据表单结果,客户端可以使用通用数据表单呈现引擎来显示该结果"}.
{"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 deleting the account: ","删除账号时出错: "}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","此处不区分大小写:macbeth 与 MacBeth 和 Macbeth 是一样的。"}.
{"This page allows to register an XMPP account in this XMPP server. Your JID (Jabber ID) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","本页面允许在此服务器注册 XMPP 账号您的 JID (Jabber ID) 的形式如下:username@server。请仔细阅读说明以正确填写字段。"}.
{"This page allows to unregister an XMPP account in this XMPP server.","页面允许在此 XMPP 服务器注销 XMPP 账号。"}.
{"This room is not anonymous","此房间不是匿名房间"}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","此处不区分大小写:MacBeth 和 Macbeth 都是 macbeth。"}.
{"This page allows to register an XMPP account in this XMPP server. Your JID (Jabber ID) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","本页面允许在此服务器注册 XMPP 账号您的 JIDJabber ID)的格式为:用户名@服务器。请仔细阅读说明以正确填写字段。"}.
{"This page allows to unregister an XMPP account in this XMPP server.","页面允许在此 XMPP 服务器注销 XMPP 账号。"}.
{"This room is not anonymous","此群聊不是匿名"}.
{"This service can not process the address: ~s","此服务无法处理地址:~s"}.
{"Thursday","星期四"}.
{"Time delay","时间延迟"}.
{"Timed out waiting for stream resumption","等待流恢复超时"}.
{"Time","时间"}.
{"To register, visit ~s","要注册,请访问 ~s"}.
{"To ~ts","发送到~ts"}.
{"Token TTL","TTL 令牌"}.
@@ -587,15 +532,9 @@
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","来自 IP 地址(~p)的(~s)失败认证太多。将在 UTC 时间 ~s 解除对该地址的封锁"}.
{"Too many receiver fields were specified","指定的接收者字段太多"}.
{"Too many unacked stanzas","未被确认的节太多"}.
{"Too many users in this conference","该会议的用户太多"}.
{"Total rooms","所有房间"}.
{"To","到"}.
{"Too many users in this conference","此群聊中的用户太多"}.
{"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","星期二"}.
{"Unable to generate a CAPTCHA","无法生成验证码"}.
{"Unable to register route on existing local domain","在已存在的本地域上无法注册路由"}.
@@ -605,20 +544,14 @@
{"Uninstall","卸载"}.
{"Unregister an XMPP account","注销 XMPP 账号"}.
{"Unregister","注销"}.
{"Unselect All","取消全选"}.
{"Unsupported <index/> element","不支持的 <index/> 元素"}.
{"Unsupported version","不支持的版本"}.
{"Update message of the day (don't send)","更新每日消息(不发送)"}.
{"Update message of the day on all hosts (don't send)","更新所有主机上的每日消息(不发送)"}.
{"Update plan","更新计划"}.
{"Update ~p","更新~p"}.
{"Update script","更新脚本"}.
{"Update message of the day (don't send)","更新每日消息不发送"}.
{"Update message of the day on all hosts (don't send)","更新所有主机上的每日消息不发送"}.
{"Update specs to get modules source, then install desired ones.","更新参数获取模块源,然后安装所需的模块。"}.
{"Update Specs","更新参数"}.
{"Update","更新"}.
{"Upgrade","升级"}.
{"Uptime:","正常运行时间:"}.
{"URL for Archived Discussion Logs","已存档对话日志的 URL"}.
{"URL for Archived Discussion Logs","存档讨论日志的 URL"}.
{"User already exists","用户已存在"}.
{"User (jid)","用户 (jid)"}.
{"User JID","用户 JID"}.
@@ -626,25 +559,22 @@
{"User removed","用户已移除"}.
{"User session not found","用户会话未找到"}.
{"User session terminated","用户会话已终止"}.
{"User ~ts","用户~ts"}.
{"User ~ts","用户 ~ts"}.
{"Username:","用户名:"}.
{"Users are not allowed to register accounts so quickly","不允许用户太频繁地注册账号"}.
{"Users Last Activity","用户上次活动"}.
{"Users","用户"}.
{"User","用户"}.
{"Validate","确认"}.
{"Value 'get' of 'type' attribute is not allowed","不允许 'type' 属性的 'get' 值"}.
{"Value 'get' of 'type' attribute is not allowed","不允许“type”属性的“get”值"}.
{"Value of '~s' should be boolean","'~s' 的值应为布尔型"}.
{"Value of '~s' should be datetime string","'~s' 的值应为日期时间字符串"}.
{"Value of '~s' should be integer","'~s' 的值应为整数"}.
{"Value 'set' of 'type' attribute is not allowed","不允许 'type' 属性的 'set' 值"}.
{"Value 'set' of 'type' attribute is not allowed","不允许type属性的set值"}.
{"vCard User Search","vCard 用户搜索"}.
{"View joined MIX channels","查看已加入的 MIX 频道"}.
{"View Queue","查看队列"}.
{"View Roster","查看花名册"}.
{"Virtual Hosts","虚拟主机"}.
{"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 change their nicknames in this room","不允许访客在此群聊中更改其昵称"}.
{"Visitors are not allowed to send messages to all occupants","不允许访客向所有占用者发送信息"}.
{"Visitor","访客"}.
{"Voice requests are disabled in this conference","此群聊中禁用发言请求"}.
{"Voice request","发言请求"}.
@@ -668,22 +598,22 @@
{"XMPP Domains","XMPP 域"}.
{"XMPP Show Value of Away","XMPP 的离开显示值"}.
{"XMPP Show Value of Chat","XMPP 的聊天显示值"}.
{"XMPP Show Value of DND (Do Not Disturb)","XMPP 的 DND (勿扰)显示值"}.
{"XMPP Show Value of XA (Extended Away)","XMPP 的 XA (延长离开)显示值"}.
{"XMPP URI of Associated Publish-Subscribe Node","发布-订阅节点关联的 XMPP URI"}.
{"You are being removed from the room because of a system shutdown","由于系统关闭,您将被从房间中移除"}.
{"XMPP Show Value of DND (Do Not Disturb)","XMPP 的 DND(请勿打扰)显示值"}.
{"XMPP Show Value of XA (Extended Away)","XMPP 的 XA延长离开显示值"}.
{"XMPP URI of Associated Publish-Subscribe Node","关联发布订阅节点的 XMPP URI"}.
{"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 can later change your password using an XMPP client.","您后可以使用 XMPP 客户端更改密码。"}.
{"You have been banned from this room","您已被禁止进入该房间"}.
{"You have joined too many conferences","您加入的会议太多"}.
{"You must fill in field \"Nickname\" in the form","您必须填充表单中“昵称”"}.
{"You need a client that supports x:data and CAPTCHA to register","您需要一个支持 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 can later change your password using an XMPP client.","您后可以使用 XMPP 客户端更改密码。"}.
{"You have been banned from this room","您已被此群聊封禁"}.
{"You have joined too many conferences","您加入了太多群聊"}.
{"You must fill in field \"Nickname\" in the form","您必须表单中填写“昵称”字段"}.
{"You need a client that supports x:data and CAPTCHA to register","您需要支持 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 的客户端来搜索"}.
{"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 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 unregistered.","您的 XMPP 账号注销成功。"}.
{"You're not allowed to create nodes","您不可以创建节点"}.
{"You're not allowed to create nodes","不允许您创建节点"}.
+51 -53
View File
@@ -22,70 +22,55 @@
%%% Dependencies
%%%
{deps, [{base64url, ".*", {git, "https://github.com/dvv/base64url", {tag, "1.0.1"}}},
{cache_tab, ".*", {git, "https://github.com/processone/cache_tab", {tag, "1.0.30"}}},
{eimp, ".*", {git, "https://github.com/processone/eimp", {tag, "1.0.22"}}},
{deps, [{if_not_rebar3,
{if_version_below, "24",
{base64url, "~> 1.0", {git, "https://github.com/dvv/base64url", {tag, "1.0.1"}}}
}},
{cache_tab, "~> 1.0.30", {git, "https://github.com/processone/cache_tab", {tag, "1.0.31"}}},
{eimp, "~> 1.0.22", {git, "https://github.com/processone/eimp", {tag, "1.0.23"}}},
{if_var_true, pam,
{epam, ".*", {git, "https://github.com/processone/epam", {tag, "1.0.14"}}}},
{epam, "~> 1.0.14", {git, "https://github.com/processone/epam", {tag, "1.0.14"}}}},
{if_var_true, redis,
{eredis, ".*", {git, "https://github.com/wooga/eredis", {tag, "v1.2.0"}}}},
{eredis, "~> 1.2.0", {git, "https://github.com/wooga/eredis", {tag, "v1.2.0"}}}},
{if_var_true, sip,
{esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.52"}}}},
{esip, "~> 1.0.52", {git, "https://github.com/processone/esip", {tag, "1.0.53"}}}},
{if_var_true, zlib,
{ezlib, ".*", {git, "https://github.com/processone/ezlib", {tag, "1.0.12"}}}},
{fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.1.19"}}},
{fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.51"}}},
{fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.36"}}},
{idna, ".*", {git, "https://github.com/benoitc/erlang-idna", {tag, "6.0.0"}}},
{if_version_above, "19",
{jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "1.1.1"}}},
{jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "1.1.0"}}} % for R19 and below
{ezlib, "~> 1.0.12", {git, "https://github.com/processone/ezlib", {tag, "1.0.13"}}}},
{fast_tls, "~> 1.1.19", {git, "https://github.com/processone/fast_tls", {tag, "1.1.20"}}},
{fast_xml, "~> 1.1.51", {git, "https://github.com/processone/fast_xml", {tag, "1.1.52"}}},
{fast_yaml, "~> 1.0.36", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.37"}}},
{idna, "~> 6.0", {git, "https://github.com/benoitc/erlang-idna", {tag, "6.0.0"}}},
{if_version_below, "27",
{jiffy, "~> 1.1.1", {git, "https://github.com/davisp/jiffy", {tag, "1.1.1"}}}
},
{if_version_above, "20",
{jose, ".*", {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.11.5"}}},
{jose, ".*", {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.11.1"}}}
{if_version_above, "23",
{jose, "~> 1.11.10", {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.11.10"}}},
{jose, "1.11.1", {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.11.1"}}}
},
{if_version_below, "22",
{lager, ".*", {git, "https://github.com/erlang-lager/lager", {tag, "3.9.1"}}}
{lager, "~> 3.9.1", {git, "https://github.com/erlang-lager/lager", {tag, "3.9.1"}}}
},
%% Lua, rebar, OTP 20: 1.0 git tag
{if_var_true, lua,
{if_not_rebar3,
{if_version_below, "21",
{luerl, ".*", {git, "https://github.com/rvirding/luerl", {tag, "1.0"}}}
}}},
%% Lua, rebar3, OTP 20: 1.0.0 hex package
{if_var_true, lua,
{if_rebar3,
{if_version_below, "21",
{luerl, ".*", {git, "https://github.com/rvirding/luerl", {tag, "1.0.0"}}}
}}},
%% Lua, any rebar, OTP 21-26: 1.1.1 git tag / 1.1.1 hex package
{if_var_true, lua,
{if_version_above, "20", {if_version_below, "27",
{luerl, ".*", {git, "https://github.com/rvirding/luerl", {tag, "1.1.1"}}}
}}},
%% Lua, any rebar, OTP 27: temporary otp27 branch from fork
{if_var_true, lua,
{if_version_above, "26",
{luerl, ".*", {git, "https://github.com/processone/luerl", {branch, "otp27"}}}
{if_version_below, "21",
{luerl, "1.0.0", {git, "https://github.com/rvirding/luerl", {tag, "1.0"}}},
{luerl, "~> 1.2.0", {git, "https://github.com/rvirding/luerl", {tag, "1.2"}}}
}},
{mqtree, ".*", {git, "https://github.com/processone/mqtree", {tag, "1.0.16"}}},
{p1_acme, ".*", {git, "https://github.com/processone/p1_acme", {tag, "1.0.22"}}},
{mqtree, "~> 1.0.16", {git, "https://github.com/processone/mqtree", {tag, "1.0.17"}}},
{p1_acme, "~> 1.0.23", {git, "https://github.com/processone/p1_acme", {tag, "1.0.23"}}},
{if_var_true, mysql,
{p1_mysql, ".*", {git, "https://github.com/processone/p1_mysql", {tag, "1.0.23"}}}},
{p1_oauth2, ".*", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.14"}}},
{p1_mysql, "~> 1.0.24", {git, "https://github.com/processone/p1_mysql", {tag, "1.0.24"}}}},
{p1_oauth2, "~> 0.6.14", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.14"}}},
{if_var_true, pgsql,
{p1_pgsql, ".*", {git, "https://github.com/processone/p1_pgsql", {tag, "1.1.25"}}}},
{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.25"}}},
{pkix, ".*", {git, "https://github.com/processone/pkix", {tag, "1.0.9"}}},
{p1_pgsql, "~> 1.1.26", {git, "https://github.com/processone/p1_pgsql", {tag, "1.1.26"}}}},
{p1_utils, "~> 1.0.25", {git, "https://github.com/processone/p1_utils", {tag, "1.0.26"}}},
{pkix, "~> 1.0.10", {git, "https://github.com/processone/pkix", {tag, "1.0.10"}}},
{if_var_true, sqlite,
{sqlite3, ".*", {git, "https://github.com/processone/erlang-sqlite3", {tag, "1.1.14"}}}},
{stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.29"}}},
{sqlite3, "~> 1.1.14", {git, "https://github.com/processone/erlang-sqlite3", {tag, "1.1.15"}}}},
{stringprep, "~> 1.0.29", {git, "https://github.com/processone/stringprep", {tag, "1.0.30"}}},
{if_var_true, stun,
{stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.2.12"}}}},
{xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.8.1"}}},
{yconf, ".*", {git, "https://github.com/processone/yconf", {tag, "1.0.15"}}}
{stun, "~> 1.2.12", {git, "https://github.com/processone/stun", {tag, "1.2.13"}}}},
{xmpp, "~> 1.8.2", {git, "https://github.com/processone/xmpp", {tag, "1.8.2"}}},
{yconf, "~> 1.0.15", {git, "https://github.com/processone/yconf", {tag, "1.0.16"}}}
]}.
{gitonly_deps, [ejabberd_po]}.
@@ -145,6 +130,8 @@
{if_version_below, "24", {d, 'SYSTOOLS_APP_DEF_WITHOUT_OPTIONAL'}},
{if_version_below, "24", {d, 'OTP_BELOW_24'}},
{if_version_below, "25", {d, 'OTP_BELOW_25'}},
{if_version_below, "26", {d, 'OTP_BELOW_26'}},
{if_version_below, "27", {d, 'OTP_BELOW_27'}},
{if_var_false, debug, no_debug_info},
{if_var_true, debug, debug_info},
{if_var_true, elixir, {d, 'ELIXIR_ENABLED'}},
@@ -152,11 +139,14 @@
{if_var_true, roster_gateway_workaround, {d, 'ROSTER_GATEWAY_WORKAROUND'}},
{if_var_true, sip, {d, 'SIP'}},
{if_var_true, stun, {d, 'STUN'}},
{if_type_exported, {odbc, {opaque, connection_reference, 0}}, {d, 'ODBC_HAS_TYPES'}},
{src_dirs, [src,
{if_rebar3, sql},
{if_var_true, tools, tools}]}]}.
{if_rebar3, {plugins, [rebar3_hex, {provider_asn1, "0.2.0"},
{if_rebar3, {plugins, [{if_version_below, "21", {rebar3_hex, "7.0.7"}},
{if_version_above, "20", {rebar3_hex, "~> 7.0.8"}},
{provider_asn1, "0.2.0"},
%% Protocol consolidation doesn't work correctly in upstream rebar_mix, see
%% https://github.com/Supersonido/rebar_mix/issues/27#issuecomment-894873335
%% Let's use this fixed rebar_mix fork, see its PR:
@@ -165,7 +155,9 @@
{git, "https://github.com/bsanyi/rebar_mix.git",
{branch, "consolidation_fix"}}}
}]}}.
{if_rebar3, {project_plugins, [configure_deps]}}.
{if_rebar3, {project_plugins, [configure_deps,
{if_var_true, tools, rebar3_format}
]}}.
{if_not_rebar3, {plugins, [
deps_erl_opts, override_deps_versions2, override_opts, configure_deps
]}}.
@@ -175,6 +167,9 @@
{post, [{compile, {mix, consolidate_protocols}}]}
]}}}.
%% Compiling Jose 1.11.10 with Erlang/OTP 27.0 throws warnings on public_key deprecated functions
{if_rebar3, {overrides, [{del, jose, [{erl_opts, [warnings_as_errors]}]}]}}.
{sub_dirs, ["rel"]}.
{keep_build_info, true}.
@@ -219,10 +214,11 @@
{if_version_above, "25",
{plt_extra_apps,
[asn1, odbc, public_key, stdlib, syntax_tools,
idna, jiffy, jose,
idna, jose,
cache_tab, eimp, fast_tls, fast_xml, fast_yaml,
mqtree, p1_acme, p1_oauth2, p1_utils, pkix,
stringprep, xmpp, yconf,
{if_version_below, "27", jiffy},
{if_var_true, pam, epam},
{if_var_true, redis, eredis},
{if_var_true, sip, esip},
@@ -287,6 +283,7 @@
{copy, "ejabberdctl.cfg.example", "conf/ejabberdctl.cfg"},
{copy, "ejabberd.yml.example", "conf/ejabberd.yml"}]}]}]},
{dev, [{post_hooks, [{release, "rel/setup-dev.sh rebar3"}]},
{deps, [{if_version_above, "20", sync}]},
{relx, [{debug_info, keep},
{dev_mode, true},
{include_erts, true},
@@ -302,6 +299,7 @@
{alias, [{relive, [{shell, "--apps ejabberd \
--config rel/relive.config \
--eval sync:go(). \
--script rel/relive.escript \
--name ejabberd@localhost"}]}
]}.
+53 -10
View File
@@ -151,6 +151,30 @@ ProcessVars = fun F([], Acc) ->
false ->
F(Tail, Acc)
end;
F([{Type, {Mod, TypeDef}, Value} | Tail], Acc) when
Type == if_type_exported orelse
Type == if_type_not_exported ->
try
{ok, Concrete} = dialyzer_utils:get_core_from_beam(code:which(Mod)),
{ok, Types} = dialyzer_utils:get_record_and_type_info(Concrete),
maps:get(TypeDef, Types, undefined)
of
undefined when Type == if_type_not_exported ->
F(Tail, ProcessSingleVar(F, Value, Acc));
undefined ->
F(Tail, Acc);
_ when Type == if_type_exported ->
F(Tail, ProcessSingleVar(F, Value, Acc));
_ ->
F(Tail, Acc)
catch _:_ ->
if
Type == if_type_not_exported ->
F(Tail, ProcessSingleVar(F, Value, Acc));
true ->
F(Tail, Acc)
end
end;
F([Other1 | Tail1], Acc) ->
F(Tail1, [F(Other1, []) | Acc]);
F(Val, Acc) when is_tuple(Val) ->
@@ -195,20 +219,35 @@ AppendList2 = fun(Append) ->
end
end,
Rebar3DepsFilter =
% Convert our rich deps syntax to rebar2 format:
% https://github.com/rebar/rebar/wiki/Dependency-management
Rebar2DepsFilter =
fun(DepsList, GitOnlyDeps) ->
lists:map(fun({DepName, _, {git, _, {tag, Version}}} = Dep) ->
case lists:member(DepName, GitOnlyDeps) of
true ->
Dep;
_ ->
{DepName, Version}
end;
(Dep) ->
Dep
lists:map(fun({DepName, _HexVersion, Source}) ->
{DepName, ".*", Source}
end, DepsList)
end,
% Convert our rich deps syntax to rebar3 version definition format:
% https://rebar3.org/docs/configuration/dependencies/#dependency-version-handling
% https://hexdocs.pm/elixir/Version.html
Rebar3DepsFilter =
fun(DepsList, GitOnlyDeps) ->
lists:map(fun({DepName, HexVersion, {git, _, {tag, GitVersion}} = Source}) ->
case {lists:member(DepName, GitOnlyDeps), HexVersion == ".*"} of
{true, _} ->
{DepName, ".*", Source};
{false, true} ->
{DepName, GitVersion};
{false, false} ->
{DepName, HexVersion}
end;
({DepName, _HexVersion, Source}) ->
{DepName, ".*", Source}
end, DepsList)
end,
DepAlts = fun("esip") -> ["esip", "p1_sip"];
("xmpp") -> ["xmpp", "p1_xmpp"];
("fast_xml") -> ["fast_xml", "p1_xml"];
@@ -378,6 +417,8 @@ GithubConfig = case {os:getenv("GITHUB_ACTIONS"), os:getenv("GITHUB_TOKEN")} of
end,
Rules = [
{[plugins], IsRebar3,
AppendList([{pc, "~> 1.15.0"}]), []},
{[provider_hooks], IsRebar3,
AppendList([{pre, [
{compile, {asn, compile}},
@@ -399,6 +440,8 @@ Rules = [
ProcessRelx, [], []},
{[deps], [floating_deps], true,
ProcessFloatingDeps, [], []},
{[deps], [gitonly_deps], (not IsRebar3),
Rebar2DepsFilter, [], []},
{[deps], [gitonly_deps], IsRebar3,
Rebar3DepsFilter, [], []},
{[deps], SystemDeps /= false,
+91
View File
@@ -0,0 +1,91 @@
{"1.2.0",
[{<<"base64url">>,{pkg,<<"base64url">>,<<"1.0.1">>},1},
{<<"cache_tab">>,{pkg,<<"cache_tab">>,<<"1.0.30">>},0},
{<<"eimp">>,{pkg,<<"eimp">>,<<"1.0.22">>},0},
{<<"epam">>,{pkg,<<"epam">>,<<"1.0.14">>},0},
{<<"eredis">>,{pkg,<<"eredis">>,<<"1.2.0">>},0},
{<<"esip">>,{pkg,<<"esip">>,<<"1.0.52">>},0},
{<<"ezlib">>,{pkg,<<"ezlib">>,<<"1.0.12">>},0},
{<<"fast_tls">>,{pkg,<<"fast_tls">>,<<"1.1.19">>},0},
{<<"fast_xml">>,{pkg,<<"fast_xml">>,<<"1.1.51">>},0},
{<<"fast_yaml">>,{pkg,<<"fast_yaml">>,<<"1.0.36">>},0},
{<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},0},
{<<"jiffy">>,{pkg,<<"jiffy">>,<<"1.1.1">>},0},
{<<"jose">>,{pkg,<<"jose">>,<<"1.11.10">>},0},
{<<"luerl">>,{pkg,<<"luerl">>,<<"1.2.0">>},0},
{<<"mqtree">>,{pkg,<<"mqtree">>,<<"1.0.16">>},0},
{<<"p1_acme">>,
{git,"https://github.com/processone/p1_acme",
{ref,"176b4a8c67627c3229fbea3c05d82a5d567e6e49"}},
0},
{<<"p1_mysql">>,
{git,"https://github.com/processone/p1_mysql",
{ref,"0dccb755a60cda61d41e7b092b344d38d1ebc802"}},
0},
{<<"p1_oauth2">>,{pkg,<<"p1_oauth2">>,<<"0.6.14">>},0},
{<<"p1_pgsql">>,
{git,"https://github.com/processone/p1_pgsql",
{ref,"fe0bb2a2a2ae21cd9fc48b81520cfce508520a56"}},
0},
{<<"p1_utils">>,{pkg,<<"p1_utils">>,<<"1.0.25">>},0},
{<<"pkix">>,
{git,"https://github.com/processone/pkix",
{ref,"03be27c7168449bdfeb8c5b6cc0f800f71f8cfe9"}},
0},
{<<"sqlite3">>,{pkg,<<"sqlite3">>,<<"1.1.14">>},0},
{<<"stringprep">>,{pkg,<<"stringprep">>,<<"1.0.29">>},0},
{<<"stun">>,{pkg,<<"stun">>,<<"1.2.12">>},0},
{<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.0">>},1},
{<<"xmpp">>,
{git,"https://github.com/processone/xmpp",
{ref,"a1fb778bd385d832f913e564558152ea507dac37"}},
0},
{<<"yconf">>,{pkg,<<"yconf">>,<<"1.0.15">>},0}]}.
[
{pkg_hash,[
{<<"base64url">>, <<"F8C7F2DA04CA9A5D0F5F50258F055E1D699F0E8BF4CFDB30B750865368403CF6">>},
{<<"cache_tab">>, <<"6D35EECFB65FBE5FC85988503A27338D32DE01243F3FC8EA3EE7161AF08725A4">>},
{<<"eimp">>, <<"FA9B376EF0B50E8455DB15C7C11DEA4522C6902E04412288AAB436D26335F6EB">>},
{<<"epam">>, <<"AA0B85D27F4EF3A756AE995179DF952A0721237E83C6B79D644347B75016681A">>},
{<<"eredis">>, <<"0B8E9CFC2C00FA1374CD107EA63B49BE08D933DF2CF175E6A89B73DD9C380DE4">>},
{<<"esip">>, <<"A2840287C493A4280E6FBA57A257706843B025C315875E38B03FD07190E22DBA">>},
{<<"ezlib">>, <<"FFE906BA10D03AAEE7977E1E0E81D9FFC3BB8B47FB9CD8E2E453507A2E56221F">>},
{<<"fast_tls">>, <<"F52731A4B35259FA06CF23E2A0732920AD9EFCE7C3D68377F129A474998747BB">>},
{<<"fast_xml">>, <<"A7F8C6942591632309099386D5C339C89997AC2BBDD1216F6C196DEE6D7828A9">>},
{<<"fast_yaml">>, <<"65413A34A570FD4E205A460BA602E4EE7A682F35C22D2E1C839025DBF515105C">>},
{<<"idna">>, <<"8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D">>},
{<<"jiffy">>, <<"ACA10F47AA91697BF24AB9582C74E00E8E95474C7EF9F76D4F1A338D0F5DE21B">>},
{<<"jose">>, <<"A903F5227417BD2A08C8A00A0CBCC458118BE84480955E8D251297A425723F83">>},
{<<"luerl">>, <<"60F05F4240F0E7C148DDB79B67B8FF972734AAD237AA74C83D0748B8214C8EF0">>},
{<<"mqtree">>, <<"F8F8B4971E4CA94313BA9BCAAA1AA1077DAABA5E3FD3468FFB491420A4CC3593">>},
{<<"p1_oauth2">>, <<"1C5F82535574DE87E2059695AC4B91F8F9AEBACBC1C80287DAE6F02552D47AEA">>},
{<<"p1_utils">>, <<"2D39B5015A567BBD2CC7033EEB93A7C60D8C84EFE1EF69A3473FAA07FA268187">>},
{<<"sqlite3">>, <<"F9EA0CFF8540865FDFDB7E24EEF34DC46677364B1C070896E99B5BF08C8A7FD7">>},
{<<"stringprep">>, <<"02F23E8C3A219A3DFE40A22E908BECE3A2F68AF0FF599EA8A7B714ECB21E62EE">>},
{<<"stun">>, <<"A65DF67A8AAAECB6A94D687977B2E9F161820819910CB97BBE26A3525356525B">>},
{<<"unicode_util_compat">>, <<"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78">>},
{<<"yconf">>, <<"E22998B3D7728270BDD06162A9515BD142B14FAE8927CBDBD3EF639C32AA6F7A">>}]},
{pkg_hash_ext,[
{<<"base64url">>, <<"F9B3ADD4731A02A9B0410398B475B33E7566A695365237A6BDEE1BB447719F5C">>},
{<<"cache_tab">>, <<"6D8A5E00D8F84C42627706A6DBEDB02E34D58495F3ED61935C8475CA0531CDA0">>},
{<<"eimp">>, <<"B3B9FFB1D9A5F4A2BA88AC418A819164932D9A9D3A2FC3D32CA338CE855C4392">>},
{<<"epam">>, <<"2F3449E72885A72A6C2A843F561ADD0FC2F70D7A21F61456930A547473D4D989">>},
{<<"eredis">>, <<"D9B5ABEF2C2C8ABA8F32AA018203E0B3DC8B1157773B254AB1D4C2002317F1E1">>},
{<<"esip">>, <<"6F00165395900500AA262CE0297162D93931C78C1464D89FD0EDC6E3D6BC011F">>},
{<<"ezlib">>, <<"30E94355FB42260AAB6E12582CB0C56BF233515E655C8AEAF48760E7561E4EBB">>},
{<<"fast_tls">>, <<"DB34322C8782D4C5139CCB80709D8EC8C38089B44262EDD0C2F660AC495BD389">>},
{<<"fast_xml">>, <<"7FCE41B7D1A4BA438A2D7A088DABE74A3CA0739F1AF2ABCB77E62DAF43E0409A">>},
{<<"fast_yaml">>, <<"1ABE8F758FC2A86B08EDFF80BBC687CFD41EBC1412CFEC0EF4A0ACFCD032052F">>},
{<<"idna">>, <<"92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA">>},
{<<"jiffy">>, <<"62E1F0581C3C19C33A725C781DFA88410D8BFF1BBAFC3885A2552286B4785C4C">>},
{<<"jose">>, <<"0D6CD36FF8BA174DB29148FC112B5842186B68A90CE9FC2B3EC3AFE76593E614">>},
{<<"luerl">>, <<"9CAFD4F6094FF0F5A9D278FD81D60D3E026C820BDFB6CACD4B1BD909F21B525D">>},
{<<"mqtree">>, <<"C87D1C95575DB65AF29B795C9DAA3BED43F5C1BF84072A74469659BCF53594EB">>},
{<<"p1_oauth2">>, <<"1FD3AC474E43722D9D5A87C6DF8D36F698ED87AF7BB81CBBB66361451D99AE8F">>},
{<<"p1_utils">>, <<"9219214428F2C6E5D3187FF8EB9A8783695C2427420BE9A259840E07ADA32847">>},
{<<"sqlite3">>, <<"85054B6CA297343C159ED6794A473FF2C8EEABD854B6FE02F711C0BFD373CE86">>},
{<<"stringprep">>, <<"928EBA304C3006EB1512110EBD7B87DB163B00859A09375A1E4466152C6C462A">>},
{<<"stun">>, <<"A2055032B6D338D0454142004BCB12FAFB0C64AB1F273F1D0C6923EBBC8EDE40">>},
{<<"unicode_util_compat">>, <<"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521">>},
{<<"yconf">>, <<"7FF2AB24D3C9833842716B9AAAA01A8F96641A7695CBB701B03445C4DEF01117">>}]}
].
+1
View File
@@ -1,3 +1,4 @@
[{mnesia, [{dir, "_build/relive/database"}]},
{sync,[{src_dirs, {replace, [{"ejabberd/src", []}]}}]},
{ejabberd, [{config, "_build/relive/conf/ejabberd.yml"},
{log_path, "_build/relive/logs/ejabberd.log"}]}].
+9 -9
View File
@@ -39,14 +39,14 @@
-type acl_rule() :: {user, {binary(), binary()} | binary()} |
{server, binary()} |
{resource, binary()} |
{user_regexp, {re_mp(), binary()} | re_mp()} |
{server_regexp, re_mp()} |
{resource_regexp, re_mp()} |
{node_regexp, {re_mp(), re_mp()}} |
{user_glob, {re_mp(), binary()} | re_mp()} |
{server_glob, re_mp()} |
{resource_glob, re_mp()} |
{node_glob, {re_mp(), re_mp()}} |
{user_regexp, {misc:re_mp(), binary()} | misc:re_mp()} |
{server_regexp, misc:re_mp()} |
{resource_regexp, misc:re_mp()} |
{node_regexp, {misc:re_mp(), misc:re_mp()}} |
{user_glob, {misc:re_mp(), binary()} | misc:re_mp()} |
{server_glob, misc:re_mp()} |
{resource_glob, misc:re_mp()} |
{node_glob, {misc:re_mp(), misc:re_mp()}} |
{shared_group, {binary(), binary()} | binary()} |
{ip, ip_mask()}.
-type access() :: [{action(), [access_rule()]}].
@@ -348,7 +348,7 @@ node_validator(UV, SV) ->
%%%===================================================================
%%% Aux
%%%===================================================================
-spec match_regexp(iodata(), re_mp()) -> boolean().
-spec match_regexp(iodata(), misc:re_mp()) -> boolean().
match_regexp(Data, RegExp) ->
re:run(Data, RegExp) /= nomatch.
+5
View File
@@ -197,6 +197,11 @@ format_error(eimp_error) ->
format("ejabberd is built without image converter support", []);
format_error({mqtt_codec, Reason}) ->
mqtt_codec:format_error(Reason);
format_error({external_module_error, Module, Error}) ->
try Module:format_error(Error)
catch _:_ ->
format("Invalid value", [])
end;
format_error(Reason) ->
yconf:format_error(Reason).
+4 -2
View File
@@ -30,6 +30,7 @@
-protocol({rfc, 6122}).
-protocol({rfc, 7590}).
-protocol({xep, 4, '2.9'}).
-protocol({xep, 59, '1.0'}).
-protocol({xep, 86, '1.0'}).
-protocol({xep, 106, '1.1'}).
-protocol({xep, 170, '1.0'}).
@@ -44,6 +45,7 @@
-protocol({xep, 424, '0.4.0', '24.02', "", ""}).
-protocol({xep, 440, '0.4.0', '24.02', "", ""}).
-protocol({xep, 474, '0.3.0', '24.02', "", ""}).
-protocol({xep, 485, '0.2.0', '24.02', "", "mod_pubsub_serverinfo in ejabberd-contrib.git"}).
-export([start/0, stop/0, halt/0, start_app/1, start_app/2,
get_pid_file/0, check_apps/0, module_name/1, is_loaded/0]).
@@ -160,11 +162,11 @@ exit_or_halt(Reason, StartFlag) ->
get_module_file(App, Mod) ->
BaseName = atom_to_list(Mod),
case code:lib_dir(App, ebin) of
case code:lib_dir(App) of
{error, _} ->
BaseName;
Dir ->
filename:join([Dir, BaseName ++ ".beam"])
filename:join([Dir, "ebin", BaseName ++ ".beam"])
end.
module_name([Dir, _, <<H,_/binary>> | _] = Mod) when H >= 65, H =< 90 ->
+4 -4
View File
@@ -82,7 +82,7 @@ can_access(Cmd, CallerInfo) ->
case matches_definition(Def, Cmd, CallerModule, Tag, Host, CallerInfo) of
true ->
?DEBUG("Command '~p' execution allowed by rule "
"'~ts' (CallerInfo=~p)", [Cmd, Name, CallerInfo]),
"'~ts'~n (CallerInfo=~p)", [Cmd, Name, CallerInfo]),
allow;
_ ->
none
@@ -93,7 +93,7 @@ can_access(Cmd, CallerInfo) ->
case Res of
allow -> allow;
_ ->
?DEBUG("Command '~p' execution denied "
?DEBUG("Command '~p' execution denied~n "
"(CallerInfo=~p)", [Cmd, CallerInfo]),
deny
end.
@@ -344,10 +344,10 @@ validator(from) ->
fun(L) when is_list(L) ->
lists:map(
fun({K, V}) -> {(econf:enum([tag]))(K), (econf:binary())(V)};
(A) -> (econf:enum([ejabberd_xmlrpc, mod_cron, mod_http_api, ejabberd_ctl]))(A)
(A) -> (econf:enum([ejabberd_xmlrpc, mod_cron, mod_http_api, ejabberd_ctl, ejabberd_web_admin]))(A)
end, lists:flatten(L));
(A) ->
[(econf:enum([ejabberd_xmlrpc, mod_cron, mod_http_api, ejabberd_ctl]))(A)]
[(econf:enum([ejabberd_xmlrpc, mod_cron, mod_http_api, ejabberd_ctl, ejabberd_web_admin]))(A)]
end;
validator(what) ->
econf:and_then(
+25 -4
View File
@@ -31,12 +31,17 @@
revoke_certificate/1, list_certificates/0]).
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3, format_status/2]).
terminate/2, code_change/3]).
%% WebAdmin
-export([webadmin_menu_node/3, webadmin_page_node/3]).
-include("logger.hrl").
-include("ejabberd_commands.hrl").
-include("ejabberd_http.hrl").
-include("ejabberd_web_admin.hrl").
-include_lib("public_key/include/public_key.hrl").
-include_lib("stdlib/include/ms_transform.hrl").
-include_lib("xmpp/include/xmpp.hrl").
-define(CALL_TIMEOUT, timer:minutes(10)).
@@ -108,6 +113,8 @@ init([]) ->
ejabberd_hooks:add(config_reloaded, ?MODULE, register_certfiles, 40),
ejabberd_hooks:add(ejabberd_started, ?MODULE, ejabberd_started, 110),
ejabberd_hooks:add(config_reloaded, ?MODULE, ejabberd_started, 110),
ejabberd_hooks:add(webadmin_menu_node, ?MODULE, webadmin_menu_node, 110),
ejabberd_hooks:add(webadmin_page_node, ?MODULE, webadmin_page_node, 110),
ejabberd_commands:register_commands(get_commands_spec()),
register_certfiles(),
{ok, #state{}}.
@@ -153,14 +160,13 @@ terminate(_Reason, _State) ->
ejabberd_hooks:delete(config_reloaded, ?MODULE, register_certfiles, 40),
ejabberd_hooks:delete(ejabberd_started, ?MODULE, ejabberd_started, 110),
ejabberd_hooks:delete(config_reloaded, ?MODULE, ejabberd_started, 110),
ejabberd_hooks:delete(webadmin_menu_node, ?MODULE, webadmin_menu_node, 110),
ejabberd_hooks:delete(webadmin_page_node, ?MODULE, webadmin_page_node, 110),
ejabberd_commands:unregister_commands(get_commands_spec()).
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
format_status(_Opt, Status) ->
Status.
%%%===================================================================
%%% Internal functions
%%%===================================================================
@@ -550,6 +556,21 @@ list_certificates() ->
{Domain, Path, sets:is_element(E, Used)}
end, Known)).
%%%===================================================================
%%% WebAdmin
%%%===================================================================
webadmin_menu_node(Acc, _Node, _Lang) ->
Acc ++ [{<<"acme">>, <<"ACME">>}].
webadmin_page_node(_, Node, #request{path = [<<"acme">>]} = R) ->
Head = ?H1GLraw(<<"ACME Certificates">>, <<"admin/configuration/basic/#acme">>, <<"ACME">>),
Set = [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [request_certificate, R]),
ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [revoke_certificate, R])],
Get = [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [list_certificates, R])],
{stop, Head ++ Get ++ Set};
webadmin_page_node(Acc, _, _) -> Acc.
%%%===================================================================
%%% Other stuff
%%%===================================================================
+485 -31
View File
@@ -39,7 +39,10 @@
dump_config/1,
convert_to_yaml/2,
%% Cluster
join_cluster/1, leave_cluster/1, list_cluster/0,
join_cluster/1, leave_cluster/1,
join_cluster_here/1,
list_cluster/0, list_cluster_detailed/0,
get_cluster_node_details3/0,
%% Erlang
update_list/0, update/1, update/0,
%% Accounts
@@ -50,7 +53,7 @@
%% Purge DB
delete_expired_messages/0, delete_old_messages/1,
%% Mnesia
set_master/1,
get_master/0, set_master/1,
backup_mnesia/1, restore_mnesia/1,
dump_mnesia/1, dump_table/2, load_mnesia/1,
mnesia_info/0, mnesia_table_info/1,
@@ -61,13 +64,27 @@
clear_cache/0,
gc/0,
get_commands_spec/0,
delete_old_messages_batch/4, delete_old_messages_status/1, delete_old_messages_abort/1]).
delete_old_messages_batch/4, delete_old_messages_status/1, delete_old_messages_abort/1,
%% Internal
mnesia_list_tables/0,
mnesia_table_details/1,
mnesia_table_change_storage/2,
mnesia_table_clear/1,
mnesia_table_delete/1,
echo/1, echo3/3]).
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
-include("logger.hrl").
-export([web_menu_main/2, web_page_main/2,
web_menu_node/3, web_page_node/3]).
-include_lib("xmpp/include/xmpp.hrl").
-include("ejabberd_commands.hrl").
-include("ejabberd_http.hrl").
-include("ejabberd_web_admin.hrl").
-include("logger.hrl").
-include("translate.hrl"). %+++ TODO
-record(state, {}).
@@ -77,6 +94,10 @@ start_link() ->
init([]) ->
process_flag(trap_exit, true),
ejabberd_commands:register_commands(get_commands_spec()),
ejabberd_hooks:add(webadmin_menu_main, ?MODULE, web_menu_main, 50),
ejabberd_hooks:add(webadmin_page_main, ?MODULE, web_page_main, 50),
ejabberd_hooks:add(webadmin_menu_node, ?MODULE, web_menu_node, 50),
ejabberd_hooks:add(webadmin_page_node, ?MODULE, web_page_node, 50),
{ok, #state{}}.
handle_call(Request, From, State) ->
@@ -92,6 +113,10 @@ handle_info(Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ejabberd_hooks:delete(webadmin_menu_main, ?MODULE, web_menu_main, 50),
ejabberd_hooks:delete(webadmin_page_main, ?MODULE, web_page_main, 50),
ejabberd_hooks:delete(webadmin_menu_node, ?MODULE, web_menu_node, 50),
ejabberd_hooks:delete(webadmin_page_node, ?MODULE, web_page_node, 50),
ejabberd_commands:unregister_commands(get_commands_spec()).
code_change(_OldVsn, State, _Extra) ->
@@ -131,7 +156,7 @@ get_commands_spec() ->
"only on log files generated by some modules.\n"
"This can be useful when an external tool is "
"used for log rotation. See "
"[Log Files](https://docs.ejabberd.im/admin/guide/troubleshooting/#log-files).",
"_`../../admin/guide/troubleshooting.md#log-files|Log Files`_.",
policy = admin,
module = ?MODULE, function = reopen_log,
args = [], result = {res, rescode}},
@@ -179,8 +204,9 @@ get_commands_spec() ->
desc = "Update the given module",
longdesc = "To update all the possible modules, use `all`.",
module = ?MODULE, function = update,
args_example = ["mod_vcard"],
args_example = ["all"],
args = [{module, string}],
result_example = {ok, <<"Updated modules: mod_configure, mod_vcard">>},
result = {res, restuple}},
#ejabberd_commands{name = register, tags = [accounts],
@@ -224,15 +250,21 @@ get_commands_spec() ->
result = {res, rescode}},
#ejabberd_commands{name = join_cluster, tags = [cluster],
desc = "Join this node into the cluster handled by Node",
longdesc = "This command works only with ejabberdctl, "
"not mod_http_api or other code that runs inside the "
"same ejabberd node that will be joined.",
desc = "Join our local node into the cluster handled by Node",
note = "improved in 24.06",
module = ?MODULE, function = join_cluster,
args_desc = ["Nodename of the node to join"],
args_example = [<<"ejabberd1@machine7">>],
args = [{node, binary}],
result = {res, rescode}},
result = {res, restuple}},
#ejabberd_commands{name = join_cluster_here, tags = [cluster],
desc = "Join a remote Node here, into our cluster",
note = "added in 24.06",
module = ?MODULE, function = join_cluster_here,
args_desc = ["Nodename of the node to join here"],
args_example = [<<"ejabberd1@machine7">>],
args = [{node, binary}],
result = {res, restuple}},
#ejabberd_commands{name = leave_cluster, tags = [cluster],
desc = "Remove and shutdown Node from the running cluster",
longdesc = "This command can be run from any running "
@@ -247,11 +279,27 @@ get_commands_spec() ->
result = {res, rescode}},
#ejabberd_commands{name = list_cluster, tags = [cluster],
desc = "List nodes that are part of the cluster handled by Node",
desc = "List running nodes that are part of this cluster",
module = ?MODULE, function = list_cluster,
result_example = [ejabberd1@machine7, ejabberd1@machine8],
args = [],
result = {nodes, {list, {node, atom}}}},
#ejabberd_commands{name = list_cluster_detailed, tags = [cluster],
desc = "List nodes (both running and known) and some stats",
note = "added in 24.06",
module = ?MODULE, function = list_cluster_detailed,
args = [],
result_example = [{'ejabberd@localhost', "true",
"The node ejabberd is started. Status...",
7, 348, 60, none}],
result = {nodes, {list, {node, {tuple, [{name, atom},
{running, string},
{status, string},
{online_users, integer},
{processes, integer},
{uptime_seconds, integer},
{master_node, atom}
]}}}}},
#ejabberd_commands{name = import_file, tags = [mnesia],
desc = "Import user data from jabberd14 spool file",
@@ -300,7 +348,7 @@ get_commands_spec() ->
#ejabberd_commands{name = import_prosody, tags = [mnesia, sql],
desc = "Import data from Prosody",
longdesc = "Note: this requires ejabberd to be "
"[compiled with `--enable-lua`](http://localhost:8098/admin/installation/#configure) "
"compiled with `./configure --enable-lua` "
"(which installs the `luerl` library).",
module = prosody2ejabberd, function = from_dir,
args_desc = ["Full path to the Prosody data directory"],
@@ -371,12 +419,18 @@ get_commands_spec() ->
longdesc = "Configure the modules to use SQL, then call this command. "
"After correctly exported the database of a vhost, "
"you may want to delete from mnesia with "
"the http://./#delete-mnesia[delete_mnesia] command.",
"the _`delete_mnesia`_ API.",
module = ejd2sql, function = export,
args_desc = ["Vhost", "Full path to the destination SQL file"],
args_example = ["example.com", "/var/lib/ejabberd/example.com.sql"],
args = [{host, string}, {file, string}],
result = {res, rescode}},
#ejabberd_commands{name = get_master, tags = [cluster],
desc = "Get master node of the clustered Mnesia tables",
note = "added in 24.06",
longdesc = "If there is no master, returns `none`.",
module = ?MODULE, function = get_master,
result = {nodename, atom}},
#ejabberd_commands{name = set_master, tags = [cluster],
desc = "Set master node of the clustered Mnesia tables",
longdesc = "If `nodename` is set to `self`, then this "
@@ -407,7 +461,7 @@ get_commands_spec() ->
"binary backup file the internal Mnesia "
"database. This will consume a lot of memory if "
"you have a large database, you may prefer "
"http://./#install-fallback[install_fallback].",
"_`install_fallback`_ API.",
module = ?MODULE, function = restore_mnesia,
args_desc = ["Full path to the backup file"],
args_example = ["/var/lib/ejabberd/database.backup"],
@@ -430,8 +484,8 @@ get_commands_spec() ->
"recommended for big databases, as it will "
"consume much time, memory and processor. In "
"that case it's preferable to use "
"http://./#backup[backup] and "
"http://./#install-fallback[install_fallback].",
"_`backup`_ API and "
"_`install_fallback`_ API.",
module = ?MODULE, function = load_mnesia,
args_desc = ["Full path to the text file"],
args_example = ["/var/lib/ejabberd/database.txt"],
@@ -454,7 +508,7 @@ get_commands_spec() ->
"start. This means that, after running this "
"command, you have to restart ejabberd. This "
"command requires less memory than "
"http://./#restore[restore].",
"_`restore`_ API.",
module = ?MODULE, function = install_fallback_mnesia,
args_desc = ["Full path to the fallback file"],
args_example = ["/var/lib/ejabberd/database.fallback"],
@@ -472,9 +526,100 @@ get_commands_spec() ->
desc = "Generate Unix manpage for current ejabberd version",
note = "added in 20.01",
module = ejabberd_doc, function = man,
args = [], result = {res, restuple}}
].
args = [], result = {res, restuple}},
#ejabberd_commands{name = webadmin_host_user_queue, tags = [internal],
desc = "Generate WebAdmin offline queue HTML",
module = mod_offline, function = webadmin_host_user_queue,
args = [{user, binary}, {host, binary}, {query, any}, {lang, binary}],
result = {res, any}},
#ejabberd_commands{name = webadmin_host_last_activity, tags = [internal],
desc = "Generate WebAdmin Last Activity HTML",
module = ejabberd_web_admin, function = webadmin_host_last_activity,
args = [{host, binary}, {query, any}, {lang, binary}],
result = {res, any}},
#ejabberd_commands{name = webadmin_host_srg, tags = [internal],
desc = "Generate WebAdmin Shared Roster Group HTML",
module = mod_shared_roster, function = webadmin_host_srg,
args = [{host, binary}, {query, any}, {lang, binary}],
result = {res, any}},
#ejabberd_commands{name = webadmin_host_srg_group, tags = [internal],
desc = "Generate WebAdmin Shared Roster Group HTML for a group",
module = mod_shared_roster, function = webadmin_host_srg_group,
args = [{host, binary}, {group, binary}, {query, any}, {lang, binary}],
result = {res, any}},
#ejabberd_commands{name = webadmin_node_contrib, tags = [internal],
desc = "Generate WebAdmin ejabberd-contrib HTML",
module = ext_mod, function = webadmin_node_contrib,
args = [{node, atom}, {query, any}, {lang, binary}],
result = {res, any}},
#ejabberd_commands{name = webadmin_node_db, tags = [internal],
desc = "Generate WebAdmin Mnesia database HTML",
module = ejabberd_web_admin, function = webadmin_node_db,
args = [{node, atom}, {query, any}, {lang, binary}],
result = {res, any}},
#ejabberd_commands{name = webadmin_node_db_table, tags = [internal],
desc = "Generate WebAdmin Mnesia database HTML for a table",
module = ejabberd_web_admin, function = webadmin_node_db_table,
args = [{node, atom}, {table, binary}, {lang, binary}],
result = {res, any}},
#ejabberd_commands{name = webadmin_node_db_table_page, tags = [internal],
desc = "Generate WebAdmin Mnesia database HTML for a table content",
module = ejabberd_web_admin, function = webadmin_node_db_table_page,
args = [{node, atom}, {table, binary}, {page, integer}],
result = {res, any}},
#ejabberd_commands{name = mnesia_list_tables, tags = [internal, mnesia],
desc = "List of Mnesia tables",
module = ?MODULE, function = mnesia_list_tables,
result = {tables, {list, {table, {tuple, [{name, atom},
{storage_type, binary},
{elements, integer},
{memory_kb, integer},
{memory_mb, integer}
]}}}}},
#ejabberd_commands{name = mnesia_table_details, tags = [internal, mnesia],
desc = "Get details of a Mnesia table",
module = ?MODULE, function = mnesia_table_details,
args = [{table, binary}],
result = {details, {list, {detail, {tuple, [{name, atom},
{value, binary}
]}}}}},
#ejabberd_commands{name = mnesia_table_change_storage, tags = [internal, mnesia],
desc = "Change storage type of a Mnesia table to: ram_copies, disc_copies, or disc_only_copies.",
module = ?MODULE, function = mnesia_table_change_storage,
args = [{table, binary}, {storage_type, binary}],
result = {res, restuple}},
#ejabberd_commands{name = mnesia_table_clear, tags = [internal, mnesia],
desc = "Delete all content in a Mnesia table",
module = ?MODULE, function = mnesia_table_clear,
args = [{table, binary}],
result = {res, restuple}},
#ejabberd_commands{name = mnesia_table_destroy, tags = [internal, mnesia],
desc = "Destroy a Mnesia table",
module = ?MODULE, function = mnesia_table_destroy,
args = [{table, binary}],
result = {res, restuple}},
#ejabberd_commands{name = echo, tags = [internal],
desc = "Return the same sentence that was provided",
module = ?MODULE, function = echo,
args_desc = ["Sentence to echoe"],
args_example = [<<"Test Sentence">>],
args = [{sentence, binary}],
result = {sentence, string},
result_example = "Test Sentence"},
#ejabberd_commands{name = echo3, tags = [internal],
desc = "Return the same sentence that was provided",
module = ?MODULE, function = echo3,
args_desc = ["First argument", "Second argument", "Sentence to echoe"],
args_example = [<<"example.com">>, <<"Group1">>, <<"Test Sentence">>],
args = [{first, binary}, {second, binary}, {sentence, binary}],
result = {sentence, string},
result_example = "Test Sentence"}
].
%%%
%%% Server management
@@ -491,7 +636,7 @@ status() ->
{value, {_, _, Version}} ->
{ok, io_lib:format("ejabberd ~s is running in that node", [Version])}
end,
{Is_running, String1 ++ String2}.
{Is_running, String1 ++ " " ++String2}.
stop() ->
_ = supervisor:terminate_child(ejabberd_sup, ejabberd_sm),
@@ -583,8 +728,14 @@ update_list() ->
[atom_to_list(Beam) || Beam <- UpdatedBeams].
update("all") ->
[update_module(ModStr) || ModStr <- update_list()],
{ok, []};
ResList = [{ModStr, update_module(ModStr)} || ModStr <- update_list()],
String = case string:join([Mod || {Mod, {ok, _}} <- ResList], ", ") of
[] ->
"No modules updated";
ModulesString ->
"Updated modules: " ++ ModulesString
end,
{ok, String};
update(ModStr) ->
update_module(ModStr).
@@ -593,7 +744,10 @@ update_module(ModuleNameBin) when is_binary(ModuleNameBin) ->
update_module(ModuleNameString) ->
ModuleName = list_to_atom(ModuleNameString),
case ejabberd_update:update([ModuleName]) of
{ok, _Res} -> {ok, []};
{ok, []} ->
{ok, "Not updated: "++ModuleNameString};
{ok, [{ModuleName, _}]} ->
{ok, "Updated: "++ModuleNameString};
{error, Reason} -> {error, Reason}
end.
@@ -603,8 +757,9 @@ update() ->
Mods = ejabberd_admin:update_list(),
io:format("Updating modules: ~p~n", [Mods]),
ejabberd_admin:update("all"),
io:format("Updated modules: ", []),
Mods -- ejabberd_admin:update_list().
Mods2 = Mods -- ejabberd_admin:update_list(),
io:format("Updated modules: ~p~n", [Mods2]),
ok.
%%%
%%% Account management
@@ -679,15 +834,84 @@ convert_to_yaml(In, Out) ->
%%% Cluster management
%%%
join_cluster(NodeBin) ->
ejabberd_cluster:join(list_to_atom(binary_to_list(NodeBin))).
join_cluster(NodeBin) when is_binary(NodeBin) ->
join_cluster(list_to_atom(binary_to_list(NodeBin)));
join_cluster(Node) when is_atom(Node) ->
IsNodes = lists:member(Node, ejabberd_cluster:get_nodes()),
IsKnownNodes = lists:member(Node, ejabberd_cluster:get_known_nodes()),
Ping = net_adm:ping(Node),
join_cluster(Node, IsNodes, IsKnownNodes, Ping).
leave_cluster(NodeBin) ->
ejabberd_cluster:leave(list_to_atom(binary_to_list(NodeBin))).
join_cluster(_Node, true, _IsKnownNodes, _Ping) ->
{error, "This node already joined that running node."};
join_cluster(_Node, _IsNodes, true, _Ping) ->
{error, "This node already joined that known node."};
join_cluster(_Node, _IsNodes, _IsKnownNodes, pang) ->
{error, "This node cannot reach that node."};
join_cluster(Node, false, false, pong) ->
case timer:apply_after(1000, ejabberd_cluster, join, [Node]) of
{ok, _} ->
{ok, "Trying to join that cluster, wait a few seconds and check the list of nodes."};
Error ->
{error, io_lib:format("Can't join that cluster: ~p", [Error])}
end.
join_cluster_here(NodeBin) ->
Node = list_to_atom(binary_to_list(NodeBin)),
IsNodes = lists:member(Node, ejabberd_cluster:get_nodes()),
IsKnownNodes = lists:member(Node, ejabberd_cluster:get_known_nodes()),
Ping = net_adm:ping(Node),
join_cluster_here(Node, IsNodes, IsKnownNodes, Ping).
join_cluster_here(_Node, true, _IsKnownNodes, _Ping) ->
{error, "This node already joined that running node."};
join_cluster_here(_Node, _IsNodes, true, _Ping) ->
{error, "This node already joined that known node."};
join_cluster_here(_Node, _IsNodes, _IsKnownNodes, pang) ->
{error, "This node cannot reach that node."};
join_cluster_here(Node, false, false, pong) ->
case ejabberd_cluster:call(Node, ejabberd_admin, join_cluster, [misc:atom_to_binary(node())]) of
{ok, _} ->
{ok, "Trying to join node to this cluster, wait a few seconds and check the list of nodes."};
Error ->
{error, io_lib:format("Can't join node to this cluster: ~p", [Error])}
end.
leave_cluster(NodeBin) when is_binary(NodeBin) ->
leave_cluster(list_to_atom(binary_to_list(NodeBin)));
leave_cluster(Node) ->
ejabberd_cluster:leave(Node).
list_cluster() ->
ejabberd_cluster:get_nodes().
list_cluster_detailed() ->
KnownNodes = ejabberd_cluster:get_known_nodes(),
RunningNodes = ejabberd_cluster:get_nodes(),
[get_cluster_node_details(Node, RunningNodes) || Node <- KnownNodes].
get_cluster_node_details(Node, RunningNodes) ->
get_cluster_node_details2(Node, lists:member(Node, RunningNodes)).
get_cluster_node_details2(Node, false) ->
{Node, "false", "", -1, -1, -1, "unknown"};
get_cluster_node_details2(Node, true) ->
try ejabberd_cluster:call(Node, ejabberd_admin, get_cluster_node_details3, []) of
Result -> Result
catch
E:R ->
Status = io_lib:format("~p: ~p", [E, R]),
{Node, "true", Status, -1, -1, -1, "unknown"}
end.
get_cluster_node_details3() ->
{ok, StatusString} = status(),
UptimeSeconds = mod_admin_extra:stats(<<"uptimeseconds">>),
Processes = mod_admin_extra:stats(<<"processes">>),
OnlineUsers = mod_admin_extra:stats(<<"onlineusersnode">>),
GetMaster = get_master(),
{node(), "true", StatusString, OnlineUsers, Processes, UptimeSeconds, GetMaster}.
%%%
%%% Migration management
%%%
@@ -790,6 +1014,12 @@ delete_old_messages_abort(Server) ->
%%% Mnesia management
%%%
get_master() ->
case mnesia:table_info(session, master_nodes) of
[] -> none;
[Node] -> Node
end.
set_master("self") ->
set_master(node());
set_master(NodeString) when is_list(NodeString) ->
@@ -797,7 +1027,7 @@ set_master(NodeString) when is_list(NodeString) ->
set_master(Node) when is_atom(Node) ->
case mnesia:set_master_nodes([Node]) of
ok ->
{ok, ""};
{ok, "ok"};
{error, Reason} ->
String = io_lib:format("Can't set master node ~p at node ~p:~n~p",
[Node, node(), Reason]),
@@ -1007,3 +1237,227 @@ is_my_host(Host) ->
try ejabberd_router:is_my_host(Host)
catch _:{invalid_domain, _} -> false
end.
%%%
%%% Internal
%%%
%% @format-begin
%% mnesia:del_table_copy(Table, Node);
%% mnesia:change_table_copy_type(Table, Node, Type);
mnesia_table_change_storage(STable, SType) ->
Table = binary_to_existing_atom(STable, latin1),
Type =
case SType of
<<"ram_copies">> ->
ram_copies;
<<"disc_copies">> ->
disc_copies;
<<"disc_only_copies">> ->
disc_only_copies;
_ ->
false
end,
mnesia:add_table_copy(Table, node(), Type).
mnesia_table_clear(STable) ->
Table = binary_to_existing_atom(STable, latin1),
mnesia:clear_table(Table).
mnesia_table_delete(STable) ->
Table = binary_to_existing_atom(STable, latin1),
mnesia:delete_table(Table).
mnesia_table_details(STable) ->
Table = binary_to_existing_atom(STable, latin1),
[{Name, iolist_to_binary(str:format("~p", [Value]))}
|| {Name, Value} <- mnesia:table_info(Table, all)].
mnesia_list_tables() ->
STables =
lists:sort(
mnesia:system_info(tables)),
lists:map(fun(Table) ->
TInfo = mnesia:table_info(Table, all),
{value, {storage_type, Type}} = lists:keysearch(storage_type, 1, TInfo),
{value, {size, Size}} = lists:keysearch(size, 1, TInfo),
{value, {memory, Memory}} = lists:keysearch(memory, 1, TInfo),
MemoryB = Memory * erlang:system_info(wordsize),
MemoryKB = MemoryB div 1024,
MemoryMB = MemoryKB div 1024,
{Table, storage_type_bin(Type), Size, MemoryKB, MemoryMB}
end,
STables).
storage_type_bin(ram_copies) ->
<<"RAM copy">>;
storage_type_bin(disc_copies) ->
<<"RAM and disc copy">>;
storage_type_bin(disc_only_copies) ->
<<"Disc only copy">>;
storage_type_bin(unknown) ->
<<"Remote copy">>.
echo(Sentence) ->
Sentence.
echo3(_, _, Sentence) ->
Sentence.
%%%
%%% Web Admin: Main
%%%
web_menu_main(Acc, _Lang) ->
Acc ++ [{<<"purge">>, <<"Purge">>}, {<<"stanza">>, <<"Stanza">>}].
web_page_main(_, #request{path = [<<"purge">>]} = R) ->
Types =
[{<<"#erlang">>, <<"Erlang">>},
{<<"#users">>, <<"Users">>},
{<<"#offline">>, <<"Offline">>},
{<<"#mam">>, <<"MAM">>},
{<<"#pubsub">>, <<"PubSub">>},
{<<"#push">>, <<"Push">>}],
Head = [?XC(<<"h1">>, <<"Purge">>)],
Set = [?XE(<<"ul">>, [?LI([?AC(MIU, MIN)]) || {MIU, MIN} <- Types]),
?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"erlang">>}], <<"Erlang">>),
?XE(<<"blockquote">>,
[ejabberd_web_admin:make_command(clear_cache, R),
ejabberd_web_admin:make_command(gc, R)]),
?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"users">>}], <<"Users">>),
?XE(<<"blockquote">>, [ejabberd_web_admin:make_command(delete_old_users, R)]),
?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"offline">>}], <<"Offline">>),
?XE(<<"blockquote">>,
[ejabberd_web_admin:make_command(delete_expired_messages, R),
ejabberd_web_admin:make_command(delete_old_messages, R),
ejabberd_web_admin:make_command(delete_old_messages_batch, R),
ejabberd_web_admin:make_command(delete_old_messages_status, R)]),
?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"mam">>}], <<"MAM">>),
?XE(<<"blockquote">>,
[ejabberd_web_admin:make_command(delete_old_mam_messages, R),
ejabberd_web_admin:make_command(delete_old_mam_messages_batch, R),
ejabberd_web_admin:make_command(delete_old_mam_messages_status, R)]),
?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"pubsub">>}], <<"PubSub">>),
?XE(<<"blockquote">>,
[ejabberd_web_admin:make_command(delete_expired_pubsub_items, R),
ejabberd_web_admin:make_command(delete_old_pubsub_items, R)]),
?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"push">>}], <<"Push">>),
?XE(<<"blockquote">>, [ejabberd_web_admin:make_command(delete_old_push_sessions, R)])],
{stop, Head ++ Set};
web_page_main(_, #request{path = [<<"stanza">>]} = R) ->
Head = [?XC(<<"h1">>, <<"Stanza">>)],
Set = [ejabberd_web_admin:make_command(send_message, R),
ejabberd_web_admin:make_command(send_stanza, R),
ejabberd_web_admin:make_command(send_stanza_c2s, R)],
{stop, Head ++ Set};
web_page_main(Acc, _) ->
Acc.
%%%
%%% Web Admin: Node
%%%
web_menu_node(Acc, _Node, _Lang) ->
Acc
++ [{<<"cluster">>, <<"Clustering">>},
{<<"update">>, <<"Code Update">>},
{<<"config-file">>, <<"Configuration File">>},
{<<"logs">>, <<"Logs">>},
{<<"stop">>, <<"Stop Node">>}].
web_page_node(_, Node, #request{path = [<<"cluster">>]} = R) ->
{ok, Names} = net_adm:names(),
NodeNames = lists:join(", ", [Name || {Name, _Port} <- Names]),
Hint =
list_to_binary(io_lib:format("Hint: Erlang nodes found in this machine that may be running ejabberd: ~s",
[NodeNames])),
Head = ?H1GLraw(<<"Clustering">>, <<"admin/guide/clustering/">>, <<"Clustering">>),
Set1 =
[ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[join_cluster_here, R, [], []]),
?XE(<<"blockquote">>, [?C(Hint)]),
ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[join_cluster, R, [], [{style, danger}]]),
?XE(<<"blockquote">>, [?C(Hint)]),
ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[leave_cluster, R, [], [{style, danger}]])],
Set2 =
[ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[set_master, R, [], [{style, danger}]])],
timer:sleep(100), % leaving a cluster takes a while, let's delay the get commands
Get1 =
[ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[list_cluster_detailed,
R,
[],
[{result_links, [{name, node, 3, <<"">>}]}]])],
Get2 =
[ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[get_master,
R,
[],
[{result_named, true},
{result_links, [{nodename, node, 3, <<"">>}]}]])],
{stop, Head ++ Get1 ++ Set1 ++ Get2 ++ Set2};
web_page_node(_, Node, #request{path = [<<"update">>]} = R) ->
Head = [?XC(<<"h1">>, <<"Code Update">>)],
Set = [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [update, R])],
Get = [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [update_list, R])],
{stop, Head ++ Get ++ Set};
web_page_node(_, Node, #request{path = [<<"config-file">>]} = R) ->
Res = ?H1GLraw(<<"Configuration File">>,
<<"admin/configuration/file-format/">>,
<<"File Format">>)
++ [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [convert_to_yaml, R]),
ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [dump_config, R]),
ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [reload_config, R])],
{stop, Res};
web_page_node(_, Node, #request{path = [<<"stop">>]} = R) ->
Res = [?XC(<<"h1">>, <<"Stop This Node">>),
ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[restart, R, [], [{style, danger}]]),
ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[stop_kindly, R, [], [{style, danger}]]),
ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[stop, R, [], [{style, danger}]]),
ejabberd_cluster:call(Node,
ejabberd_web_admin,
make_command,
[halt, R, [], [{style, danger}]])],
{stop, Res};
web_page_node(_, Node, #request{path = [<<"logs">>]} = R) ->
Res = ?H1GLraw(<<"Logs">>, <<"admin/configuration/basic/#logging">>, <<"Logging">>)
++ [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [set_loglevel, R]),
ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [get_loglevel, R]),
ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [reopen_log, R]),
ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [rotate_log, R])],
{stop, Res};
web_page_node(Acc, _, _) ->
Acc.
+22 -5
View File
@@ -236,14 +236,16 @@ check_password_with_authmodule(User, AuthzId, Server, Password) ->
-spec check_password_with_authmodule(
binary(), binary(), binary(), binary(), binary(),
digest_fun() | undefined) -> false | {true, atom()}.
digest_fun() | undefined) -> false | {false, atom(), binary()} | {true, atom()}.
check_password_with_authmodule(User, AuthzId, Server, Password, Digest, DigestGen) ->
case validate_credentials(User, Server) of
{ok, LUser, LServer} ->
case jid:nodeprep(AuthzId) of
error ->
case {jid:nodeprep(AuthzId), get_is_banned(LUser, LServer)} of
{error, _} ->
false;
LAuthzId ->
{_, {is_banned, BanReason}} ->
{false, 'account-disabled', BanReason};
{LAuthzId, _} ->
untag_stop(
lists:foldl(
fun(Mod, false) ->
@@ -373,10 +375,15 @@ get_password_s(User, Server) ->
Password -> Password
end.
-spec get_password_with_authmodule(binary(), binary()) -> {false | password(), module()}.
-spec get_password_with_authmodule(binary(), binary()) ->
{false | {false, atom(), binary()} | password(), module()}.
get_password_with_authmodule(User, Server) ->
case validate_credentials(User, Server) of
{ok, LUser, LServer} ->
case get_is_banned(LUser, LServer) of
{is_banned, BanReason} ->
{{false, 'account-disabled', BanReason}, module_not_consulted};
not_banned ->
case lists:foldl(
fun(M, {error, _}) ->
{db_get_password(LUser, LServer, M), M};
@@ -387,6 +394,7 @@ get_password_with_authmodule(User, Server) ->
{Password, Module};
{error, Module} ->
{false, Module}
end
end;
_ ->
{false, undefined}
@@ -567,6 +575,15 @@ backend_type(Mod) ->
password_format(LServer) ->
ejabberd_option:auth_password_format(LServer).
get_is_banned(User, Server) ->
case mod_admin_extra:get_ban_details(User, Server) of
[] ->
not_banned;
BanDetails ->
{_, ReasonText} = lists:keyfind("reason", 1, BanDetails),
{is_banned, <<"Account is banned: ", ReasonText/binary>>}
end.
%%%----------------------------------------------------------------------
%%% Backend calls
%%%----------------------------------------------------------------------
+2
View File
@@ -28,6 +28,8 @@
-behaviour(ejabberd_auth).
-author('mickael.remond@process-one.net').
-protocol({xep, 175, '1.2'}).
-export([start/1,
stop/1,
use_cache/1,
+16 -1
View File
@@ -27,6 +27,7 @@
-protocol({rfc, 3921}).
-protocol({rfc, 6120}).
-protocol({rfc, 6121}).
-protocol({xep, 138, '2.1'}).
%% ejabberd_listener callbacks
-export([start/3, start_link/3, accept/1, listen_opt_type/1, listen_options/0]).
@@ -52,7 +53,8 @@
-export([get_presence/1, set_presence/2, resend_presence/1, resend_presence/2,
open_session/1, call/3, cast/2, send/2, close/1, close/2, stop_async/1,
reply/2, copy_state/2, set_timeout/2, route/2, format_reason/2,
host_up/1, host_down/1, send_ws_ping/1, bounce_message_queue/2]).
host_up/1, host_down/1, send_ws_ping/1, bounce_message_queue/2,
reset_vcard_xupdate_resend_presence/1]).
-include_lib("xmpp/include/xmpp.hrl").
-include("logger.hrl").
@@ -108,6 +110,10 @@ resend_presence(Pid) ->
resend_presence(Pid, To) ->
route(Pid, {resend_presence, To}).
-spec reset_vcard_xupdate_resend_presence(pid()) -> boolean().
reset_vcard_xupdate_resend_presence(Pid) ->
route(Pid, reset_vcard_xupdate_resend_presence).
-spec close(pid()) -> ok;
(state()) -> state().
close(Ref) ->
@@ -246,6 +252,13 @@ process_info(#{lserver := LServer} = State, {route, Packet}) ->
true ->
State1
end;
process_info(State, reset_vcard_xupdate_resend_presence) ->
case maps:get(pres_last, State, error) of
error -> State;
Pres ->
Pres2 = xmpp:remove_subtag(Pres, #vcard_xupdate{}),
process_self_presence(State#{pres_last => Pres2}, Pres2)
end;
process_info(#{jid := JID} = State, {resend_presence, To}) ->
case maps:get(pres_last, State, error) of
error -> State;
@@ -277,6 +290,7 @@ reject_unauthenticated_packet(State, _Pkt) ->
process_auth_result(#{sasl_mech := Mech, auth_module := AuthModule,
socket := Socket, ip := IP, lserver := LServer} = State,
true, User) ->
misc:set_proc_label({?MODULE, User, LServer}),
?INFO_MSG("(~ts) Accepted c2s ~ts authentication for ~ts@~ts by ~ts backend from ~ts",
[xmpp_socket:pp(Socket), Mech, User, LServer,
ejabberd_auth:backend_type(AuthModule),
@@ -604,6 +618,7 @@ init([State, Opts]) ->
access => Access,
shaper => Shaper},
State2 = xmpp_stream_in:set_timeout(State1, Timeout),
misc:set_proc_label({?MODULE, init_state}),
ejabberd_hooks:run_fold(c2s_init, {ok, State2}, [Opts]).
handle_call(get_presence, From, #{jid := JID} = State) ->
+1
View File
@@ -26,6 +26,7 @@
-module(ejabberd_captcha).
-protocol({xep, 158, '1.0'}).
-protocol({xep, 231, '1.0'}).
-behaviour(gen_server).
+14 -5
View File
@@ -188,7 +188,9 @@ list_commands(Version) ->
Commands = get_commands_definition(Version),
[{Name, Args, Desc} || #ejabberd_commands{name = Name,
args = Args,
desc = Desc} <- Commands].
tags = Tags,
desc = Desc} <- Commands,
not lists:member(internal, Tags)].
-spec get_command_format(atom()) -> {[aterm()], [{atom(),atom()}], rterm()}.
@@ -264,10 +266,16 @@ execute_command2(Name, Arguments, CallerInfo) ->
execute_command2(Name, Arguments, CallerInfo, Version) ->
Command = get_command_definition(Name, Version),
case ejabberd_access_permissions:can_access(Name, CallerInfo) of
allow ->
FrontedCalledInternal =
maps:get(caller_module, CallerInfo, none) /= ejabberd_web_admin
andalso lists:member(internal, Command#ejabberd_commands.tags),
case {ejabberd_access_permissions:can_access(Name, CallerInfo),
FrontedCalledInternal} of
{allow, false} ->
do_execute_command(Command, Arguments);
_ ->
{_, true} ->
throw({error, frontend_cannot_call_an_internal_command});
{deny, false} ->
throw({error, access_rules_unauthorized})
end.
@@ -289,7 +297,8 @@ get_tags_commands() ->
get_tags_commands(Version) ->
CommandTags = [{Name, Tags} ||
#ejabberd_commands{name = Name, tags = Tags}
<- get_commands_definition(Version)],
<- get_commands_definition(Version),
not lists:member(internal, Tags)],
Dict = lists:foldl(
fun({CommandNameAtom, CTags}, D) ->
CommandName = atom_to_list(CommandNameAtom),
+31 -22
View File
@@ -87,7 +87,7 @@ md_tag(h2, V) ->
md_tag(strong, V) ->
[<<"*">>, V, <<"*">>];
md_tag('div', V) ->
[<<"<div class='note-down'>">>, V, <<"</div>">>];
[<<"*Note* about this command: ">>, V, <<".">>];
md_tag(_, V) ->
V.
@@ -237,7 +237,7 @@ json_gen({_Name, {list, ElDesc}}, List, Indent, HTMLOutput) ->
[?OP_L("["), ?BR, Indent2, list_join_with(Res, [?OP_L(","), ?BR, Indent2]), ?BR, Indent, ?OP_L("]")].
json_call(Name, ArgsDesc, Values, ResultDesc, Result, HTMLOutput) ->
{Indent, Preamble} = if HTMLOutput -> {<<"">>, []}; true -> {<<" ">>, <<"~~~ json\n">>} end,
{Indent, Preamble} = if HTMLOutput -> {<<"">>, []}; true -> {<<"">>, <<"~~~ json\n">>} end,
{Code, ResultStr} = case {ResultDesc, Result} of
{{_, rescode}, V} when V == true; V == ok ->
{200, [?STR_L("")]};
@@ -247,13 +247,8 @@ json_call(Name, ArgsDesc, Values, ResultDesc, Result, HTMLOutput) ->
{200, [?STR(Text1)]};
{{_, restuple}, {_, Text2}} ->
{500, [?STR(Text2)]};
{{_, {list, _}}, _} ->
{200, json_gen(ResultDesc, Result, Indent, HTMLOutput)};
{{_, {tuple, _}}, _} ->
{200, json_gen(ResultDesc, Result, Indent, HTMLOutput)};
{{Name0, _}, _} ->
{200, [Indent, ?OP_L("{"), ?STR_A(Name0), ?OP_L(": "),
json_gen(ResultDesc, Result, Indent, HTMLOutput), ?OP_L("}")]}
{{_, _}, _} ->
{200, json_gen(ResultDesc, Result, Indent, HTMLOutput)}
end,
CodeStr = case Code of
200 -> <<" 200 OK">>;
@@ -369,7 +364,7 @@ make_tags(HTMLOutput) ->
-dialyzer({no_match, gen_tags/2}).
gen_tags({TagName, Commands}, HTMLOutput) ->
[?TAG(h1, TagName) | [?TAG(p, ?RAW("* *`"++C++"`*")) || C <- Commands]].
[?TAG(h1, TagName) | [?TAG(p, ?RAW("* _`"++C++"`_")) || C <- Commands]].
gen_doc(#ejabberd_commands{name=Name, tags=Tags, desc=Desc, longdesc=LongDesc,
args=Args, args_desc=ArgsDesc, note=Note, definer=Definer,
@@ -400,14 +395,14 @@ gen_doc(#ejabberd_commands{name=Name, tags=Tags, desc=Desc, longdesc=LongDesc,
[?TAG(dl, [gen_param(RName, Type, ResultDesc, HTMLOutput)])]
end
end,
TagsText = ?RAW(string:join(["*`"++atom_to_list(Tag)++"`*" || Tag <- Tags], ", ")),
TagsText = ?RAW(string:join(["_`"++atom_to_list(Tag)++"`_" || Tag <- Tags], ", ")),
IsDefinerMod = case Definer of
unknown -> false;
_ -> lists:member(gen_mod, proplists:get_value(behaviour, Definer:module_info(attributes)))
end,
ModuleText = case IsDefinerMod of
true ->
[?TAG(h2, <<"Module:">>), ?TAG(p, ?RAW("*`"++atom_to_list(Definer)++"`*"))];
[?TAG(h2, <<"Module:">>), ?TAG(p, ?RAW("_`"++atom_to_list(Definer)++"`_"))];
false ->
[]
end,
@@ -420,8 +415,8 @@ gen_doc(#ejabberd_commands{name=Name, tags=Tags, desc=Desc, longdesc=LongDesc,
true -> {NoteEl, []}
end,
[NotePre,
?TAG(h1, atom_to_list(Name)),
[?TAG(h1, make_command_name(Name, Note)),
NotePre,
?TAG(p, ?RAW(Desc)),
case LongDesc of
"" -> [];
@@ -440,6 +435,19 @@ gen_doc(#ejabberd_commands{name=Name, tags=Tags, desc=Desc, longdesc=LongDesc,
[Name, Ex])))
end.
get_version_mark("") ->
"";
get_version_mark(Note) ->
[XX, YY | _] = string:tokens(binary_to_list(ejabberd_option:version()), "."),
XXYY = string:join([XX, YY], "."),
case string:find(Note, XXYY) of
nomatch -> "";
_ -> " 🟤"
end.
make_command_name(Name, Note) ->
atom_to_list(Name) ++ get_version_mark(Note).
find_commands_definitions() ->
lists:flatmap(
fun(Mod) ->
@@ -497,21 +505,22 @@ generate_md_output(File, RegExp, Languages, Cmds) ->
end, Cmds2),
Cmds4 = [maybe_add_policy_arguments(Cmd) || Cmd <- Cmds3],
Langs = binary:split(Languages, <<",">>, [global]),
Header = <<"---\ntitle: Administration API reference\ntoc: true\nmenu: API Reference\norder: 1\n"
"// Autogenerated with 'ejabberdctl gen_markdown_doc_for_commands'\n---\n\n"
"This section describes API of ejabberd.\n">>,
Version = binary_to_list(ejabberd_config:version()),
Header = ["# API Reference\n\n"
"This section describes API commands of ejabberd ", Version, ". "
"The commands that changed in this version are marked with 🟤.\n\n"],
Out = lists:map(fun(C) -> gen_doc(C, false, Langs) end, Cmds4),
{ok, Fh} = file:open(File, [write]),
{ok, Fh} = file:open(File, [write, {encoding, utf8}]),
io:format(Fh, "~ts~ts", [Header, Out]),
file:close(Fh),
ok.
generate_tags_md(File) ->
Header = <<"---\ntitle: API Tags\ntoc: true\nmenu: API Tags\norder: 2\n"
"// Autogenerated with 'ejabberdctl gen_markdown_doc_for_tags'\n---\n\n"
"This section enumerates the tags and their associated API.\n">>,
Version = binary_to_list(ejabberd_config:version()),
Header = ["# API Tags\n\n"
"This section enumerates the API tags of ejabberd ", Version, ". \n\n"],
Tags = make_tags(false),
{ok, Fh} = file:open(File, [write]),
{ok, Fh} = file:open(File, [write, {encoding, utf8}]),
io:format(Fh, "~ts~ts", [Header, Tags]),
file:close(Fh),
ok.
+3
View File
@@ -111,6 +111,9 @@ reload() ->
ejabberd_hooks:run(host_down, [Host])
end, DelHosts),
ejabberd_hooks:run(config_reloaded, []),
% logger is started too early to be able to use hooks, so
% we need to call it separately
ejabberd_logger:config_reloaded(),
delete_host_options(DelHosts),
?INFO_MSG("Configuration reloaded successfully", []);
Err ->
+24 -25
View File
@@ -32,7 +32,8 @@
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
-export([get_commands_spec/0]).
-export([get_commands_spec/0, format_arg/2,
get_usage_command/4]).
-include("ejabberd_ctl.hrl").
-include("ejabberd_commands.hrl").
@@ -366,15 +367,15 @@ format_arg(Arg, string) ->
Parse = "~" ++ NumChars ++ "c",
format_arg2(Arg, Parse);
format_arg(Arg, {list, {_ArgName, ArgFormat}}) ->
[format_arg(Element, ArgFormat) || Element <- string:tokens(Arg, ",")];
[format_arg(string:trim(Element), ArgFormat) || Element <- string:tokens(Arg, ",")];
format_arg(Arg, {list, ArgFormat}) ->
[format_arg(Element, ArgFormat) || Element <- string:tokens(Arg, ",")];
[format_arg(string:trim(Element), ArgFormat) || Element <- string:tokens(Arg, ",")];
format_arg(Arg, {tuple, Elements}) ->
Args = string:tokens(Arg, ":"),
list_to_tuple(format_args(Args, Elements));
format_arg(Arg, Format) ->
S = unicode:characters_to_binary(Arg, utf8),
JSON = jiffy:decode(S),
JSON = misc:json_decode(S),
mod_http_api:format_arg(JSON, Format).
format_arg2(Arg, Parse)->
@@ -409,13 +410,13 @@ format_result([A|_]=String, {_Name, string}, _Version) when is_list(String) and
io_lib:format("~ts", [String]);
format_result(Binary, {_Name, binary}, _Version) when is_binary(Binary) ->
io_lib:format("~ts", [binary_to_list(Binary)]);
io_lib:format("~ts", [Binary]);
format_result(String, {_Name, binary}, _Version) when is_list(String) ->
io_lib:format("~ts", [String]);
format_result(Binary, {_Name, string}, _Version) when is_binary(Binary) ->
io_lib:format("~ts", [binary_to_list(Binary)]);
io_lib:format("~ts", [Binary]);
format_result(Atom, {_Name, string}, _Version) when is_atom(Atom) ->
io_lib:format("~ts", [atom_to_list(Atom)]);
@@ -597,17 +598,9 @@ get_shell_info() ->
_:_ -> {78, false}
end.
%% Erlang/OTP 20.0 introduced string:find/2, but we must support old 19.3
string_find([], _SearchPattern) ->
nomatch;
string_find([A | String], [A]) ->
String;
string_find([_ | String], SearchPattern) ->
string_find(String, SearchPattern).
%% Split this command description in several lines of proper length
prepare_description(DescInit, MaxC, Desc) ->
case string_find(Desc, "\n") of
case string:find(Desc, "\n") of
nomatch ->
prepare_description2(DescInit, MaxC, Desc);
_ ->
@@ -786,7 +779,7 @@ print_usage_help(MaxC, ShCode) ->
longdesc = lists:flatten(LongDesc),
args = ArgsDef,
result = {help, string}},
print_usage_command2("help", C, MaxC, ShCode).
print(get_usage_command2("help", C, MaxC, ShCode), []).
%%-----------------------------
@@ -848,11 +841,14 @@ maybe_add_policy_arguments(Args, _) ->
-spec print_usage_command(Cmd::string(), MaxC::integer(),
ShCode::boolean(), Version::integer()) -> ok.
print_usage_command(Cmd, MaxC, ShCode, Version) ->
print(get_usage_command(Cmd, MaxC, ShCode, Version), []).
get_usage_command(Cmd, MaxC, ShCode, Version) ->
Name = list_to_atom(Cmd),
C = ejabberd_commands:get_command_definition(Name, Version),
print_usage_command2(Cmd, C, MaxC, ShCode).
get_usage_command2(Cmd, C, MaxC, ShCode).
print_usage_command2(Cmd, C, MaxC, ShCode) ->
get_usage_command2(Cmd, C, MaxC, ShCode) ->
#ejabberd_commands{
tags = TagsAtoms,
definer = Definer,
@@ -926,12 +922,12 @@ print_usage_command2(Cmd, C, MaxC, ShCode) ->
false -> ""
end,
case Cmd of
"help" -> ok;
_ -> print([NameFmt, "\n", ArgsFmt, "\n", ReturnsFmt,
"\n\n", ExampleFmt, TagsFmt, "\n\n", ModuleFmt, NoteFmt, DescFmt, "\n\n"], [])
First = case Cmd of
"help" -> "";
_ -> [NameFmt, "\n", ArgsFmt, "\n", ReturnsFmt,
"\n\n", ExampleFmt, TagsFmt, "\n\n", ModuleFmt, NoteFmt, DescFmt, "\n\n"]
end,
print([LongDescFmt, NoteEjabberdctlList, NoteEjabberdctlTuple], []).
[First, LongDescFmt, NoteEjabberdctlList, NoteEjabberdctlTuple].
%%-----------------------------
%% Format Arguments Help
@@ -972,11 +968,14 @@ format_usage_ctype1({Name, Type, Description}, Indentation, ShCode) ->
format_usage_ctype(Type, _Indentation)
when (Type==atom) or (Type==integer) or (Type==string) or (Type==binary) or (Type==rescode) or (Type==restuple)->
when (Type==atom) or (Type==integer) or (Type==string) or (Type==binary)
or (Type==rescode) or (Type==restuple) ->
io_lib:format("~p", [Type]);
format_usage_ctype({Name, Type}, _Indentation)
when (Type==atom) or (Type==integer) or (Type==string) or (Type==binary) or (Type==rescode) or (Type==restuple)->
when (Type==atom) or (Type==integer) or (Type==string) or (Type==binary)
or (Type==rescode) or (Type==restuple)
or (Type==any) ->
io_lib:format("~p::~p", [Name, Type]);
format_usage_ctype({Name, {list, ElementDef}}, Indentation) ->
+31 -13
View File
@@ -45,7 +45,8 @@ man(Lang) ->
#{desc := Descr} = Map ->
DocOpts = maps:get(opts, Map, []),
Example = maps:get(example, Map, []),
{[{M, Descr, DocOpts, #{example => Example}}|Mods], SubMods};
Note = maps:get(note, Map, []),
{[{M, Descr, DocOpts, #{example => Example, note => Note}}|Mods], SubMods};
#{opts := DocOpts} ->
{ParentMod, Backend} = strip_backend_suffix(M),
{Mods, dict:append(ParentMod, {M, Backend, DocOpts}, SubMods)};
@@ -72,10 +73,12 @@ man(Lang) ->
catch _:undef -> []
end
end, ejabberd_config:callback_modules(all)),
Version = binary_to_list(ejabberd_config:version()),
Options =
["TOP LEVEL OPTIONS",
"-----------------",
tr(Lang, ?T("This section describes top level options of ejabberd.")),
"This section describes top level options of ejabberd " ++ Version ++ ".",
"The options that changed in this version are marked with 🟤.",
io_lib:nl()] ++
lists:flatmap(
fun(Opt) ->
@@ -95,16 +98,19 @@ man(Lang) ->
"MODULES",
"-------",
"[[modules]]",
tr(Lang, ?T("This section describes options of all ejabberd modules.")),
"This section describes modules options of ejabberd " ++ Version ++ ".",
"The modules that changed in this version are marked with 🟤.",
io_lib:nl()] ++
lists:flatmap(
fun({M, Descr, DocOpts, Backends, Example}) ->
ModName = atom_to_list(M),
VersionMark = get_version_mark(Example),
[io_lib:nl(),
ModName,
lists:flatten([ModName, VersionMark]),
lists:duplicate(length(atom_to_list(M)), $~),
"[[" ++ ModName ++ "]]",
io_lib:nl()] ++
format_versions(Lang, Example) ++ [io_lib:nl()] ++
tr_multi(Lang, Descr) ++ [io_lib:nl()] ++
opts_to_man(Lang, [{M, '', DocOpts}|Backends]) ++
format_example(0, Lang, Example)
@@ -114,7 +120,7 @@ man(Lang) ->
"LISTENERS",
"-------",
"[[listeners]]",
tr(Lang, ?T("This section describes options of all ejabberd listeners.")),
"This section describes listeners options of ejabberd " ++ Version ++ ".",
io_lib:nl(),
"TODO"],
AsciiData =
@@ -151,7 +157,7 @@ opts_to_man(Lang, Backends) ->
end, Backends).
opt_to_man(Lang, {Option, Options}, Level) ->
[format_option(Lang, Option, Options)|format_desc(Lang, Options)] ++
[format_option(Lang, Option, Options)|format_versions(Lang, Options)++format_desc(Lang, Options)] ++
format_example(Level, Lang, Options);
opt_to_man(Lang, {Option, Options, Children}, Level) ->
[format_option(Lang, Option, Options)|format_desc(Lang, Options)] ++
@@ -162,16 +168,28 @@ opt_to_man(Lang, {Option, Options, Children}, Level) ->
lists:keysort(1, Children))]) ++
[io_lib:nl()|format_example(Level, Lang, Options)].
format_option(Lang, Option, #{note := Note, value := Val}) ->
"\n\n_Note_ about the next option: " ++ Note ++ ":\n\n"++
"*" ++ atom_to_list(Option) ++ "*: 'pass:[" ++
tr(Lang, Val) ++ "]'::";
format_option(Lang, Option, #{value := Val}) ->
"*" ++ atom_to_list(Option) ++ "*: 'pass:[" ++
get_version_mark(#{note := Note}) ->
[XX, YY | _] = string:tokens(binary_to_list(ejabberd_option:version()), "."),
XXYY = string:join([XX, YY], "."),
case string:find(Note, XXYY) of
nomatch -> "";
_ -> " 🟤"
end;
get_version_mark(_) ->
"".
format_option(Lang, Option, #{value := Val} = Options) ->
VersionMark = get_version_mark(Options),
"*" ++ atom_to_list(Option) ++ VersionMark ++ "*: 'pass:[" ++
tr(Lang, Val) ++ "]'::";
format_option(_Lang, Option, #{}) ->
"*" ++ atom_to_list(Option) ++ "*::".
format_versions(_Lang, #{note := Note}) when Note /= [] ->
["_Note_ about this option: " ++ Note ++ ". "];
format_versions(_, _) ->
[].
format_desc(Lang, #{desc := Desc}) ->
tr_multi(Lang, Desc).
@@ -194,7 +212,7 @@ format_example(Level, Lang, #{example := [_|_] = Example}) ->
false ->
lists:flatmap(
fun(Block) ->
["+", "''''", "+"|Block]
["+", "*Examples*:", "+"|Block]
end,
lists:map(
fun({Text, Lines}) ->
+2
View File
@@ -121,6 +121,7 @@ init({Port, _, udp} = EndPoint, Module, Opts, SockOpts) ->
ExtraOpts2]) of
{ok, Socket} ->
set_definitive_udsocket(Port, Opts),
misc:set_proc_label({?MODULE, udp, Port}),
case inet:sockname(Socket) of
{ok, {Addr, Port1}} ->
proc_lib:init_ack({ok, self()}),
@@ -155,6 +156,7 @@ init({Port, _, tcp} = EndPoint, Module, Opts, SockOpts) ->
case inet:sockname(ListenSocket) of
{ok, {Addr, Port1}} ->
proc_lib:init_ack({ok, self()}),
misc:set_proc_label({?MODULE, tcp, Port}),
case application:ensure_started(ejabberd) of
ok ->
Sup = start_module_sup(Module, Opts),
+26 -2
View File
@@ -27,7 +27,7 @@
%% API
-export([start/0, get/0, set/1, get_log_path/0, flush/0]).
-export([convert_loglevel/1, loglevels/0, set_modules_fully_logged/1]).
-export([convert_loglevel/1, loglevels/0, set_modules_fully_logged/1, config_reloaded/0]).
-ifndef(LAGER).
-export([progress_filter/2]).
-endif.
@@ -185,6 +185,9 @@ restart() ->
application:stop(lager),
start(Level).
config_reloaded() ->
ok.
reopen_log() ->
ok.
@@ -330,6 +333,27 @@ get_default_handlerid() ->
restart() ->
ok.
-spec config_reloaded() -> ok.
config_reloaded() ->
LogRotateSize = ejabberd_option:log_rotate_size(),
LogRotateCount = ejabberd_option:log_rotate_count(),
LogBurstLimitWindowTime = ejabberd_option:log_burst_limit_window_time(),
LogBurstLimitCount = ejabberd_option:log_burst_limit_count(),
lists:foreach(
fun(Handler) ->
case logger:get_handler_config(Handler) of
{ok, #{config := Config}} ->
Config2 = Config#{
max_no_bytes => LogRotateSize,
max_no_files => LogRotateCount,
burst_limit_window_time => LogBurstLimitWindowTime,
burst_limit_max_count => LogBurstLimitCount},
logger:update_handler_config(Handler, config, Config2);
_ ->
ok
end
end, [ejabberd_log, error_log]).
progress_filter(#{level:=info,msg:={report,#{label:={_,progress}}}} = Event, _) ->
case get() of
debug ->
@@ -344,7 +368,7 @@ progress_filter(Event, _) ->
console_template() ->
case (false /= code:is_loaded('Elixir.Logger'))
andalso
lists:keymember(default_formatter, 1, 'Elixir.Logger':module_info(exports)) of
'Elixir.System':version() >= <<"1.15">> of
true ->
[date, " ", time, " [", level, "] ", message, "\n"];
false ->
+47 -15
View File
@@ -54,6 +54,8 @@
oauth_add_client_implicit/3,
oauth_remove_client/1]).
-export([web_menu_main/2, web_page_main/2]).
-include_lib("xmpp/include/xmpp.hrl").
-include("logger.hrl").
-include("ejabberd_http.hrl").
@@ -81,7 +83,7 @@
get_commands_spec() ->
[
#ejabberd_commands{name = oauth_issue_token, tags = [oauth],
desc = "Issue an [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) token for the given jid",
desc = "Issue an _`oauth.md|OAuth`_ token for the given jid",
module = ?MODULE, function = oauth_issue_token,
args = [{jid, string},{ttl, integer}, {scopes, string}],
policy = restricted,
@@ -92,7 +94,7 @@ get_commands_spec() ->
result = {result, {tuple, [{token, string}, {scopes, string}, {expires_in, string}]}}
},
#ejabberd_commands{name = oauth_issue_token, tags = [oauth],
desc = "Issue an [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) token for the given jid",
desc = "Issue an _`oauth.md|OAuth`_ optionredir token for the given jid",
module = ?MODULE, function = oauth_issue_token,
version = 1,
note = "updated in 24.02",
@@ -105,7 +107,7 @@ get_commands_spec() ->
result = {result, {tuple, [{token, string}, {scopes, {list, {scope, string}}}, {expires_in, string}]}}
},
#ejabberd_commands{name = oauth_list_tokens, tags = [oauth],
desc = "List [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) tokens, user, scope, and seconds to expire (only Mnesia)",
desc = "List _`oauth.md|OAuth`_ tokens, user, scope, and seconds to expire (only Mnesia)",
longdesc = "List OAuth tokens, their user and scope, and how many seconds remain until expirity",
module = ?MODULE, function = oauth_list_tokens,
args = [],
@@ -113,7 +115,7 @@ get_commands_spec() ->
result = {tokens, {list, {token, {tuple, [{token, string}, {user, string}, {scope, string}, {expires_in, string}]}}}}
},
#ejabberd_commands{name = oauth_revoke_token, tags = [oauth],
desc = "Revoke authorization for an [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) token",
desc = "Revoke authorization for an _`oauth.md|OAuth`_ token",
note = "changed in 22.05",
module = ?MODULE, function = oauth_revoke_token,
args = [{token, binary}],
@@ -122,7 +124,7 @@ get_commands_spec() ->
result_desc = "Result code"
},
#ejabberd_commands{name = oauth_add_client_password, tags = [oauth],
desc = "Add [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) client_id with password grant type",
desc = "Add _`oauth.md|OAuth`_ client_id with password grant type",
module = ?MODULE, function = oauth_add_client_password,
args = [{client_id, binary},
{client_name, binary},
@@ -131,7 +133,7 @@ get_commands_spec() ->
result = {res, restuple}
},
#ejabberd_commands{name = oauth_add_client_implicit, tags = [oauth],
desc = "Add [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) client_id with implicit grant type",
desc = "Add _`oauth.md|OAuth`_ client_id with implicit grant type",
module = ?MODULE, function = oauth_add_client_implicit,
args = [{client_id, binary},
{client_name, binary},
@@ -140,7 +142,7 @@ get_commands_spec() ->
result = {res, restuple}
},
#ejabberd_commands{name = oauth_remove_client, tags = [oauth],
desc = "Remove [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) client_id",
desc = "Remove _`oauth.md|OAuth`_ client_id",
module = ?MODULE, function = oauth_remove_client,
args = [{client_id, binary}],
policy = restricted,
@@ -230,6 +232,8 @@ init([]) ->
application:set_env(oauth2, expiry_time, Expire div 1000),
application:start(oauth2),
ejabberd_commands:register_commands(get_commands_spec()),
ejabberd_hooks:add(webadmin_menu_main, ?MODULE, web_menu_main, 50),
ejabberd_hooks:add(webadmin_page_main, ?MODULE, web_page_main, 50),
ejabberd_hooks:add(config_reloaded, ?MODULE, config_reloaded, 50),
erlang:send_after(expire(), self(), clean),
{ok, ok}.
@@ -255,6 +259,8 @@ handle_info(Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ejabberd_hooks:delete(webadmin_menu_main, ?MODULE, web_menu_main, 50),
ejabberd_hooks:delete(webadmin_page_main, ?MODULE, web_page_main, 50),
ejabberd_hooks:delete(config_reloaded, ?MODULE, config_reloaded, 50).
code_change(_OldVsn, State, _Extra) -> {ok, State}.
@@ -721,11 +727,10 @@ process(_Handlers,
ExpiresIn
end,
{ok, VerifiedScope} = oauth2_response:scope(Response),
json_response(200, {[
{<<"access_token">>, AccessToken},
{<<"token_type">>, Type},
{<<"scope">>, str:join(VerifiedScope, <<" ">>)},
{<<"expires_in">>, Expires}]});
json_response(200, #{<<"access_token">> => AccessToken,
<<"token_type">> => Type,
<<"scope">> => str:join(VerifiedScope, <<" ">>),
<<"expires_in">> => Expires});
{error, Error} when is_atom(Error) ->
json_error(400, <<"invalid_grant">>, Error)
end;
@@ -756,14 +761,14 @@ json_response(Code, Body) ->
{Code, [{<<"Content-Type">>, <<"application/json;charset=UTF-8">>},
{<<"Cache-Control">>, <<"no-store">>},
{<<"Pragma">>, <<"no-cache">>}],
jiffy:encode(Body)}.
misc:json_encode(Body)}.
%% OAauth error are defined in:
%% https://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-5.2
json_error(Code, Error, Reason) ->
Desc = json_error_desc(Reason),
Body = {[{<<"error">>, Error},
{<<"error_description">>, Desc}]},
Body = #{<<"error">> => Error,
<<"error_description">> => Desc},
json_response(Code, Body).
json_error_desc(access_denied) -> <<"Access denied">>;
@@ -795,3 +800,30 @@ logo() ->
{error, _} ->
<<>>
end.
%%%
%%% WebAdmin
%%%
%% @format-begin
web_menu_main(Acc, _Lang) ->
Acc ++ [{<<"oauth">>, <<"OAuth">>}].
web_page_main(_, #request{path = [<<"oauth">>]} = R) ->
Head = ?H1GLraw(<<"OAuth">>, <<"developer/ejabberd-api/oauth/">>, <<"OAuth">>),
Set = [?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"token">>}], <<"Token">>),
?XE(<<"blockquote">>,
[ejabberd_web_admin:make_command(oauth_list_tokens, R),
ejabberd_web_admin:make_command(oauth_issue_token, R),
ejabberd_web_admin:make_command(oauth_revoke_token, R)]),
?X(<<"hr">>),
?XAC(<<"h2">>, [{<<"id">>, <<"client">>}], <<"Client">>),
?XE(<<"blockquote">>,
[ejabberd_web_admin:make_command(oauth_add_client_implicit, R),
ejabberd_web_admin:make_command(oauth_add_client_password, R),
ejabberd_web_admin:make_command(oauth_remove_client, R)])],
{stop, Head ++ Set};
web_page_main(Acc, _) ->
Acc.
+38 -20
View File
@@ -50,11 +50,11 @@ store(R) ->
case rest:with_retry(
post,
[ejabberd_config:get_myname(), Path, [],
{[{<<"token">>, R#oauth_token.token},
{<<"user">>, SJID},
{<<"scope">>, R#oauth_token.scope},
{<<"expire">>, R#oauth_token.expire}
]}], 2, 500) of
#{<<"token">> => R#oauth_token.token,
<<"user">> => SJID,
<<"scope">> => R#oauth_token.scope,
<<"expire">> => R#oauth_token.expire
}], 2, 500) of
{ok, Code, _} when Code == 200 orelse Code == 201 ->
ok;
Err ->
@@ -65,14 +65,23 @@ store(R) ->
lookup(Token) ->
Path = path(<<"lookup">>),
case rest:with_retry(post, [ejabberd_config:get_myname(), Path, [],
{[{<<"token">>, Token}]}],
#{<<"token">> => Token}],
2, 500) of
{ok, 200, {Data}} ->
SJID = proplists:get_value(<<"user">>, Data, <<>>),
{ok, 200, Data} ->
SJID = case maps:find(<<"user">>, Data) of
{ok, U} -> U;
error -> <<>>
end,
JID = jid:decode(SJID),
US = {JID#jid.luser, JID#jid.lserver},
Scope = proplists:get_value(<<"scope">>, Data, []),
Expire = proplists:get_value(<<"expire">>, Data, 0),
Scope = case maps:find(<<"scope">>, Data) of
{ok, S} -> S;
error -> []
end,
Expire = case maps:find(<<"expire">>, Data) of
{ok, E} -> E;
error -> 0
end,
{ok, #oauth_token{token = Token,
us = US,
scope = Scope,
@@ -113,11 +122,11 @@ store_client(#oauth_client{client_id = ClientID,
case rest:with_retry(
post,
[ejabberd_config:get_myname(), Path, [],
{[{<<"client_id">>, ClientID},
{<<"client_name">>, ClientName},
{<<"grant_type">>, SGrantType},
{<<"options">>, SOptions}
]}], 2, 500) of
#{<<"client_id">> => ClientID,
<<"client_name">> => ClientName,
<<"grant_type">> => SGrantType,
<<"options">> => SOptions
}], 2, 500) of
{ok, Code, _} when Code == 200 orelse Code == 201 ->
ok;
Err ->
@@ -128,17 +137,26 @@ store_client(#oauth_client{client_id = ClientID,
lookup_client(ClientID) ->
Path = path(<<"lookup_client">>),
case rest:with_retry(post, [ejabberd_config:get_myname(), Path, [],
{[{<<"client_id">>, ClientID}]}],
#{<<"client_id">> => ClientID}],
2, 500) of
{ok, 200, {Data}} ->
ClientName = proplists:get_value(<<"client_name">>, Data, <<>>),
SGrantType = proplists:get_value(<<"grant_type">>, Data, <<>>),
{ok, 200, Data} ->
ClientName = case maps:find(<<"client_name">>, Data) of
{ok, CN} -> CN;
error -> <<>>
end,
SGrantType = case maps:find(<<"grant_type">>, Data) of
{ok, GT} -> GT;
error -> <<>>
end,
GrantType =
case SGrantType of
<<"password">> -> password;
<<"implicit">> -> implicit
end,
SOptions = proplists:get_value(<<"options">>, Data, <<>>),
SOptions = case maps:find(<<"options">>, Data) of
{ok, O} -> O;
error -> <<>>
end,
case misc:base64_to_term(SOptions) of
{term, Options} ->
{ok, #oauth_client{client_id = ClientID,
+1 -1
View File
@@ -612,7 +612,7 @@ options() ->
{negotiation_timeout, timer:seconds(120)},
{net_ticktime, timer:seconds(60)},
{new_sql_schema, ?USE_NEW_SQL_SCHEMA_DEFAULT},
{update_sql_schema, false},
{update_sql_schema, true},
{oauth_access, none},
{oauth_cache_life_time,
fun(Host) -> ejabberd_config:get_option({cache_life_time, Host}) end},
+27 -22
View File
@@ -37,13 +37,13 @@ doc() ->
#{value => "[Options, ...]",
desc =>
?T("The option for listeners configuration. See the "
"http://../listen/[Listen Modules] section "
"_`listen.md|Listen Modules`_ section "
"for details.")}},
{modules,
#{value => "{Module: Options}",
desc =>
?T("The option for modules configuration. See "
"http://../modules/[Modules] section "
"_`modules.md|Modules`_ section "
"for details.")}},
{loglevel,
#{value =>
@@ -221,7 +221,7 @@ doc() ->
#{value => "{AccessName: {allow|deny: ACLRules|ACLName}}",
desc =>
?T("This option defines "
"http://../basic/#access-rules[Access Rules]. "
"_`basic.md#access-rules|Access Rules`_. "
"Each access rule is "
"assigned a name that can be referenced from other parts "
"of the configuration file (mostly from 'access' options of "
@@ -255,7 +255,7 @@ doc() ->
{acme,
#{value => ?T("Options"),
desc =>
?T("http://../basic/#acme[ACME] configuration, to automatically "
?T("_`basic.md#acme|ACME`_ configuration, to automatically "
"obtain SSL certificates for the domains served by ejabberd, "
"which means that certificate requests and renewals are "
"performed to some CA server (aka \"ACME server\") in a fully "
@@ -303,8 +303,8 @@ doc() ->
#{value => "true | false",
desc =>
?T("Whether to allow installation of third-party modules or not. "
"See https://docs.ejabberd.im/developer/extending-ejabberd/modules/#ejabberd-contrib"
"[ejabberd-contrib] documentation section. "
"See _`../../developer/extending-ejabberd/modules.md#ejabberd-contrib|ejabberd-contrib`_ "
"documentation section. "
"The default value is 'true'.")}},
{allow_multiple_connections,
#{value => "true | false",
@@ -328,8 +328,7 @@ doc() ->
desc =>
?T("Define the permissions for API access. Please consult the "
"ejabberd Docs web -> For Developers -> ejabberd ReST API -> "
"https://docs.ejabberd.im/developer/ejabberd-api/permissions/"
"[API Permissions].")}},
"_`../../developer/ejabberd-api/permissions.md|API Permissions`_.")}},
{append_host_config,
#{value => "{Host: Options}",
desc =>
@@ -373,7 +372,7 @@ doc() ->
note => "improved in 20.01",
desc =>
[?T("The option defines in what format the users passwords "
"are stored, plain text or in http://../authentication/#scram[SCRAM] format:"), "",
"are stored, plain text or in _`authentication.md#scram|SCRAM`_ format:"), "",
?T("* 'plain': The password is stored as plain text "
"in the database. This is risky because the passwords "
"can be read if your database gets compromised. "
@@ -392,7 +391,7 @@ doc() ->
{auth_scram_hash,
#{value => "sha | sha256 | sha512",
desc =>
?T("Hash algorithm that should be used to store password in http://../authentication/#scram[SCRAM] format. "
?T("Hash algorithm that should be used to store password in _`authentication.md#scram|SCRAM`_ format. "
"You shouldn't change this if you already have passwords generated with "
"a different algorithm - users that have such passwords will not be able "
"to authenticate. The default value is 'sha'.")}},
@@ -417,8 +416,8 @@ doc() ->
"one of these root CA certificates and should contain the "
"corresponding JID(s) in 'subjectAltName' field. "
"There is no default value."), "",
?T("You can use http://../toplevel/#host-config[host_config] to specify this option per-vhost."), "",
?T("To set a specific file per listener, use the listener's http://../listen-options/#cafile[cafile] option. Please notice that 'c2s_cafile' overrides the listener's 'cafile' option."), ""
?T("You can use _`host_config`_ to specify this option per-vhost."), "",
?T("To set a specific file per listener, use the listener's _`listen-options.md#cafile|cafile`_ option. Please notice that 'c2s_cafile' overrides the listener's 'cafile' option."), ""
]}},
{c2s_ciphers,
#{value => "[Cipher, ...]",
@@ -462,13 +461,13 @@ doc() ->
desc =>
[?T("Path to a file of CA root certificates. "
"The default is to use system defined file if possible."), "",
?T("For server connections, this 'ca_file' option is overridden by the http://../toplevel/#s2s-cafile[s2s_cafile] option."), ""
?T("For server connections, this 'ca_file' option is overridden by the _`s2s_cafile`_ option."), ""
]}},
{captcha_cmd,
#{value => ?T("Path | ModuleName"),
note => "improved in 23.01",
desc =>
?T("Full path to a script that generates http://../basic/#captcha[CAPTCHA] images. "
?T("Full path to a script that generates _`basic.md#captcha|CAPTCHA`_ images. "
"'@VERSION@' is replaced with ejabberd version number in 'XX.YY' format. "
"'@SEMVER@' is replaced with ejabberd version number in semver format "
"when compiled with Elixir's mix, or XX.YY format otherwise. "
@@ -481,7 +480,7 @@ doc() ->
{captcha_limit,
#{value => "pos_integer() | infinity",
desc =>
?T("Maximum number of http://../basic/#captcha[CAPTCHA] generated images per minute for "
?T("Maximum number of _`basic.md#captcha|CAPTCHA`_ generated images per minute for "
"any given JID. The option is intended to protect the server "
"from CAPTCHA DoS. The default value is 'infinity'.")}},
{captcha_host,
@@ -491,7 +490,7 @@ doc() ->
#{value => ?T("URL | auto | undefined"),
note => "improved in 23.04",
desc =>
?T("An URL where http://../basic/#captcha[CAPTCHA] requests should be sent. NOTE: you need "
?T("An URL where _`basic.md#captcha|CAPTCHA`_ requests should be sent. NOTE: you need "
"to configure 'request_handlers' for 'ejabberd_http' listener "
"as well. "
"If set to 'auto', it builds the URL using a 'request_handler' "
@@ -696,8 +695,8 @@ doc() ->
note => "added in 23.10",
desc =>
?T("Modules to install from "
"https://docs.ejabberd.im/developer/extending-ejabberd/modules/#ejabberd-contrib"
"[ejabberd-contrib] at start time. "
"_`../../developer/extending-ejabberd/modules.md#ejabberd-contrib|ejabberd-contrib`_ "
"at start time. "
"The default value is an empty list of modules: '[]'.")}},
{jwt_auth_only_rule,
#{value => ?T("AccessName"),
@@ -924,8 +923,11 @@ doc() ->
[binary:part(ejabberd_config:version(), {0,5})]}}},
{update_sql_schema,
#{value => "true | false",
note => "updated in 24.06",
desc =>
?T("Allow ejabberd to update SQL schema. "
"This option was added in ejabberd 23.10, "
"and enabled by default since 24.06. "
"The default value is 'true'.")}},
{oauth_access,
#{value => ?T("AccessName"),
@@ -1155,7 +1157,7 @@ doc() ->
{s2s_access,
#{value => ?T("Access"),
desc =>
?T("This http://../basic/#access-rules[Access Rule] defines to "
?T("This _`basic.md#access-rules|Access Rule`_ defines to "
"what remote servers can s2s connections be established. "
"The default value is 'all'; no restrictions are applied, it is"
" allowed to connect s2s to/from all remote servers.")}},
@@ -1164,8 +1166,8 @@ doc() ->
desc =>
[?T("A path to a file with CA root certificates that will "
"be used to authenticate s2s connections. If not set, "
"the value of http://../toplevel/#ca-file[ca_file] will be used."), "",
?T("You can use http://../toplevel/#host-config[host_config] to specify this option per-vhost."), ""
"the value of _`ca_file`_ will be used."), "",
?T("You can use _`host_config`_ to specify this option per-vhost."), ""
]}},
{s2s_ciphers,
#{value => "[Cipher, ...]",
@@ -1378,10 +1380,13 @@ doc() ->
"The default value is the value defined in _`queue_type`_ "
"or 'ram' if the latter is not set.")}},
{sql_server,
#{value => ?T("Host"),
#{value => "Host | IP Address | ODBC Connection String | Unix Socket Path",
note => "improved in 24.06",
desc =>
?T("The hostname or IP address of the SQL server. For _`sql_type`_ "
"'mssql' or 'odbc' this can also be an ODBC connection string. "
"When _`sql_type`_ is 'mysql' or 'pgsql', this can be the path to "
"a unix domain socket expressed like: \"unix:/path/to/socket\"."
"The default value is 'localhost'.")}},
{sql_ssl,
#{value => "true | false",
+1 -5
View File
@@ -34,7 +34,7 @@
-export([ejabberd_started/0, config_reloaded/0, cert_expired/2]).
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3, format_status/2]).
terminate/2, code_change/3]).
-include("logger.hrl").
-define(CALL_TIMEOUT, timer:minutes(1)).
@@ -225,10 +225,6 @@ terminate(_Reason, State) ->
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
-spec format_status(normal | terminate, list()) -> term().
format_status(_Opt, Status) ->
Status.
%%%===================================================================
%%% Internal functions
%%%===================================================================
+1
View File
@@ -237,6 +237,7 @@ handle_cast(Msg, State) ->
{noreply, State}.
handle_info({mnesia_system_event, {mnesia_down, Node}}, State) ->
?INFO_MSG("Node ~p has left our Mnesia S2S tables", [Node]),
clean_table_from_bad_node(Node),
{noreply, State};
handle_info({mnesia_system_event, {mnesia_up, Node}}, State) ->
+28 -1
View File
@@ -56,11 +56,13 @@
get_vh_session_number/1,
get_vh_by_backend/1,
force_update_presence/1,
reset_vcard_xupdate_resend_presence/1,
connected_users/0,
connected_users_number/0,
user_resources/2,
kick_user/2,
kick_user/3,
kick_user_restuple/2,
get_session_pid/3,
get_session_sid/3,
get_session_sids/2,
@@ -926,6 +928,15 @@ force_update_presence({LUser, LServer}) ->
end,
Ss).
-spec reset_vcard_xupdate_resend_presence({binary(), binary()}) -> ok.
reset_vcard_xupdate_resend_presence({LUser, LServer}) ->
Mod = get_sm_backend(LServer),
Ss = get_sessions(Mod, LUser, LServer),
lists:foreach(
fun(#session{sid = {_, Pid}}) ->
ejabberd_c2s:reset_vcard_xupdate_resend_presence(Pid)
end, Ss).
-spec get_sm_backend(binary()) -> module().
get_sm_backend(Host) ->
@@ -1037,7 +1048,19 @@ get_commands_spec() ->
args_example = [<<"user1">>, <<"example.com">>],
result_desc = "Number of resources that were kicked",
result_example = 3,
result = {num_resources, integer}}].
result = {num_resources, integer}},
#ejabberd_commands{name = kick_user, tags = [session],
desc = "Disconnect user's active sessions",
module = ?MODULE, function = kick_user_restuple,
version = 2,
note = "modified in 24.06",
args = [{user, binary}, {host, binary}],
args_desc = ["User name", "Server name"],
args_example = [<<"user1">>, <<"example.com">>],
result_desc = "The result text indicates the number of sessions that were kicked",
result_example = {ok, <<"Kicked sessions: 2">>},
result = {res, restuple}}].
-spec connected_users() -> [binary()].
@@ -1072,5 +1095,9 @@ kick_user(User, Server, Resource) ->
Pid -> ejabberd_c2s:route(Pid, kick)
end.
kick_user_restuple(User, Server) ->
NumberBin = integer_to_binary(kick_user(User, Server)),
{ok, <<"Kicked sessions: ", NumberBin/binary>>}.
make_sid() ->
{misc:unique_timestamp(), self()}.
+1
View File
@@ -112,6 +112,7 @@ handle_cast(Msg, State) ->
{noreply, State}.
handle_info({mnesia_system_event, {mnesia_down, Node}}, State) ->
?INFO_MSG("Node ~p has left our Mnesia SM tables", [Node]),
Sessions =
ets:select(
session,
+2 -6
View File
@@ -67,12 +67,8 @@
-export([connecting/2, connecting/3,
session_established/2, session_established/3]).
-ifdef(OTP_RELEASE).
-if(?OTP_RELEASE >= 27).
-type(odbc_connection_reference() :: odbc:connection_reference()).
-else.
-type(odbc_connection_reference() :: pid()).
-endif.
-ifdef(ODBC_HAS_TYPES).
-type(odbc_connection_reference() :: odbc:connection_reference()).
-else.
-type(odbc_connection_reference() :: pid()).
-endif.

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