Compare commits

...

570 Commits

Author SHA1 Message Date
David Baker
a65196ee8c Update electron version 2017-08-23 21:17:07 +01:00
David Baker
9e57c9d78f v0.12.1 2017-08-23 15:58:50 +01:00
David Baker
16bc5359e4 Prepare changelog for v0.12.1 2017-08-23 15:58:49 +01:00
David Baker
2cec34021a v0.12.1 2017-08-23 15:58:05 +01:00
David Baker
c900b58120 Released js-sdk & react-sdk 2017-08-23 15:57:45 +01:00
David Baker
f523d93720 v0.12.1-rc.1 2017-08-22 18:57:20 +01:00
David Baker
6c7fa77684 Prepare changelog for v0.12.1-rc.1 2017-08-22 18:57:19 +01:00
David Baker
c7ddf6a80d v0.12.1-rc.1 2017-08-22 18:56:13 +01:00
David Baker
ab2a72a193 Bump version temporarily
so we get the diff from v0.12.0-rc.2
2017-08-22 18:55:33 +01:00
David Baker
6bdad8b5f6 Released js-sdk & react-sdk 2017-08-22 18:55:09 +01:00
David Baker
0b29b7f9fd Merge pull request #4832 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-08-22 18:17:45 +01:00
Sohom Bhattacharjee
1b84fc1d2e Translated using Weblate (Bengali (India))
Currently translated at 0.0% (0 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bn_IN/
2017-08-22 16:57:08 +00:00
Sohom Bhattacharjee
60d9ef5c67 Translated using Weblate (Bengali (India))
Currently translated at 0.0% (0 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bn_IN/
2017-08-22 16:56:34 +00:00
Balaji Ravichandran
0df68cb8e6 Translated using Weblate (Tamil)
Currently translated at 28.5% (59 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ta/
2017-08-22 16:49:40 +00:00
Weblate
f38df8b61b Merge remote-tracking branch 'origin/develop' into develop 2017-08-21 13:03:47 +00:00
Balaji Ravichandran
77dbac81ed Translated using Weblate (Tamil)
Currently translated at 17.3% (36 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ta/
2017-08-21 13:03:47 +00:00
lazz0
0d1d30ab32 Translated using Weblate (Spanish)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-08-21 13:03:47 +00:00
kaiyou
c28ad8e8ef Translated using Weblate (French)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2017-08-21 13:03:46 +00:00
Sohom Bhattacharjee
2306d6ffd6 Translated using Weblate (Bengali (India))
Currently translated at 0.0% (0 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bn_IN/
2017-08-21 13:03:46 +00:00
Richard Lewis
b54dabddd5 Merge pull request #4826 from vector-im/rxl881/drawerStyling
Misc styling fixes.
2017-08-21 14:03:40 +01:00
Richard Lewis
e0bc1133d7 Position add app widget. 2017-08-21 11:30:05 +01:00
Richard Lewis
94877b0ac4 App drawer bottom margin.
Minimised app drawer margin.
Make app body content full width.
2017-08-21 11:10:21 +01:00
Weblate
fe6857c6c2 Merge remote-tracking branch 'origin/develop' into develop 2017-08-17 22:55:31 +00:00
Jan Kudrik
fd7966b25e Translated using Weblate (Czech)
Currently translated at 24.6% (51 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/cs/
2017-08-17 22:55:30 +00:00
Matthew Hodgson
3664a86722 center apps 2017-08-17 23:55:24 +01:00
Weblate
93848fab53 Merge remote-tracking branch 'origin/develop' into develop 2017-08-17 18:06:12 +00:00
Jan Kudrik
59d2b4d819 Translated using Weblate (Czech)
Currently translated at 7.2% (15 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/cs/
2017-08-17 18:06:12 +00:00
Matthew Hodgson
4981723cea expand auxPanel when showing apps 2017-08-17 19:06:05 +01:00
Weblate
cc3d772f69 Merge remote-tracking branch 'origin/develop' into develop 2017-08-17 17:45:17 +00:00
Balaji Ravichandran
7114216394 Translated using Weblate (Tamil)
Currently translated at 14.4% (30 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ta/
2017-08-17 17:45:17 +00:00
joe moe
7023e7e096 Translated using Weblate (German)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-08-17 17:45:16 +00:00
Jan Kudrik
e0d292ace5 Translated using Weblate (Czech)
Currently translated at 2.8% (6 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/cs/
2017-08-17 17:45:16 +00:00
Richard Lewis
24e463116b Merge pull request #4774 from vector-im/rxl881/appFixes
Show / Hide apps icons
2017-08-17 18:45:12 +01:00
Richard Lewis
1bd9590c53 Kick travis 2017-08-17 18:26:38 +01:00
František Šindelář
849097a7a0 Translated using Weblate (Czech)
Currently translated at 0.9% (2 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/cs/
2017-08-17 17:01:38 +00:00
Jan Kudrik
b738fc4319 Translated using Weblate (Czech)
Currently translated at 0.4% (1 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/cs/
2017-08-17 16:59:38 +00:00
Richard Lewis
48b3075e44 Merge branch 'develop' of https://github.com/vector-im/riot-web into rxl881/appFixes 2017-08-17 17:20:21 +01:00
Richard Lewis
3dc347fbb8 Kick travis 2017-08-17 15:25:48 +01:00
Luke Barnard
5db01373bb Add i18n for Basque (eu), Latvian (lv), Telugu (te) 2017-08-16 11:15:48 +01:00
Luke Barnard
6cf671ad42 order languages in copy-res by iso code 2017-08-16 11:14:24 +01:00
Luke Barnard
064181731c v0.12.0-rc.1 2017-08-16 10:40:28 +01:00
Luke Barnard
35cd9ca12e Prepare changelog for v0.12.0-rc.1 2017-08-16 10:40:27 +01:00
Luke Barnard
e5dd37d2d6 v0.12.0-rc.1 2017-08-16 10:39:57 +01:00
Luke Barnard
c07c060b7d Fix jq command to use [] instead of ."matrix-js-sdk"
Because otherwise there might be a syntax error looking like
```
error: syntax error, unexpected QQSTRING_START, expecting IDENT
.dependencies."matrix-js-sdk"
```
2017-08-16 10:22:09 +01:00
Luke Barnard
cc8518101b js-sdk 0.8.0 react-sdk 0.10.0-rc.1 2017-08-16 10:10:03 +01:00
Luke Barnard
d684a33ae9 Fix translations 2017-08-15 18:23:11 +01:00
Luke Barnard
6068647840 Merge pull request #4797 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-08-15 18:16:10 +01:00
Weblate
61b4fdb53a Merge remote-tracking branch 'origin/develop' into develop 2017-08-15 10:16:38 +00:00
liwXO
e65ae80fce Translated using Weblate (Polish)
Currently translated at 99.5% (206 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-08-15 10:16:37 +00:00
Brendan Abolivier
90cb9b04f4 Translated using Weblate (French)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2017-08-15 10:16:37 +00:00
Luke Barnard
6cc62a183f CSS: Pills in messages cursor:pointer 2017-08-15 11:16:30 +01:00
IMIN
7857eea58f Translated using Weblate (Korean)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2017-08-13 03:58:30 +00:00
Weblate
d5038b35f6 Merge remote-tracking branch 'origin/develop' into develop 2017-08-11 16:48:32 +00:00
Balaji Ravichandran
2ff23f3b62 Translated using Weblate (Tamil)
Currently translated at 8.2% (17 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ta/
2017-08-11 16:48:32 +00:00
random
eb0c0e63ea Translated using Weblate (Italian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2017-08-11 16:48:32 +00:00
Luke Barnard
07ca70fd44 Fix scrollbar for pills with initial avatar 2017-08-11 17:48:25 +01:00
Balaji Ravichandran
ce1e9c3050 Added translation using Weblate (Tamil) 2017-08-11 14:03:21 +00:00
random
504209b5a6 Translated using Weblate (Italian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2017-08-11 12:36:47 +00:00
Weblate
7911df46a0 Merge remote-tracking branch 'origin/develop' into develop 2017-08-11 09:52:41 +00:00
David Baker
d610788866 Merge pull request #4777 from vector-im/luke/fix-quick-search-nav
move focus-via-up/down cursors to LeftPanel
2017-08-11 10:52:36 +01:00
Weblate
711a8cee8a Merge remote-tracking branch 'origin/develop' into develop 2017-08-11 09:49:29 +00:00
Oon Arfiandwi
7a3c52af7e Translated using Weblate (Indonesian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/id/
2017-08-11 09:49:28 +00:00
Kevin Németh
e633d43c38 Translated using Weblate (Hungarian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2017-08-11 09:49:28 +00:00
David Baker
3eeabe8d91 Merge pull request #4775 from vector-im/luke/fix-user-url-no-middle-panel
Remove userId property on RightPanel
2017-08-11 10:49:25 +01:00
Oon Arfiandwi
eb036bd8f1 Translated using Weblate (Indonesian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/id/
2017-08-10 21:15:51 +00:00
Weblate
72cbdb2e39 Merge remote-tracking branch 'origin/develop' into develop 2017-08-10 17:20:25 +00:00
Luke Barnard
752934350f Merge pull request #4776 from shvchk/patch-2
Make member device info buttons fluid and stackable with flexbox
2017-08-10 18:20:22 +01:00
Matthew Hodgson
5bfb5d4c3c move focus-via-up/down cursors to LeftPanel
Conflicts:
	src/components/structures/LeftPanel.js
2017-08-10 18:18:15 +01:00
Andrei Shevchuk
a72fc80ef6 Remove width 100% from device info buttons wrapper 2017-08-10 20:08:46 +03:00
Luke Barnard
44c6f3fafc Add todo to make RP listen to RVS 2017-08-10 16:59:12 +01:00
Andrei Shevchuk
68dd47aa7b Make member device info buttons fluid and stackable with flexbox
Buttons with short text stay as they are, buttons with long text don't get overflowed, but just grow and wrap on a new line if needed, still remaining aligned with others (see screenshot in PR comments)

Signed-off-by: Andrei Shevchuk <andrei@shevchuk.co>
2017-08-10 17:50:09 +03:00
Weblate
a13c0b12cb Merge remote-tracking branch 'origin/develop' into develop 2017-08-10 14:36:08 +00:00
Luke Barnard
535e33509b Merge pull request #4688 from vector-im/t3chguy/i18n_analytics
un-i18n Modal Analytics
2017-08-10 15:36:04 +01:00
Michael Telatynski
4c6836bc3f don't track error messages .2
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-08-10 15:13:30 +01:00
Michael Telatynski
9c5ceb6775 don't track error messages
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-08-10 13:56:01 +01:00
Weblate
d20c1fe029 Merge remote-tracking branch 'origin/develop' into develop 2017-08-10 12:29:44 +00:00
Marcel
aae7515339 Add Login Page LanguageDropdown CSS (#4767) 2017-08-10 13:29:41 +01:00
Luke Barnard
7269e7b84a Remove userId property on RightPanel
because we shouldn't have a dispatch AND have a property that do vaguely similar things. Ideally, the dispatch would send a userId and RP would do async work to get the member/avatar/displayname.
2017-08-10 13:16:31 +01:00
Weblate
81d123f652 Merge remote-tracking branch 'origin/develop' into develop 2017-08-10 09:35:49 +00:00
Sri Lakshmi
b8c0e844ea Translated using Weblate (Telugu)
Currently translated at 60.8% (126 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2017-08-10 09:35:49 +00:00
Alexandre Franke
6cab2ed6b9 Translated using Weblate (French)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2017-08-10 09:35:49 +00:00
Luke Barnard
72d250d8c4 Merge pull request #4773 from vector-im/luke/fix-quote-innerText
Quote using innerText
2017-08-10 10:35:45 +01:00
Luke Barnard
57f82c3c9e Quote using innerText
codep matrix-org/matrix-react-sdk#1289
2017-08-10 10:18:37 +01:00
Nathan van Beelen
918d0eb4fd Translated using Weblate (Dutch)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2017-08-09 19:40:13 +00:00
Richard Lewis
435ec448d6 Add improved icons from Matthew 2017-08-09 16:21:15 +01:00
Bhuvan Krishna
1e4d621ee7 Translated using Weblate (Telugu)
Currently translated at 60.8% (126 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2017-08-09 15:11:30 +00:00
Sri Lakshmi
370268bba8 Translated using Weblate (Telugu)
Currently translated at 60.3% (125 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2017-08-09 15:11:14 +00:00
Sri Lakshmi
8906aeb766 Translated using Weblate (Telugu)
Currently translated at 60.3% (125 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2017-08-09 14:45:33 +00:00
Richard Lewis
d9ebb11ba9 Merge branch 'develop' of https://github.com/vector-im/riot-web into rxl881/appFixes 2017-08-09 14:08:13 +01:00
Weblate
906ed3c78f Merge remote-tracking branch 'origin/develop' into develop 2017-08-09 08:30:53 +00:00
Luke Barnard
ee2fb17945 Merge pull request #4765 from vector-im/rav/karma-bits
Karma tweaks for riot-web
2017-08-09 09:30:49 +01:00
Richard van der Hoff
06ef674597 Enable fancy karma reporters
cargo-cult luke's stuff from react-sdk
2017-08-08 19:05:58 +01:00
Richard van der Hoff
df33d40285 Enable karma-sourcemap-loader
This turns (some) stacktraces back into something useful, so that unpicking
test failures is vaguely tractable
2017-08-08 19:05:49 +01:00
Weblate
b3108e4dff Merge remote-tracking branch 'origin/develop' into develop 2017-08-08 17:23:49 +00:00
Richard van der Hoff
0b2120e423 Merge pull request #4764 from MTRNord/patch-5
Fix typo with scripts/fetch-develop-deps.sh in Building From Source
2017-08-08 18:23:44 +01:00
Marcel
a3525f411d Fix typo with scripts/fetch-develop-deps.sh in Building From Source
scripts/fetch-develop-deps.sh vs scripts/fetch-develop.deps.sh
2017-08-08 19:22:07 +02:00
Weblate
f7c38992cc Merge remote-tracking branch 'origin/develop' into develop 2017-08-08 13:01:34 +00:00
David Baker
3e96892a91 Merge pull request #4757 from vector-im/luke/css-feature-pills-hide-avatar-setting
Adjust CSS for optional avatars in pills
2017-08-08 14:01:29 +01:00
Luke Barnard
274fc34868 Adjust CSS for optional avatars in pills
codep matrix-org/matrix-react-sdk#1277
2017-08-08 11:14:52 +01:00
Weblate
6cb979fc6f Merge remote-tracking branch 'origin/develop' into develop 2017-08-08 09:13:10 +00:00
Richard van der Hoff
10ee9f4de4 Merge pull request #4754 from vector-im/rav/fix_crypto_build
Fix crypto on develop
2017-08-08 10:13:06 +01:00
Richard van der Hoff
c31f66aed5 Jenkins.sh: only fetch head of dependency branches 2017-08-08 09:50:49 +01:00
Richard van der Hoff
7b024751d1 fetch-develop-deps: avoid breaking js-sdk
do `npm i` in react-sdk *before* symlinking js-sdk, to avoid moving a load of
deps from js-sdk to react-sdk and hence breaking the build.
2017-08-08 09:50:49 +01:00
Richard van der Hoff
9c3c1b7608 Make webpack exit non-zero on error
Pass `--bail` to webpack, so that if we can't find a module, we bail out rather
than deploy a broken version to /develop.

https://github.com/webpack/webpack/issues/708 is somewhat relevant.
2017-08-08 09:50:49 +01:00
Weblate
a8ddf528a8 Merge remote-tracking branch 'origin/develop' into develop 2017-08-06 19:11:38 +00:00
Matthew Hodgson
9f3c33758c Merge pull request #4464 from vsund/patch-1
Fix signing key url in readme
2017-08-06 20:11:32 +01:00
Weblate
ed9a4a3933 Merge remote-tracking branch 'origin/develop' into develop 2017-08-06 19:11:06 +00:00
Matthew Hodgson
bf38fead18 Merge pull request #4749 from jfmherokiller/gitignore-update
update gitignore to allow .idea directory to exist in subdirs
2017-08-06 20:11:00 +01:00
Weblate
b75402e772 Merge remote-tracking branch 'origin/develop' into develop 2017-08-06 19:10:34 +00:00
Matthew Hodgson
a98c734eb5 Merge pull request #4665 from uhoreg/compact
tweak compact theme
2017-08-06 20:10:27 +01:00
Jordan Moran Meyers
fb69ac33a0 update gitignore to allow .idea directory to exist in subdirs 2017-08-05 15:50:47 -05:00
Richard Lewis
25d1d785ba Updated icons 2017-08-05 00:23:55 +01:00
Richard Lewis
41afbb117d Add show and hide icons 2017-08-04 23:44:52 +01:00
Weblate
8b1650c382 Merge remote-tracking branch 'origin/develop' into develop 2017-08-03 14:56:03 +00:00
David Baker
4b5febadb7 Merge pull request #4740 from vector-im/luke/upgrade-dep-draft-js-0.11.0-alpha
Update draft-js from 0.10.1 to 0.11.0-alpha
2017-08-03 15:55:57 +01:00
Luke Barnard
8ca2af0fe7 Update draft-js from 0.10.1 to 0.11.0-alpha (see https://github.com/matrix-org/matrix-react-sdk/pull/1269) 2017-08-03 15:22:52 +01:00
Weblate
03228d945d Merge remote-tracking branch 'origin/develop' into develop 2017-08-03 14:21:40 +00:00
yuurii
3e845bc37c Translated using Weblate (Japanese)
Currently translated at 28.5% (59 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ja/
2017-08-03 14:21:39 +00:00
Osoitz
531f1e52eb Translated using Weblate (Basque)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eu/
2017-08-03 14:21:38 +00:00
David Baker
f5e5bb8720 Merge pull request #4739 from vector-im/t3chguy/mouse_forward_back-windows
electron support for mouse forward/back buttons in Windows
2017-08-03 15:21:33 +01:00
Michael Telatynski
a6d5158830 electron support for mouse forward/back buttons in Windows
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-08-03 15:03:50 +01:00
daniel tygel
dfa1ce8d77 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt_BR/
2017-08-03 13:46:44 +00:00
Jeff Huang
3ba4823fd7 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2017-08-03 00:43:45 +00:00
yuurii
b9ff6c873c Added translation using Weblate (Japanese) 2017-08-02 13:32:57 +00:00
Weblate
6653ccf9a1 Merge remote-tracking branch 'origin/develop' into develop 2017-08-02 12:06:35 +00:00
Luke Barnard
4b8764c070 Merge pull request #4730 from vector-im/luke/update-dep-draft-js
Update draft-js from 0.8.1 to 0.10.1
2017-08-02 13:06:31 +01:00
Luke Barnard
2f99a4883f Update draft-js from 0.8.1 to 0.10.1
Hopefully to fix #4675 and friends
2017-08-02 11:52:47 +01:00
Weblate
73e5cc9721 Merge remote-tracking branch 'origin/develop' into develop 2017-08-01 16:30:35 +00:00
Walter
b12741464e Translated using Weblate (Russian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-08-01 16:30:34 +00:00
Richard Lewis
af85f18eae Styling tweaks 2017-08-01 17:30:22 +01:00
Osoitz
2551a945b8 Translated using Weblate (Basque)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eu/
2017-08-01 15:29:26 +00:00
Osoitz
6bab8295d7 Added translation using Weblate (Basque) 2017-08-01 14:02:02 +00:00
Michael Telatynski
5b6dbfb701 Merge branch 'develop' of github.com:vector-im/riot-web into t3chguy/i18n_analytics 2017-07-28 21:02:48 +01:00
Weblate
8b26d5b7fb Merge remote-tracking branch 'origin/develop' into develop 2017-07-28 14:34:13 +00:00
David Baker
384727a553 Merge pull request #4693 from vector-im/luke/css-sending-event-tile
Make pills, emoji translucent when sending
2017-07-28 15:34:09 +01:00
Luke Barnard
397523f4ac Make pills, emoji translucent when sending
also fix header colours, which now inherit the font colour of the event tile (so all headers have the correct colour when sending or when the event tile is highlighted for a mention)
2017-07-28 15:13:36 +01:00
Weblate
ca388b8c7c Merge remote-tracking branch 'origin/develop' into develop 2017-07-28 13:15:45 +00:00
Richard Lewis
ca5fdff72f Merge pull request #4690 from vector-im/rxl881/widgetPermissions
Widget permissions styling and icon
2017-07-28 14:15:41 +01:00
Richard Lewis
317ff8c6af Beta tag styling 2017-07-27 23:02:19 +01:00
Richard Lewis
50f5abf535 Permissions button cursor. 2017-07-27 20:19:08 +01:00
Richard Lewis
c1fe3533c4 Add red cancel icon and styling. 2017-07-27 18:10:56 +01:00
Michael Telatynski
93a3c896a4 un-i18n Modal Analytics
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-07-27 17:45:02 +01:00
Richard Lewis
0bee03e86f Fix App body height.
App warning colours.
App loading styling.
2017-07-27 16:40:33 +01:00
LuPa
de5db26214 Translated using Weblate (Spanish)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-07-26 18:20:02 +00:00
Weblate
a5771c48ba Merge remote-tracking branch 'origin/develop' into develop 2017-07-26 15:58:35 +00:00
Sri Lakshmi
5b3fb36ac7 Translated using Weblate (Telugu)
Currently translated at 6.2% (13 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2017-07-26 15:58:35 +00:00
Bamstam
c8a39e361d Translated using Weblate (German)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-07-26 15:58:35 +00:00
David Baker
068a2b869e Merge pull request #4682 from vector-im/luke/css-fix-rte-auto-scroll
CSS required for composer autoscroll
2017-07-26 16:58:32 +01:00
Travis Ralston
e7c3563358 Translated using Weblate (English (United States))
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/en_US/
2017-07-26 15:51:27 +00:00
Richard Lewis
ff2554c8a6 App permission component styling. 2017-07-26 16:48:24 +01:00
Luke Barnard
35c239aae8 CSS required for composer autoscroll
for https://github.com/matrix-org/matrix-react-sdk/pull/1248
2017-07-26 16:45:00 +01:00
Weblate
c2e1b6c613 Merge remote-tracking branch 'origin/develop' into develop 2017-07-25 09:21:55 +00:00
David Baker
ec6efd2488 Merge pull request #4608 from vector-im/dbkr/groupview_edit
CSS for group edit UI
2017-07-25 10:21:51 +01:00
Weblate
1a09fc60f0 Merge remote-tracking branch 'origin/develop' into develop 2017-07-25 08:55:42 +00:00
Matthew Hodgson
bcedc206e1 seems folk prefer darker pills 2017-07-25 09:55:34 +01:00
Weblate
77582e0a17 Merge remote-tracking branch 'origin/develop' into develop 2017-07-24 21:13:38 +00:00
Kevin Németh
be0cb667c8 Translated using Weblate (Hungarian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2017-07-24 21:13:37 +00:00
Matthew Hodgson
dbeeacf11c tweak pill colours some more 2017-07-24 22:13:29 +01:00
Weblate
d0344fef8b Merge remote-tracking branch 'origin/develop' into develop 2017-07-24 20:22:49 +00:00
Richard van der Hoff
7dbb4bba09 Merge pull request #4671 from vector-im/rav/promise_fail_fails
Fix a couple of minor errors in the room list
2017-07-24 21:22:45 +01:00
Richard van der Hoff
bc2f639aae Fix a couple of minor errors in the room list
bluebird promises don't support .fail, so some operations didn't work quite
right. We should use .catch instead.
2017-07-24 17:19:46 +01:00
Weblate
8445eb0959 Merge remote-tracking branch 'origin/develop' into develop 2017-07-24 13:49:52 +00:00
Lauris Mierkalns
de04cba41f Translated using Weblate (Latvian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/lv/
2017-07-24 13:49:52 +00:00
Luke Barnard
e923847dac Make user mentions more pill-like
By adding subtle background-colors
2017-07-24 14:49:43 +01:00
Hubert Chathi
efa156b53a tweak compact theme
- add some comments
- decrease size of info events and MELS (#4363.2)
- reduce spacing between paragraphs, lists, etc (#4363.3 & 4)

Signed-off-by: Hubert Chathi <hubert@uhoreg.ca>
2017-07-23 23:02:29 -04:00
David Baker
d2f02e8e99 Swap classes instead of using 0 height elements 2017-07-21 14:14:27 +01:00
David Baker
5ba3453dcc cursor: pointer on avatar picker 2017-07-21 11:12:46 +01:00
Lauris Mierkalns
9d8215e49f Added translation using Weblate (Latvian) 2017-07-20 23:24:17 +00:00
Weblate
2cc153c796 Merge remote-tracking branch 'origin/develop' into develop 2017-07-20 13:05:10 +00:00
Richard Lewis
55084d3aca Merge pull request #4584 from vector-im/rxl881/beta
Styling for beta testing icon.
2017-07-20 14:05:06 +01:00
Weblate
878ff9826a Merge remote-tracking branch 'origin/develop' into develop 2017-07-20 10:50:26 +00:00
Richard van der Hoff
7e00a86048 Merge pull request #4650 from vector-im/rav/bump_indexeddb_timeot
Increase the timeout for clearing indexeddbs
2017-07-20 11:50:23 +01:00
Weblate
e133160a68 Merge remote-tracking branch 'origin/develop' into develop 2017-07-20 10:25:25 +00:00
Kegan Dougal
62579ed6b0 Add tracebacks to deploy exceptions 2017-07-20 11:25:19 +01:00
Weblate
98e3746a1e Merge remote-tracking branch 'origin/develop' into develop 2017-07-20 10:16:40 +00:00
Luke Barnard
01eef7eb41 Merge branch 'develop' of github.com:vector-im/riot-web into develop 2017-07-20 11:16:26 +01:00
Luke Barnard
ccf5d6fc90 Adjust pill CSS
-Remove space after mentions without pill background colour
-Increase space between pill avatar and first letter of the pill by 1px
2017-07-20 11:14:54 +01:00
Weblate
055224693a Merge remote-tracking branch 'origin/develop' into develop 2017-07-20 10:02:15 +00:00
Kegsay
9864ce5bb2 Support multiple config.json symlinks in redeploy.py (#4644)
* Support multiple config.json symlinks in redeploy.py

* Review comments
2017-07-20 11:02:10 +01:00
Richard van der Hoff
238afde00a Increase the timeout for clearing indexeddbs
Chrome seems to take ages (like, 1500ms regularly) to clear out the indexeddbs,
and that's causing test timeouts. Bump the timeout to hack around it.

Also: clear both dbs in parallel (can't hurt, right?) and improve diagnostics
on the process.
2017-07-20 11:01:27 +01:00
Bamstam
4b67900225 Translated using Weblate (German)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-07-19 20:52:22 +00:00
Weblate
fb10357dd5 Merge remote-tracking branch 'origin/develop' into develop 2017-07-19 16:26:16 +00:00
Luke Barnard
f7d282fc8e Merge pull request #4597 from vector-im/luke/css-matrixto-timeline-pills
Make some adjustments to mx_UserPill and mx_RoomPill
2017-07-19 17:26:13 +01:00
Weblate
11ae3dd46c Merge remote-tracking branch 'origin/develop' into develop 2017-07-19 16:16:06 +00:00
Luke Barnard
3544c2b0c8 Merge pull request #4639 from vector-im/luke/css-rte-pre
Apply CSS to <pre> tags to distinguish them from each other
2017-07-19 17:16:02 +01:00
Weblate
edfa3c1980 Merge remote-tracking branch 'origin/develop' into develop 2017-07-19 13:27:40 +00:00
Bhuvan Krishna
620f39c6a2 Translated using Weblate (Telugu)
Currently translated at 1.4% (3 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2017-07-19 13:27:40 +00:00
Luke Barnard
0c253e2437 Merge pull request #4643 from vector-im/luke/fix-room-tile-dnd
Use `catch` instead of `fail` to handle room tag error
2017-07-19 14:27:37 +01:00
Luke Barnard
53ae42ed68 Use catch instead of fail to handle room tag error
Because bluebird doesn't support fail
2017-07-19 14:11:22 +01:00
Luke Barnard
871c9e6d3e Add bing mention pill CSS
Useful with https://github.com/matrix-org/matrix-react-sdk/pull/1234
2017-07-19 11:02:51 +01:00
Luke Barnard
ccc30fb52e Apply CSS to <pre> tags to distinguish them from each other 2017-07-19 09:25:53 +01:00
Weblate
745b803d28 Merge remote-tracking branch 'origin/develop' into develop 2017-07-18 16:45:25 +00:00
Matthew Hodgson
bd693768cc deliberately de-theme pre tags 2017-07-18 17:45:17 +01:00
Weblate
6e1c40ea0f Merge remote-tracking branch 'origin/develop' into develop 2017-07-18 14:50:34 +00:00
Matthew Hodgson
b45108d80d ooooops, fix dark theme code blocks correctly 2017-07-18 15:50:28 +01:00
Weblate
ec68c54644 Merge remote-tracking branch 'origin/develop' into develop 2017-07-18 14:33:48 +00:00
erciccione
4e5e5dd6b3 Translated using Weblate (Italian)
Currently translated at 96.1% (199 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2017-07-18 14:33:48 +00:00
Matthew Hodgson
e7ba618bbe fix text in code blocks on dark theme 2017-07-18 15:33:41 +01:00
David Baker
fc470cd20d Merge remote-tracking branch 'origin/develop' into dbkr/groupview_edit 2017-07-18 11:14:27 +01:00
David Baker
cd418a5525 Retest 2017-07-17 18:16:50 +01:00
David Baker
65b9086f18 Add group header button css 2017-07-17 17:20:11 +01:00
Luke Barnard
0e71ea7a5a Make some adjustments to mx_UserPill and mx_RoomPill
So that they can appear correctly in the body of a text message.
2017-07-17 14:52:08 +01:00
František Šindelář
faa9fa8db9 Added translation using Weblate (Czech) 2017-07-15 13:26:27 +00:00
Richard Lewis
f272961fbd Styling for beta testing icon. 2017-07-14 23:30:47 +01:00
Weblate
ac0d29dc06 Merge remote-tracking branch 'origin/develop' into develop 2017-07-14 17:04:10 +00:00
Luke Barnard
cb4f57eb4a Merge pull request #4583 from vector-im/luke/feature-rte-pills
CSS for decorated matrix.to links in the composer
2017-07-14 18:04:05 +01:00
Luke Barnard
a1b4b9992e Use $accent-fg-color instead of #fff 2017-07-14 17:59:53 +01:00
Luke Barnard
18a6ee5a52 white -> #fff 2017-07-14 17:52:11 +01:00
Luke Barnard
de0fd588b6 Add $rte-room-pill-color: #aaa 2017-07-14 17:51:25 +01:00
David Baker
54f44af494 Make editing prettier 2017-07-14 17:23:44 +01:00
Luke Barnard
38899c6011 CSS for decorated matrix.to links in the composer 2017-07-14 17:23:16 +01:00
Weblate
dd77147313 Merge remote-tracking branch 'origin/develop' into develop 2017-07-14 15:43:17 +00:00
David Baker
1690f875ca Merge pull request #4579 from vector-im/rav/wait_longer_for_client
Deflake the joining test
2017-07-14 16:43:13 +01:00
Richard van der Hoff
66ddf25977 Deflake the joining test
Just give the client longer to get started (it seems to be taking a long time
to get started talking to indexeddb)
2017-07-14 16:14:42 +01:00
Weblate
c24b04d19b Merge remote-tracking branch 'origin/develop' into develop 2017-07-14 14:43:00 +00:00
Richard van der Hoff
0c31c62a62 build fix: bump to mock-request 1.1
This should have happened with 32ef273f: now that we are using
flushAllExpected, we nee matrix-mock-request 1.1.0
2017-07-14 15:41:13 +01:00
David Baker
8c9afc2dfd Make GroupView more consistent with RoomView 2017-07-14 15:39:46 +01:00
Weblate
bd06a1c393 Merge remote-tracking branch 'origin/develop' into develop 2017-07-14 14:05:12 +00:00
Kegsay
40a47f8c7a Allow Riot to load up different configs depending on the domain (#4575)
Initially try to load `config.$domain.json` and only if that fails, load
`config.json`. Configs are not muxxed in any way, it either entirely uses
the domain config, or entirely uses `config.json`.
2017-07-14 15:05:07 +01:00
Weblate
8516c9d5b5 Merge remote-tracking branch 'origin/develop' into develop 2017-07-14 13:55:25 +00:00
David Baker
caa5751d50 Merge pull request #4577 from vector-im/rav/bump_react_versions
Bump react to 15.6 to fix build problems
2017-07-14 14:55:21 +01:00
Richard van der Hoff
01d954e4ab Bump react to 15.6 to fix build problems
matrix-react-test-tools requires react 15.6 or later, so make sure we require
it in riot-web too.
2017-07-14 14:45:44 +01:00
Tong Hui
f6f461c571 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hans/
2017-07-14 12:22:30 +00:00
Brendan Abolivier
e1e7492f17 Translated using Weblate (French)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2017-07-14 12:15:20 +00:00
Weblate
ea85a3c3d9 Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 17:46:57 +00:00
Richard Lewis
c0830b48d0 Merge pull request #4567 from vector-im/rxl881/widgetButtons
Improve AppTile menu bar button styling.
2017-07-13 18:46:53 +01:00
David Baker
e60bf48134 CSS for start of group edit support 2017-07-13 18:42:14 +01:00
Weblate
ea7d923d76 Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 16:46:16 +00:00
Luke Barnard
5e259ec176 Merge pull request #4572 from vector-im/rav/async_to_bluebird
Transform `async` functions to bluebird promises
2017-07-13 17:46:12 +01:00
Richard van der Hoff
3ec4b25793 Transform async functions to bluebird promises
It turns out that the assertion made in
https://github.com/vector-im/riot-web/pull/4565 about `async` functions
returning bluebird promises was only correct when babel used an inline version
of the `asyncToGenerator` helper; in react-sdk we are using
`babel-transform-runtime` which means that we use a separate
`babel-runtime/helpers/asyncToGenerator`, which returns a native (or core-js)
Promise.

This meant that we were still in the situation where some methods returned
native Promises, and some bluebird ones, which is exactly the situation I
wanted to resolve by switching to bluebird in the first place: in short,
unless/until we get rid of all code which assumes Promises have a `done` method
etc, we need to make sure that everything returns a bluebird promise.

(Aside: there was debate over whether in the long term we should be trying to
wean ourselves off bluebird promises by assuming all promises are native. The
conclusion was that the complexity hit involved in doing so outweighed any
benefit of a potential future migration away from bluebird).
2017-07-13 17:34:47 +01:00
Weblate
c5b72f0192 Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 12:33:54 +00:00
David Baker
b9b0e98ccf Merge pull request #4570 from vector-im/rav/joining_test
use flushAllExpected in joining test
2017-07-13 13:33:50 +01:00
Richard van der Hoff
32ef273f9d use flushAllExpected in joining test
It won't do much to help with the vm stopping for 300ms, but it should make the
code and logs clearer.
2017-07-13 13:23:10 +01:00
Weblate
76f6a19733 Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 11:20:13 +00:00
Richard van der Hoff
348ec52b14 Merge pull request #4565 from vector-im/rav/bluebird
Switch riot-web to bluebird
2017-07-13 12:20:08 +01:00
Richard van der Hoff
76181f4771 Merge remote-tracking branch 'origin/develop' into rav/bluebird 2017-07-13 12:04:54 +01:00
Weblate
9072ff93b9 Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 10:58:24 +00:00
Luke Barnard
a303e1e1b8 Merge pull request #4564 from vector-im/rav/await_login_component
loading tests: wait for login component
2017-07-13 11:58:21 +01:00
Weblate
acbcde85ce Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 10:33:32 +00:00
Luke Barnard
ba1166d0d0 Merge pull request #4568 from vector-im/luke/remove-old-composer
Remove CSS for the MessageComposerInputOld
2017-07-13 11:33:28 +01:00
Richard van der Hoff
7238c4dfac Fix overlooked q 2017-07-13 11:33:25 +01:00
Luke Barnard
d901515059 rethemedex 2017-07-13 10:16:23 +01:00
Luke Barnard
f5c4d903e6 Remove CSS for TabComplete 2017-07-13 10:11:58 +01:00
Richard Lewis
e15c8e473f AppTile menu bar button styling. 2017-07-13 09:44:19 +01:00
Richard van der Hoff
69eb1a49d4 Fix a broken test
turns out that you could call defer.resolve on q defers as an unbound function,
whereas that doesn't work with bluebird promises.
2017-07-13 00:56:13 +01:00
Richard van der Hoff
1d2d086a58 Replace q.allSettled()
Bluebird doesn't have an `allSettled` method, so instead catch the exceptions and
use `all`.
2017-07-13 00:50:01 +01:00
Richard van der Hoff
4c5b5ca0ba replace q.Promise with new Promise 2017-07-13 00:50:01 +01:00
Richard van der Hoff
d5b550f89a replace q method calls with bluebird ones
```
find src test -name '*.js' |
    xargs perl -i -pe 's/q\.(all|defer|reject|delay|try|isFulfilled)\(/Promise.$1(/'
```
2017-07-13 00:50:01 +01:00
Richard van der Hoff
b29b4a959b q(...) -> Promise.resolve
```
find src test -name '*.js' | xargs perl -i -pe 's/\b[qQ]\(/Promise.resolve(/'
```
2017-07-13 00:50:01 +01:00
Richard van der Hoff
10decf95f6 replace imports of q with bluebird
update `package.json`

```
find src test -name '*.js' |
    xargs perl -i -pe 'if (/require\(.[qQ].\)/) { $_ = "import Promise from '\''bluebird'\'';\n"; }'

find src test -name '*.js' |
    xargs perl -i -pe 'if (/import [qQ] /) { $_ = "import Promise from '\''bluebird'\'';\n"; }'
```
2017-07-13 00:48:31 +01:00
Richard van der Hoff
b2403d59b7 loading tests: wait for login component
Rather than a fixed delay, use matrix-react-test-utils to wait for the login
component to appear. Hopefully this will deflakify some tests.
2017-07-13 00:18:49 +01:00
Richard van der Hoff
0f8a2554dc Enable colours for karma test output
I don't really know why we disable colours here.
2017-07-13 00:18:10 +01:00
Weblate
668199e219 Merge remote-tracking branch 'origin/develop' into develop 2017-07-12 17:29:15 +00:00
Andrey
498feeed21 Translated using Weblate (Russian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-07-12 17:29:15 +00:00
erciccione
4040c1d931 Translated using Weblate (Italian)
Currently translated at 58.9% (122 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2017-07-12 17:29:14 +00:00
Bamstam
e774e807c6 Translated using Weblate (German)
Currently translated at 99.5% (206 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-07-12 17:29:14 +00:00
Rami Taibah
f80629db44 Translated using Weblate (Arabic)
Currently translated at 14.9% (31 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ar/
2017-07-12 17:29:14 +00:00
Luke Barnard
248944a300 Merge pull request #4560 from vector-im/luke/fix-ctrl-k
Implement the focus_room_filter action
2017-07-12 18:29:10 +01:00
Luke Barnard
188a58e5c7 RateLimitedFunc -> rate_limited_func 2017-07-12 18:18:13 +01:00
Luke Barnard
3e1a909b1d Just use the onKeyDown of the <input> 2017-07-12 17:46:27 +01:00
Luke Barnard
41cd238e02 Update to reflect previous implementation
Which was a74bbb424c
2017-07-12 17:10:43 +01:00
Luke Barnard
4fe4e10abb Implement the focus_room_filter action
This is for ctrl+k room filtering and switching
2017-07-12 13:49:57 +01:00
Andrey
659ac2e8c7 Translated using Weblate (Russian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-07-12 11:02:09 +00:00
strix aluco
71396e062d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2017-07-12 02:38:52 +00:00
Szimszon
2ba1a84b0c Translated using Weblate (Hungarian)
Currently translated at 100.0% (207 of 207 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2017-07-11 16:40:51 +00:00
Weblate
b5ef34b0a0 Merge remote-tracking branch 'origin/develop' into develop 2017-07-11 16:36:15 +00:00
Richard van der Hoff
898725082a Remove spurious comma
I am messing this up - fix to 0bbce1c
2017-07-11 17:35:25 +01:00
Weblate
a00781b733 Merge remote-tracking branch 'origin/develop' into develop 2017-07-11 16:04:20 +00:00
Luke Barnard
a619001533 Merge pull request #4530 from vector-im/dbkr/groups_better_groupview
CSS for Rooms in Group View
2017-07-11 17:04:16 +01:00
Weblate
2c65bd097b Merge remote-tracking branch 'origin/develop' into develop 2017-07-11 16:01:08 +00:00
Richard van der Hoff
0bbce1c140 Add missing i18n string
This should have been part of
https://github.com/vector-im/riot-web/pull/4557/files
2017-07-11 17:00:04 +01:00
Weblate
b3abf7c592 Merge remote-tracking branch 'origin/develop' into develop 2017-07-11 15:46:47 +00:00
Richard van der Hoff
a201f74115 Merge pull request #4557 from vector-im/rav/homepage_again
more HomePage tweaks
2017-07-11 16:46:43 +01:00
Richard van der Hoff
bc60fa81af more HomePage tweaks
* Don't log errors with no context
* i18nify the "Couldn't load home page" message
2017-07-11 14:29:47 +01:00
Weblate
c465f40179 Merge remote-tracking branch 'origin/develop' into develop 2017-07-11 13:27:41 +00:00
Richard van der Hoff
d25b441add Merge pull request #4556 from vector-im/rav/homepage_unmounted_guard
Give HomePage an unmounted guard
2017-07-11 14:27:38 +01:00
Richard van der Hoff
d755903fdb typo 2017-07-11 14:10:18 +01:00
Richard van der Hoff
8ac26dd19f Give HomePage an unmounted guard
Also add missing return in error-handling path
2017-07-11 14:08:16 +01:00
Weblate
4d34809279 Merge remote-tracking branch 'origin/develop' into develop 2017-07-11 12:23:32 +00:00
Richard van der Hoff
b375c71a28 fix comments on node versions 2017-07-11 13:23:15 +01:00
David Baker
cefc3e6da9 Make CSS more generic 2017-07-10 19:32:25 +01:00
Travis Ralston
bc88585026 Translated using Weblate (English (United States))
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/en_US/
2017-07-10 15:03:57 +00:00
David Baker
7a1494fc46 Merge remote-tracking branch 'origin/develop' into dbkr/groups_better_groupview 2017-07-10 14:35:51 +01:00
Weblate
ab95905472 Merge remote-tracking branch 'origin/develop' into develop 2017-07-10 12:56:07 +00:00
Sri Lakshmi
61e5fd759a Translated using Weblate (Telugu)
Currently translated at 0.9% (2 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2017-07-10 12:56:07 +00:00
Luke Barnard
c1b8879b6b Merge pull request #4500 from vector-im/luke/feature-enable-RTE
Take RTE out of labs
2017-07-10 13:56:02 +01:00
Weblate
f033234abe Merge remote-tracking branch 'origin/develop' into develop 2017-07-10 08:37:37 +00:00
LuPa
f133409207 Translated using Weblate (Spanish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-07-10 08:37:37 +00:00
നിദര്‍ശ്
a1681f8576 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-10 08:37:36 +00:00
Bamstam
d7d61ab01d Translated using Weblate (German)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-07-10 08:37:36 +00:00
Ross Schulman
3175387c73 Translated using Weblate (Esperanto)
Currently translated at 98.0% (202 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-07-10 08:37:36 +00:00
Luke Barnard
d98d493420 Merge pull request #4468 from vector-im/dbkr/my_groups
CSS for Groups page
2017-07-10 09:37:32 +01:00
Kelvin
c2c6c14ec5 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-07 19:25:22 +00:00
നിദര്‍ശ്
e77b1ea87b Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-07 19:11:43 +00:00
Pirate Praveen Arimbrathodiyil
3930720127 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-07 19:11:30 +00:00
നിദര്‍ശ്
ae2f1ff382 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-07 19:11:09 +00:00
Pirate Praveen Arimbrathodiyil
5ce3d5dc36 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-07 19:09:49 +00:00
David Baker
5f5a802b44 Add CSS from react-sdk PR feedback 2017-07-07 18:34:57 +01:00
David Baker
052f9effc1 Merge remote-tracking branch 'origin/develop' into dbkr/groups_better_groupview 2017-07-07 12:02:38 +01:00
David Baker
b4602fd2b1 Comment 2017-07-07 10:49:19 +01:00
David Baker
43bdc04637 Merge remote-tracking branch 'origin/develop' into dbkr/my_groups 2017-07-07 10:47:41 +01:00
Weblate
700672b6ec Merge remote-tracking branch 'origin/develop' into develop 2017-07-06 21:04:36 +00:00
Luke Barnard
e36899c30f Merge pull request #4442 from vector-im/erikj/group_server
CSS for GroupView
2017-07-06 22:04:30 +01:00
David Baker
e04f34a202 More CSS for group view 2017-07-06 19:14:12 +01:00
Weblate
d34164ec49 Merge remote-tracking branch 'origin/develop' into develop 2017-07-06 13:08:42 +00:00
Luke Barnard
fc5ce7fb61 Merge pull request #4525 from vector-im/t3chguy/markdown_allow_u
remove unused class
2017-07-06 14:08:37 +01:00
Michael Telatynski
a8d5f7d5eb remove unused class
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-07-06 13:53:17 +01:00
Weblate
efa0184034 Merge remote-tracking branch 'origin/develop' into develop 2017-07-06 09:27:31 +00:00
Luke Barnard
0796b304cc Merge pull request #4466 from vector-im/luke/css-rte-improvements
Fix long words causing MessageComposer to widen
2017-07-06 10:27:25 +01:00
Weblate
3d167d8a27 Merge remote-tracking branch 'origin/develop' into develop 2017-07-05 17:22:13 +00:00
Luke Barnard
d4435daf31 Merge pull request #4516 from vector-im/luke/css-visual-bell
Add visual bell animation for RTE
2017-07-05 18:22:09 +01:00
Luke Barnard
07e8d4ef69 Add visual bell animation for RTE 2017-07-05 18:13:23 +01:00
Weblate
e8c8a0a2c8 Merge remote-tracking branch 'origin/develop' into develop 2017-07-05 13:00:08 +00:00
Luke Barnard
8daa0fced8 Merge pull request #4502 from vector-im/luke/fix-rte-autocomplete-truncate
Truncate auto-complete pills properly
2017-07-05 14:00:02 +01:00
Luke Barnard
65a160f24a Merge branch 'develop' into luke/fix-rte-autocomplete-truncate 2017-07-05 13:45:06 +01:00
Weblate
04fd29c8b7 Merge remote-tracking branch 'origin/develop' into develop 2017-07-05 12:42:58 +00:00
Richard van der Hoff
43a70c2bfb Merge pull request #4512 from vector-im/rav/chrome_headless
Use chrome headless instead of phantomjs
2017-07-05 13:42:52 +01:00
Richard van der Hoff
a14bc9a9b1 README: minor fixes 2017-07-05 11:47:38 +01:00
Richard van der Hoff
ba0073ca71 README: Add notes on running tests 2017-07-05 11:45:33 +01:00
Weblate
e128434acd Merge remote-tracking branch 'origin/develop' into develop 2017-07-05 09:55:03 +00:00
Tong Hui
9f05236503 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hans/
2017-07-05 09:55:01 +00:00
Richard van der Hoff
60703bdcfc Log errors thrown by getThirdpartyProtocols
- so that it appears in rageshakes and test logs.
2017-07-05 10:54:10 +01:00
David Baker
2ccd36d09e Merge remote-tracking branch 'origin/develop' into erikj/group_server 2017-07-05 10:13:53 +01:00
Richard van der Hoff
cfe9e762ad Use trusty dist 2017-07-05 10:01:13 +01:00
Richard van der Hoff
9969d6095d Remove phantomjs; add chrome 2017-07-05 09:43:40 +01:00
Richard van der Hoff
38b1ca9b90 Use headless chrome instead of phantomjs for tests 2017-07-05 09:35:51 +01:00
Luke Barnard
b4b33ae06f Add CSS class to truncate certain autocompletions 2017-07-04 16:49:11 +01:00
Luke Barnard
1e569e67b1 Do not truncate autocomplete provider names 2017-07-04 16:40:15 +01:00
Weblate
8b6ed9f993 Merge remote-tracking branch 'origin/develop' into develop 2017-07-04 15:38:45 +00:00
Richard van der Hoff
48889b51b0 Bump to matrix-mock-request 1.0.0
- for consistency with js-sdk updates
2017-07-04 16:38:19 +01:00
Weblate
c6492b3d8a Merge remote-tracking branch 'origin/develop' into develop 2017-07-04 15:30:17 +00:00
Kelvin
92ff1f2671 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-04 15:30:16 +00:00
Richard van der Hoff
5312c9ad4c Merge pull request #4489 from vector-im/rav/use_external_mock_request
Use external mock-request
2017-07-04 16:30:11 +01:00
Luke Barnard
77a52b02cb Take RTE out of labs
Goes with https://github.com/matrix-org/matrix-react-sdk/pull/1176
2017-07-04 16:26:19 +01:00
Richard van der Hoff
bd1196716a Use external mock-request
mock-request is now factored out to matrix-mock-request; use it
2017-07-04 15:59:21 +01:00
Nathan van Beelen
185a5b51ff Translated using Weblate (Dutch)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2017-07-03 20:28:27 +00:00
Pirate Praveen Arimbrathodiyil
d5e1bfab48 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 18:24:09 +00:00
Kelvin
8178f12ae8 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 18:21:50 +00:00
Kelvin
97c4cd49b0 Translated using Weblate (Malayalam)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 18:19:39 +00:00
Weblate
b7cc469f7b Merge remote-tracking branch 'origin/develop' into develop 2017-07-03 18:04:36 +00:00
Kelvin
c565d31e53 Translated using Weblate (Malayalam)
Currently translated at 99.0% (204 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 18:04:35 +00:00
Luke Barnard
cb17cb0535 Merge pull request #4443 from vector-im/t3chguy/patch-3
fix Quote not closing contextual menu
2017-07-03 19:04:31 +01:00
Pirate Praveen Arimbrathodiyil
e0b9b4320a Translated using Weblate (Malayalam)
Currently translated at 98.0% (202 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 17:47:09 +00:00
Kelvin
5e5096c69d Translated using Weblate (Malayalam)
Currently translated at 98.0% (202 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 17:38:35 +00:00
Pirate Praveen Arimbrathodiyil
c45f976d34 Translated using Weblate (Malayalam)
Currently translated at 97.0% (200 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 17:19:08 +00:00
Michael Telatynski
39ff11fe82 preinstall phantomjs to try get rid of boom error 2017-07-03 18:13:56 +01:00
Kelvin
3a055634f2 Translated using Weblate (Malayalam)
Currently translated at 97.0% (200 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 17:10:11 +00:00
Pirate Praveen Arimbrathodiyil
802e2e6bba Translated using Weblate (Malayalam)
Currently translated at 96.1% (198 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 17:06:05 +00:00
നിദര്‍ശ്
ca1b5ed611 Translated using Weblate (Malayalam)
Currently translated at 96.1% (198 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ml/
2017-07-03 16:22:14 +00:00
Weblate
5475f8ffbd Merge remote-tracking branch 'origin/develop' into develop 2017-07-03 08:57:59 +00:00
Dreamwhite
657e195455 Translated using Weblate (Italian)
Currently translated at 54.8% (113 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/

Is the same text
2017-07-03 08:57:59 +00:00
Bamstam
7894ac6651 Translated using Weblate (German)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-07-03 08:57:59 +00:00
Luke Barnard
5d4b98d4f6 Merge pull request #4470 from vector-im/luke/css-emotes-pre-wrap
Apply white-space: pre-wrap to mx_MEmoteBody
2017-07-03 09:57:56 +01:00
Luke Barnard
6fcf504a4b Apply white-space: pre-wrap to mx_MEmoteBody
as we do with MTextBody.

So that people can do multi-line emotes...
2017-06-30 17:41:55 +01:00
Luke Barnard
042e7acca5 Fix long words causing MessageComposer to widen
Use `word-break: break-word` to split long words.

Fixes https://github.com/vector-im/riot-web/issues/4414
2017-06-30 16:03:56 +01:00
David Baker
17bd323376 Make Groups page look more like design 2017-06-30 14:00:17 +01:00
David Baker
796b51113f CSS for Create Group dialog 2017-06-29 16:59:26 +01:00
Dreamwhite
7a1a0e613c Translated using Weblate (Italian)
Currently translated at 44.1% (91 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/

Is the same
2017-06-29 10:49:35 +00:00
Dreamwhite
233a7dbf68 Translated using Weblate (Italian)
Currently translated at 41.7% (86 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2017-06-29 10:47:33 +00:00
Weblate
af3374e210 Merge remote-tracking branch 'origin/develop' into develop 2017-06-28 16:38:56 +00:00
Luke Barnard
515f8de2c5 Merge pull request #4456 from vector-im/luke/css-rte-improvements
Add some style improvements to autocompletions
2017-06-28 17:38:53 +01:00
Luke Barnard
2ea69624af Add some style improvements to autocompletions
- Fix https://github.com/vector-im/riot-web/issues/2230 by adding text-overflow: ellipsis to pill spans
 - Add padding to pills
 - Make sure to only apply horizontal margin of pill children at one level of the DOM tree
2017-06-28 16:36:32 +01:00
Weblate
ed6ea13773 Merge remote-tracking branch 'origin/develop' into develop 2017-06-28 15:07:03 +00:00
strix aluco
7aff42ca9d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2017-06-28 15:07:03 +00:00
Carlos A. Carnero Delgado
c320c64f27 Translated using Weblate (Spanish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-06-28 15:07:03 +00:00
Andrey
b55fa94db9 Translated using Weblate (Russian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-28 15:07:03 +00:00
bldrzzy
a5bc9a953c Translated using Weblate (Polish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-06-28 15:07:03 +00:00
Rayeshman
34f52e8315 Translated using Weblate (Persian)
Currently translated at 98.0% (202 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fa/
2017-06-28 15:07:03 +00:00
IMIN
15dcc507d8 Translated using Weblate (Korean)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2017-06-28 15:07:03 +00:00
Bamstam
962f081fcd Translated using Weblate (German)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-06-28 15:07:03 +00:00
Rayeshman
991789da72 Translated using Weblate (Esperanto)
Currently translated at 97.5% (201 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-28 15:07:03 +00:00
Jeff Huang
d5c37ad8bc Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2017-06-28 15:07:02 +00:00
Tong Hui
4ee5431e07 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hans/
2017-06-28 15:07:02 +00:00
Richard Lewis
176f7f1515 Merge pull request #4447 from vector-im/rxl881/apps
Styling for apps / widgets
2017-06-28 16:06:57 +01:00
David Baker
105c54a1f1 CSS for Groups page 2017-06-28 13:57:20 +01:00
Michael Telatynski
f36c1ca207 fix Quote not closing contextual menu
also use `this.closeMenu();` over the explicit direct call as the wrapper exists and is a little clearer
2017-06-27 14:51:18 +01:00
Richard Lewis
83353e9419 Merge branch 'develop' of https://github.com/vector-im/riot-web into rxl881/apps 2017-06-27 12:40:32 +01:00
David Baker
f6627937fa CSS for GroupView 2017-06-27 11:52:46 +01:00
Tom Tryfonidis
a122e72a2b Translated using Weblate (Greek)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/el/
2017-06-27 07:53:29 +00:00
Tong Hui
fcde56f614 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hans/
2017-06-26 15:29:11 +00:00
Brendan Abolivier
59692d0190 Translated using Weblate (French)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2017-06-26 15:22:45 +00:00
Carlos A. Carnero Delgado
15634a8435 Translated using Weblate (Spanish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-06-26 03:22:58 +00:00
IMIN
d05d7a09c4 Translated using Weblate (Korean)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2017-06-25 22:02:04 +00:00
bldrzzy
b4b4b8d350 Translated using Weblate (Polish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-06-25 20:47:40 +00:00
Rayeshman
ffcc495f98 Added translation using Weblate (Persian) 2017-06-25 09:38:31 +00:00
Szimszon
63a5f22e58 Translated using Weblate (Hungarian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2017-06-25 07:33:29 +00:00
strixaluco
6e8246206a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2017-06-24 14:34:28 +00:00
Andrey
c4e8b5586f Translated using Weblate (Russian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-24 12:37:49 +00:00
Jeff Huang
7bb2e83ff4 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2017-06-24 03:40:16 +00:00
Krombel
7b7e240af6 Translated using Weblate (German)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-06-23 10:23:36 +00:00
Weblate
2a72c2e19b Merge remote-tracking branch 'origin/develop' into develop 2017-06-23 08:47:57 +00:00
Max Sandholm
9ca37c6cb8 Translated using Weblate (Swedish)
Currently translated at 78.1% (161 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sv/
2017-06-23 08:47:57 +00:00
Jeff Huang
a9b8626ad3 Translated using Weblate (Chinese (Traditional))
Currently translated at 78.1% (161 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2017-06-23 08:47:56 +00:00
David Baker
c614bc2356 Merge pull request #4400 from vector-im/rav/flush_logs_on_close
Attempt to flush the rageshake logs on close
2017-06-23 09:47:53 +01:00
Matthew Hodgson
f7f5255378 fix vars 2017-06-22 21:53:06 +01:00
Matthew Hodgson
23a0e9a96c Merge pull request #4401 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-06-22 21:42:58 +01:00
Elia
8b89a1770d Translated using Weblate (Turkish)
Currently translated at 96.6% (199 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2017-06-22 20:21:51 +00:00
Pitchaya Boonsarngsuk
bfe43d841f Translated using Weblate (Thai)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/th/
2017-06-22 20:21:51 +00:00
Carlos A. Carnero Delgado
423a047687 Translated using Weblate (Spanish)
Currently translated at 99.5% (205 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-06-22 20:21:51 +00:00
Richard van der Hoff
cc56ef3abd Attempt to flush the rageshake logs on close
... so that we get to see what happened in the last 30s.
2017-06-22 18:25:19 +01:00
Pitchaya Boonsarngsuk
fbcdc5adad Translated using Weblate (Thai)
Currently translated at 100.0% (206 of 206 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/th/
2017-06-22 17:08:08 +00:00
Weblate
b75180d959 Merge remote-tracking branch 'origin/develop' into develop 2017-06-22 16:37:03 +00:00
David Baker
fab50bc1f1 Merge pull request #4176 from vector-im/t3chguy/updating_stuff
improve update polling electron and provide a manual check for updates button
2017-06-22 17:36:58 +01:00
Weblate
cfe7fbb23e Merge remote-tracking branch 'origin/develop' into develop 2017-06-22 14:30:14 +00:00
Elia
8477ed2967 Translated using Weblate (Turkish)
Currently translated at 99.0% (199 of 201 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2017-06-22 14:30:14 +00:00
David Baker
a1132ca7aa Merge pull request #4395 from vector-im/rav/fix_braindead_firefox
Fix load failure in firefox when indexedDB is disabled
2017-06-22 15:30:01 +01:00
Richard van der Hoff
6e52ab6182 Fix load failure in firefox when indexedDB is disabled 2017-06-22 15:11:11 +01:00
Michael Telatynski
e33e0effa3 use _t on string literals and i18n 'warning'
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-22 15:05:13 +01:00
Michael Telatynski
0788826a71 Merge branches 'develop' and 't3chguy/updating_stuff' of github.com:vector-im/riot-web into t3chguy/updating_stuff
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

# Conflicts:
#	electron_app/src/tray.js
2017-06-22 15:04:33 +01:00
Weblate
c79c0bd333 Merge remote-tracking branch 'origin/develop' into develop 2017-06-22 13:37:35 +00:00
Elia
e4c3a63375 Translated using Weblate (Turkish)
Currently translated at 99.0% (200 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2017-06-22 13:37:35 +00:00
Richard van der Hoff
a9c8429d2e Merge pull request #4362 from turt2live/travis/missed-redact
Change missed 'Redact' to 'Remove' in ImageView.
2017-06-22 14:37:31 +01:00
Weblate
9af8cfd1dc Merge remote-tracking branch 'origin/develop' into develop 2017-06-22 11:40:18 +00:00
Matthew Hodgson
93502b3c2a better englishing 2017-06-22 12:40:09 +01:00
Weblate
46ff43e9ba Merge remote-tracking branch 'origin/develop' into develop 2017-06-22 11:08:22 +00:00
Elia
954d56e151 Translated using Weblate (Turkish)
Currently translated at 99.0% (200 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2017-06-22 11:08:22 +00:00
IMIN
f040a72765 Translated using Weblate (Korean)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2017-06-22 11:08:22 +00:00
David Baker
8b65b96adf Merge branch 'master' into develop 2017-06-22 12:08:14 +01:00
David Baker
cf5cf02529 v0.11.4 2017-06-22 12:04:49 +01:00
David Baker
26ea8a7494 Prepare changelog for v0.11.4 2017-06-22 12:04:49 +01:00
David Baker
27d83ba440 v0.11.4 2017-06-22 12:01:05 +01:00
David Baker
c380e7566a Released js-sdk & react-sdk 2017-06-22 11:58:57 +01:00
daniel tygel
81518069ed Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt_BR/
2017-06-22 09:58:03 +00:00
Weblate
a06eb5dfe1 Merge remote-tracking branch 'origin/develop' into develop 2017-06-21 14:04:40 +00:00
David Baker
7d3f75ef87 Merge pull request #4355 from vector-im/t3chguy/electron/windows_icon_instability
explicit convert to nativeImage to stabilise trayIcon on Windows [Electron]
2017-06-21 15:04:36 +01:00
Weblate
54ef2dd39b Merge remote-tracking branch 'origin/develop' into develop 2017-06-21 13:14:18 +00:00
Szimszon
b51101038f Translated using Weblate (Hungarian)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2017-06-21 13:14:18 +00:00
David Baker
79ad89c673 Merge pull request #4373 from vector-im/luke/fix-pwd-nagbar-_t
Use _tJsx for PasswordNagBar (because it has <u>)
2017-06-21 14:14:15 +01:00
IMIN
e7dd6fa714 Translated using Weblate (Korean)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2017-06-21 11:50:00 +00:00
strixaluco
a46a0c0949 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2017-06-21 01:28:06 +00:00
Walter
a13b766bad Translated using Weblate (Ukrainian)
Currently translated at 99.0% (200 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2017-06-21 01:26:17 +00:00
Tom Tryfonidis
969c7c93d6 Translated using Weblate (Greek)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/el/
2017-06-20 20:22:23 +00:00
Valentin Sundermann
aade0d557d Fix key url in readme
The URL for the signing key changed and hence pointed to a wrong direction.
2017-06-20 20:50:18 +02:00
Szimszon
d1c97d8f9a Translated using Weblate (Hungarian)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2017-06-20 17:13:23 +00:00
Weblate
ae8ad6969a Merge remote-tracking branch 'origin/develop' into develop 2017-06-20 16:55:46 +00:00
Walter
6d62bf0e25 Translated using Weblate (Ukrainian)
Currently translated at 98.0% (198 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2017-06-20 16:55:45 +00:00
Richard van der Hoff
26a27a6de4 Merge pull request #4376 from vector-im/rav/test_log_cleanups
Clean up some log outputs from the integ tests
2017-06-20 17:55:42 +01:00
Walter
51cfad5b9f Translated using Weblate (Russian)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-20 16:48:26 +00:00
Richard van der Hoff
ca3399df77 Clean up some log outputs from the integ tests 2017-06-20 17:41:21 +01:00
Luke Barnard
c4a3211cfc Use _tJsx for PasswordNagBar (because it has <u>) 2017-06-20 16:28:40 +01:00
Weblate
d9f662c06e Merge remote-tracking branch 'origin/develop' into develop 2017-06-20 15:24:12 +00:00
Richard van der Hoff
abf21675d5 Add some more logging to the tests
... to help diagnose when they fail
2017-06-20 16:24:04 +01:00
marekjedrzejewski
8a17e3543a Translated using Weblate (Polish)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-06-20 15:17:51 +00:00
Krombel
c70ad2fa65 Translated using Weblate (German)
Currently translated at 100.0% (202 of 202 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-06-20 15:15:40 +00:00
David Baker
8f8b28425d Fix json fail 2017-06-20 15:55:35 +01:00
Luke Barnard
6b5bfe24e6 Merge pull request #4367 from vector-im/luke/redesign-user-settings-pwd-warn
CSS for redeisng of password warning
2017-06-20 15:24:07 +01:00
Luke Barnard
ae23664a41 Merge branch 'develop' into luke/redesign-user-settings-pwd-warn 2017-06-20 15:03:10 +01:00
Luke Barnard
bbbb82351f CSS for redeisng of password warning
Now looks like red text
2017-06-20 15:01:39 +01:00
Michael Telatynski
67a9b6502b Merge branch 't3chguy/updating_stuff' of github.com:vector-im/riot-web into t3chguy/updating_stuff 2017-06-20 14:33:09 +01:00
Michael Telatynski
fe1b0b5cd8 Merge branch 'develop' of github.com:vector-im/riot-web into t3chguy/updating_stuff 2017-06-20 14:32:19 +01:00
David Baker
8dade0d84e Merge pull request #4366 from vector-im/luke/feature-user-settings-password-warning
Give _t to PasswordNagBar, add CSS for UserSettings password warning
2017-06-20 14:31:12 +01:00
Michael Telatynski
499b1c2e70 add missing semicolon 2017-06-20 14:05:17 +01:00
Luke Barnard
047b255e14 Add en_EN translations 2017-06-20 13:33:38 +01:00
David Baker
3926e4dd98 Merge branch 'master' into develop 2017-06-20 13:18:58 +01:00
David Baker
639b17c663 v0.11.3 2017-06-20 13:15:36 +01:00
David Baker
ea8a49f1b7 Prepare changelog for v0.11.3 2017-06-20 13:15:35 +01:00
David Baker
eda3f20b26 v0.11.3 2017-06-20 13:13:28 +01:00
David Baker
6ef32f182a react-sdk 0.9.6 2017-06-20 13:13:03 +01:00
David Baker
6bae293bdf Merge pull request #4361 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-06-20 13:12:14 +01:00
Luke Barnard
d5d29c1c92 Give _t to PasswordNagBar, add CSS for UserSettings password warning
Codep https://github.com/matrix-org/matrix-react-sdk/pull/1123
2017-06-20 11:23:34 +01:00
David Baker
556ff24c5f Merge pull request #4361 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-06-20 10:19:34 +01:00
strixaluco
f5d9af9b0b Translated using Weblate (Ukrainian)
Currently translated at 98.0% (196 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2017-06-20 09:00:47 +00:00
GrigRUSS
3ff0ed52b2 Translated using Weblate (Russian)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-20 09:00:47 +00:00
turt2live
4ae6e9fdfd Remove 'Redact' from en_US and en_EN as it is no longer needed
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-06-19 16:31:59 -06:00
turt2live
b9fc46fa41 Change missed 'Redact' to 'Remove' in ImageView.
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-06-19 16:24:03 -06:00
GrigRUSS
133f3d24f5 Translated using Weblate (Russian)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-19 17:18:38 +00:00
Bamstam
241ebe50d2 Translated using Weblate (German)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2017-06-19 17:18:38 +00:00
Matthew Hodgson
7fda26f268 Merge pull request #4360 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-06-19 15:43:34 +01:00
Weblate
0729d50e47 Merge remote-tracking branch 'origin/develop' into develop 2017-06-19 13:38:56 +00:00
Richard van der Hoff
f6cbb708b0 Merge pull request #4352 from vector-im/rav/test_return_to_app
Test 'return-to-app' functionality
2017-06-19 14:38:52 +01:00
russian
8b7692cf3b Translated using Weblate (Russian)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-19 13:24:27 +00:00
daniel tygel
7523251098 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt_BR/
2017-06-19 13:23:34 +00:00
David Baker
5b5e6d83d9 Merge branch 'master' into develop 2017-06-19 13:24:58 +01:00
Richard Lewis
db70272902 Fix custom widget form styling 2017-06-19 12:05:57 +01:00
Michael Telatynski
78068bfaa0 explicit convert to nativeImage to stabilise on Windows
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-19 11:58:44 +01:00
David Baker
9f7cf463b9 Merge pull request #4354 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-06-19 11:38:55 +01:00
Weblate
9eca0d2fde Merge remote-tracking branch 'origin/develop' into develop 2017-06-19 10:38:05 +00:00
Nathan van Beelen
45bb74d8f6 Translated using Weblate (Dutch)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2017-06-19 10:38:04 +00:00
David Baker
07103431a9 Merge remote-tracking branch 'weblate/develop' into develop 2017-06-19 11:37:55 +01:00
Richard Lewis
3588ce7bc5 Fix app tile styling 2017-06-19 11:35:20 +01:00
Richard van der Hoff
557d4ae4c1 Test 'return-to-app' functionality
Add a test for the 'log in as user' functionality, as well as the 'return to
app' functionality.
2017-06-19 10:47:36 +01:00
Richard van der Hoff
563d1dc3f1 Merge pull request #4335 from vector-im/rav/fix_token_redirect
onLoadCompleted is now onTokenLoginCompleted
2017-06-19 09:06:17 +01:00
Richard van der Hoff
5a8a41ad50 Merge branch 'develop' into rav/fix_token_redirect 2017-06-19 09:05:19 +01:00
Richard van der Hoff
60be24c665 Rename promise 2017-06-19 09:04:24 +01:00
Weblate
4a968cd34f Merge remote-tracking branch 'origin/develop' into develop 2017-06-19 08:02:30 +00:00
Richard van der Hoff
0608c67767 Merge branch 'rav/refactor_matrixclient_states' into develop
(PR https://github.com/vector-im/riot-web/pull/4325)
2017-06-19 09:02:08 +01:00
Weblate
bd1b06c9b4 Merge remote-tracking branch 'origin/develop' into develop 2017-06-19 07:57:09 +00:00
Richard van der Hoff
98f8be45b7 Merge pull request #4325 from vector-im/rav/refactor_matrixclient_states
Tweak tests to match updates to matrixchat
2017-06-19 08:57:06 +01:00
Richard van der Hoff
641f20a4f6 Tweak tests to match updates to matrixchat
Mostly this is just making it look at the `view` state rather than the
individual boolean flags.

One other tweak merits explanation: we now implement the initial
couldn't-register-as-guest login with an explicit switch to the LOGIN view,
which means that the URL gets updated to #/login.

We also now need to give the login panel a bit longer to appear.
2017-06-19 08:55:54 +01:00
Weblate
7cbfa228ee Merge remote-tracking branch 'origin/develop' into develop 2017-06-18 23:54:13 +00:00
Matthew Hodgson
1c82b7b0c3 add register button 2017-06-19 00:54:07 +01:00
Raul
b7368fa933 Translated using Weblate (Esperanto)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-18 23:30:50 +00:00
Weblate
ecf163d4e7 Merge remote-tracking branch 'origin/develop' into develop 2017-06-18 23:01:19 +00:00
Raul
1a72d3134c Translated using Weblate (Esperanto)
Currently translated at 90.0% (180 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-18 23:01:18 +00:00
Matthew Hodgson
612cad5d9e fix broken vars 2017-06-19 00:01:11 +01:00
Weblate
9b1b5b3a4b Merge remote-tracking branch 'origin/develop' into develop 2017-06-18 22:54:37 +00:00
Matthew Hodgson
6b1ffaff7a fix broken http status i18n 2017-06-18 23:54:29 +01:00
Weblate
ffa24eac84 Merge remote-tracking branch 'origin/develop' into develop 2017-06-18 22:50:33 +00:00
Raul
82eb69324d Translated using Weblate (Esperanto)
Currently translated at 88.0% (176 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-18 22:50:33 +00:00
Matthew Hodgson
eaf61526fb add new languages 2017-06-18 23:50:27 +01:00
Weblate
47906d23f0 Merge remote-tracking branch 'origin/develop' into develop 2017-06-18 22:49:23 +00:00
Raul
2fa05f8d61 Translated using Weblate (Esperanto)
Currently translated at 87.0% (174 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-18 22:49:23 +00:00
Matthew Hodgson
6bee3f22da Merge pull request #4346 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2017-06-18 23:49:20 +01:00
Weblate
396ecf6570 Merge remote-tracking branch 'origin/develop' into develop 2017-06-18 22:45:15 +00:00
Raul
f9ef5e8498 Translated using Weblate (Esperanto)
Currently translated at 84.0% (168 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-18 22:45:15 +00:00
Matthew Hodgson
cf9cd503e5 Merge pull request #4337 from vector-im/t3chguy/fix_forwarding
change dispatcher forward_event signature
2017-06-18 23:45:12 +01:00
Szymon Łopaciuk
0e00f708f1 Translated using Weblate (Polish)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-06-18 22:43:15 +00:00
Raul
a4abccdcef Translated using Weblate (Esperanto)
Currently translated at 83.0% (166 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-18 22:43:15 +00:00
Sebastián Magrí
6ace710a65 Translated using Weblate (Spanish)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-06-18 22:42:19 +00:00
Weblate
23b99f83ce Merge remote-tracking branch 'origin/develop' into develop 2017-06-18 20:37:21 +00:00
Carlos A. Carnero Delgado
8bc2b4a122 Translated using Weblate (Spanish)
Currently translated at 74.5% (149 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-06-18 20:37:21 +00:00
GrigRUSS
2b3ec55850 Translated using Weblate (Russian)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-18 20:37:21 +00:00
Szymon Łopaciuk
9a203aab67 Translated using Weblate (Polish)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-06-18 20:37:21 +00:00
IMIN
5cc1f62839 Translated using Weblate (Korean)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2017-06-18 20:37:21 +00:00
alxlg
ad57dd3169 Translated using Weblate (Italian)
Currently translated at 31.5% (63 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2017-06-18 20:37:20 +00:00
Aviral Dasgupta
0635a344ae Translated using Weblate (Hindi)
Currently translated at 3.0% (6 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hi/
2017-06-18 20:37:20 +00:00
Raul
12dab61a67 Translated using Weblate (Esperanto)
Currently translated at 49.5% (99 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2017-06-18 20:37:20 +00:00
zwindl
7ae1a70a8d Translated using Weblate (Chinese (Simplified))
Currently translated at 16.0% (32 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hans/
2017-06-18 20:37:20 +00:00
Matthew Hodgson
4afec6fb7f Merge pull request #4259 from ollieh/code-block-border
Add border on hover for code blocks
2017-06-18 21:37:17 +01:00
Pitchaya Boonsarngsuk
886475af7e Translated using Weblate (Thai)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/th/
2017-06-18 15:52:43 +00:00
Szymon Łopaciuk
4d89e997b3 Translated using Weblate (Polish)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-06-18 15:04:02 +00:00
Przemek Anuszek
93a6e03f70 Translated using Weblate (Polish)
Currently translated at 84.5% (169 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2017-06-18 13:51:58 +00:00
alxlg
851f4d4a87 Added translation using Weblate (Italian) 2017-06-18 08:02:30 +00:00
Elia
f2fa326c0c Translated using Weblate (Turkish)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2017-06-18 02:07:10 +00:00
David Pérez-Suárez
d9b63a482c Translated using Weblate (Spanish)
Currently translated at 60.5% (121 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-06-17 23:56:40 +00:00
Elia
c585d80e3e Added translation using Weblate (Turkish) 2017-06-17 23:49:43 +00:00
Christopher Armstrong
9c8be72574 Translated using Weblate (English (United States))
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/en_US/
2017-06-17 23:42:12 +00:00
Enrique
e6551e4590 Translated using Weblate (Spanish)
Currently translated at 58.5% (117 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/
2017-06-17 23:31:31 +00:00
Walter
7cdb73d74b Translated using Weblate (Russian)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2017-06-16 20:22:12 +00:00
Szimszon
3d0da059dc Translated using Weblate (Hungarian)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2017-06-16 17:49:58 +00:00
Michael Telatynski
274536bf13 change dispatcher forward_event signature
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-16 16:11:33 +01:00
Richard van der Hoff
6df1574b8b onLoadCompleted is now onTokenLoginCompleted 2017-06-16 15:05:14 +01:00
Weblate
490a696567 Merge remote-tracking branch 'origin/develop' into develop 2017-06-16 12:06:44 +00:00
Weblate
55fad1910a Merge remote-tracking branch 'origin/develop' into develop 2017-06-16 11:56:45 +00:00
Weblate
aff2a50cdd Merge remote-tracking branch 'origin/develop' into develop 2017-06-16 10:48:34 +00:00
IMIN
5bc676a042 Translated using Weblate (Korean)
Currently translated at 100.0% (200 of 200 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2017-06-16 10:48:34 +00:00
Richard van der Hoff
f5b2a92e84 Give the login panel a bit longer to appear 2017-06-15 18:17:00 +01:00
Richard van der Hoff
1fcd462660 Tweak tests to match updates to matrixchat
Mostly this is just making it look at the `view` state rather than the
individual boolean flags.

One other tweak merits explanation: we now implement the initial
couldn't-register-as-guest login with an explicit switch to the LOGIN view,
which means that the URL gets updated to #/login.
2017-06-15 17:52:18 +01:00
Richard Lewis
152e3c6258 Merge branch 'master' of https://github.com/vector-im/riot-web into rxl881/apps 2017-06-13 11:40:23 +01:00
Michael Telatynski
b6d2ba2019 store window ref globally so when splitting files its easier to access.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-12 13:50:45 +01:00
Michael Telatynski
53e2ce33b8 remove unused i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-12 13:39:35 +01:00
Michael Telatynski
9493f4a872 fallback from undefined for interpolation
because _t called with undefined interpolation name: errorDetail
even though when its undef its not used to sprinf-js would have been fine...

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-12 10:42:44 +01:00
Michael Telatynski
a32ce4fbf6 remove unused string
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-11 23:57:03 +01:00
Michael Telatynski
89533706a8 pollForUpdate is now internal/private to a Platform.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-11 23:39:21 +01:00
Michael Telatynski
deb7ed660c Merge branch 'develop' of github.com:vector-im/riot-web into t3chguy/updating_stuff 2017-06-11 23:13:49 +01:00
Michael Telatynski
a520f0bfed move all logic, make bar more generic
pass through actual errors
and tidy
needs testing

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-11 19:19:17 +01:00
Michael Telatynski
c4fd139586 get rid of pointless interval and timeout on linux
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-11 16:46:47 +01:00
Michael Telatynski
4c8ff0955d move electron update logic into own file, tidy tidy tidy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-11 16:44:36 +01:00
Michael Telatynski
6592526109 change /!\ to Warning for accessibility (plus weird escaping?)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-11 13:45:37 +01:00
Oliver Hunt
3a86e659af Made border transparent when not hovered
Signed-off-by: Oliver Hunt <oliver@hunt.bz>
2017-06-10 01:26:20 +01:00
Oliver Hunt
b032accdfa Add border on hover for code blocks
Signed-off-by: Oliver Hunt <oliver@hunt.bz>
2017-06-09 17:03:29 +01:00
Richard Lewis
272d36995b Fix active styling 2017-06-07 15:28:58 +01:00
Richard Lewis
9302c60b47 App icon styling 2017-06-07 10:55:35 +01:00
Richard Lewis
76880e0de7 App icon tile styling 2017-06-06 23:46:27 +01:00
Richard Lewis
0ef800073b App drawer styling 2017-06-05 18:21:52 +01:00
Michael Telatynski
93f148fca3 fix type electron vs remote
don't break when running a non Squirrel Windows build that has an update url

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 16:34:15 +01:00
Michael Telatynski
5981887705 fix UpdateCheckBar image alt
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 16:04:01 +01:00
Michael Telatynski
a4c1aee5ea correct file header
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 16:00:49 +01:00
Michael Telatynski
f5ba6fa952 i18n things
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit d878c72)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 15:59:33 +01:00
Michael Telatynski
3ebd90565c add clearer concept of timeout vs error
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit 104c804)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 15:59:27 +01:00
Michael Telatynski
b95ad701af match ENUM style to others in project
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit a871815)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 15:59:18 +01:00
Michael Telatynski
efc68c078e basic manual update stuff + update check bar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 15:59:12 +01:00
Michael Telatynski
0e6012ad45 absorb updater.js into the Platforms, gets rid of pointless setInterval in Electron
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit 24e8a30)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-03 15:58:54 +01:00
Richard Lewis
113533ad61 Add styling for full-width widgets 2017-05-31 10:08:23 +01:00
Richard Lewis
ac9075a82a Increase panel height 2017-05-30 10:47:29 +01:00
Richard Lewis
998739a7dc Edit icon and styling 2017-05-22 18:00:40 +01:00
Richard Lewis
8afc9f9a09 Add widget iframes and styling 2017-05-19 17:17:48 +01:00
Richard Lewis
7a63cfd717 Add stylesheet for apps 2017-05-17 23:17:53 +01:00
Richard Lewis
7ea6157b67 App drawer styling 2017-05-17 21:16:15 +01:00
Richard Lewis
553c53e7e8 Add apps menu icons 2017-05-17 12:33:58 +01:00
101 changed files with 4048 additions and 1179 deletions

View File

@@ -1,4 +1,4 @@
{
"presets": ["react", "es2015", "es2016"],
"plugins": ["transform-class-properties", "transform-object-rest-spread", "transform-async-to-generator", "transform-runtime", "add-module-exports"]
"plugins": ["transform-class-properties", "transform-object-rest-spread", "transform-async-to-bluebird", "transform-runtime", "add-module-exports"]
}

2
.gitignore vendored
View File

@@ -14,6 +14,6 @@
npm-debug.log
electron/dist
electron/pub
/.idea
**/.idea
/config.json
/src/component-index.js

View File

@@ -1,3 +1,10 @@
# we need trusty for the chrome addon
dist: trusty
# we don't need sudo, so can run in a container, which makes startup much
# quicker.
sudo: false
language: node_js
node_js:
# make sure we work with a range of node versions.
@@ -5,8 +12,9 @@ node_js:
# - 4.x is still in LTS (until April 2018), but some of our deps (notably
# extract-zip) don't work with it
# - 5.x has been EOLed for nearly a year.
# - 6.x is the current 'LTS' version
# - 7.x is the current 'current' version (until October 2017)
# - 6.x is the active 'LTS' version
# - 7.x is no longer supported
# - 8.x is the current 'current' version (until October 2017)
#
# see: https://github.com/nodejs/LTS/
#
@@ -16,6 +24,8 @@ node_js:
- 6.3
- 6
- 7
addons:
chrome: stable
install:
# clone the deps with depth 1: we know we will only ever need that one
# commit.

View File

@@ -1,3 +1,185 @@
Changes in [0.12.1](https://github.com/vector-im/riot-web/releases/tag/v0.12.1) (2017-08-23)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.12.1-rc.1...v0.12.1)
* [No changes]
Changes in [0.12.1-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.12.1-rc.1) (2017-08-22)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.12.0-rc.2...v0.12.1-rc.1)
* Update from Weblate.
[\#4832](https://github.com/vector-im/riot-web/pull/4832)
* Misc styling fixes.
[\#4826](https://github.com/vector-im/riot-web/pull/4826)
* Show / Hide apps icons
[\#4774](https://github.com/vector-im/riot-web/pull/4774)
Changes in [0.12.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.12.0-rc.1) (2017-08-16)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.11.4...v0.12.0-rc.1)
* Update from Weblate.
[\#4797](https://github.com/vector-im/riot-web/pull/4797)
* move focus-via-up/down cursors to LeftPanel
[\#4777](https://github.com/vector-im/riot-web/pull/4777)
* Remove userId property on RightPanel
[\#4775](https://github.com/vector-im/riot-web/pull/4775)
* Make member device info buttons fluid and stackable with flexbox
[\#4776](https://github.com/vector-im/riot-web/pull/4776)
* un-i18n Modal Analytics
[\#4688](https://github.com/vector-im/riot-web/pull/4688)
* Quote using innerText
[\#4773](https://github.com/vector-im/riot-web/pull/4773)
* Karma tweaks for riot-web
[\#4765](https://github.com/vector-im/riot-web/pull/4765)
* Fix typo with scripts/fetch-develop-deps.sh in Building From Source
[\#4764](https://github.com/vector-im/riot-web/pull/4764)
* Adjust CSS for optional avatars in pills
[\#4757](https://github.com/vector-im/riot-web/pull/4757)
* Fix crypto on develop
[\#4754](https://github.com/vector-im/riot-web/pull/4754)
* Fix signing key url in readme
[\#4464](https://github.com/vector-im/riot-web/pull/4464)
* update gitignore to allow .idea directory to exist in subdirs
[\#4749](https://github.com/vector-im/riot-web/pull/4749)
* tweak compact theme
[\#4665](https://github.com/vector-im/riot-web/pull/4665)
* Update draft-js from 0.10.1 to 0.11.0-alpha
[\#4740](https://github.com/vector-im/riot-web/pull/4740)
* electron support for mouse forward/back buttons in Windows
[\#4739](https://github.com/vector-im/riot-web/pull/4739)
* Update draft-js from 0.8.1 to 0.10.1
[\#4730](https://github.com/vector-im/riot-web/pull/4730)
* Make pills, emoji translucent when sending
[\#4693](https://github.com/vector-im/riot-web/pull/4693)
* Widget permissions styling and icon
[\#4690](https://github.com/vector-im/riot-web/pull/4690)
* CSS required for composer autoscroll
[\#4682](https://github.com/vector-im/riot-web/pull/4682)
* CSS for group edit UI
[\#4608](https://github.com/vector-im/riot-web/pull/4608)
* Fix a couple of minor errors in the room list
[\#4671](https://github.com/vector-im/riot-web/pull/4671)
* Styling for beta testing icon.
[\#4584](https://github.com/vector-im/riot-web/pull/4584)
* Increase the timeout for clearing indexeddbs
[\#4650](https://github.com/vector-im/riot-web/pull/4650)
* Make some adjustments to mx_UserPill and mx_RoomPill
[\#4597](https://github.com/vector-im/riot-web/pull/4597)
* Apply CSS to <pre> tags to distinguish them from each other
[\#4639](https://github.com/vector-im/riot-web/pull/4639)
* Use `catch` instead of `fail` to handle room tag error
[\#4643](https://github.com/vector-im/riot-web/pull/4643)
* CSS for decorated matrix.to links in the composer
[\#4583](https://github.com/vector-im/riot-web/pull/4583)
* Deflake the joining test
[\#4579](https://github.com/vector-im/riot-web/pull/4579)
* Bump react to 15.6 to fix build problems
[\#4577](https://github.com/vector-im/riot-web/pull/4577)
* Improve AppTile menu bar button styling.
[\#4567](https://github.com/vector-im/riot-web/pull/4567)
* Transform `async` functions to bluebird promises
[\#4572](https://github.com/vector-im/riot-web/pull/4572)
* use flushAllExpected in joining test
[\#4570](https://github.com/vector-im/riot-web/pull/4570)
* Switch riot-web to bluebird
[\#4565](https://github.com/vector-im/riot-web/pull/4565)
* loading tests: wait for login component
[\#4564](https://github.com/vector-im/riot-web/pull/4564)
* Remove CSS for the MessageComposerInputOld
[\#4568](https://github.com/vector-im/riot-web/pull/4568)
* Implement the focus_room_filter action
[\#4560](https://github.com/vector-im/riot-web/pull/4560)
* CSS for Rooms in Group View
[\#4530](https://github.com/vector-im/riot-web/pull/4530)
* more HomePage tweaks
[\#4557](https://github.com/vector-im/riot-web/pull/4557)
* Give HomePage an unmounted guard
[\#4556](https://github.com/vector-im/riot-web/pull/4556)
* Take RTE out of labs
[\#4500](https://github.com/vector-im/riot-web/pull/4500)
* CSS for Groups page
[\#4468](https://github.com/vector-im/riot-web/pull/4468)
* CSS for GroupView
[\#4442](https://github.com/vector-im/riot-web/pull/4442)
* remove unused class
[\#4525](https://github.com/vector-im/riot-web/pull/4525)
* Fix long words causing MessageComposer to widen
[\#4466](https://github.com/vector-im/riot-web/pull/4466)
* Add visual bell animation for RTE
[\#4516](https://github.com/vector-im/riot-web/pull/4516)
* Truncate auto-complete pills properly
[\#4502](https://github.com/vector-im/riot-web/pull/4502)
* Use chrome headless instead of phantomjs
[\#4512](https://github.com/vector-im/riot-web/pull/4512)
* Use external mock-request
[\#4489](https://github.com/vector-im/riot-web/pull/4489)
* fix Quote not closing contextual menu
[\#4443](https://github.com/vector-im/riot-web/pull/4443)
* Apply white-space: pre-wrap to mx_MEmoteBody
[\#4470](https://github.com/vector-im/riot-web/pull/4470)
* Add some style improvements to autocompletions
[\#4456](https://github.com/vector-im/riot-web/pull/4456)
* Styling for apps / widgets
[\#4447](https://github.com/vector-im/riot-web/pull/4447)
* Attempt to flush the rageshake logs on close
[\#4400](https://github.com/vector-im/riot-web/pull/4400)
* Update from Weblate.
[\#4401](https://github.com/vector-im/riot-web/pull/4401)
* improve update polling electron and provide a manual check for updates
button
[\#4176](https://github.com/vector-im/riot-web/pull/4176)
* Fix load failure in firefox when indexedDB is disabled
[\#4395](https://github.com/vector-im/riot-web/pull/4395)
* Change missed 'Redact' to 'Remove' in ImageView.
[\#4362](https://github.com/vector-im/riot-web/pull/4362)
* explicit convert to nativeImage to stabilise trayIcon on Windows [Electron]
[\#4355](https://github.com/vector-im/riot-web/pull/4355)
* Use _tJsx for PasswordNagBar (because it has <u>)
[\#4373](https://github.com/vector-im/riot-web/pull/4373)
* Clean up some log outputs from the integ tests
[\#4376](https://github.com/vector-im/riot-web/pull/4376)
* CSS for redeisng of password warning
[\#4367](https://github.com/vector-im/riot-web/pull/4367)
* Give _t to PasswordNagBar, add CSS for UserSettings password warning
[\#4366](https://github.com/vector-im/riot-web/pull/4366)
* Update from Weblate.
[\#4361](https://github.com/vector-im/riot-web/pull/4361)
* Update from Weblate.
[\#4360](https://github.com/vector-im/riot-web/pull/4360)
* Test 'return-to-app' functionality
[\#4352](https://github.com/vector-im/riot-web/pull/4352)
* Update from Weblate.
[\#4354](https://github.com/vector-im/riot-web/pull/4354)
* onLoadCompleted is now onTokenLoginCompleted
[\#4335](https://github.com/vector-im/riot-web/pull/4335)
* Tweak tests to match updates to matrixchat
[\#4325](https://github.com/vector-im/riot-web/pull/4325)
* Update from Weblate.
[\#4346](https://github.com/vector-im/riot-web/pull/4346)
* change dispatcher forward_event signature
[\#4337](https://github.com/vector-im/riot-web/pull/4337)
* Add border on hover for code blocks
[\#4259](https://github.com/vector-im/riot-web/pull/4259)
Changes in [0.11.4](https://github.com/vector-im/riot-web/releases/tag/v0.11.4) (2017-06-22)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.11.3...v0.11.4)
* Update matrix-js-sdk and react-sdk to fix a regression where the
background indexedb worker was disabled, failures to open indexeddb
causing the app to fail to start, a race when starting that could break
switching to rooms, and the inability to invite users with mixed case
usernames.
Changes in [0.11.3](https://github.com/vector-im/riot-web/releases/tag/v0.11.3) (2017-06-20)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.11.2...v0.11.3)
* Update to matrix-react-sdk 0.9.6 to fix infinite spinner bugs
and some parts of the app that had missed translation.
Changes in [0.11.2](https://github.com/vector-im/riot-web/releases/tag/v0.11.2) (2017-06-19)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.11.2-rc.2...v0.11.2)

View File

@@ -22,7 +22,7 @@ released version of Riot:
1. Enter the URL into your browser and log into Riot!
Releases are signed by PGP, and can be checked against the public key
at https://riot.im/packages/keys/riot-master.asc
at https://riot.im/packages/keys/riot.asc
Note that Chrome does not allow microphone or webcam access for sites served
over http (except localhost), so for working VoIP you will need to serve Riot
@@ -62,7 +62,7 @@ to build.
1. If you're using the `develop` branch, install the develop versions of the
dependencies, as the released ones will be too old:
```
scripts/fetch-develop-deps.sh
scripts/fetch-develop.deps.sh
```
Whenever you git pull on riot-web you will also probably need to force an update
to these dependencies - the simplest way is to re-run the script, but you can also
@@ -81,7 +81,7 @@ to build.
npm run build
```
However, we recommend setting up a proper development environment (see "Setting
up a development environment" below) if you want to run your own copy of the
up a dev environment" below) if you want to run your own copy of the
`develop` branch, as it makes it much easier to keep these dependencies
up-to-date. Or just use https://riot.im/develop - the continuous integration
release of the develop branch.
@@ -253,7 +253,6 @@ Finally, build and start Riot itself:
1. `rm -r node_modules/matrix-react-sdk; ln -s ../../matrix-react-sdk node_modules/`
1. `npm start`
1. Wait a few seconds for the initial build to finish; you should see something like:
```
Hash: b0af76309dd56d7275c8
Version: webpack 1.12.14
@@ -282,19 +281,34 @@ If any of these steps error with, `file table overflow`, you are probably on a m
which has a very low limit on max open files. Run `ulimit -Sn 1024` and try again.
You'll need to do this in each new terminal you open before building Riot.
How to add a new translation?
=============================
Running the tests
-----------------
There are a number of application-level tests in the `tests` directory; these
are designed to run in a browser instance under the control of
[karma](https://karma-runner.github.io). To run them:
* Make sure you have Chrome installed (a recent version, like 59)
* Make sure you have `matrix-js-sdk` and `matrix-react-sdk` installed and
built, as above
* `npm run test`
The above will run the tests under Chrome in a `headless` mode.
You can also tell karma to run the tests in a loop (every time the source
changes), in an instance of Chrome on your desktop, with `npm run
test-multi`. This also gives you the option of running the tests in 'debug'
mode, which is useful for stepping through the tests in the developer tools.
Translations
============
To add a new translation, head to the [translating doc](docs/translating.md).
For a developer guide, see the [translating dev doc](docs/translating-dev.md).
[<img src="https://translate.riot.im/widgets/riot-web/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.riot.im/engage/riot-web/?utm_source=widget)
Head to the [translating doc](docs/translating.md)
Adding Strings to the translations (Developer Guide)
====================================================
Head to the [translating dev doc](docs/translating-dev.md)
Triaging issues
===============

View File

@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
"version": "0.11.2",
"version": "0.12.1",
"description": "A feature-rich client for Matrix.org",
"author": "Vector Creations Ltd.",
"dependencies": {

View File

@@ -29,6 +29,7 @@ const AutoLaunch = require('auto-launch');
const tray = require('./tray');
const vectorMenu = require('./vectormenu');
const webContentsHandler = require('./webcontents-handler');
const updater = require('./updater');
const windowStateKeeper = require('electron-window-state');
@@ -46,69 +47,9 @@ try {
// Continue with the defaults (ie. an empty config)
}
const UPDATE_POLL_INTERVAL_MS = 60 * 60 * 1000;
const INITIAL_UPDATE_DELAY_MS = 30 * 1000;
let mainWindow = null;
let appQuitting = false;
global.appQuitting = false;
function installUpdate() {
// for some reason, quitAndInstall does not fire the
// before-quit event, so we need to set the flag here.
appQuitting = true;
electron.autoUpdater.quitAndInstall();
}
function pollForUpdates() {
try {
electron.autoUpdater.checkForUpdates();
} catch (e) {
console.log('Couldn\'t check for update', e);
}
}
function startAutoUpdate(updateBaseUrl) {
if (updateBaseUrl.slice(-1) !== '/') {
updateBaseUrl = updateBaseUrl + '/';
}
try {
// For reasons best known to Squirrel, the way it checks for updates
// is completely different between macOS and windows. On macOS, it
// hits a URL that either gives it a 200 with some json or
// 204 No Content. On windows it takes a base path and looks for
// files under that path.
if (process.platform === 'darwin') {
// include the current version in the URL we hit. Electron doesn't add
// it anywhere (apart from the User-Agent) so it's up to us. We could
// (and previously did) just use the User-Agent, but this doesn't
// rely on NSURLConnection setting the User-Agent to what we expect,
// and also acts as a convenient cache-buster to ensure that when the
// app updates it always gets a fresh value to avoid update-looping.
electron.autoUpdater.setFeedURL(
`${updateBaseUrl}macos/?localVersion=${encodeURIComponent(electron.app.getVersion())}`);
} else if (process.platform === 'win32') {
electron.autoUpdater.setFeedURL(`${updateBaseUrl}win32/${process.arch}/`);
} else {
// Squirrel / electron only supports auto-update on these two platforms.
// I'm not even going to try to guess which feed style they'd use if they
// implemented it on Linux, or if it would be different again.
console.log('Auto update not supported on this platform');
}
// We check for updates ourselves rather than using 'updater' because we need to
// do it in the main process (and we don't really need to check every 10 minutes:
// every hour should be just fine for a desktop app)
// However, we still let the main window listen for the update events.
// We also wait a short time before checking for updates the first time because
// of squirrel on windows and it taking a small amount of time to release a
// lock file.
setTimeout(pollForUpdates, INITIAL_UPDATE_DELAY_MS);
setInterval(pollForUpdates, UPDATE_POLL_INTERVAL_MS);
} catch (err) {
// will fail if running in debug mode
console.log('Couldn\'t enable update checking', err);
}
}
// handle uncaught errors otherwise it displays
// stack traces in popup dialogs, which is terrible (which
@@ -120,8 +61,6 @@ process.on('uncaughtException', function(error) {
console.log('Unhandled exception', error);
});
electron.ipcMain.on('install_update', installUpdate);
let focusHandlerAttached = false;
electron.ipcMain.on('setBadgeCount', function(ev, count) {
electron.app.setBadgeCount(count);
@@ -233,7 +172,7 @@ electron.app.on('ready', () => {
if (vectorConfig.update_base_url) {
console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`);
startAutoUpdate(vectorConfig.update_base_url);
updater.start(vectorConfig.update_base_url);
} else {
console.log('No update_base_url is defined: auto update is disabled');
}
@@ -246,7 +185,7 @@ electron.app.on('ready', () => {
defaultHeight: 768,
});
mainWindow = new electron.BrowserWindow({
mainWindow = global.mainWindow = new electron.BrowserWindow({
icon: iconPath,
show: false,
autoHideMenuBar: true,
@@ -264,7 +203,7 @@ electron.app.on('ready', () => {
mainWindow.hide();
// Create trayIcon icon
tray.create(mainWindow, {
tray.create({
icon_path: iconPath,
brand: vectorConfig.brand || 'Riot',
});
@@ -276,10 +215,10 @@ electron.app.on('ready', () => {
}
mainWindow.on('closed', () => {
mainWindow = null;
mainWindow = global.mainWindow = null;
});
mainWindow.on('close', (e) => {
if (!appQuitting && (tray.hasTray() || process.platform === 'darwin')) {
if (!global.appQuitting && (tray.hasTray() || process.platform === 'darwin')) {
// On Mac, closing the window just hides it
// (this is generally how single-window Mac apps
// behave, eg. Mail.app)
@@ -289,6 +228,17 @@ electron.app.on('ready', () => {
}
});
if (process.platform === 'win32') {
// Handle forward/backward mouse buttons in Windows
mainWindow.on('app-command', (e, cmd) => {
if (cmd === 'browser-backward' && mainWindow.webContents.canGoBack()) {
mainWindow.webContents.goBack();
} else if (cmd === 'browser-forward' && mainWindow.webContents.canGoForward()) {
mainWindow.webContents.goForward();
}
});
}
webContentsHandler(mainWindow.webContents);
mainWindowState.manage(mainWindow);
});
@@ -302,7 +252,10 @@ electron.app.on('activate', () => {
});
electron.app.on('before-quit', () => {
appQuitting = true;
global.appQuitting = true;
if (mainWindow) {
mainWindow.webContents.send('before-quit');
}
});
// Set the App User Model ID to match what the squirrel

View File

@@ -26,17 +26,17 @@ exports.hasTray = function hasTray() {
return (trayIcon !== null);
};
exports.create = function(win, config) {
exports.create = function(config) {
// no trays on darwin
if (process.platform === 'darwin' || trayIcon) return;
const toggleWin = function() {
if (win.isVisible() && !win.isMinimized()) {
win.hide();
if (global.mainWindow.isVisible() && !global.mainWindow.isMinimized()) {
global.mainWindow.hide();
} else {
if (win.isMinimized()) win.restore();
if (!win.isVisible()) win.show();
win.focus();
if (global.mainWindow.isMinimized()) global.mainWindow.restore();
if (!global.mainWindow.isVisible()) global.mainWindow.show();
global.mainWindow.focus();
}
};
@@ -54,41 +54,46 @@ exports.create = function(win, config) {
},
]);
trayIcon = new Tray(config.icon_path);
const defaultIcon = nativeImage.createFromPath(config.icon_path);
trayIcon = new Tray(defaultIcon);
trayIcon.setToolTip(config.brand);
trayIcon.setContextMenu(contextMenu);
trayIcon.on('click', toggleWin);
let lastFavicon = null;
win.webContents.on('page-favicon-updated', async function(ev, favicons) {
let newFavicon = config.icon_path;
if (favicons && favicons.length > 0 && favicons[0].startsWith('data:')) {
newFavicon = favicons[0];
global.mainWindow.webContents.on('page-favicon-updated', async function(ev, favicons) {
if (!favicons || favicons.length <= 0 || !favicons[0].startsWith('data:')) {
if (lastFavicon !== null) {
win.setIcon(defaultIcon);
trayIcon.setImage(defaultIcon);
lastFavicon = null;
}
return;
}
// No need to change, shortcut
if (newFavicon === lastFavicon) return;
lastFavicon = newFavicon;
if (favicons[0] === lastFavicon) return;
lastFavicon = favicons[0];
// if its not default we have to construct into nativeImage
if (newFavicon !== config.icon_path) {
newFavicon = nativeImage.createFromDataURL(favicons[0]);
let newFavicon = nativeImage.createFromDataURL(favicons[0]);
if (process.platform === 'win32') {
try {
const icoPath = path.join(app.getPath('temp'), 'win32_riot_icon.ico')
const icoBuf = await pngToIco(newFavicon.toPNG());
fs.writeFileSync(icoPath, icoBuf);
newFavicon = icoPath;
} catch (e) {console.error(e);}
// Windows likes ico's too much.
if (process.platform === 'win32') {
try {
const icoPath = path.join(app.getPath('temp'), 'win32_riot_icon.ico');
fs.writeFileSync(icoPath, await pngToIco(newFavicon.toPNG()));
newFavicon = nativeImage.createFromPath(icoPath);
} catch (e) {
console.error("Failed to make win32 ico", e);
}
}
trayIcon.setImage(newFavicon);
win.setIcon(newFavicon);
global.mainWindow.setIcon(newFavicon);
});
win.webContents.on('page-title-updated', function(ev, title) {
global.mainWindow.webContents.on('page-title-updated', function(ev, title) {
trayIcon.setToolTip(title);
});
};

View File

@@ -0,0 +1,84 @@
const { app, autoUpdater, ipcMain } = require('electron');
const UPDATE_POLL_INTERVAL_MS = 60 * 60 * 1000;
const INITIAL_UPDATE_DELAY_MS = 30 * 1000;
function installUpdate() {
// for some reason, quitAndInstall does not fire the
// before-quit event, so we need to set the flag here.
global.appQuitting = true;
autoUpdater.quitAndInstall();
}
function pollForUpdates() {
try {
autoUpdater.checkForUpdates();
} catch (e) {
console.log('Couldn\'t check for update', e);
}
}
module.exports = {};
module.exports.start = function startAutoUpdate(updateBaseUrl) {
if (updateBaseUrl.slice(-1) !== '/') {
updateBaseUrl = updateBaseUrl + '/';
}
try {
let url;
// For reasons best known to Squirrel, the way it checks for updates
// is completely different between macOS and windows. On macOS, it
// hits a URL that either gives it a 200 with some json or
// 204 No Content. On windows it takes a base path and looks for
// files under that path.
if (process.platform === 'darwin') {
// include the current version in the URL we hit. Electron doesn't add
// it anywhere (apart from the User-Agent) so it's up to us. We could
// (and previously did) just use the User-Agent, but this doesn't
// rely on NSURLConnection setting the User-Agent to what we expect,
// and also acts as a convenient cache-buster to ensure that when the
// app updates it always gets a fresh value to avoid update-looping.
url = `${updateBaseUrl}macos/?localVersion=${encodeURIComponent(app.getVersion())}`;
} else if (process.platform === 'win32') {
url = `${updateBaseUrl}win32/${process.arch}/`;
} else {
// Squirrel / electron only supports auto-update on these two platforms.
// I'm not even going to try to guess which feed style they'd use if they
// implemented it on Linux, or if it would be different again.
console.log('Auto update not supported on this platform');
}
if (url) {
autoUpdater.setFeedURL(url);
// We check for updates ourselves rather than using 'updater' because we need to
// do it in the main process (and we don't really need to check every 10 minutes:
// every hour should be just fine for a desktop app)
// However, we still let the main window listen for the update events.
// We also wait a short time before checking for updates the first time because
// of squirrel on windows and it taking a small amount of time to release a
// lock file.
setTimeout(pollForUpdates, INITIAL_UPDATE_DELAY_MS);
setInterval(pollForUpdates, UPDATE_POLL_INTERVAL_MS);
}
} catch (err) {
// will fail if running in debug mode
console.log('Couldn\'t enable update checking', err);
}
}
ipcMain.on('install_update', installUpdate);
ipcMain.on('check_updates', pollForUpdates);
function ipcChannelSendUpdateStatus(status) {
if (global.mainWindow) {
global.mainWindow.webContents.send('check_updates', status);
}
}
autoUpdater.on('update-available', function() {
ipcChannelSendUpdateStatus(true);
}).on('update-not-available', function() {
ipcChannelSendUpdateStatus(false);
}).on('error', function(error) {
ipcChannelSendUpdateStatus(error.message);
});

View File

@@ -84,13 +84,23 @@ module.exports = function (config) {
// available preprocessors:
// https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'{src,test}/**/*.js': ['webpack'],
'{src,test}/**/*.js': ['webpack', 'sourcemap'],
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'junit'],
reporters: ['logcapture', 'spec', 'junit', 'summary'],
specReporter: {
suppressErrorSummary: false, // do print error summary
suppressFailed: false, // do print information about failed tests
suppressPassed: false, // do print information about passed tests
showSpecTiming: true, // print the time elapsed for each spec
},
client: {
captureLogs: true,
},
// web server port
port: 9876,
@@ -113,8 +123,23 @@ module.exports = function (config) {
browsers: [
'Chrome',
//'PhantomJS',
//'ChromeHeadless'
],
customLaunchers: {
'ChromeHeadless': {
base: 'Chrome',
flags: [
// '--no-sandbox',
// See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
'--headless',
'--disable-gpu',
// Without a remote debugging port, Google Chrome exits immediately.
'--remote-debugging-port=9222',
],
}
},
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
// singleRun: false,

View File

@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "electron_app/src/electron-main.js",
"version": "0.11.2",
"version": "0.12.1",
"description": "A feature-rich client for Matrix.org",
"author": "Vector Creations Ltd.",
"repository": {
@@ -31,8 +31,8 @@
"build:res": "node scripts/copy-res.js",
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
"build:compile": "npm run reskindex && babel --source-maps -d lib src",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress",
"build:bundle:dev": "webpack --optimize-occurence-order --progress",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail",
"build:bundle:dev": "webpack --optimize-occurence-order --progress --bail",
"build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64",
"build": "npm run reskindex && npm run build:res && npm run build:bundle",
"build:dev": "npm run reskindex && npm run build:res && npm run build:bundle:dev",
@@ -48,15 +48,16 @@
"lintall": "eslint src/ test/",
"clean": "rimraf lib webapp electron_app/dist",
"prepublish": "npm run build:compile",
"test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false",
"test": "karma start --single-run=true --autoWatch=false --browsers ChromeHeadless",
"test-multi": "karma start"
},
"dependencies": {
"babel-polyfill": "^6.5.0",
"babel-runtime": "^6.11.6",
"bluebird": "^3.5.0",
"browser-request": "^0.3.3",
"classnames": "^2.1.2",
"draft-js": "^0.8.1",
"draft-js": "^0.11.0-alpha",
"extract-text-webpack-plugin": "^0.9.1",
"favico.js": "^0.3.10",
"filesize": "3.5.6",
@@ -65,15 +66,14 @@
"gfm.css": "^1.1.1",
"highlight.js": "^9.0.0",
"linkifyjs": "^2.1.3",
"matrix-js-sdk": "0.7.12",
"matrix-react-sdk": "0.9.5",
"matrix-js-sdk": "0.8.1",
"matrix-react-sdk": "0.10.1",
"modernizr": "^3.1.0",
"pako": "^1.0.5",
"q": "^1.4.1",
"react": "^15.4.0",
"react": "^15.6.0",
"react-dnd": "^2.1.4",
"react-dnd-html5-backend": "^2.1.2",
"react-dom": "^15.4.0",
"react-dom": "^15.6.0",
"react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef",
"sanitize-html": "^1.11.1",
"text-encoding-utf-8": "^1.0.1",
@@ -88,7 +88,7 @@
"babel-eslint": "^6.1.0",
"babel-loader": "^6.2.5",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-transform-async-to-generator": "^6.16.0",
"babel-plugin-transform-async-to-bluebird": "^1.1.1",
"babel-plugin-transform-class-properties": "^6.16.0",
"babel-plugin-transform-object-rest-spread": "^6.16.0",
"babel-plugin-transform-runtime": "^6.15.0",
@@ -114,18 +114,22 @@
"fs-extra": "^0.30.0",
"html-webpack-plugin": "^2.24.0",
"json-loader": "^0.5.3",
"karma": "^0.13.22",
"karma": "^1.7.0",
"karma-chrome-launcher": "^0.2.3",
"karma-cli": "^0.1.2",
"karma-junit-reporter": "^0.4.1",
"karma-logcapture-reporter": "0.0.1",
"karma-mocha": "^0.2.2",
"karma-phantomjs-launcher": "^1.0.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.31",
"karma-summary-reporter": "^1.3.3",
"karma-webpack": "^1.7.0",
"matrix-mock-request": "^1.2.0",
"matrix-react-test-utils": "^0.2.0",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
"mocha": "^2.4.5",
"parallelshell": "^1.2.0",
"phantomjs-prebuilt": "^2.1.7",
"postcss-extend": "^1.0.5",
"postcss-import": "^9.0.0",
"postcss-loader": "^1.2.2",
@@ -135,7 +139,7 @@
"postcss-simple-vars": "^3.0.0",
"postcss-strip-inline-comments": "^0.1.5",
"react-addons-perf": "^15.4.0",
"react-addons-test-utils": "^15.4.0",
"react-addons-test-utils": "^15.6.0",
"rimraf": "^2.4.3",
"source-map-loader": "^0.1.5",
"webpack": "^1.12.14",
@@ -147,7 +151,7 @@
"build": {
"appId": "im.riot.app",
"category": "Network",
"electronVersion": "1.6.8",
"electronVersion": "1.7.5",
"//asar=false": "https://github.com/electron-userland/electron-builder/issues/675",
"asar": false,
"dereference": true,

View File

@@ -11,7 +11,7 @@ cd `dirname $0`
for i in matrix-js-sdk matrix-react-sdk
do
depver=`cat package.json | jq -r .dependencies.\"$i\"`
depver=`cat package.json | jq -r .dependencies[\"$i\"]`
latestver=`npm show $i version`
if [ "$depver" != "$latestver" ]
then

View File

@@ -9,24 +9,27 @@
// This could readily be automated, but it's nice to explicitly
// control when we languages are available.
const INCLUDE_LANGS = [
{'value': 'da', 'label': 'Dansk'},
{'value': 'de_DE', 'label': 'Deutsch'},
{'value': 'en_EN', 'label': 'English'},
{'value': 'en_US', 'label': 'English (US)'},
{'value': 'da', 'label': 'Dansk'},
{'value': 'el', 'label': 'Ελληνικά'},
{'value': 'eo', 'label': 'Esperanto'},
{'value': 'nl', 'label': 'Nederlands'},
{'value': 'de_DE', 'label': 'Deutsch'},
{'value': 'es', 'label': 'Español'},
{'value': 'eu', 'label': 'Euskal'},
{'value': 'fr', 'label': 'Français'},
{'value': 'hu', 'label': 'Magyar'},
{'value': 'ko', 'label': '한국어'},
{'value': 'lv', 'label': 'Latviešu'},
{'value': 'nb_NO', 'label': 'Norwegian Bokmål'},
{'value': 'nl', 'label': 'Nederlands'},
{'value': 'pl', 'label': 'Polski'},
{'value': 'pt', 'label': 'Português'},
{'value': 'pt_BR', 'label': 'Português do Brasil'},
{'value': 'ru', 'label': 'Русский'},
{'value': 'sv', 'label': 'Svenska'},
{'value': 'es', 'label': 'Español'},
{'value': 'th', 'label': 'ไทย'},
{'value': 'te', 'label': 'తెలుగు'},
{'value': 'tr', 'label': 'Türk'},
{'value': 'zh_Hans', 'label': '简体中文'}, // simplified chinese
{'value': 'zh_Hant', 'label': '繁體中文'}, // traditional chinese

View File

@@ -63,7 +63,8 @@ class Deployer:
self.packages_path = "."
self.bundles_path = None
self.should_clean = False
self.config_location = None
# filename -> symlink path e.g 'config.localhost.json' => '../localhost/config.json'
self.config_locations = {}
self.verify_signature = True
def deploy(self, tarball, extract_path):
@@ -95,11 +96,12 @@ class Deployer:
print ("Extracted into: %s" % extracted_dir)
if self.config_location:
create_relative_symlink(
target=self.config_location,
linkname=os.path.join(extracted_dir, 'config.json')
)
if self.config_locations:
for config_filename, config_loc in self.config_locations.iteritems():
create_relative_symlink(
target=config_loc,
linkname=os.path.join(extracted_dir, config_filename)
)
if self.bundles_path:
extracted_bundles = os.path.join(extracted_dir, 'bundles')
@@ -178,6 +180,8 @@ if __name__ == "__main__":
deployer.packages_path = args.packages_dir
deployer.bundles_path = args.bundles_dir
deployer.should_clean = args.clean
deployer.config_location = args.config
deployer.config_locations = {
"config.json": args.config,
}
deployer.deploy(args.tarball, args.extract_path)

View File

@@ -49,42 +49,47 @@ function dodep() {
[ "$curbranch" != 'develop' ] && clone $org $repo develop
} || return $?
(
cd $repo
echo "$repo set to branch "`git rev-parse --abbrev-ref HEAD`
)
echo "$repo set to branch "`git -C "$repo" rev-parse --abbrev-ref HEAD`
mkdir -p node_modules
rm -r "node_modules/$repo" 2>/dev/null || true
ln -sv "../$repo" node_modules/
(
cd $repo
npm install
)
}
##############################
echo -en 'travis_fold:start:matrix-js-sdk\r'
echo 'Setting up matrix-js-sdk'
dodep matrix-org matrix-js-sdk
(
cd node_modules/matrix-js-sdk
npm install
)
echo -en 'travis_fold:end:matrix-js-sdk\r'
##############################
echo -en 'travis_fold:start:matrix-react-sdk\r'
echo 'Setting up matrix-react-sdk'
dodep matrix-org matrix-react-sdk
mkdir -p node_modules/matrix-react-sdk/node_modules
# replace the version of js-sdk that got pulled into react-sdk with a symlink
# to our version. Make sure to do this *after* doing 'npm i' in react-sdk,
# otherwise npm helpfully moves another-json from matrix-js-sdk/node_modules
# into matrix-react-sdk/node_modules.
#
# (note this matches the instructions in the README.)
rm -r node_modules/matrix-react-sdk/node_modules/matrix-js-sdk
ln -s ../../matrix-js-sdk node_modules/matrix-react-sdk/node_modules/
(
cd node_modules/matrix-react-sdk
npm install
)
echo -en 'travis_fold:end:matrix-react-sdk\r'
##############################
# Link the reskindex binary in place: if we used npm link,
# npm would do this for us, but we don't because we'd have
# to define the npm prefix somewhere so it could put the

View File

@@ -8,8 +8,11 @@ nvm use 6
set -x
# check out corresponding branches of dependencies
`dirname $0`/fetch-develop.deps.sh
# check out corresponding branches of dependencies.
#
# clone the deps with depth 1: we know we will only ever need that one
# commit.
`dirname $0`/fetch-develop.deps.sh --depth 1
npm install

View File

@@ -13,6 +13,7 @@
from __future__ import print_function
import json, requests, tarfile, argparse, os, errno
import time
import traceback
from urlparse import urljoin
from flask import Flask, jsonify, request, abort
@@ -124,6 +125,7 @@ def fetch_jenkins_build(job_name, build_num):
try:
extracted_dir = deploy_tarball(tar_gz_url, build_dir)
except DeployException as e:
traceback.print_exc()
abort(400, e.message)
create_symlink(source=extracted_dir, linkname=arg_symlink)
@@ -185,10 +187,16 @@ if __name__ == "__main__":
to the /vector directory INSIDE the tarball."
)
)
def _raise(ex):
raise ex
# --config config.json=../../config.json --config config.localhost.json=./localhost.json
parser.add_argument(
"--config", dest="config", help=(
"Write a symlink to config.json in the extracted tarball. \
To this location."
"--config", action="append", dest="configs",
type=lambda kv: kv.split("=", 1) if "=" in kv else _raise(Exception("Missing =")), help=(
"A list of configs to symlink into the extracted tarball. \
For example, --config config.json=../config.json config2.json=../test/config.json"
)
)
parser.add_argument(
@@ -212,7 +220,8 @@ if __name__ == "__main__":
deployer = Deployer()
deployer.bundles_path = args.bundles_dir
deployer.should_clean = args.clean
deployer.config_location = args.config
deployer.config_locations = dict(args.configs) if args.configs else {}
# we don't pgp-sign jenkins artifacts; instead we rely on HTTPS access to
# the jenkins server (and the jenkins server not being compromised and/or
@@ -225,13 +234,13 @@ if __name__ == "__main__":
deploy_tarball(args.tarball_uri, build_dir)
else:
print(
"Listening on port %s. Extracting to %s%s. Symlinking to %s. Jenkins URL: %s. Config location: %s" %
"Listening on port %s. Extracting to %s%s. Symlinking to %s. Jenkins URL: %s. Config locations: %s" %
(args.port,
arg_extract_path,
" (clean after)" if deployer.should_clean else "",
arg_symlink,
arg_jenkins_url,
deployer.config_location,
deployer.config_locations,
)
)
app.run(host="0.0.0.0", port=args.port, debug=True)

View File

@@ -16,7 +16,7 @@ limitations under the License.
"use strict";
var q = require("q");
import Promise from 'bluebird';
var Matrix = require("matrix-js-sdk");
var Room = Matrix.Room;
var CallHandler = require('matrix-react-sdk/lib/CallHandler');
@@ -53,11 +53,11 @@ ConferenceCall.prototype._joinConferenceUser = function() {
// Make sure the conference user is in the group chat room
var groupRoom = this.client.getRoom(this.groupRoomId);
if (!groupRoom) {
return q.reject("Bad group room ID");
return Promise.reject("Bad group room ID");
}
var member = groupRoom.getMember(this.confUserId);
if (member && member.membership === "join") {
return q();
return Promise.resolve();
}
return this.client.invite(this.groupRoomId, this.confUserId);
};
@@ -75,7 +75,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
}
}
if (confRoom) {
return q(confRoom);
return Promise.resolve(confRoom);
}
return this.client.createRoom({
preset: "private_chat",

View File

@@ -52,6 +52,8 @@ module.exports = React.createClass({
},
componentWillMount: function() {
this._unmounted = false;
if (this.props.teamToken && this.props.teamServerUrl) {
this.setState({
iframeSrc: `${this.props.teamServerUrl}/static/${this.props.teamToken}/home.html`
@@ -67,9 +69,14 @@ module.exports = React.createClass({
request(
{ method: "GET", url: src },
(err, response, body) => {
if (this._unmounted) {
return;
}
if (err || response.status < 200 || response.status >= 300) {
console.log(err);
this.setState({ page: "Couldn't load home page" });
console.warn(`Error loading home page: ${err}`);
this.setState({ page: _t("Couldn't load home page") });
return;
}
body = body.replace(/_t\(['"]([\s\S]*?)['"]\)/mg, (match, g1)=>this.translate(g1));
@@ -79,6 +86,10 @@ module.exports = React.createClass({
}
},
componentWillUnmount: function() {
this._unmounted = true;
},
render: function() {
if (this.state.iframeSrc) {
return (

View File

@@ -16,17 +16,16 @@ limitations under the License.
'use strict';
var React = require('react');
var DragDropContext = require('react-dnd').DragDropContext;
var HTML5Backend = require('react-dnd-html5-backend');
var sdk = require('matrix-react-sdk')
var dis = require('matrix-react-sdk/lib/dispatcher');
import React from 'react';
import { DragDropContext } from 'react-dnd';
import HTML5Backend from 'react-dnd-html5-backend';
import KeyCode from 'matrix-react-sdk/lib/KeyCode';
import sdk from 'matrix-react-sdk';
import dis from 'matrix-react-sdk/lib/dispatcher';
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
var VectorConferenceHandler = require('../../VectorConferenceHandler');
var CallHandler = require("matrix-react-sdk/lib/CallHandler");
import CallHandler from 'matrix-react-sdk/lib/CallHandler';
import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
import VectorConferenceHandler from '../../VectorConferenceHandler';
var LeftPanel = React.createClass({
displayName: 'LeftPanel',
@@ -42,6 +41,10 @@ var LeftPanel = React.createClass({
};
},
componentWillMount: function() {
this.focusedElement = null;
},
componentDidMount: function() {
this.dispatcherRef = dis.register(this.onAction);
},
@@ -64,6 +67,91 @@ var LeftPanel = React.createClass({
}
},
_onFocus: function(ev) {
this.focusedElement = ev.target;
},
_onBlur: function(ev) {
this.focusedElement = null;
},
_onKeyDown: function(ev) {
if (!this.focusedElement) return;
let handled = false;
switch (ev.keyCode) {
case KeyCode.UP:
this._onMoveFocus(true);
handled = true;
break;
case KeyCode.DOWN:
this._onMoveFocus(false);
handled = true;
break;
}
if (handled) {
ev.stopPropagation();
ev.preventDefault();
}
},
_onMoveFocus: function(up) {
var element = this.focusedElement;
// unclear why this isn't needed
// var descending = (up == this.focusDirection) ? this.focusDescending : !this.focusDescending;
// this.focusDirection = up;
var descending = false; // are we currently descending or ascending through the DOM tree?
var classes;
do {
var child = up ? element.lastElementChild : element.firstElementChild;
var sibling = up ? element.previousElementSibling : element.nextElementSibling;
if (descending) {
if (child) {
element = child;
}
else if (sibling) {
element = sibling;
}
else {
descending = false;
element = element.parentElement;
}
}
else {
if (sibling) {
element = sibling;
descending = true;
}
else {
element = element.parentElement;
}
}
if (element) {
classes = element.classList;
if (classes.contains("mx_LeftPanel")) { // we hit the top
element = up ? element.lastElementChild : element.firstElementChild;
descending = true;
}
}
} while(element && !(
classes.contains("mx_RoomTile") ||
classes.contains("mx_SearchBox_search") ||
classes.contains("mx_RoomSubList_ellipsis")));
if (element) {
element.focus();
this.focusedElement = element;
this.focusedDescending = descending;
}
},
_recheckCallElement: function(selectedRoomId) {
// if we aren't viewing a room with an ongoing call, but there is an
// active call, show the call element - we need to do this to make
@@ -126,7 +214,8 @@ var LeftPanel = React.createClass({
}
return (
<aside className={classes} style={{ opacity: this.props.opacity }}>
<aside className={classes} style={{ opacity: this.props.opacity }}
onKeyDown={ this._onKeyDown } onFocus={ this._onFocus } onBlur={ this._onBlur }>
{ topBox }
{ callPreview }
<RoomList

View File

@@ -31,7 +31,7 @@ module.exports = React.createClass({
displayName: 'RightPanel',
propTypes: {
userId: React.PropTypes.string, // if showing an orphaned MemberInfo page, this is set
// TODO: This should not be a prop, it should be received from the RoomViewStore
roomId: React.PropTypes.string, // if showing panels for a given room, this is set
collapsed: React.PropTypes.bool, // currently unused property to request for a minimized view of the panel
},
@@ -57,17 +57,9 @@ module.exports = React.createClass({
},
getInitialState: function() {
if (this.props.userId) {
var member = new Matrix.RoomMember(null, this.props.userId);
return {
phase: this.Phase.MemberInfo,
member: member,
};
} else {
return {
phase: this.Phase.MemberList
};
}
return {
phase: this.Phase.MemberList
};
},
onMemberListButtonClick: function() {
@@ -229,7 +221,7 @@ module.exports = React.createClass({
}
else if(this.state.phase == this.Phase.MemberInfo) {
var MemberInfo = sdk.getComponent('rooms.MemberInfo');
panel = <MemberInfo member={this.state.member} key={this.props.roomId || this.props.userId} />
panel = <MemberInfo member={this.state.member} key={this.props.roomId || this.state.member.userId} />
}
else if (this.state.phase == this.Phase.NotificationPanel) {
panel = <NotificationPanel />

View File

@@ -28,7 +28,7 @@ var linkify = require('linkifyjs');
var linkifyString = require('linkifyjs/string');
var linkifyMatrix = require('matrix-react-sdk/lib/linkify-matrix');
var sanitizeHtml = require('sanitize-html');
var q = require('q');
import Promise from 'bluebird';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
@@ -73,6 +73,7 @@ module.exports = React.createClass({
this.protocols = response;
this.setState({protocolsLoading: false});
}, (err) => {
console.warn(`error loading thirdparty protocols: ${err}`);
this.setState({protocolsLoading: false});
if (MatrixClientPeg.get().isGuest()) {
// Guests currently aren't allowed to use this API, so
@@ -81,7 +82,7 @@ module.exports = React.createClass({
return;
}
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to get protocol list from Home Server', '', ErrorDialog, {
title: _t('Failed to get protocol list from Home Server'),
description: _t('The Home Server may be too old to support third party networks'),
});
@@ -116,7 +117,7 @@ module.exports = React.createClass({
},
getMoreRooms: function() {
if (!MatrixClientPeg.get()) return q();
if (!MatrixClientPeg.get()) return Promise.resolve();
const my_filter_string = this.state.filterString;
const my_server = this.state.roomServer;
@@ -177,7 +178,7 @@ module.exports = React.createClass({
this.setState({ loading: false });
console.error("Failed to get publicRooms: %s", JSON.stringify(err));
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to get public room list', '', ErrorDialog, {
title: _t('Failed to get public room list'),
description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded'))
});
@@ -205,7 +206,7 @@ module.exports = React.createClass({
desc = _t('Remove %(name)s from the directory?', {name: name});
}
Modal.createDialog(QuestionDialog, {
Modal.createTrackedDialog('Remove from Directory', '', QuestionDialog, {
title: _t('Remove from Directory'),
description: desc,
onFinished: (should_delete) => {
@@ -226,7 +227,7 @@ module.exports = React.createClass({
modal.close();
this.refreshRoomList();
console.error("Failed to " + step + ": " + err);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Remove from Directory Error', '', ErrorDialog, {
title: _t('Error'),
description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded'))
});
@@ -265,7 +266,7 @@ module.exports = React.createClass({
},
onFillRequest: function(backwards) {
if (backwards || !this.nextBatch) return q(false);
if (backwards || !this.nextBatch) return Promise.resolve(false);
return this.getMoreRooms();
},
@@ -315,7 +316,7 @@ module.exports = React.createClass({
const fields = protocolName ? this._getFieldsForThirdPartyLocation(alias, this.protocols[protocolName], instance) : null;
if (!fields) {
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Unable to join network', '', ErrorDialog, {
title: _t('Unable to join network'),
description: _t('Riot does not know how to join a room on this network'),
});
@@ -326,14 +327,14 @@ module.exports = React.createClass({
this.showRoomAlias(resp[0].alias);
} else {
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Room not found', '', ErrorDialog, {
title: _t('Room not found'),
description: _t('Couldn\'t find a matching Matrix room'),
});
}
}, (e) => {
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Fetching third party location failed', '', ErrorDialog, {
title: _t('Fetching third party location failed'),
description: _t('Unable to look up room ID from server'),
});

View File

@@ -30,6 +30,7 @@ var RoomNotifs = require('matrix-react-sdk/lib/RoomNotifs');
var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils');
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
import Modal from 'matrix-react-sdk/lib/Modal';
import KeyCode from 'matrix-react-sdk/lib/KeyCode';
// turn this on for drop & drag console debugging galore
var debug = false;
@@ -151,10 +152,11 @@ var RoomSubList = React.createClass({
}
},
onRoomTileClick(roomId) {
onRoomTileClick(roomId, ev) {
dis.dispatch({
action: 'view_room',
room_id: roomId,
clear_search: (ev && (ev.keyCode == KeyCode.ENTER || ev.keyCode == KeyCode.SPACE)),
});
},
@@ -509,10 +511,10 @@ var RoomSubList = React.createClass({
if (list[i].tags[self.props.tagName] && list[i].tags[self.props.tagName].order === undefined) {
MatrixClientPeg.get().setRoomTag(list[i].roomId, self.props.tagName, {order: (order + 1.0) / 2.0}).finally(function() {
// Do any final stuff here
}).fail(function(err) {
}).catch(function(err) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Failed to add tag " + self.props.tagName + " to room" + err);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to add tag to room', '', ErrorDialog, {
title: _t('Failed to add tag %(tagName)s to room', {tagName: self.props.tagName}),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});

View File

@@ -16,12 +16,13 @@ limitations under the License.
'use strict';
var React = require('react');
import React from 'react';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
var sdk = require('matrix-react-sdk')
var dis = require('matrix-react-sdk/lib/dispatcher');
var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc');
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
import KeyCode from 'matrix-react-sdk/lib/KeyCode';
import sdk from 'matrix-react-sdk';
import dis from 'matrix-react-sdk/lib/dispatcher';
import rate_limited_func from 'matrix-react-sdk/lib/ratelimitedfunc';
import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
module.exports = React.createClass({
displayName: 'SearchBox',
@@ -46,18 +47,19 @@ module.exports = React.createClass({
},
onAction: function(payload) {
// Disabling this as I find it really really annoying, and was used to the
// previous behaviour - see https://github.com/vector-im/riot-web/issues/3348
/*
switch (payload.action) {
// Clear up the text field when a room is selected.
case 'view_room':
if (this.refs.search) {
if (this.refs.search && payload.clear_search) {
this._clearSearch();
}
break;
case 'focus_room_filter':
if (this.refs.search) {
this.refs.search.focus();
this.refs.search.select();
}
break;
}
*/
},
onChange: function() {
@@ -86,6 +88,15 @@ module.exports = React.createClass({
}
},
_onKeyDown: function(ev) {
switch (ev.keyCode) {
case KeyCode.ESCAPE:
this._clearSearch();
dis.dispatch({action: 'focus_composer'});
break;
}
},
_clearSearch: function() {
this.refs.search.value = "";
this.onChange();
@@ -135,6 +146,7 @@ module.exports = React.createClass({
className="mx_SearchBox_search"
value={ this.state.searchTerm }
onChange={ this.onChange }
onKeyDown={ this._onKeyDown }
placeholder={ _t('Filter room names') }
/>
];

View File

@@ -67,29 +67,29 @@ module.exports = React.createClass({
onResendClick: function() {
Resend.resend(this.props.mxEvent);
if (this.props.onFinished) this.props.onFinished();
this.closeMenu();
},
onViewSourceClick: function() {
const ViewSource = sdk.getComponent('structures.ViewSource');
Modal.createDialog(ViewSource, {
Modal.createTrackedDialog('View Event Source', '', ViewSource, {
content: this.props.mxEvent.event,
}, 'mx_Dialog_viewsource');
if (this.props.onFinished) this.props.onFinished();
this.closeMenu();
},
onViewClearSourceClick: function() {
const ViewSource = sdk.getComponent('structures.ViewSource');
Modal.createDialog(ViewSource, {
Modal.createTrackedDialog('View Clear Event Source', '', ViewSource, {
// FIXME: _clearEvent is private
content: this.props.mxEvent._clearEvent,
}, 'mx_Dialog_viewsource');
if (this.props.onFinished) this.props.onFinished();
this.closeMenu();
},
onRedactClick: function() {
const ConfirmRedactDialog = sdk.getComponent("dialogs.ConfirmRedactDialog");
Modal.createDialog(ConfirmRedactDialog, {
Modal.createTrackedDialog('Confirm Redact Dialog', '', ConfirmRedactDialog, {
onFinished: (proceed) => {
if (!proceed) return;
@@ -99,19 +99,19 @@ module.exports = React.createClass({
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
// display error message stating you couldn't delete this.
const code = e.errcode || e.statusCode;
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('You cannot delete this message', '', ErrorDialog, {
title: _t('Error'),
description: _t('You cannot delete this message. (%(code)s)', {code: code})
});
}).done();
},
}, 'mx_Dialog_confirmredact');
if (this.props.onFinished) this.props.onFinished();
this.closeMenu();
},
onCancelSendClick: function() {
Resend.removeFromQueue(this.props.mxEvent);
if (this.props.onFinished) this.props.onFinished();
this.closeMenu();
},
onForwardClick: function() {
@@ -130,15 +130,15 @@ module.exports = React.createClass({
if (this.props.eventTileOps) {
this.props.eventTileOps.unhideWidget();
}
if (this.props.onFinished) this.props.onFinished();
this.closeMenu();
},
onQuoteClick: function() {
console.log(this.props.mxEvent);
dis.dispatch({
action: 'quote',
event: this.props.mxEvent,
text: this.props.eventTileOps.getInnerText(),
});
this.closeMenu();
},
render: function() {
@@ -152,6 +152,7 @@ module.exports = React.createClass({
let unhidePreviewButton;
let permalinkButton;
let externalURLButton;
let quoteButton;
if (eventStatus === 'not_sent') {
resendButton = (
@@ -220,11 +221,13 @@ module.exports = React.createClass({
</div>
);
const quoteButton = (
<div className="mx_MessageContextMenu_field" onClick={this.onQuoteClick}>
{ _t('Quote') }
</div>
);
if (this.props.eventTileOps && this.props.eventTileOps.getInnerText) {
quoteButton = (
<div className="mx_MessageContextMenu_field" onClick={this.onQuoteClick}>
{ _t('Quote') }
</div>
);
}
// Bridges can provide a 'external_url' to link back to the source.
if( typeof(this.props.mxEvent.event.content.external_url) === "string") {
@@ -247,7 +250,7 @@ module.exports = React.createClass({
{viewClearSourceButton}
{unhidePreviewButton}
{permalinkButton}
{UserSettingsStore.isFeatureEnabled('rich_text_editor') ? quoteButton : null}
{quoteButton}
{externalURLButton}
</div>
);

View File

@@ -17,7 +17,7 @@ limitations under the License.
'use strict';
import q from 'q';
import Promise from 'bluebird';
import React from 'react';
import classNames from 'classnames';
import sdk from 'matrix-react-sdk';
@@ -61,16 +61,16 @@ module.exports = React.createClass({
const roomId = this.props.room.roomId;
var cli = MatrixClientPeg.get();
if (!cli.isGuest()) {
q.delay(500).then(function() {
Promise.delay(500).then(function() {
if (tagNameOff !== null && tagNameOff !== undefined) {
cli.deleteRoomTag(roomId, tagNameOff).finally(function() {
// Close the context menu
if (self.props.onFinished) {
self.props.onFinished();
};
}).fail(function(err) {
}).catch(function(err) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to remove tag from room 1', '', ErrorDialog, {
title: _t('Failed to remove tag %(tagName)s from room', {tagName: tagNameOff}),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});
@@ -85,9 +85,9 @@ module.exports = React.createClass({
if (self.props.onFinished) {
self.props.onFinished();
};
}).fail(function(err) {
}).catch(function(err) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to remove tag from room 2', '', ErrorDialog, {
title: _t('Failed to remove tag %(tagName)s from room', {tagName: tagNameOn}),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});
@@ -148,7 +148,7 @@ module.exports = React.createClass({
};
}, (err) => {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to set Direct Message status of room', '', ErrorDialog, {
title: _t('Failed to set Direct Message status of room'),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});
@@ -187,7 +187,7 @@ module.exports = React.createClass({
}, function(err) {
var errCode = err.errcode || "unknown error code";
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to forget room', '', ErrorDialog, {
title: _t('Failed to forget room %(errCode)s', {errCode: errCode}),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});
@@ -212,7 +212,7 @@ module.exports = React.createClass({
RoomNotifs.setRoomNotifsState(this.props.room.roomId, newState).done(() => {
// delay slightly so that the user can see their state change
// before closing the menu
return q.delay(500).then(() => {
return Promise.delay(500).then(() => {
if (this._unmounted) return;
// Close the context menu
if (this.props.onFinished) {

View File

@@ -66,7 +66,7 @@ module.exports = React.createClass({
onRedactClick: function() {
const ConfirmRedactDialog = sdk.getComponent("dialogs.ConfirmRedactDialog");
Modal.createDialog(ConfirmRedactDialog, {
Modal.createTrackedDialog('Confirm Redact Dialog', 'Image View', ConfirmRedactDialog, {
onFinished: (proceed) => {
if (!proceed) return;
var self = this;
@@ -76,7 +76,7 @@ module.exports = React.createClass({
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
// display error message stating you couldn't delete this.
var code = e.errcode || e.statusCode;
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('You cannot delete this image.', '', ErrorDialog, {
title: _t('Error'),
description: _t('You cannot delete this image. (%(code)s)', {code: code})
});
@@ -158,7 +158,7 @@ module.exports = React.createClass({
var eventRedact;
if(showEventMeta) {
eventRedact = (<div className="mx_ImageView_button" onClick={this.onRedactClick}>
{ _t('Redact') }
{ _t('Remove') }
</div>);
}

View File

@@ -35,7 +35,7 @@ module.exports = React.createClass({
render: function() {
return (
<div className="mx_MatrixToolbar">
<img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="/!\"/>
<img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="Warning"/>
<div className="mx_MatrixToolbar_content">
{ _t('You are not receiving desktop notifications') } <a className="mx_MatrixToolbar_link" onClick={ this.onClick }> { _t('Enable them now') }</a>
</div>

View File

@@ -40,7 +40,7 @@ export default React.createClass({
displayReleaseNotes: function(releaseNotes) {
const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog');
Modal.createDialog(QuestionDialog, {
Modal.createTrackedDialog('Display release notes', '', QuestionDialog, {
title: _t("What's New"),
description: <pre className="changelog_text">{releaseNotes}</pre>,
button: _t("Update"),
@@ -54,7 +54,7 @@ export default React.createClass({
displayChangelog: function() {
const ChangelogDialog = sdk.getComponent('dialogs.ChangelogDialog');
Modal.createDialog(ChangelogDialog, {
Modal.createTrackedDialog('Display Changelog', '', ChangelogDialog, {
version: this.props.version,
newVersion: this.props.newVersion,
onFinished: (update) => {
@@ -96,7 +96,7 @@ export default React.createClass({
}
return (
<div className="mx_MatrixToolbar">
<img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="/!\"/>
<img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="Warning"/>
<div className="mx_MatrixToolbar_content">
{_t("A new version of Riot is available.")}
</div>

View File

@@ -20,11 +20,12 @@ import React from 'react';
import sdk from 'matrix-react-sdk';
import Modal from 'matrix-react-sdk/lib/Modal';
import dis from 'matrix-react-sdk/lib/dispatcher';
import { _t, _tJsx } from 'matrix-react-sdk/lib/languageHandler';
export default React.createClass({
onUpdateClicked: function() {
const SetPasswordDialog = sdk.getComponent('dialogs.SetPasswordDialog');
Modal.createDialog(SetPasswordDialog, {
Modal.createTrackedDialog('Set Password Dialog', 'Password Nag Bar', SetPasswordDialog, {
onFinished: (passwordChanged) => {
if (!passwordChanged) {
return;
@@ -33,12 +34,11 @@ export default React.createClass({
dis.dispatch({
action: 'password_changed',
});
}
},
});
},
render: function() {
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
const toolbarClasses = "mx_MatrixToolbar mx_MatrixToolbar_clickable";
return (
<div className={toolbarClasses} onClick={this.onUpdateClicked}>
@@ -49,12 +49,16 @@ export default React.createClass({
alt="Warning"
/>
<div className="mx_MatrixToolbar_content">
To return to your account in future you need to <u>set a password</u>
{ _tJsx(
"To return to your account in future you need to <u>set a password</u>",
/<u>(.*?)<\/u>/,
(sub) => { return <u>{ sub }</u>; },
) }
</div>
<button className="mx_MatrixToolbar_action">
Set Password
{ _t("Set Password") }
</button>
</div>
);
}
},
});

View File

@@ -0,0 +1,85 @@
/*
Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
'use strict';
import React from 'react';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
import {updateCheckStatusEnum} from '../../../vector/platform/VectorBasePlatform';
import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
const doneStatuses = [
updateCheckStatusEnum.ERROR,
updateCheckStatusEnum.NOTAVAILABLE,
];
export default React.createClass({
propTypes: {
status: React.PropTypes.oneOf(Object.values(updateCheckStatusEnum)).isRequired,
// Currently for error detail but will be usable for download progress
// once that is a thing that squirrel passes through electron.
detail: React.PropTypes.string,
},
getDefaultProps: function() {
return {
detail: '',
}
},
getStatusText: function() {
switch(this.props.status) {
case updateCheckStatusEnum.ERROR:
return _t('Error encountered (%(errorDetail)s).', { errorDetail: this.props.detail });
case updateCheckStatusEnum.CHECKING:
return _t('Checking for an update...');
case updateCheckStatusEnum.NOTAVAILABLE:
return _t('No update available.');
case updateCheckStatusEnum.DOWNLOADING:
return _t('Downloading update...');
}
}
,
hideToolbar: function() {
PlatformPeg.get().stopUpdateCheck();
},
render: function() {
const message = this.getStatusText();
const warning = _t('Warning');
let image;
if (doneStatuses.includes(this.props.status)) {
image = <img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt={warning}/>;
} else {
image = <img className="mx_MatrixToolbar_warning" src="img/spinner.gif" width="24" height="23" alt={message}/>;
}
return (
<div className="mx_MatrixToolbar">
{image}
<div className="mx_MatrixToolbar_content">
{message}
</div>
<AccessibleButton className="mx_MatrixToolbar_close" onClick={this.hideToolbar}>
<img src="img/cancel.svg" width="18" height="18" />
</AccessibleButton>
</div>
);
}
});

View File

@@ -89,7 +89,7 @@ var roomTileSource = {
}, (err) => {
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Failed to set direct chat tag " + err);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to set direct chat tag', '', ErrorDialog, {
title: _t('Failed to set direct chat tag'),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});
@@ -111,10 +111,10 @@ var roomTileSource = {
//component.state.set({ spinner: component.state.spinner ? component.state.spinner++ : 1 });
MatrixClientPeg.get().deleteRoomTag(item.room.roomId, prevTag).finally(function() {
//component.state.set({ spinner: component.state.spinner-- });
}).fail(function(err) {
}).catch(function(err) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Failed to remove tag " + prevTag + " from room: " + err);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to remove tag from room', '', ErrorDialog, {
title: _t('Failed to remove tag %(tagName)s from room', {tagName: prevTag}),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});
@@ -130,13 +130,10 @@ var roomTileSource = {
if (newTag && newTag !== 'im.vector.fake.direct' &&
(item.targetList !== item.originalList || newOrder)
) {
//component.state.set({ spinner: component.state.spinner ? component.state.spinner++ : 1 });
MatrixClientPeg.get().setRoomTag(item.room.roomId, newTag, newOrder).finally(function() {
//component.state.set({ spinner: component.state.spinner-- });
}).fail(function(err) {
MatrixClientPeg.get().setRoomTag(item.room.roomId, newTag, newOrder).catch(function(err) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Failed to add tag " + newTag + " to room: " + err);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to add tag to room', '', ErrorDialog, {
title: _t('Failed to add tag %(tagName)s to room', {tagName: newTag}),
description: ((err && err.message) ? err.message : _t('Operation failed')),
});

View File

@@ -17,7 +17,7 @@ limitations under the License.
'use strict';
var React = require('react');
import { _t, _tJsx } from 'matrix-react-sdk/lib/languageHandler';
var q = require("q");
import Promise from 'bluebird';
var sdk = require('matrix-react-sdk');
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
var UserSettingsStore = require('matrix-react-sdk/lib/UserSettingsStore');
@@ -131,7 +131,7 @@ module.exports = React.createClass({
this._refreshFromServer();
}, (error) => {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Error saving email notification preferences', '', ErrorDialog, {
title: _t('Error saving email notification preferences'),
description: _t('An error occurred whilst saving your email notification preferences.'),
});
@@ -175,7 +175,7 @@ module.exports = React.createClass({
}
var TextInputDialog = sdk.getComponent("dialogs.TextInputDialog");
Modal.createDialog(TextInputDialog, {
Modal.createTrackedDialog('Keywords Dialog', '', TextInputDialog, {
title: _t('Keywords'),
description: _t('Enter keywords separated by a comma:'),
button: _t('OK'),
@@ -236,12 +236,12 @@ module.exports = React.createClass({
}
}
q.all(deferreds).done(function() {
Promise.all(deferreds).done(function() {
self._refreshFromServer();
}, function(error) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Failed to change settings: " + error);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to change settings', '', ErrorDialog, {
title: _t('Failed to change settings'),
description: ((error && error.message) ? error.message : _t('Operation failed')),
onFinished: self._refreshFromServer
@@ -306,12 +306,12 @@ module.exports = React.createClass({
}
}
q.all(deferreds).done(function(resps) {
Promise.all(deferreds).done(function(resps) {
self._refreshFromServer();
}, function(error) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Can't update user notification settings: " + error);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Can\'t update user notifcation settings', '', ErrorDialog, {
title: _t('Can\'t update user notification settings'),
description: ((error && error.message) ? error.message : _t('Operation failed')),
onFinished: self._refreshFromServer
@@ -353,7 +353,7 @@ module.exports = React.createClass({
var onError = function(error) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Failed to update keywords: " + error);
Modal.createDialog(ErrorDialog, {
Modal.createTrackedDialog('Failed to update keywords', '', ErrorDialog, {
title: _t('Failed to update keywords'),
description: ((error && error.message) ? error.message : _t('Operation failed')),
onFinished: self._refreshFromServer
@@ -361,7 +361,7 @@ module.exports = React.createClass({
}
// Then, add the new ones
q.all(removeDeferreds).done(function(resps) {
Promise.all(removeDeferreds).done(function(resps) {
var deferreds = [];
var pushRuleVectorStateKind = self.state.vectorContentRules.vectorState;
@@ -399,7 +399,7 @@ module.exports = React.createClass({
}
}
q.all(deferreds).done(function(resps) {
Promise.all(deferreds).done(function(resps) {
self._refreshFromServer();
}, onError);
}, onError);
@@ -431,7 +431,9 @@ module.exports = React.createClass({
'global', kind, LEGACY_RULES[rule.rule_id], portLegacyActions(rule.actions)
).then( function() {
return cli.deletePushRule('global', kind, rule.rule_id);
})
}).catch( (e) => {
console.warn(`Error when porting legacy rule: ${e}`);
});
}(kind, rule));
}
}
@@ -440,7 +442,7 @@ module.exports = React.createClass({
if (needsUpdate.length > 0) {
// If some of the rules need to be ported then wait for the porting
// to happen and then fetch the rules again.
return q.allSettled(needsUpdate).then( function() {
return Promise.all(needsUpdate).then( function() {
return cli.getPushRules();
});
} else {
@@ -594,7 +596,7 @@ module.exports = React.createClass({
self.setState({pushers: resp.pushers});
});
q.all([pushRulesPromise, pushersPromise]).then(function() {
Promise.all([pushRulesPromise, pushersPromise]).then(function() {
self.setState({
phase: self.phases.DISPLAY
});

View File

@@ -2,5 +2,32 @@
"All messages": "كل الرسائل",
"Continue": "استمر",
"Please set a password!": "يرجى تعيين كلمة مرور!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "سيسمح لك هذا بالعودة إلى حسابك بعد الخروج، وتسجيل الدخول على الأجهزة الأخرى."
"This will allow you to return to your account after signing out, and sign in on other devices.": "سيسمح لك هذا بالعودة إلى حسابك بعد الخروج، وتسجيل الدخول على الأجهزة الأخرى.",
"Advanced notification settings": "إعدادات متقدمة للرسائل",
"A new version of Riot is available.": "نسخة جديدة من رايوت متوفرة.",
"All Rooms": "كل الغُرف",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">متصفح سافاري</a> و <a href=\"http://opera.com\">متصفح أوبرا</a> يعملان أيضاً.",
"Add an email address above to configure email notifications": "أضف بريداً إلكترونياً أعلاه من أجل تعديل إعدادت تنبيهات البريد الإلكتروني",
"All messages (loud)": "كل الرسائل (صوت مرتفع)",
"All notifications are currently disabled for all targets.": "كل التنبيهات غير مفعلة حالياً للجميع.",
"An error occurred whilst saving your email notification preferences.": "حدث خطأ ما خلال حفظ إعدادات التنبيهات للبريد الإلكتروني.",
"Call invitation": "دعوة لمحادثة",
"Cancel": "إلغاء",
"Cancel Sending": "إلغاء الإرسال",
"Can't update user notification settings": "لا يمكن تحديث إعدادات التنبيهات للمستخدم",
"Changelog": "سِجل التغييرات",
"Close": "إغلاق",
"Collapse panel": "طي الجدول",
"Collecting app version information": "إستعادة معلومات النسخة للتطبيق",
"Collecting logs": "إستعادة السجلات",
"Create new room": "إنشاء غرفة جديدة",
"Couldn't find a matching Matrix room": "لا يمكن إيجاد غرفة مايتركس متطابقة",
"Custom Server Options": "إعدادات السيرفر خاصة",
"delete the alias.": "إلغاء المُعرف.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "إلغاء مُعرف الغرفة %(alias) وحذف %(name) من الدليل؟",
"Describe your problem here.": "صِف مشكلتك هنا.",
"Direct Chat": "دردشة مباشرة",
"Directory": "دليل",
"Dismiss": "صرف النظر",
"Download this file": "تحميل هذا الملف"
}

View File

@@ -1 +1 @@
{}
{}

53
src/i18n/strings/cs.json Normal file
View File

@@ -0,0 +1,53 @@
{
"Close": "Zavřít",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> a <a href=\"http://opera.com\">Opera</a> fungují také.",
"A new version of Riot is available.": "Je dostupná nová verze Riotu.",
"Notifications": "Upozornění",
"Search": "Hledání",
"Settings": "Nastavení",
"Create new room": "Založit novou místnost",
"Room directory": "Adresář místností",
"Start chat": "Začít chat",
"All Rooms": "Všechny místnosti",
"Files": "Soubory",
"Filter room names": "Filtrovat místnosti dle názvu",
"Forward Message": "Přeposlat zprávu",
"Invite to this room": "Pozvat do této místnosti",
"Members": "Členové",
"Permalink": "Trvalý odkaz",
"Search…": "Vyhledat…",
"This Room": "Tato místnost",
"View Source": "Zobrazit zdroj",
"Login": "Přihlásit",
"Advanced notification settings": "Pokročilé nastavení upozornění",
"All messages": "Všechny zprávy",
"Cancel": "Storno",
"Changelog": "Seznam změn",
"Describe your problem here.": "Popište zde svůj problém.",
"Direct Chat": "Přímý chat",
"Directory": "Adresář",
"Download this file": "Stáhnout tento soubor",
"Error": "Chyba",
"Failed to change settings": "Nepodařilo se změnit nastavení",
"Failed to get public room list": "Nepodařilo se získat seznam veřejných místností",
"Failed to join the room": "Nepodařilo se vstoupit do místnosti",
"Favourite": "V oblíbených",
"Guests can join": "Hosté mohou vstoupit",
"Guest users can't invite users. Please register to invite.": "Hosté nemohou zvát uživatele. Zaregistrujte se a budete moci zvát.",
"Hide panel": "Skrýt panel",
"I understand the risks and wish to continue": "Rozumím rizikům a přeji si pokračovat",
"Keywords": "Klíčová slova",
"Leave": "Opustit",
"Loading bug report module": "Nahrává se modul nahlašování chyb",
"Low Priority": "Nízká priorita",
"Mentions only": "Pouze zmínky",
"Messages containing my display name": "Zprávy obsahující mé zobrazované jméno",
"Messages containing <span>keywords</span>": "Zprávy obsahující <span>klíčová slova</span>",
"Messages containing my user name": "Zprávy obsahující mé uživatelské jméno",
"Messages in group chats": "Zprávy ve skupinových chatech",
"Messages sent by bot": "Zprávy poslané robotem",
"more": "více",
"Mute": "Ztišit",
"All messages (loud)": "Všechny zprávy (hlasitě)",
"Couldn't load home page": "Nepodařilo se nahrát úvodní stránku"
}

View File

@@ -18,7 +18,7 @@
"Directory": "Raum-Verzeichnis",
"#example:": "#beispiel:",
"Search for a room": "Nach einem Raum suchen",
"No rooms to show": "Keine Räume zum anzeigen",
"No rooms to show": "Keine Räume gefunden",
"World readable": "Alle können mitlesen",
"Guests can join": "Gäste können beitreten",
"You are not receiving desktop notifications": "Du erhältst keine Desktop-Benachrichtigungen",
@@ -27,11 +27,11 @@
"All notifications are currently disabled for all targets.": "Im Moment sind alle Benachrichtigungen für alle Ziele deaktiviert.",
"An error occurred whilst saving your email notification preferences.": "Beim Speichern deiner E-Mail-Benachrichtigungseinstellungen ist ein Fehler aufgetreten.",
"and remove": "und entfernen",
"Can't update user notification settings": "Benachrichtigungs-Einstellungen des Nutzers konnten nicht aktualisiert werden",
"Can't update user notification settings": "Benachrichtigungs-Einstellungen des Benutzers konnten nicht aktualisiert werden",
"Couldn't find a matching Matrix room": "Konnte keinen entsprechenden Matrix-Raum finden",
"delete the alias.": "Lösche den Alias.",
"Delete the room alias": "Lösche den Raum Alias",
"Direct Chat": "Privater Chat",
"Direct Chat": "Direkt-Chat",
"Drop here to": "Hier ablegen",
"Enable audible notifications in web client": "Audio-Benachrichtigungen im Web-Client aktivieren",
"Enable desktop notifications": "Desktop-Benachrichtigungen aktivieren",
@@ -62,7 +62,7 @@
"Notifications on the following keywords follow rules which cant be displayed here:": "Die Benachrichtigungen zu den folgenden Schlüsselwörtern folgen Regeln, die hier nicht angezeigt werden können:",
"Notify for all other messages/rooms": "Benachrichtigungen für alle anderen Mitteilungen/Räume aktivieren",
"Operation failed": "Aktion fehlgeschlagen",
"Reject": "ablehnen",
"Reject": "Ablehnen",
"Remove": "Entfernen",
"remove": "Entferner",
"Remove from Directory": "Aus dem Raum-Verzeichnis entfernen",
@@ -70,7 +70,7 @@
"Room not found": "Raum nicht gefunden",
"There are advanced notifications which are not shown here": "Es existieren erweiterte Benachrichtigungen, welche hier nicht angezeigt werden",
"The server may be unavailable or overloaded": "Der Server ist vermutlich nicht erreichbar oder überlastet",
"This room is inaccessible to guests. You may be able to join if you register.": "Dieser Raum ist nicht verfügbar für Gäste. Vermutlich klappt es wenn du dich anmeldest.",
"This room is inaccessible to guests. You may be able to join if you register.": "Dieser Raum kann nicht von Gästen betreten werden. Bitte zunächst registrieren und dann erneut versuchen.",
"Unable to fetch notification target list": "Liste der Benachrichtigungsempfänger konnte nicht abgerufen werden",
"Unable to join network": "Es ist nicht möglich, dem Netzwerk beizutreten",
"unknown error code": "Unbekannter Fehlercode",
@@ -78,7 +78,7 @@
"Notify me for anything else": "Über alles andere benachrichtigen",
"Off": "Aus",
"On": "An",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Client als Riot konfiguriert. Sie können in Riot nicht verändert werden, gelten aber trotzdem",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Matrix-Client und nicht in Riot konfiguriert. Sie können in Riot nicht verändert werden, gelten aber trotzdem",
" to room": " an Raum",
"Drop here %(toAction)s": "Hierher ziehen: %(toAction)s",
"All messages": "Alle Nachrichten",
@@ -86,7 +86,7 @@
"Cancel Sending": "Senden abbrechen",
"Close": "Schließen",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Soll der Raum-Alias %(alias)s gelöscht und der %(name)s aus dem Verzeichnis entfernt werden?",
"Download this file": "Diese Datei herunterladen",
"Download this file": "Datei herunterladen",
"Failed to add tag %(tagName)s to room": "Das Hinzufügen des Tags %(tagName)s für den Raum ist fehlgeschlagen",
"Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s",
"Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(tagName)s für den Raum ist fehlgeschlagen",
@@ -95,14 +95,14 @@
"Mute": "Stummschalten",
"Permalink": "Permanenter Link",
"Quote": "Zitat",
"Redact": "Redaktionell entfernen",
"Redact": "Löschen",
"Remove %(name)s from the directory?": "Soll der Raum %(name)s aus dem Verzeichnis entfernt werden?",
"remove %(name)s from the directory.": "entferne %(name)s aus dem Verzeichnis.",
"Resend": "Erneut senden",
"Source URL": "Quell-URL",
"Unable to look up room ID from server": "Es ist nicht möglich, die Raum-ID auf dem Server nachzuschlagen",
"Unhide Preview": "Vorschau wieder anzeigen",
"Uploaded on %(date)s by %(user)s": "Hochgeladen am %(date)s durch %(user)s",
"Uploaded on %(date)s by %(user)s": "Hochgeladen am %(date)s von %(user)s",
"View Decrypted Source": "Entschlüsselten Quellcode ansehen",
"View Source": "Quellcode ansehen",
"You cannot delete this image. (%(code)s)": "Das Bild kann nicht gelöscht werden. (%(code)s)",
@@ -129,27 +129,27 @@
"customServer_text": "Du kannst die erweiterten Server-Optionen nutzen, um dich auf anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL eingibst. <br/>Dies ermöglicht es dir, Riot mit einem bereits existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.<br/><br/>Du kannst auch einen benutzerdefinierten Identitäts-Server eingeben, allerdings wirst du dann nicht in der Lage sein, andere Benutzer per E-Mail-Adresse einzuladen oder selbst Einladungen per E-Mail-Adresse zu erhalten.",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> und <a href=\"http://opera.com\">Opera</a> funktionieren ebenfalls.",
"I understand the risks and wish to continue": "Ich verstehe das Risiko und möchte fortfahren",
"Messages containing <span>keywords</span>": "Nachrichten, die definierte <span>Schlüsselwörter</span> enthalten",
"Messages containing <span>keywords</span>": "Nachrichten, die <span>Schlüsselwörter</span> enthalten",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Bitte installiere <a href=\"https://www.google.com/chrome\">Chrome</a> oder <a href=\"https://getfirefox.com\">Firefox</a> für die beste Erfahrung.",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot nutzt zahlreiche fortgeschrittene Browser-Funktionen, die teilweise in deinem aktuell verwendeten Browser noch nicht verfügbar sind oder sich noch im experimentellen Status befinden.",
"Sorry, your browser is <b>not</b> able to run Riot.": "Es tut uns leid, aber dein Browser kann Riot <b>nicht</b> ausführen.",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "In deinem aktuellen Browser kann das Aussehen und Gefühl der Anwendung komplett inkorrekt sein und einige oder alle Funktionen funktionieren evtl. nicht. Du kannst es trotzdem versuchen und fortfahren, aber du bist alleine mit allen Problemen auf die du stößt!",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "In deinem aktuell verwendeten Browser können Aussehen und Handhabung der Anwendung unter Umständen noch komplett fehlerhaft sein, so dass einige bzw. im Extremfall alle Funktionen nicht zur Verfügung stehen. Du kannst es trotzdem versuchen und fortfahren, bist dabei aber bezüglich aller auftretenden Probleme auf dich allein gestellt!",
"Expand panel": "Panel ausklappen",
"Collapse panel": "Panel einklappen",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s auf %(osName)s",
"A new version of Riot is available.": "Eine neue Version von Riot ist verfügbar.",
"All Rooms": "Alle Räume",
"All Rooms": "In allen Räumen",
"Cancel": "Abbrechen",
"Changelog": "Änderungshistorie",
"Changelog": "Änderungsprotokoll",
"Collecting app version information": "App-Versionsinformationen werden abgerufen",
"Collecting logs": "Protokolle werden abgerufen",
"Describe your problem here.": "Beschreibe dein Problem hier.",
"Failed to send report: ": "Senden des Reports fehlgeschlagen: ",
"Forward Message": "Nachricht weiterleiten",
"Hide panel": "Verberge Feld",
"Hide panel": "Panel verbergen",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Um Probleme zu diagnostizieren werden mit diesem Fehlerbericht Protokolle von diesem Client gesendet. Wenn du nur obigen text senden willst, deselektiere folgendes:",
"Loading bug report module": "Lade Fehlerbericht-Modul",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Bitte beschreibe (vorzugsweise auf Englisch) den Fehler. Was tatst du? Was wolltest du, dass es passiert? Was ist passiert?",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Bitte den Fehler (vorzugsweise auf Englisch) beschreiben. Was hast du gemacht? Was sollte passieren? Was ist tatsächlich passiert?",
"Please describe the bug and/or send logs.": "Bitte beschreibe den Fehler und/oder sende Protokolle.",
"Report a bug": "Einen Fehler melden",
"Riot Desktop on %(platformName)s": "Riot Desktop auf %(platformName)s",
@@ -157,11 +157,11 @@
"Search": "Suchen",
"Search…": "Suchen…",
"Send": "Sende",
"Send logs": "Sende Protokolle",
"This Room": "Dieser Raum",
"Send logs": "Logdateien übermitteln",
"This Room": "In diesem Raum",
"Unavailable": "Nicht verfügbar",
"Unknown device": "Unbekanntes Gerät",
"Update": "Aktualisiere",
"Update": "Aktualisieren",
"Uploading report": "Lade Bericht hoch",
"What's New": "Was ist neu",
"What's new?": "Was ist neu?",
@@ -171,13 +171,13 @@
"OK": "OK",
"Login": "Anmeldung",
"Welcome to Riot.im": "Willkommen bei Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Dezentralisierter, verschlüsselter Chat &amp; Zusammenarbeit unterstützt von [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- &amp; Kollaborationslösung unterstützt von [matrix]",
"Search the room directory": "Raum-Verzeichnis durchsuchen",
"Chat with Riot Bot": "Chatte mit dem Riot-Bot",
"Get started with some tips from Riot Bot!": "Beginne mit einigen Tipps vom Riot-Bot!",
"Chat with Riot Bot": "Mit dem Riot-Bot chatten",
"Get started with some tips from Riot Bot!": "Lass Dir vom Riot-Bot eine Einführung geben!",
"General discussion about Matrix": "Allgemeine Diskussion über Matrix",
"Discussion of all things Matrix!": "\"Diskussion über alle Dinge\"-Matrix!",
"Riot/Web &amp; Desktop chat": "Riot-Web &amp; Desktop-Chat",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; Desktop-Chat",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot-iOS &amp; \"matrix-ios-sdk\"-Chat",
"Riot/Android &amp; matrix-android-sdk chat": "Riot-Android &amp; matrix-android-sdk-Chat",
"Matrix technical discussions": "Technische Diskussion über Matrix",
@@ -186,17 +186,17 @@
"Admin support for Dendrite": "Admin-Unterstützung für Dendrite",
"Announcements about Synapse releases": "Ankündigungen über Synapse-Versionen",
"Support for those using and running matrix-appservice-irc": "Unterstützung für die, die \"matrix-appservice-irc\" betreiben und nutzen",
"Building services on Matrix": "Dienste bauen für Matrix",
"Building services on Matrix": "Dienste für Matrix entwickeln",
"Support for those using the Matrix spec": "Unterstützung für die Nutzer der Matrix-Spezification",
"Design and implementation of E2E in Matrix": "Design und Implementierung von Ende-zu-Ende-Verschlüsselung in Matrix",
"Implementing VR services with Matrix": "Implementierung von VR-Diensten mit Matrix",
"Implementing VoIP services with Matrix": "Implementierung von VoIP-Diensten mit Matrix",
"Discussion of the Identity Service API": "Diskussion der Identitätsdienst-API",
"Support for those using, running and writing other bridges": "Unterstützung für die, die andere Brücken nutzen, betreiben oder schreiben",
"Support for those using, running and writing other bridges": "Unterstützung für die, die andere Matrix-Bridges nutzen, betreiben oder entwickeln",
"Contributing code to Matrix and Riot": "Code zu Matrix und Riot beitragen",
"Dev chat for the Riot/Web dev team": "Entwickler-Chat für das Riot-Web-Entwickler-Team",
"Dev chat for the Riot/Web dev team": "Entwickler-Chat für das Riot/Web-Entwickler-Team",
"Co-ordination for Riot/Web translators": "Koordination für Riot/Web-Übersetzer",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Im Matrix-Netzwerk gibt es bereits jetzt zahlreiche Räume, die entweder mit bekannten Netzwerken wie Slack, IRC, Gitter, usw. verknüpft sind oder auch komplett eigenständig betrieben werden. Einen genauen Überblick erhältst du im Raum-Verzeichnis!",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Im Matrix-Netzwerk existieren bereits jetzt zahlreiche Räume, die entweder mit bekannten Netzwerken wie Slack, IRC, Gitter, usw. verknüpft sind oder auch komplett eigenständig betrieben werden. Einen genauen Überblick erhältst du im Raum-Verzeichnis!",
"Failed to change password. Is your password correct?": "Passwortänderung fehlgeschlagen. Ist dein Passwort richtig?",
"You have successfully set a password!": "Du hast erfolgreich ein Passwort gesetzt!",
"You can now return to your account after signing out, and sign in on other devices.": "Du kannst nun zu deinem Konto zurückkehren nach dem du dich an anderen Geräten ab- und angemeldet hast.",
@@ -207,5 +207,13 @@
"General discussion about Matrix and Riot": "Allgemeine Diskussion über Matrix und Riot",
"(HTTP status %(httpStatus)s)": "(HTTP-Status %(httpStatus)s)",
"You have successfully set a password and an email address!": "Du hast erfolgreich ein Passwort und eine E-Mail-Adresse gesetzt!",
"Remember, you can always set an email address in user settings if you change your mind.": "Denk daran, dass du in den Benutzereinstellungen jederzeit eine E-Mail-Adresse setzen kannst."
"Remember, you can always set an email address in user settings if you change your mind.": "Vergiss nicht, dass du in den Benutzereinstellungen jederzeit eine E-Mail-Adresse setzen kannst, wenn du deine Meinung änderst.",
"To return to your account in future you need to <u>set a password</u>": "Um in Zukunft auf dein Benutzerkonto zugreifen zu können, musst du <u>ein Passwort setzen</u>",
"Set Password": "Passwort einrichten",
"Warning": "Warnung",
"Checking for an update...": "Nach Updates suchen...",
"Error encountered (%(errorDetail)s).": "Es ist ein Fehler aufgetreten (%(errorDetail)s).",
"No update available.": "Kein Update verfügbar.",
"Downloading update...": "Update wird heruntergeladen...",
"Couldn't load home page": "Startseite konnte nicht geladen werden"
}

View File

@@ -198,5 +198,12 @@
"Failed to set Direct Message status of room": "Δεν ήταν δυνατός ο ορισμός της κατάστασης Direct Message του δωματίου",
"Support for those using, running and writing other bridges": "Υποστήριξη για τους χρήστες που χρησιμοποιούν ή αναπτύσσουν εφαρμογές ενσωμάτωσης για το Matrix",
"You have successfully set a password and an email address!": "Ο κωδικός πρόσβασης και η διεύθυνση ηλεκτρονικής αλληλογραφίας ορίστηκαν επιτυχώς!",
"Remember, you can always set an email address in user settings if you change your mind.": "Να θυμάστε ότι μπορείτε πάντα να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας στις ρυθμίσεις χρήστη αν αλλάξετε γνώμη."
"Remember, you can always set an email address in user settings if you change your mind.": "Να θυμάστε ότι μπορείτε πάντα να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας στις ρυθμίσεις χρήστη αν αλλάξετε γνώμη.",
"To return to your account in future you need to <u>set a password</u>": "Για να επιστρέψετε στον λογαριασμό σας μελλοντικα πρέπει να ορίσετε έναν <u>κωδικό πρόσβασης</u>",
"Set Password": "Ορισμός κωδικού πρόσβασης",
"Warning": "Προειδοποίηση",
"Checking for an update...": "Γίνεται έλεγχος για ενημέρωση...",
"Error encountered (%(errorDetail)s).": "Παρουσιάστηκε σφάλμα (%(errorDetail)s).",
"No update available.": "Δεν υπάρχει διαθέσιμη ενημέρωση.",
"Downloading update...": "Γίνεται λήψη της ενημέρωσης..."
}

View File

@@ -98,7 +98,6 @@
"Please Register": "Please Register",
"powered by Matrix": "powered by Matrix",
"Quote": "Quote",
"Redact": "Redact",
"Reject": "Reject",
"Remove %(name)s from the directory?": "Remove %(name)s from the directory?",
"Remove": "Remove",
@@ -160,6 +159,11 @@
"Today": "Today",
"Yesterday": "Yesterday",
"OK": "OK",
"Warning": "Warning",
"Checking for an update...": "Checking for an update...",
"Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).",
"No update available.": "No update available.",
"Downloading update...": "Downloading update...",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
"Welcome page": "Welcome page",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!",
@@ -198,5 +202,8 @@
"Please set a password!": "Please set a password!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices.",
"You have successfully set a password and an email address!": "You have successfully set a password and an email address!",
"Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind."
"Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.",
"To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>",
"Set Password": "Set Password",
"Couldn't load home page": "Couldn't load home page"
}

View File

@@ -96,7 +96,6 @@
"Please Register": "Please Register",
"powered by Matrix": "powered by Matrix",
"Quote": "Quote",
"Redact": "Redact",
"Reject": "Reject",
"Remove %(name)s from the directory?": "Remove %(name)s from the directory?",
"Remove": "Remove",
@@ -198,5 +197,13 @@
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; Desktop chat",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk chat",
"You have successfully set a password and an email address!": "You have successfully set a password and an email address!",
"Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind."
"Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.",
"Warning": "Warning",
"Checking for an update...": "Checking for an update...",
"Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).",
"No update available.": "No update available.",
"Downloading update...": "Downloading update...",
"To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>",
"Set Password": "Set Password",
"Couldn't load home page": "Couldn't load home page"
}

View File

@@ -198,5 +198,8 @@
"Drop here %(toAction)s": "Forlasi ĉi tie %(toAction)s",
"Favourite": "Plej ŝatata",
"Fetching third party location failed": "Venigado de ekstere liverita loko malsukcesis",
"Filter room names": "Filtri nomojn de ejoj"
"Filter room names": "Filtri nomojn de ejoj",
"Warning": "Averto",
"Checking for an update...": "Kontrolanta por ĝisdatigo...",
"No update available.": "Ĝisdatigo ne estas disponata."
}

View File

@@ -1,6 +1,6 @@
{
"Add an email address above to configure email notifications": "Añade una dirección de email arriba para configurar las notificaciones por email",
"Advanced notification settings": "Configuración de notificaciones avanzada",
"Add an email address above to configure email notifications": "Añade una dirección de correo arriba para configurar las notificaciones por correo",
"Advanced notification settings": "Configuración avanzada de notificaciones",
"All messages": "Todos los mensajes",
"An error occurred whilst saving your email notification preferences.": "Se ha producido un error al guardar las preferencias de notificación por email.",
"Call invitation": "Invitación a la llamada",
@@ -116,7 +116,7 @@
"Continue": "Continuar",
"Search": "Búsqueda",
"OK": "Correcto",
"Failed to change password. Is your password correct?": "Falló al cambiar la clave, ¿Está correcta tu clave?",
"Failed to change password. Is your password correct?": "No se pudo cambiar la contraseña. ¿Está usando la correcta?",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> y <a href=\"http://opera.com\">Opera</a> también funcionan.",
"A new version of Riot is available.": "Una nueva versión de Riot está disponible.",
"Cancel": "Cancelar",
@@ -198,5 +198,13 @@
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muchas salas ya están disponibles en Matrix, enlazadas a redes existentes (Slack, IRC, Gitter, etc) o independientes. ¡Revisa el directorio!",
"You can now return to your account after signing out, and sign in on other devices.": "Ahora puedes regresar a tu cuenta después de cerrar tu sesión, e iniciar sesión en otros dispositivos.",
"Please set a password!": "¡Por favor establece una contraseña!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Esto le permitirá regresar a su cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos."
"This will allow you to return to your account after signing out, and sign in on other devices.": "Esto le permitirá regresar a su cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos.",
"Warning": "Advertencia",
"Checking for an update...": "Comprobando actualizaciones...",
"No update available.": "No hay actualizaciones disponibles.",
"Downloading update...": "Descargando actualizaciones...",
"To return to your account in future you need to <u>set a password</u>": "Para regresar a su cuenta en el futuro Ud. debe <u>establecer una contraseña</u>",
"Set Password": "Establezca la contraseña",
"Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).",
"Couldn't load home page": "No se puede cargar la página principal"
}

209
src/i18n/strings/eu.json Normal file
View File

@@ -0,0 +1,209 @@
{
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s bidez %(osName)s ostalarian",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> eta <a href=\"http://opera.com\">Opera</a> badabiltza ere.",
"A new version of Riot is available.": "Riot bertsio berri bat dago eskuragarri.",
"Add an email address above to configure email notifications": "Gehitu e-mail helbide bat goian e-mail bidezko jakinarazpenak konfiguratzeko",
"Advanced notification settings": "Jakinarazpen aurreratuen ezarpenak",
"All messages": "Mezu guztiak",
"All messages (loud)": "Mezu guztiak (ozen)",
"All Rooms": "Gela guztiak",
"All notifications are currently disabled for all targets.": "Une honetan jakinarazpen guztiak helburu guztietarako desgaituta daude.",
"An error occurred whilst saving your email notification preferences.": "Errore bat gertatu da zure e-mail bidezko jakinarazpenen hobespenak gordetzean.",
"Call invitation": "Dei gonbidapena",
"Cancel": "Utzi",
"Cancel Sending": "Utzi bidaltzeari",
"Can't update user notification settings": "Ezin dira erabiltzailearen jakinarazpenen ezarpenak eguneratu",
"Changelog": "Aldaketa-egunkaria",
"Close": "Itxi",
"Collapse panel": "Tolestu panela",
"Collecting app version information": "Aplikazioaren bertsio-informazioa biltzen",
"Collecting logs": "Egunkariak biltzen",
"Create new room": "Sortu gela berria",
"Couldn't find a matching Matrix room": "Ezin izan da bat datorren Matrix gela bat aurkitu",
"Custom Server Options": "Zerbitzari pertsonalizatuaren aukerak",
"customServer_text": "Zerbitzari pertsonalizatuaren aukerak erabili ditzakezu beste hasiera zerbitzari baten URLa jarrita beste Matrix zerbitzarietan saioa hasteko.<br/>Honek oraingo Matrix kontuarekin Riot beste hasiera zerbitzari batean erabiltzea ahalbidetzen dizu.<br/><br/>Identitate zerbitzari pertsonalizatu bat jar dezakezu ere baina ezin izango dituzu erabiltzaileak bere e-mail helbidea erabilita gonbidatu, edo besteek zu gonbidatu zure e-mail helbidea erabilita.",
"delete the alias.": "ezabatu ezizena.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Ezabatu gelaren %(alias)s ezizena eta kendu %(name)s direktoriotik?",
"Describe your problem here.": "Azaldu zure arazoa hemen.",
"Direct Chat": "Txat zuzena",
"Directory": "Direktorioa",
"Dismiss": "Baztertu",
"Download this file": "Deskargatu fitxategi hau",
"Drop here %(toAction)s": "Jaregin hona %(toAction)s",
"Enable audible notifications in web client": "Gaitu jakinarazpen entzungarriak web bezeroan",
"Enable desktop notifications": "Gaitu mahaigaineko jakinarazpenak",
"Enable email notifications": "Gaitu e-mail bidezko jakinarazpenak",
"Enable notifications for this account": "Gaitu jakinarazpenak kontu honetarako",
"Enable them now": "Gaitu orain",
"Enter keywords separated by a comma:": "Idatzi hitz gakoak koma bidez banatuta:",
"Error": "Errorea",
"Error saving email notification preferences": "Errorea e-mail jakinarazpenen hobespenak gordetzean",
"#example": "#adibidea",
"Expand panel": "Hedatu panela",
"Failed to": "Huts egin du",
"Failed to add tag %(tagName)s to room": "Huts egin du %(tagName)s etiketa gelara gehitzean",
"Failed to change settings": "Huts egin du ezarpenak aldatzean",
"Failed to forget room %(errCode)s": "Huts egin du %(errCode)s gela ahaztean",
"Failed to update keywords": "Huts egin du hitz gakoak eguneratzean",
"Failed to get protocol list from Home Server": "Huts egin du protokoloen zerrenda hasiera zerbitzaritik jasotzean",
"Failed to get public room list": "Huts egin du gela publikoen zerrenda jasotzean",
"Failed to join the room": "Huts egin du gelara elkartzean",
"Failed to remove tag %(tagName)s from room": "Huts egin du %(tagName)s etiketa gelatik kentzean",
"Failed to send report: ": "Huts egin du txostena bidaltzean: ",
"Failed to set direct chat tag": "Huts egin du txat zuzeneko etiketa jartzean",
"Failed to set Direct Message status of room": "Huts egin du Mezu Zuzena egoera gelan ezartzean",
"Favourite": "Gogokoa",
"Fetching third party location failed": "Huts egin du hirugarrengoen kokalekua eskuratzean",
"Files": "Fitxategiak",
"Filter room names": "Iragazi gelen izenak",
"Forget": "Ahaztu",
"Forward Message": "Birbidali mezua",
" from room": " gelatik",
"Guests can join": "Bisitariak elkartu daitezke",
"Guest users can't invite users. Please register to invite.": "Bisitariek ezin dituzte erabiltzaileak gonbidatu. Erregistratu gonbidatzeko.",
"Hide panel": "Ezkutatu panela",
"(HTTP status %(httpStatus)s)": "(HTTP egoera %(httpStatus)s)",
"I understand the risks and wish to continue": "Arriskua ulertzen dut eta jarraitu nahi dut",
"Invite to this room": "Gonbidatu gela honetara",
"Keywords": "Hitz gakoak",
"Leave": "Atera",
"Login": "Hasi saioa",
"Loading bug report module": "Arazte-txosten modulua kargatzen",
"Low Priority": "Lehentasun baxua",
"Members": "Kideak",
"Mentions only": "Aipamenak besterik ez",
"Messages containing my display name": "Nire pantaila izena duten mezuak",
"Messages containing <span>keywords</span>": "<span>Hitz gakoak</span> dituzten mezuak",
"Messages containing my user name": "Nire erabiltzaile-izena duten mezuak",
"Messages in group chats": "Talde txatetako mezuak",
"Messages in one-to-one chats": "Biren arteko txatetako mezuak",
"Messages sent by bot": "botak bidalitako mezuak",
"more": "gehiago",
"Mute": "Mututu",
"No rooms to show": "Ez dago gelarik erakusteko",
"Noisy": "Zaratatsua",
"Notification targets": "Jakinarazpenen helburuak",
"Notifications": "Jakinarazpenak",
"Notifications on the following keywords follow rules which cant be displayed here:": "Hitz gako hauen jakinarazpenak hemen bistaratu ezin daitezkeen arauak jarraitzen dituzte:",
"Notify for all other messages/rooms": "Jakinarazi beste mezu/gela guztiak",
"Notify me for anything else": "Jakinarazi beste edozer",
"Off": "Ez",
"On": "Bai",
"Operation failed": "Eragiketak huts egin du",
"Permalink": "Esteka iraunkorra",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Deskribatu akatsa. Zer egin duzu? Zer gertatuko zela uste zenuen? Zer gertatu da?",
"Please describe the bug and/or send logs.": "Deskribatu akatsa eta/edo bidali egunkariak.",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Instalatu <a href=\"https://www.google.com/chrome\">Chrome</a> edo <a href=\"https://getfirefox.com\">Firefox</a> esperientzia on baterako.",
"Please Register": "Erregistratu",
"powered by Matrix": "Matrix mamian",
"Quote": "Aipua",
"Reject": "Baztertu",
"Remove %(name)s from the directory?": "Kendu %(name)s direktoriotik?",
"Remove": "Kendu",
"remove %(name)s from the directory.": "kendu %(name)s direktoriotik.",
"Remove from Directory": "Kendu direktoriotik",
"Report a bug": "Eman akats baten berri",
"Resend": "Birbidali",
"Riot Desktop on %(platformName)s": "Riot Desktop %(platformName)s plataforman",
"Riot does not know how to join a room on this network": "Riotek ez daki nola elkartu gela batetara sare honetan",
"Riot is not supported on mobile web. Install the app?": "Riotek ez du euskarririk mugikorrentzako webean. Instalatu aplikazioa?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riotek nabigatzaileen ezaugarri aurreratu ugari erabiltzen ditu, hauetako batzuk ez daude erabilgarri edo esperimentalak dira zure oraingo nabigatzailean.",
"Room directory": "Gelen direktorioa",
"Room not found": "Ez da gela aurkitu",
"Search": "Bilatu",
"Search…": "Bilatu…",
"Search for a room": "Bilatu gela bat",
"Send": "Bidali",
"Send logs": "Bidali egunkariak",
"Settings": "Ezarpenak",
"Source URL": "Iturriaren URLa",
"Sorry, your browser is <b>not</b> able to run Riot.": "Zure nabigatzaileak <b>ez</b> du Riot erabiltzeko gaitasunik.",
"Start chat": "Hasi txata",
"The Home Server may be too old to support third party networks": "Hasiera zerbitzaria zaharregia izan daiteke hirugarrengoen sarean onartzeko",
"There are advanced notifications which are not shown here": "Hemen erakusten ez diren jakinarazpen aurreratuak daude",
"The server may be unavailable or overloaded": "Zerbitzaria eskuraezin edo gainezka egon daiteke",
"This Room": "Gela hau",
"This room is inaccessible to guests. You may be able to join if you register.": "Bisitariak ezin dira gela honetara sartu. Erregistratuz gero agian elkartu ahal izango zara.",
" to room": " gelara",
"Unable to fetch notification target list": "Ezin izan da jakinarazpen helburuen zerrenda eskuratu",
"Unable to join network": "Ezin izan da sarera elkartu",
"Unable to look up room ID from server": "Ezin izan da gelaren IDa zerbitzarian bilatu",
"Unavailable": "Eskuraezina",
"Unhide Preview": "Ez ezkutatu aurrebista",
"Unknown device": "Gailu ezezaguna",
"unknown error code": "errore kode ezezaguna",
"Unnamed room": "Izenik gabeko gela",
"Update": "Eguneratu",
"Uploaded on %(date)s by %(user)s": "%(user)s erabiltzaileak %(date)s (e)an igota",
"Uploading report": "Igoera txostena",
"View Decrypted Source": "Ikusi deszifratutako iturria",
"View Source": "Ikusi iturria",
"What's New": "Zer dago berri",
"What's new?": "Zer dago berri?",
"Waiting for response from server": "Zerbitzariaren erantzunaren zain",
"When I'm invited to a room": "Gela batetara gonbidatzen nautenean",
"World readable": "Denek irakurtzeko moduan",
"You cannot delete this image. (%(code)s)": "Ezin duzu irudi hau ezabatu. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Ezin duzu mezu hau ezabatu. (%(code)s)",
"You are not receiving desktop notifications": "Ez dituzu mahaigaineko jakinarazpenak jasotzen",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Bisitari bezala sartu zara. <a>Erregistratu</a> edo <a>hasi saioa</a> Gela eta ezaugarri gehiago atzitzeko!",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Agian Riot ez beste bezero batean konfiguratu dituzu. Ezin dituzu Riot bidez doitu, baina aplikagarriak dira",
"Sunday": "Igandea",
"Monday": "Astelehena",
"Tuesday": "Asteartea",
"Wednesday": "Asteazkena",
"Thursday": "Osteguna",
"Friday": "Ostirala",
"Saturday": "Larunbata",
"Today": "Gaur",
"Yesterday": "Atzo",
"OK": "Ados",
"Warning": "Abisua",
"Checking for an update...": "Eguneraketarik dagoen egiaztatzen...",
"Error encountered (%(errorDetail)s).": "Errorea aurkitu da (%(errorDetail)s).",
"No update available.": "Ez dago eguneraketarik eskuragarri.",
"Downloading update...": "Eguneraketa deskargatzen...",
"You need to be using HTTPS to place a screen-sharing call.": "HTTPS erabili behar duzu sekretuak partekatzeko dei bat ezartzeko.",
"Welcome page": "Ongi etorri orria",
"Welcome to Riot.im": "Ongi etorri Riot.im mezularitzara",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Deszentralizatutako eta zifratutako txat eta elkarlana [matrix] sareari esker",
"Search the room directory": "Bilatu gelen direktorioa",
"Chat with Riot Bot": "Txateatu Riot botarekin",
"Get started with some tips from Riot Bot!": "Hasi Riot botaren aholku batzuekin!",
"General discussion about Matrix and Riot": "Matrix eta Riot-i buruzko eztabaida orokorra",
"Discussion of all things Matrix!": "Matrix-ekin zerikusia duen guztiari buruzko eztabaida!",
"Riot/Web &amp; Desktop chat": "Riot/Web eta mahaigaineko txata",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS eta matrix-ios-sdk txata",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android eta matrix-android-sdk txata",
"Matrix technical discussions": "Matrix buruzko eztabaida teknikoak",
"Running Matrix services": "Matrix zerbitzuak exekutatzea",
"Community-run support for Synapse": "Synapse-rako laguntza komunitatea",
"Admin support for Dendrite": "Dendrite kudeatzaileentzako laguntza",
"Announcements about Synapse releases": "Synapse bertsio berrien iragarkiak",
"Support for those using and running matrix-appservice-irc": "matrix-appservice-irc exekutatu edo erabiltzen dutenentzako laguntza",
"Building services on Matrix": "Matrix-en gaineko zerbitzuak eraikitzea",
"Support for those using the Matrix spec": "Matrix espezifikazioa darabilenentzako laguntza",
"Design and implementation of E2E in Matrix": "Matrix-en E2E diseinu eta inplementazioa",
"Implementing VR services with Matrix": "VR zerbitzuak inplementatzea Matrix erabilita",
"Implementing VoIP services with Matrix": "VoIP zerbitzuak inplementatzea Matrix erabilita",
"Discussion of the Identity Service API": "Identitate zerbitzuaren APIari buruzko eztabaida",
"Support for those using, running and writing other bridges": "Bestelako zubiak erabili, exekutatu eta idazten dituztenentzako laguntza",
"Contributing code to Matrix and Riot": "Kodearekin lagundu Matrix eta Riot",
"Dev chat for the Riot/Web dev team": "Riot/web garapen taldearen txata",
"Dev chat for the Dendrite dev team": "Dendrite garapen taldearen txata",
"Co-ordination for Riot/Web translators": "Riot/Web itzultzaileen arteko koordinazioa",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Badauden sareetara lotutako gela ugari daude Matrixen (Slack, IRC, Gitter eta abar), baita independienteak. Begiratu direktorioa!",
"Failed to change password. Is your password correct?": "Pasahitza aldatzean huts egin du. Zuzena da pasahitza?",
"You have successfully set a password!": "Ongi ezarri duzu pasahitza!",
"You can now return to your account after signing out, and sign in on other devices.": "Zure kontura itzuli zaitezke beste gailuetan saioa amaitu eta berriro hastean.",
"Continue": "Jarraitu",
"Please set a password!": "Ezarri pasahitza mesedez!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Honek zure kontura itzultzea ahalbidetuko dizu, beste gailuetan saioa amaitu eta berriro hasi eta gero.",
"You have successfully set a password and an email address!": "Ondo ezarri dituzu pasahitza eta e-mail helbidea!",
"Remember, you can always set an email address in user settings if you change your mind.": "Gogoratu, e-mail helbide bat ezarri dezakezu erabiltzaile-ezarpenetan iritzia aldatzen baduzu.",
"To return to your account in future you need to <u>set a password</u>": "Etorkizunean kontura itzuli ahal izateko <u>pasahitz bat ezarri</u> behar duzu",
"Set Password": "Ezarri pasahitza",
"Couldn't load home page": "Ezin izan da hasiera orria kargatu",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Arazoak diagnostikatzeko, bezero honen egunkariak bidaliko dira arazte-txosten honekin. Testua besterik ez baduzu bidali nahi, desmarkatu:",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Zure oraingo nabigatzailearekin aplikazioaren itxura eta portaera guztiz okerra izan daiteke, eta funtzio batzuk ez dira ibiliko. Hala ere aurrera jarraitu dezakezu saiatu nahi baduzu, baina zure erantzukizunaren menpe geratzen dira aurkitu ditzakezun arazoak!"
}

204
src/i18n/strings/fa.json Normal file
View File

@@ -0,0 +1,204 @@
{
"A new version of Riot is available.": "نسخه‌ی جدید از رایوت موجود است.",
"All messages": "همه‌ی پیام‌ها",
"All messages (loud)": "همه‌ی پیام‌ها(بلند)",
"All Rooms": "همه‌ی گپ‌ها",
"Cancel Sending": "فرستادن را لغو کن",
"Changelog": "تغییراتِ به‌وجودآمده",
"Close": "بستن",
"Collecting app version information": "درحال جمع‌آوری اطلاعات نسخه‌ی برنامه",
"Create new room": "ساخت گپ‌گاه جدید",
"Couldn't find a matching Matrix room": "گپ‌گاه مورد نظر در ماتریکس یافت نشد",
"Direct Chat": "چت مستقیم",
"Directory": "فهرست گپ‌گاه‌ها",
"Download this file": "بارگیری کن",
"Enable audible notifications in web client": "آگاه‌سازی صدادار را در کارگزار وب فعال کن",
"Enable email notifications": "آگاه‌سازی با رایانامه را فعال کن",
"Enable notifications for this account": "آگاه سازی با رایانامه را برای این اکانت فعال کن",
"Enable them now": "همین حالا فعالشان کن",
"Enter keywords separated by a comma:": "کلیدواژه‌ها را وارد کنید؛ از کاما(,) برای جدا کردن آنها از یکدیگر استفاده کنید:",
"Error": "خطا",
"Error saving email notification preferences": "خطا در ذخیره‌سازی ترجیحات آگاهسازی با ایمیل",
"#example": "#نمونه",
"Expand panel": "پنل را بگشا",
"Failed to": "موفقیت‌آمیز نبود",
"Failed to add tag %(tagName)s to room": "در افزودن تگ %(tagName)s موفقیت‌آمیز نبود",
"Failed to change settings": "تغییر تنظیمات موفقیت‌آمیز نبود",
"Failed to forget room %(errCode)s": "فراموش کردن گپ‌گاه %(errCode)s موفقیت‌آمیز نبود",
"Failed to update keywords": "به‌روزرسانی کلیدواژه‌ها موفقیت‌آمیز نبود",
"Failed to get protocol list from Home Server": "دریافت لیست پروتکل‌ها از کارگزار مبدا موفقیت‌آمیز نبود",
"Failed to get public room list": "گرفتن لیست گپ‌گاه‌های عمومی موفقیت‌آمیز نبود",
"Failed to join the room": "خطا در پیوستن به این گپ",
"Failed to remove tag %(tagName)s from room": "خطا در حذف کلیدواژه‌ی %(tagName)s از گپ",
"Failed to send report: ": "فرستادن گزارش موفقیت‌آمیز نبود: ",
"Favourite": "علاقه‌مندی‌ها",
"Files": "فایل‌ها",
"Forget": "فراموش کن",
"Forward Message": "هدایت پیام",
" from room": " از گپ‌گاه",
"Guests can join": "میهمان‌ها می‌توانند بپیوندند",
"Guest users can't invite users. Please register to invite.": "میهمان‌ها نمی‌توانند کسی را دعوت کنند. برای دعوت کردن عضو شوید.",
"Hide panel": "پنل را پنهان کن",
"I understand the risks and wish to continue": "از خطرات این کار آگاهم و مایلم که ادامه بدهم",
"Invite to this room": "دعوت به این گپ",
"Keywords": "کلیدواژه‌ها",
"Leave": "خروج",
"Login": "ورود",
"Loading bug report module": "درحال بارگذاری و اجرای ماژولِ گزارش باگ",
"Low Priority": "کم اهمیت",
"Members": "اعضا",
"Mentions only": "فقط نام‌بردن‌ها",
"Please set a password!": "لطفا یک پسورد اختیار کنید!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "این به شما اجازه خواهد داد که پس از خروج به اکانت خود بازگردید و از سایر دستگاه‌ها وارد شوید.",
"You have successfully set a password and an email address!": "تخصیص ایمیل و پسوردتان با موفقیت انجام شد!",
"Remember, you can always set an email address in user settings if you change your mind.": "به خاطر داشته باشید که اگر نظرتان عوض شد می‌توانید از بخش تنظیمات یک ایمیل را به اکانتتان متصل کنید.",
"To return to your account in future you need to <u>set a password</u>": "برای بازگشتِ دوباره به اکانتان در آینده نیاز به <u> ثبت یک پسورد </u> دارید",
"Set Password": "پسوردتان را انتخاب کنید",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">سافاری</a> و <a href=\"http://opera.com\">اپرا</a> نیز کار می‌کنند.",
"Add an email address above to configure email notifications": "آدرس ایمیلتان را به بالا بیفزایید تا بتوانید آگاه‌سازی با ایمیل را مدیریت کنید",
"Advanced notification settings": "تنظیمات پیشرفته برای آگاه‌سازی‌ها",
"Continue": "ادامه",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "بسیاری از گپ‌گاه‌های موجود در فهرستِ گپ‌ها به شبکه‌های موجود(اسلک، آی‌آر‌سی، گلیتر و...) متصل و یا مستقل‌اند؛ به آنها نگاهی بیندازید!",
"Failed to change password. Is your password correct?": "خطا در تغییر گذرواژه. آیا از درستی گذرواژه‌تان اطمینان دارید؟",
"You can now return to your account after signing out, and sign in on other devices.": "اکنون می‌توانید پس از خروج به اکانتتان بازگردید و با دستگاه‌های دیگری وارد شوید.",
"Co-ordination for Riot/Web translators": "هماهنگی برای مترجمان رایوت/وب",
"Contributing code to Matrix and Riot": "کمک به برنامه‌نویسی در ماتریکس و رایوت",
"(HTTP status %(httpStatus)s)": "(HTTP وضعیت %(httpStatus)s)",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "برای بهبود و رفع مشکلات، گزارش‌هایی از این کارخواه به عنوان مستنداتی از یک باگ ارسال خوهند شد. اگر ترجیح می‌دهید که فقط متن بالا ارسال شود لطفا تیک را بردارید",
"Messages containing <span>keywords</span>": "پیا‌م‌های دارای <span> این کلیدواژه‌ها </span>",
"Messages containing my user name": "پیام‌های شامل نامِ کاربری من",
"Messages in group chats": "پیام‌های درون چت‌های گروهی",
"Messages in one-to-one chats": "پیام‌های درون چت‌های یک‌به‌یک",
"Messages sent by bot": "پیام‌های ارسال شده توسط ربات",
"more": "بیشتر",
"Mute": "سکوت",
"No rooms to show": "هیچ گپی برای نشان دادن موجود نیست",
"Noisy": "پرسروصدا",
"Notification targets": "هدف‌های آگاه‌سازی",
"Notifications": "آگاه‌سازی‌ها",
"Notify me for anything else": "مرا برای هرچیز دیگری باخبر کن",
"Off": "خاموش",
"On": "روشن",
"Operation failed": "عملیات شکست خورد",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "لطفا برای بهترین تجربه‌ی کاربری از<a href=\"https://www.google.com/chrome\">کروم</a> یا <a href=\"https://getfirefox.com\">فایرفاکس</a> استفاده کنید",
"Please Register": "لطفا ثبت‌نام کنید",
"powered by Matrix": "قدرت‌یافته از ماتریکس",
"Quote": "گفتآورد",
"Reject": "پس زدن",
"Remove": "حذف کن",
"Remove %(name)s from the directory?": "آیا مطمئنید می‌خواهید %(name)s را از فهرست گپ‌ها حذف کنید؟",
"remove %(name)s from the directory.": "%(name)s را از فهرست گپ‌ها حذف کن",
"Remove from Directory": "از فهرستِ گپ‌ها حذف کن",
"Report a bug": "باگ‌ها را گزارش کنید",
"Resend": "بازفرست",
"Riot Desktop on %(platformName)s": "رایوت دسکتاپ بر %(platformName)s",
"Riot does not know how to join a room on this network": "رایوت از چگونگی ورود به یک گپ در این شبکه اطلاعی ندارد",
"Riot is not supported on mobile web. Install the app?": "رایوت در موبایل‌ها پشتیبانی نمیشود؛ تمایلی دارید که اپ را نصب کنید؟",
"Room directory": "فهرست گپ‌ها",
"Room not found": "گپ یافت نشد",
"Search": "جستجو",
"Search…": "جستجو…",
"Search for a room": "جستجوی برای یک گپ",
"Send": "ارسال",
"Send logs": "ارسال گزارش‌ها",
"Settings": "تنظیمات",
"Sorry, your browser is <b>not</b> able to run Riot.": "متاسفانه مرورگر شما <b>نمی‌تواند</b> رایوت را اجرا کند.",
"Start chat": "شروع چت",
"There are advanced notifications which are not shown here": "آگاه‌سازی‌های پیشرفته‌ای هستند که در اینجا نشان داده نشده‌اند",
"The server may be unavailable or overloaded": "این سرور ممکن است ناموجود یا بسیار شلوغ باشد",
"This Room": "این گپ",
" to room": " به گپ",
"This room is inaccessible to guests. You may be able to join if you register.": "این گپ برای میهمان‌ها قابل دسترسی نیست. ممکن است پس از ثبت‌نام بتوانید عضو شوید.",
"Unable to join network": "خطا در ورود به شبکه",
"Unavailable": "غیرقابل‌دسترسی",
"Unknown device": "دستگاه ناشناخته",
"unknown error code": "کد خطای ناشناخته",
"Unnamed room": "گپ نام‌گذاری نشده",
"Update": "به‌روزرسانی",
"Uploading report": "در حال بارگذاری گزارش",
"Downloading update...": "در حال بارگیریِ به‌روزرسانی...",
"Cancel": "لغو",
"Call invitation": "دعوت به تماس",
"An error occurred whilst saving your email notification preferences.": "خطایی در حین ذخیره‌ی ترجیجات شما درباره‌ی رایانامه رخ داد.",
"Describe your problem here.": "مشکلتان را در اینجا توضیح دهید.",
"Enable desktop notifications": "آگاه‌سازی دسکتاپ را فعال کن",
"Permalink": "پایاپیوند",
"Please describe the bug and/or send logs.": "لطفا باگ را توصیف کنید و یا گزارش‌ها را بفرستید",
"Unhide Preview": "پیش‌نمایش را نمایان کن",
"View Source": "دیدن منبع",
"What's New": "تازه‌ها",
"World readable": "خواندن جهانی",
"You cannot delete this image. (%(code)s)": "شما نمی‌توانید این تصویر را پاک کنید. (%(code)s)",
"You cannot delete this message. (%(code)s)": "شما نمی‌توانید این پیام را پاک کنید. (%(code)s)",
"Sunday": "یکشنبه",
"Monday": "دوشنبه",
"Tuesday": "سه‌شنبه",
"Wednesday": "چهارشنبه",
"Thursday": "پنج‌شنبه",
"Friday": "آدینه",
"Saturday": "شنبه",
"Today": "امروز",
"Yesterday": "دیروز",
"OK": "باشه",
"Warning": "هشدار",
"No update available.": "هیچ به روزرسانی جدیدی موجود نیست.",
"Welcome page": "صفحه‌ی خوش‌آمدگویی",
"Welcome to Riot.im": "به Riot.im خوش‌آمدید",
"Chat with Riot Bot": "با رایوت‌بات چت کنید",
"Get started with some tips from Riot Bot!": "با کمی راهنمایی از رایوت‌بات شروع کنید!",
"General discussion about Matrix and Riot": "بحث‌های کلی درمورد ماتریکس و رایوت",
"Dev chat for the Dendrite dev team": "چت توسعه‌دهندگان برای تیم Dendrite",
"Dev chat for the Riot/Web dev team": "چت توسعه‌دهندگان برای تیم رایوت/وب",
"Support for those using, running and writing other bridges": "پشتیبانی برای آنان که یک پل را استفاده اجرا کرده و یا می‌نویسند",
"Admin support for Dendrite": "پشتیبانی ادمین برای Dendrite",
"Community-run support for Synapse": "پشتیبانی سیناپس اداره‌شده توسط جامعه‌ی کاربری",
"Matrix technical discussions": "بحث‌های فنی درباره‌ی ماتریکس",
"Search the room directory": "در فهرست گپ‌ها جستجو کنید",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "چت مرکزگریز و رمزنگاری‌شده &amp; ارائه‌ای از ماتریکس",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s از طریق %(browserName)s بر %(osName)s",
"All notifications are currently disabled for all targets.": "همه‌ی آگاه‌سازی‌ها برای تمام هدف‌ها غیرفعال‌اند.",
"Can't update user notification settings": "امکان به‌روزرسانی تنظیمات آگاه‌سازی کاربر وجود ندارد",
"Collecting logs": "درحال جمع‌آوری گزارش‌ها",
"Custom Server Options": "تنظیمات سفارشی برای سرور",
"delete the alias.": "نام مستعار را پاک کن.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "آیا مطمئنید که می‌خواهید نام مستعار گپ %(alias)s را پاک و %(name)s را از فهرست حذف کنید؟",
"Dismiss": "نادیده بگیر",
"Failed to set direct chat tag": "تنظیم تگ برای چت مستقیم موفقیت‌آمیز نبود",
"Filter room names": "جستجو در گپ‌ها",
"Notify for all other messages/rooms": "برای همه‌ی پیام‌ها/گپ‌های دیگر آگاه‌سازی کن",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "لطفا باگ را دقیقا تشریح کنید. چه کار کردید؟ انتظار داشتید چه اتفاقی بیفتد؟ دقیقا چه اتفاقی افتاد؟",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "رایوت از بسیاری از ویژگی‌های پیشرفته در مروگرها استفاده می‌کند، برخی از این ویژگی‌ها در مرورگر کنونی شما موجود نیستند و یا در حالت آزمایشی قرار دارند.",
"Source URL": "آدرس مبدا",
"Unable to fetch notification target list": "ناتوانی در تطبیق لیست آگاه‌سازی‌های هدف",
"Uploaded on %(date)s by %(user)s": "آپلود شده در تاریخ %(date)s توسط %(user)s",
"View Decrypted Source": "دیدن منبع رمزگشایی شده",
"Waiting for response from server": "در انتظار پاسخی از سمت سرور",
"When I'm invited to a room": "وقتی من به گپی دعوت میشوم",
"You are not receiving desktop notifications": "شما آگاه‌سازی‌های دسکتاپ را دریافت نمی‌کنید",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "شما به عنوان میهمان در نزد ما هستید. <a>ثبت‌نام کنید</a> یا <a>وارد شوید</a> تا به قابلیت‌ها و گپ‌های بیشتری دسترسی داشته باشید!",
"Checking for an update...": "درحال بررسی به‌روزرسانی‌ها...",
"Error encountered (%(errorDetail)s).": "خطای رخ داده (%(errorDetail)s).",
"You need to be using HTTPS to place a screen-sharing call.": "شما باید از ارتباط امن HTTPS برای به‌راه‌اندازی یک چتِ شامل به اشتراک‌گذاری صفحه‌ی کامیپوتر استفاده کنید.",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "با مرورگر کنونی شما، ظاهر و حس استفاده از برنامه ممکن است کاملا اشتباه باشد و برخی یا همه‌ی ویژگی‌ها ممکن است کار نکنند. می‌توانید به استفاده ادامه دهید اما مسئولیت هر مشکلی که به آن بربخورید بر عهده‌ی خودتان است!",
"Discussion of all things Matrix!": "بحث درمورد تمام چیز‌های مربوط به ماتریکس!",
"Riot/Web &amp; Desktop chat": "رایوت/وب &amp; چت دسکتاپ",
"Riot/iOS &amp; matrix-ios-sdk chat": "رایوت/آی‌او‌اس &amp; چت در مورد matrix-ios-sdk",
"Riot/Android &amp; matrix-android-sdk chat": "رایوت/اندروید &amp; چت در مورد matrix-android-sdk",
"Running Matrix services": "اجرای سرویس‌های ماتریکسی",
"Announcements about Synapse releases": "اطلاعیه‌ها درباره‌ی نسخه‌ها و انتشار سیناپس",
"Support for those using and running matrix-appservice-irc": "پشتیبانی برای کسانی که matrix-appservice-irc را اجرا و استفاده می‌کنند",
"Design and implementation of E2E in Matrix": "طراحی و پیاده‌سازی رمزگذاری E2E در ماتریکس",
"Implementing VR services with Matrix": "پیاده‌سازی سرویس‌های VR با ماتریکس",
"Implementing VoIP services with Matrix": "پیاده‌سازی سرویس‌های VoIP با ماتریکس",
"Discussion of the Identity Service API": "بحث درمورد API سرویس هویت",
"You have successfully set a password!": "شما با موفقیت رمزتان را انتخاب کردید!",
"Collapse panel": "پنل را ببند",
"Drop here %(toAction)s": "به اینجا بیندازید %(toAction)s",
"Failed to set Direct Message status of room": "تنظیم حالت پیام مستقیم برای گپ موفقیت‌آمیز نبود",
"Fetching third party location failed": "تطبیق اطلاعات از منابع‌ دسته سوم با شکست مواجه شد",
"Messages containing my display name": "پیام‌های حاوی نمای‌نامِ من",
"What's new?": "تازه‌ها",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "ممکن است شما این تنظیمات را در کارخواهی به جز رایوت اعمال کرده باشید. شما نمی‌توانید انها را تغییر دهید اما آنها همچنان تاثیر خود را دارند",
"Building services on Matrix": "ساخت سرویس بر روی ماتریکس",
"Support for those using the Matrix spec": "پشتیبانی برای آنان که از مستندات ماتریکس استفاده می‌کنند"
}

View File

@@ -1,5 +1,5 @@
{
"Add an email address above to configure email notifications": "Ajouter une adresse email pour la configuration des notifications par email",
"Add an email address above to configure email notifications": "Ajouter une adresse e-mail pour la configuration des notifications par e-mail",
"All messages": "Tous les messages",
"All messages (loud)": "Tous les messages (fort)",
"All notifications are currently disabled for all targets.": "Toutes les notifications sont désactivées pour tous les appareils.",
@@ -8,11 +8,11 @@
"Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur",
"Close": "Fermer",
"Create new room": "Créer un nouveau salon",
"Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix",
"Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix correspondant",
"Custom Server Options": "Options de serveur personnalisées",
"delete the alias.": "supprimer l'alias.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer l'alias %(alias)s du salon et supprimer %(name)s du répertoire ?",
"Direct Chat": "Conversation Directe",
"Direct Chat": "Discussion directe",
"Directory": "Répertoire",
"Dismiss": "Ignorer",
"Download this file": "Télécharger ce fichier",
@@ -24,7 +24,7 @@
"Enable them now": "Les activer maintenant",
"Enter keywords separated by a comma:": "Entrez les mots clés séparés par une virgule :",
"Error": "Erreur",
"Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email",
"Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par e-mail",
"#example": "#exemple",
"Failed to": "Échec pour",
"Failed to add tag %(tagName)s to room": "Échec lors de l'ajout de létiquette %(tagName)s au salon",
@@ -35,10 +35,10 @@
"Failed to get public room list": "Échec lors de la récupération de la liste des salons publics",
"Failed to join the room": "Échec de l'adhésion au salon",
"Failed to remove tag %(tagName)s from room": "Échec dans la suppression de létiquette %(tagName)s du salon",
"Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct",
"Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans la discussion directe",
"Favourite": "Favoris",
"Operation failed": "L'opération a échoué",
"Please Register": "Veuillez vous enregistrer",
"Please Register": "Veuillez vous inscrire",
"powered by Matrix": "propulsé par Matrix",
"Quote": "Citer",
"Redact": "Rédiger",
@@ -64,23 +64,23 @@
"Yesterday": "Hier",
"Welcome page": "Page d'accueil",
"Call invitation": "Appel entrant",
"Failed to set Direct Message status of room": "Échec de la configuration de l'état de Message Direct du salon",
"Failed to set Direct Message status of room": "Échec du changement de l'état du salon en Discussion Directe",
"Fetching third party location failed": "Échec de la récupération de la localisation tierce",
"Files": "Fichiers",
"Filter room names": "Filtrer les salons par nom",
"Forget": "Oublier",
" from room": " du salon",
"Guest users can't invite users. Please register to invite.": "Les visiteurs ne peuvent démarrer une discussion. Merci de vous enregistrer pour pouvoir démarrer une discussion.",
"Guest users can't invite users. Please register to invite.": "Les visiteurs ne peuvent démarrer une discussion. Merci de vous inscrire pour pouvoir démarrer une discussion.",
"Invite to this room": "Inviter dans ce salon",
"Keywords": "Mots-clés",
"Leave": "Quitter",
"Low Priority": "Priorité Basse",
"Low Priority": "Priorité basse",
"Members": "Membres",
"Mentions only": "Seulement les mentions",
"Messages containing my display name": "Messages contenant mon nom",
"Messages containing my user name": "Message contenant mon nom d'utilisateur",
"Messages in group chats": "Messages dans les conversations de groupe",
"Messages in one-to-one chats": "Messages dans les conversations directes",
"Messages in one-to-one chats": "Messages dans les discussions directes",
"Messages sent by bot": "Messages envoyés par des robots",
"more": "plus",
"Mute": "Couper le son",
@@ -99,26 +99,26 @@
"Riot does not know how to join a room on this network": "Riot ne peut pas joindre un salon sur ce réseau",
"Room directory": "Répertoire des salons",
"Room not found": "Salon non trouvé",
"Search for a room": "Chercher un salon",
"Search for a room": "Rechercher un salon",
"Source URL": "URL source",
"The Home Server may be too old to support third party networks": "Le Home Server semble trop ancien pour supporter des réseaux tiers",
"The Home Server may be too old to support third party networks": "Le homeserver semble trop ancien pour supporter des réseaux tiers",
"There are advanced notifications which are not shown here": "Il existe une configuration avancée des notifications qui ne peut être affichée ici",
"The server may be unavailable or overloaded": "Le serveur est indisponible ou surchargé",
"This room is inaccessible to guests. You may be able to join if you register.": "Ce salon n'est pas ouvert aux visiteurs. Vous pourrez peut-être le rejoindre si vous vous enregistrez.",
"This room is inaccessible to guests. You may be able to join if you register.": "Ce salon n'est pas ouvert aux visiteurs. Vous pourrez peut-être le rejoindre si vous vous inscrivez.",
"Unable to fetch notification target list": "Impossible de récupérer la liste des appareils recevant les notifications",
"Unable to join network": "Impossible de rejoindre le réseau",
"Unable to look up room ID from server": "Impossible de récupérer l'ID du salon sur le serveur",
"Unhide Preview": "Dévoiler l'aperçu",
"Unnamed room": "Salon anonyme",
"Uploaded on %(date)s by %(user)s": "Téléchargé le %(date)s par %(user)s",
"View Decrypted Source": "Voir la source décryptée",
"View Decrypted Source": "Voir la source déchiffrée",
"When I'm invited to a room": "Quand je suis invité dans un salon",
"World readable": "Visible par tout le monde",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vous les avez probablement configurées dans un autre client que Riot. Vous ne pouvez pas les configurer dans Riot mais elles s'appliquent quand même",
"Guests can join": "Ouvert aux visiteurs",
" to room": " au salon",
"Advanced notification settings": "Paramètres de notification avancés",
"customServer_text": "Vous pouvez utiliser l'option de serveur personnalisé pour vous connectez à d'autres serveurs Matrix, en spécifiant une adresse de homerserver différente.<br/>Cela permet d'utiliser Riot avec un compte existant sur un homeserver différent.<br/><br/>Vous pouvez aussi indiquer un serveur d'identité personnel mais vous ne pourrez plus inviter des utilisateurs par email, ou être invité par email.",
"customServer_text": "Vous pouvez utiliser l'option de serveur personnalisé pour vous connectez à d'autres serveurs Matrix, en spécifiant une adresse de homerserver différente.<br/>Cela permet d'utiliser Riot avec un compte existant sur un homeserver différent.<br/><br/>Vous pouvez aussi indiquer un serveur d'identité personnel mais vous ne pourrez plus inviter des utilisateurs par e-mail, ou être invité par e-mail.",
"Notifications on the following keywords follow rules which cant be displayed here:": "Les notifications pour les mots-clés suivant répondent à des critères qui ne peuvent pas être affichés ici :",
"Collapse panel": "Cacher le panneau",
"Expand panel": "Dévoiler le panneau",
@@ -144,7 +144,7 @@
"Loading bug report module": "Chargement du module de rapport derreur",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Veuillez décrire le problème. Quavez-vous fait ? Quel comportement vous attendiez vous à voir ? Que sest-il effectivement passé ?",
"Please describe the bug and/or send logs.": "Veuillez décrire le problème et/ou envoyer les traces.",
"Report a bug": "Reporter un problème",
"Report a bug": "Signaler un problème",
"Riot Desktop on %(platformName)s": "Version bureau de Riot sur %(platformName)s",
"Riot is not supported on mobile web. Install the app?": "Riot Web nest pas supporté sur mobile. Installer lapplication ?",
"Search": "Rechercher",
@@ -159,7 +159,7 @@
"What's New": "Nouveautés",
"What's new?": "Nouveautés ?",
"Waiting for response from server": "En attente dune réponse du serveur",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Vous utilisez Riot en tant que visiteur. <a>Enregistrez-vous</a> ou <a>identifiez-vous</a> pour accéder à plus de salons et de fonctionnalités !",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Vous utilisez Riot en tant que visiteur. <a>Inscrivez-vous</a> ou <a>identifiez-vous</a> pour accéder à plus de salons et de fonctionnalités !",
"You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel en partage décran.",
"OK": "OK",
"Failed to change password. Is your password correct?": "Échec du changement de mot de passe. Votre mot de passe est-il correct ?",
@@ -172,32 +172,40 @@
"(HTTP status %(httpStatus)s)": "(statut HTTP %(httpStatus)s)",
"Login": "S'identifier",
"Chat with Riot Bot": "Discussion avec Riot Bot",
"Search the room directory": "Rechercher dans le répertoire de salon",
"Search the room directory": "Rechercher dans le répertoire de salons",
"Get started with some tips from Riot Bot!": "Démarrer avec quelques astuces de Riot Bot !",
"Riot/Android &amp; matrix-android-sdk chat": "Discussions Riot/Android &amp; matrix-android-sd",
"Riot/Android &amp; matrix-android-sdk chat": "Discussions Riot/Android &amp; matrix-android-sdk",
"Riot/iOS &amp; matrix-ios-sdk chat": "Discussions Riot/iOS &amp; matrix-ios-sdk",
"General discussion about Matrix and Riot": "Discussion générale sur Matrix et Riot",
"Riot/Web &amp; Desktop chat": "Discussions Riot/Web &amp; Desktop",
"Running Matrix services": "Execution de services Matrix",
"Running Matrix services": "Exécution de services Matrix",
"Admin support for Dendrite": "Support admin pour Dendrite",
"Announcements about Synapse releases": "Communiqués sur les nouvelles versions de Synapse",
"Matrix technical discussions": "Discussions techniques sur Matrix",
"Community-run support for Synapse": "Support communautaire sur Synape",
"Community-run support for Synapse": "Support communautaire sur Synapse",
"Support for those using and running matrix-appservice-irc": "Support pour ceux qui utilisent et exécutent matrix-appservice-irc",
"Building services on Matrix": "Développement de services sur Matrix",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Discussion &amp; collaboration décentralisées et encryptées propulsé par [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Discussion &amp; collaboration décentralisées et chiffrées propulsé par [matrix]",
"Discussion of all things Matrix!": "Discussion de tous les sujets Matrix !",
"Support for those using the Matrix spec": "Support pour les utilisateurs de la spec Matrix",
"Design and implementation of E2E in Matrix": "Définition et implémentation de la crypto dans Matrix",
"Implementing VR services with Matrix": "Implémentation de de services de réalité virtuelle avec Matrix",
"Implementing VoIP services with Matrix": "Implémentation de de services de voix sur IP avec Matrix",
"Design and implementation of E2E in Matrix": "Définition et implémentation du chiffrement de bout-en-bout dans Matrix",
"Implementing VR services with Matrix": "Implémentation de services de réalité virtuelle avec Matrix",
"Implementing VoIP services with Matrix": "Implémentation de services de voix sur IP avec Matrix",
"Discussion of the Identity Service API": "Discussion sur lAPI du Service Identité",
"Support for those using, running and writing other bridges": "Support pour les utilisateurs, administrateurs et développeurs de passerelles",
"Contributing code to Matrix and Riot": "Contribuer à Matrix et Riot",
"Dev chat for the Riot/Web dev team": "Forum pour les discussions sur les développements de Riot/Web",
"Dev chat for the Dendrite dev team": "Forum pour les discussion sur les développements de Dendrite",
"Co-ordination for Riot/Web translators": "Coordination des traducteurs de Riot/Web",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Beaucoup de salons existent déjà dans Matrix, liés à des réseaux existants (Slsck, IRC, Gitter etc) ou indépendants. Jetez un oeil au répertoire !",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Beaucoup de salons existent déjà dans Matrix, liés à des réseaux existants (Slack, IRC, Gitter, etc.) ou indépendants. Jetez un œil au répertoire !",
"You have successfully set a password and an email address!": "Vous avez configuré un mot de passe et une adresse e-mail avec succès !",
"Remember, you can always set an email address in user settings if you change your mind.": "Souvenez-vous que vous pourrez toujours définir une adresse e-mail dans la configuration utilisateur si vous changez davis."
"Remember, you can always set an email address in user settings if you change your mind.": "Souvenez-vous que vous pourrez toujours définir une adresse e-mail dans la configuration utilisateur si vous changez davis.",
"Warning": "Attention",
"Checking for an update...": "Recherche d'une mise à jour...",
"Error encountered (%(errorDetail)s).": "Erreur rencontrée (%(errorDetail)s).",
"No update available.": "Aucune mise à jour disponible.",
"Downloading update...": "Mise à jour en cours de téléchargement...",
"To return to your account in future you need to <u>set a password</u>": "Pour pouvoir accéder à votre compte dans le futur, vous devez <u>enregistrer un mot de passe</u>",
"Set Password": "Enregistrer un mot de passe",
"Couldn't load home page": "Impossible de charger la page d'accueil"
}

View File

@@ -26,7 +26,7 @@
"Enable them now": "Engedélyezés most",
"Enter keywords separated by a comma:": "Kulcsszavak vesszővel elválasztva:",
"Error": "Hiba",
"Error saving email notification preferences": "Hiba email értesítés beállításának mentésénél",
"Error saving email notification preferences": "Hiba e-mail értesítés beállításának mentésénél",
"#example": "#példa",
"Failed to": "Nem lehet",
"Failed to add tag %(tagName)s to room": "Nem lehet a címkét hozzáadni a szobához: %(tagName)s",
@@ -83,7 +83,7 @@
"Redact": "Szerkeszt",
"Reject": "Elutasít",
"Remove %(name)s from the directory?": "Törlöd a %(name)s szobát a listából?",
"Remove": "Töröl",
"Remove": "Törlés",
"remove %(name)s from the directory.": "%(name)s szoba törlése a listából.",
"Remove from Directory": "Törlés a szobák listájából",
"Resend": "Újraküld",
@@ -130,7 +130,7 @@
"Messages containing <span>keywords</span>": "Az üzenet <span>kulcsszavakat</span> tartalmaz",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren",
"A new version of Riot is available.": "Új verzió érhető el a Riot-ból.",
"All Rooms": "Minden szoba",
"All Rooms": "Minden szobában",
"Cancel": "Mégse",
"Changelog": "Változások",
"Collecting app version information": "Alkalmazás verzió információk összegyűjtése",
@@ -148,7 +148,7 @@
"Search…": "Keresés…",
"Send": "Küld",
"Send logs": "Naplók elküldése",
"This Room": "Ez a szoba",
"This Room": "Ebben a szobában",
"Unavailable": "Elérhetetlen",
"Unknown device": "Ismeretlen eszköz",
"Update": "Frissítés",
@@ -198,5 +198,13 @@
"This will allow you to return to your account after signing out, and sign in on other devices.": "Ezzel visszatérhetsz kijelentkezés után a fiókodhoz és más eszközökkel is be tudsz jelentkezni.",
"(HTTP status %(httpStatus)s)": "(HTTP állapot %(httpStatus)s)",
"You have successfully set a password and an email address!": "Sikeresen beállítottad a jelszavad és e-mail címed!",
"Remember, you can always set an email address in user settings if you change your mind.": "Ha meggondolod magad, bármikor beállíthatod az e-mail címed a felhasználói beállításoknál."
"Remember, you can always set an email address in user settings if you change your mind.": "Ha meggondolod magad, bármikor beállíthatod az e-mail címed a felhasználói beállításoknál.",
"To return to your account in future you need to <u>set a password</u>": "A fiókba való visszalépéshez <u>jelszót</u> kell beállítanod",
"Set Password": "Jelszó beállítása",
"Warning": "Figyelmeztetés",
"Checking for an update...": "Frissítés keresése...",
"Error encountered (%(errorDetail)s).": "Hiba történt (%(errorDetail)s).",
"No update available.": "Frissítés nem érthető el.",
"Downloading update...": "Frissítés letöltése...",
"Couldn't load home page": "Kezdőképernyő betöltése sikertelen"
}

View File

@@ -1 +1,209 @@
{}
{
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s melalui %(browserName)s di %(osName)s",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> dan <a href=\"http://opera.com\">Opera</a> juga berfungsi.",
"A new version of Riot is available.": "Riot versi baru telah tersedia.",
"Add an email address above to configure email notifications": "Tambahkan alamat email di atas untuk konfigurasi notifikasi email",
"Advanced notification settings": "Pengaturan notifikasi lanjutan",
"All messages": "Semua pesan",
"All messages (loud)": "Semua pesan (keras)",
"All Rooms": "Semua Ruang",
"All notifications are currently disabled for all targets.": "Semua notifikasi saat ini dinonaktifkan untuk semua target.",
"An error occurred whilst saving your email notification preferences.": "Terjadi kesalahan saat menyimpan preferensi notifikasi email Anda.",
"Call invitation": "Undangan panggilan",
"Cancel": "Batal",
"Cancel Sending": "Batalkan pengiriman",
"Can't update user notification settings": "Tidak dapat memperbarui pengaturan notifikasi pengguna",
"Changelog": "Daftar perubahan",
"Close": "Tutup",
"Collapse panel": "Lipat panel",
"Collecting app version information": "Mengumpukan informasi versi aplikasi",
"Collecting logs": "Mengumpulkan catatan",
"Create new room": "Buat ruang baru",
"Couldn't find a matching Matrix room": "Tidak dapat menemukan ruang Matrix yang sesuai",
"Custom Server Options": "Pilihan Server Khusus",
"customServer_text": "Anda dapat menggunakan opsi server khusus untuk masuk ke server Matrix lain dengan menyebutkan URL server Home.<br/>Hal ini memperbolehkan Anda untuk menggunakan Riot dengan akun Matrix yang sudah ada di server Home yang berbeda.<br/><br/>Anda juga bisa mengatur server identitas khusus tapi Anda tidak akan dapat mengundang pengguna melalui alamat email, atau diundang dengan alamat email Anda.",
"delete the alias.": "hapus alias.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Hapus alias ruang %(alias)s dan hapus %(name)s dari direktori?",
"Describe your problem here.": "Jelaskan masalah anda di sini.",
"Direct Chat": "Obrolan Langsung",
"Directory": "Direktori",
"Dismiss": "Abaikan",
"Download this file": "Unduh file ini",
"Drop here %(toAction)s": "Letakkan di sini %(toAction)s",
"Enable audible notifications in web client": "Aktifkan notifikasi suara di klien web",
"Enable desktop notifications": "Aktifkan notifikasi desktop",
"Enable email notifications": "Aktifkan notifikasi email",
"Enable notifications for this account": "Aktifkan notifikasi untuk akun ini",
"Enable them now": "Aktifkan sekarang",
"Enter keywords separated by a comma:": "Masukkan kata kunci dipisahkan oleh koma:",
"Error": "Terjadi Kesalahan",
"Error saving email notification preferences": "Terjadi kesalahan saat menyimpan pilihan notifikasi email",
"#example": "#contoh",
"Expand panel": "Luaskan panel",
"Failed to": "Gagal untuk",
"Failed to add tag %(tagName)s to room": "Gagal menambahkan tag %(tagName)s ke ruang",
"Failed to change settings": "Gagal mengubah pengaturan",
"Failed to forget room %(errCode)s": "Gagal melupakan ruang %(errCode)s",
"Failed to update keywords": "Gagal memperbarui kata kunci",
"Failed to get protocol list from Home Server": "Gagal mendapatkan daftar protokol dari Server Home",
"Failed to get public room list": "Gagal mendapatkan daftar ruang publik",
"Failed to join the room": "Gagal gabung ke ruang",
"Failed to remove tag %(tagName)s from room": "Gagal menghapus tag %(tagName)s dari ruang",
"Failed to send report: ": "Gagal mengirim laporan: ",
"Failed to set direct chat tag": "Gagal mengatur tag obrolan langsung",
"Failed to set Direct Message status of room": "Gagal mengatur status Pesan Langsung dari ruang",
"Favourite": "Favorit",
"Fetching third party location failed": "Gagal mengambil lokasi pihak ketiga",
"Files": "Files",
"Filter room names": "Saring nama ruang",
"Forget": "Lupakan",
"Forward Message": "Teruskan Pesan",
" from room": " dari ruang",
"Guests can join": "Tamu dapat gabung",
"Guest users can't invite users. Please register to invite.": "Pengunjung tamu tidak dapat mengundang pengguna. Harap registrasi untuk mengundang.",
"Hide panel": "Sembunyikan panel",
"(HTTP status %(httpStatus)s)": "(status HTTP %(httpStatus)s)",
"I understand the risks and wish to continue": "Saya mengerti resikonya dan berharap untuk melanjutkan",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Untuk diagnosis permasalahannya, catatan dari klien ini akan dikirimkan bersama laporan bug. Jika Anda memilih untuk hanya mengirimkan pesan di atas, mohon hapus centang:",
"Invite to this room": "Undang ke ruang ini",
"Keywords": "Kata Kunci",
"Leave": "Tinggalkan",
"Login": "Masuk",
"Loading bug report module": "Memuat modul laporan bug",
"Low Priority": "Prioritas Rendah",
"Members": "Anggota",
"Mentions only": "Hanya jika disinggung",
"Messages containing my display name": "Pesan mengandung nama tampilan saya",
"Messages containing <span>keywords</span>": "Pesan mengandung <span>kata kunci</span>",
"Messages containing my user name": "Pesan mengandung nama pengguna saya",
"Messages in group chats": "Pesan di obrolan grup",
"Messages in one-to-one chats": "Pesan di obrolan satu-ke-satu",
"Messages sent by bot": "Pesan dikirim oleh bot",
"more": "lagi",
"Mute": "Bisu",
"No rooms to show": "Tidak ada ruang ditunjukkan",
"Noisy": "Berisik",
"Notification targets": "Target notifikasi",
"Notifications": "Notifikasi",
"Notifications on the following keywords follow rules which cant be displayed here:": "Notifikasi pada kata kunci berikut mengikuti aturan dimana tidak dapat ditampilkan di sini:",
"Notify for all other messages/rooms": "Beritau semua pesan/ruang",
"Notify me for anything else": "Beritau saya untuk lainnya",
"Off": "Mati",
"On": "Nyala",
"Operation failed": "Operasi gagal",
"Permalink": "Permalink",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Harap jelaskan bug. Apa yang Anda lakukan? Apa yang Anda harap terjadi? Apa yang sebenarnya terjadi?",
"Please describe the bug and/or send logs.": "Harap jelaskan bug dan/atau kirim catatan.",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Harap install <a href=\"https://www.google.com/chrome\">Chrome</a> atau <a href=\"https://getfirefox.com\">Firefox</a> untuk pengalaman terbaik.",
"Please Register": "Mohon registrasi",
"powered by Matrix": "didukung oleh Matrix",
"Quote": "Kutip",
"Reject": "Tolak",
"Remove %(name)s from the directory?": "Hapus %(name)s dari direktori?",
"Remove": "Hapus",
"remove %(name)s from the directory.": "hapus %(name)s dari direktori.",
"Remove from Directory": "Hapus dari DIrektori",
"Report a bug": "Laporkan bug",
"Resend": "Kirim Ulang",
"Riot Desktop on %(platformName)s": "Riot Desktop di %(platformName)s",
"Riot does not know how to join a room on this network": "Riot tidak tau bagaimana gabung ruang di jaringan ini",
"Riot is not supported on mobile web. Install the app?": "Riot tidak mendukung web seluler. Install aplikasi?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot menggunakan banyak fitur terdepan dari browser, dimana tidak tersedia atau dalam fase eksperimen di browser Anda.",
"Room directory": "Direktori ruang",
"Room not found": "Ruang tidak ditemukan",
"Search": "Cari",
"Search…": "Cari…",
"Search for a room": "Cari ruang obrolan",
"Send": "Kirim",
"Send logs": "Kirim catatan",
"Settings": "Pengaturan",
"Source URL": "URL sumber",
"Sorry, your browser is <b>not</b> able to run Riot.": "Maaf, browser Anda <b>tidak</b> dapat menjalankan Riot.",
"Start chat": "Mulai obrolan",
"The Home Server may be too old to support third party networks": "Server Home mungkin terlalu kuno untuk mendukung jaringan pihak ketiga",
"There are advanced notifications which are not shown here": "Ada notifikasi lanjutan yang tidak ditampilkan di sini",
"The server may be unavailable or overloaded": "Server mungkin tidak tersedia atau kelebihan muatan",
"This Room": "Ruang ini",
"This room is inaccessible to guests. You may be able to join if you register.": "Ruang ini tidak dapat diakses oleh tamu. Anda mungkin dapat bergabung jika melakukan registrasi.",
" to room": " ke ruang",
"Unable to fetch notification target list": "Tidak dapat mengambil daftar notifikasi target",
"Unable to join network": "Tidak dapat bergabung di jaringan",
"Unable to look up room ID from server": "Tidak dapat mencari ID ruang dari server",
"Unavailable": "Tidak Tersedia",
"Unhide Preview": "Tampilkan Pratinjau",
"Unknown device": "Perangkat Tidak Diketahui",
"unknown error code": "kode kesalahan tidak diketahui",
"Unnamed room": "Ruang tanpa nama",
"Update": "Perbarui",
"Uploaded on %(date)s by %(user)s": "Diunggah pada %(date)s oleh %(user)s",
"Uploading report": "Unggah laporan",
"View Decrypted Source": "Tampilkan Sumber Terdekripsi",
"View Source": "Tampilkan Sumber",
"What's New": "Apa Yang Baru",
"What's new?": "Apa yang baru?",
"Waiting for response from server": "Menunggu respon dari server",
"When I'm invited to a room": "Ketika Saya diundang ke ruang",
"World readable": "Terpublikasi Umum",
"You cannot delete this image. (%(code)s)": "Anda tidak dapat menghapus gambar ini. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Anda tidak dapat menghapus pesan ini. (%(code)s)",
"You are not receiving desktop notifications": "Anda tidak menerima notifikasi desktop",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Anda menggunakan Riot sebagai tamu. <a>Registrasi</a> atau <a>masuk</a> untuk mengakses banyak ruang dan fitur lainnya!",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Anda mungkin sudah konfigurasi di klien selain Riot. Anda tidak dapat setel di Riot tetap berlaku",
"Sunday": "Minggu",
"Monday": "Senin",
"Tuesday": "Selasa",
"Wednesday": "Rabu",
"Thursday": "Kamis",
"Friday": "Jumat",
"Saturday": "Sabtu",
"Today": "Hari Ini",
"Yesterday": "Kemarin",
"OK": "OK",
"Warning": "Peringatan",
"Checking for an update...": "Cek pembaruan...",
"Error encountered (%(errorDetail)s).": "Terjadi kesalahan (%(errorDetail)s).",
"No update available.": "Tidak ada pembaruan.",
"Downloading update...": "Unduh pembaruan...",
"You need to be using HTTPS to place a screen-sharing call.": "Anda perlu menggunakan HTTPS untuk melakukan panggilan berbagi-layar.",
"Welcome page": "Halaman selamat datang",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Dengan browser ini, tampilan dari aplikasi mungkin tidak sesuai, dan beberapa atau bahkan semua fitur mungkin tidak berjalan. Jika Anda ingin tetap mencobanya, Anda bisa melanjutkan, tapi Anda tanggung sendiri jika muncul masalah yang terjadi!",
"Welcome to Riot.im": "Selamat datang di Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Obrolan terenkripsi, terdesentralisasi &amp; kolaborasi didukung oleh [matrix]",
"Search the room directory": "Cari di direktori ruang",
"Chat with Riot Bot": "Mengobrol dengan bot Riot",
"Get started with some tips from Riot Bot!": "Mulai dengan beberapa tip dari Bot Riot!",
"General discussion about Matrix and Riot": "Diskusi umum tentang Matrix dan Riot",
"Discussion of all things Matrix!": "Diskusi semua tentang Matrix!",
"Riot/Web &amp; Desktop chat": "Obrolan Riot/Web &amp; Desktop",
"Riot/iOS &amp; matrix-ios-sdk chat": "Obrolan Riot/iOS &amp; matrix-ios-sdk",
"Riot/Android &amp; matrix-android-sdk chat": "Obrolan Riot/Android &amp; matrix-android-sdk",
"Matrix technical discussions": "Diskusi teknis Matrix",
"Running Matrix services": "Mengoperasikan layanan Matrix",
"Community-run support for Synapse": "Dukungan komunitas untuk Synapse",
"Admin support for Dendrite": "Dukungan Admin untuk Dendrite",
"Announcements about Synapse releases": "Pengumuman tentang rilis Synapse",
"Support for those using and running matrix-appservice-irc": "Dukungan untuk pengguna dan penyedia matrix-appservice-irc",
"Building services on Matrix": "Membangun layanan dengan Matrix",
"Support for those using the Matrix spec": "Dukungan untuk pengguna Matrix spec",
"Design and implementation of E2E in Matrix": "Desain dan implementasi E2E di Matrix",
"Implementing VR services with Matrix": "Implementasi layanan VR dengan Matrix",
"Implementing VoIP services with Matrix": "Implementasi layanan VoIP dengan Matrix",
"Discussion of the Identity Service API": "Diskusi tentang API Identity Service",
"Support for those using, running and writing other bridges": "Dukungan untuk pengguna, penyedia dan penulis jembatan lainnya",
"Contributing code to Matrix and Riot": "Kontribusi kode untuk Matrix dan Riot",
"Dev chat for the Riot/Web dev team": "Obrolan Developer untuk tim developer Riot/Web",
"Dev chat for the Dendrite dev team": "Obrolan Developer untuk tim developer Dendrite",
"Co-ordination for Riot/Web translators": "Koordinasi untuk penerjemah Riot/Web",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Banyak ruang sudah tersedia di Matrix, terhubung ke jaringan yang sudah ada (Slack, IRC, Gitter dls) atau independen. Cek direktori!",
"Failed to change password. Is your password correct?": "Gagal untuk mengubah password. Apakah password Anda benar?",
"You have successfully set a password!": "Anda berhasil mengubah password!",
"You can now return to your account after signing out, and sign in on other devices.": "Anda dapat kembali ke akun setelah keluar dan masuk kembali di perangkat lain.",
"Continue": "Lanjut",
"Please set a password!": "Mohon isi password!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Hal ini akan memperbolehkan anda kembali ke akun setelah keluar dan masuk kembali di perangkat lain.",
"You have successfully set a password and an email address!": "Anda telah berhasil mengubah password dan alamat email!",
"Remember, you can always set an email address in user settings if you change your mind.": "Ingat, Anda selalu dapat mengubah alamat email di pengaturan pengguna jika anda berubah pikiran.",
"To return to your account in future you need to <u>set a password</u>": "Untuk kembali ke akun di lain waktu, Anda perlu <u>mengisi password</u>",
"Set Password": "Ubah Password",
"Couldn't load home page": "Tidak dapat memuat halaman utama"
}

View File

@@ -1,12 +1,12 @@
{
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "Anche <a href=\"http://apple.com/safari\">Safari</a> e <a href=\"http://opera.com\"> Opera</a> funzionano.",
"A new version of Riot is available.": "È disponibile una nuova versione di Riot.",
"Add an email address above to configure email notifications": "Specifica un indirizzo email per configurazione le notifiche via email",
"Advanced notification settings": "Impostazioni notifiche avanzate",
"Add an email address above to configure email notifications": "Aggiungi un indirizzo email sopra per configurare le notifiche via email",
"Advanced notification settings": "Impostazioni di notifica avanzate",
"All messages": "Tutti i messaggi",
"All messages (loud)": "Tutti i messaggi (rumoroso)",
"All Rooms": "Tutte le stanze",
"An error occurred whilst saving your email notification preferences.": "È avvenuto un errore durante il salvataggio delle tue preferenze sulle notifiche email.",
"An error occurred whilst saving your email notification preferences.": "Si è verificato un errore durante il salvataggio delle tue preferenze sulle notifiche email.",
"Call invitation": "Invito ad una chiamata",
"Cancel": "Annulla",
"Cancel Sending": "Annulla invio",
@@ -14,20 +14,20 @@
"Changelog": "Cambiamenti",
"Close": "Chiudi",
"Collapse panel": "Riduci pannello",
"Collecting app version information": "Raccolta delle informazioni sulla versione dell'applicazione",
"Collecting logs": "Raccolta del registro",
"Collecting app version information": "Raccolta di informazioni sulla versione dell'applicazione",
"Collecting logs": "Sto recuperando i log",
"Create new room": "Crea una nuova stanza",
"Couldn't find a matching Matrix room": "Impossibile trovare una stanza Matrix corrispondente",
"Custom Server Options": "Opzioni server personale",
"customServer_text": "Puoi utilizzare un server personale per entrare in altri server Matrix specificando un diverso indirizzo per il server Home.<br/>Questo ti permetterà di usare Riot con un account Matrix già esistente su un altro server.<br/><br/>Puoi anche specificare un diverso server di identità ma non sarai in grado di invitare utenti o di essere invitato tramite indirizzo email.",
"delete the alias.": "Elimina gli alias.",
"Custom Server Options": "Opzioni Server Personalizzate",
"customServer_text": "Puoi utilizzare un server personale per accedere su altri server Matrix specificando un diverso indirizzo URL per il server Home.<br/>Questo ti permetterà di usare Riot con un account Matrix già esistente su un altro server.<br/><br/>Puoi anche specificare un diverso server di identità ma non sarai in grado di invitare utenti, o di essere invitato tramite indirizzo email.",
"delete the alias.": "elimina l'alias.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Eliminare l'alias %(alias)s e rimuovere %(name)s dalla lista?",
"Describe your problem here.": "Descrivi qui il tuo problema.",
"Direct Chat": "Chat diretta",
"Direct Chat": "Chat Diretta",
"Directory": "Lista",
"Dismiss": "Scarta",
"Download this file": "Scarica questo file",
"Enable audible notifications in web client": "Abilita notifiche audio nel client Web",
"Enable audible notifications in web client": "Abilita notifiche audio nel client web",
"Enable desktop notifications": "Abilita le notifiche desktop",
"Enable email notifications": "Abilita le notifiche email",
"Enable notifications for this account": "Abilita le notifiche per questo account",
@@ -37,17 +37,17 @@
"Error saving email notification preferences": "Errore nel salvataggio delle preferenze di notifica email",
"#example": "#esempio",
"Expand panel": "Espandi il pannello",
"Failed to": "Non si è riuscito a",
"Failed to add tag %(tagName)s to room": "Non si è riuscito ad aggiungere l'etichetta %(tagName)s alla stanza",
"Failed to change settings": "Non si è riuscito ad aggiornare le impostazioni",
"Failed to update keywords": "Non si è riuscito ad aggiornare le parole chiave",
"Failed to get protocol list from Home Server": "Non si è riuscito ad ottenere la lista protocollo dal server Home",
"Failed to get public room list": "Non si è riuscito ad ottenere la lista delle stanze pubbliche",
"Failed to join the room": "Non si è riuscito a entrare nella stanza",
"Failed to remove tag %(tagName)s from room": "Non si è riuscito a rimuovere il tag %(tagName)s dalla stanza",
"Failed to send report: ": "Non si è riuscito ad inviare il resoconto: ",
"Failed to set direct chat tag": "Non si è riuscito a impostare l'etichetta di chat diretta",
"Failed to set Direct Message status of room": "Non si è riuscito ad impostare lo stato di Messaggio Diretto alla stanza",
"Failed to": "Impossibile",
"Failed to add tag %(tagName)s to room": "Impossibile aggiungere l'etichetta %(tagName)s alla stanza",
"Failed to change settings": "Impossibile modificare le impostazioni",
"Failed to update keywords": "Impossibile aggiornare le parole chiave",
"Failed to get protocol list from Home Server": "Impossibile ottenere la lista di protocolli dal server Home",
"Failed to get public room list": "Impossibile ottenere la lista delle stanze pubbliche",
"Failed to join the room": "Impossibile entrare nella stanza",
"Failed to remove tag %(tagName)s from room": "Impossibile rimuovere l'etichetta %(tagName)s dalla stanza",
"Failed to send report: ": "Impossibile inviare il resoconto: ",
"Failed to set direct chat tag": "Impossibile impostare l'etichetta di chat diretta",
"Failed to set Direct Message status of room": "Impossibile impostare lo stato di Messaggio Diretto alla stanza",
"Favourite": "Preferito",
"Files": "File",
"Filter room names": "Filtra i nomi delle stanze",
@@ -55,11 +55,155 @@
"Forward Message": "Inoltra messaggio",
" from room": " dalla stanza",
"Guests can join": "Gli ospiti sono ammessi",
"Guest users can't invite users. Please register to invite.": "Gli utenti ospite non possono invitare altri utenti. Registrati per invitare.",
"Guest users can't invite users. Please register to invite.": "Gli ospiti non possono invitare gli utenti. Registrati per invitare.",
"Hide panel": "Nascondi pannello",
"I understand the risks and wish to continue": "Sono consapevole dei rischi e vorrei continuare",
"Invite to this room": "Invita a entrare in questa stanza",
"Invite to this room": "Invita in questa stanza",
"Keywords": "Parole chiave",
"Leave": "Abbandona",
"Login": "Entra"
"Login": "Entra",
"All notifications are currently disabled for all targets.": "Tutte le notifiche sono disabilitate per tutti gli obbiettivi.",
"Failed to forget room %(errCode)s": "Impossibile dimenticare la stanza %(errCode)s",
"Fetching third party location failed": "Rilevazione posizione di terze parti fallita",
"(HTTP status %(httpStatus)s)": "(stato HTTP %(httpStatus)s)",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Per diagnosticare i problemi, i log da questo client verranno inviati con questo bug report. Se vuoi solo mandare il testo sopra, togli la spunta a:",
"Loading bug report module": "Caricamento modulo di segnalazione errori",
"Low Priority": "Priorità bassa",
"Members": "Membri",
"Mentions only": "Solo le citazioni",
"Messages containing my display name": "Messaggi contenenti il mio nome visualizzato",
"Messages containing my user name": "Messaggi contenenti il mio nome utente",
"Messages in group chats": "Messaggi nelle chat di gruppo",
"Messages in one-to-one chats": "Messaggi in chat uno-a-uno",
"Messages sent by bot": "Messaggi inviati dai bot",
"more": "altro",
"Mute": "Silenzia",
"No rooms to show": "Nessuna stanza da mostrare",
"Noisy": "Rumoroso",
"Notifications": "Notifiche",
"Notify for all other messages/rooms": "Notifica per tutti gli altri messaggi/stanze",
"Notify me for anything else": "Notificami per qualsiasi altra cosa",
"Off": "Spento",
"On": "Acceso",
"Operation failed": "Operazione fallita",
"Permalink": "Link permanente",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Per favore descrivi l'errore. Cosa hai fatto? Cosa ti aspettavi accadesse? Cos'è successo invece?",
"Please describe the bug and/or send logs.": "Per favore descrivi l'errore e/o invia i log.",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Per favore installa<a href=\"https://www.google.com/chrome\">Chrome</a> o <a href=\"https://getfirefox.com\">Firefox</a> per un'esperienza migliore.",
"Please Register": "Per favore registrati",
"powered by Matrix": "offerto da Matrix",
"Quote": "Cita",
"Reject": "Rifiuta",
"Remove %(name)s from the directory?": "Rimuovere %(name) dalla lista?",
"Remove": "Rimuovi",
"remove %(name)s from the directory.": "rimuovi %(name) dalla lista.",
"Remove from Directory": "Rimuovi dalla lista",
"Report a bug": "Segnala un errore",
"Resend": "Reinvia",
"Riot Desktop on %(platformName)s": "Riot Desktop su %(platformName)",
"Riot does not know how to join a room on this network": "Riot non sa come entrare nella stanza su questa rete",
"Riot is not supported on mobile web. Install the app?": "Riot non è supportato sul web mobile. Vuoi installare l'applicazione?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilizza molte funzioni avanzate del browser, alcune delle quali non sono disponibili o sono sperimentali nel tuo browser attuale.",
"Room not found": "Stanza non trovata",
"Search": "Cerca",
"Search…": "Cerca…",
"Search for a room": "Cerca una stanza",
"Send": "Invia",
"Send logs": "Invia i log",
"Settings": "Impostazioni",
"Source URL": "URL d'origine",
"Sorry, your browser is <b>not</b> able to run Riot.": "Spiacenti, ma il tuo browser <b>non</b> è in grado di utilizzare Riot.",
"Start chat": "Inizia una chat",
"Messages containing <span>keywords</span>": "Messaggi contenenti <span>parole chiave</span>",
"Notification targets": "Obiettivi di notifica",
"Notifications on the following keywords follow rules which cant be displayed here:": "Le notifiche alle seguenti parole chiave seguono regole che non possono essere mostrate qui:",
"Room directory": "Lista delle stanze",
"The Home Server may be too old to support third party networks": "Il server Home potrebbe essere troppo vecchio per supportare reti di terze parti",
"There are advanced notifications which are not shown here": "Ci sono notifiche avanzate che non sono mostrate qui",
"The server may be unavailable or overloaded": "Il server potrebbe essere non disponibile o sovraccarico",
"This Room": "Questa stanza",
"This room is inaccessible to guests. You may be able to join if you register.": "Questa stanza è inaccessibile agli ospiti. Potresti unirti se ti registri.",
" to room": " alla stanza",
"Unable to join network": "Impossibile collegarsi alla rete",
"Unable to look up room ID from server": "Impossibile consultare l'ID stanza dal server",
"Unavailable": "Non disponibile",
"Unhide Preview": "Mostra anteprima",
"Unknown device": "Dispositivo sconosciuto",
"unknown error code": "codice errore sconosciuto",
"Unnamed room": "Stanza senza nome",
"Update": "Aggiornamento",
"Uploaded on %(date)s by %(user)s": "Caricato il %(date)s da %(user)s",
"Uploading report": "Sto caricando il report",
"View Decrypted Source": "Visualizza sorgente decifrato",
"View Source": "Visualizza sorgente",
"What's New": "Novità",
"What's new?": "Cosa c'è di nuovo?",
"Waiting for response from server": "In attesa di una risposta dal server",
"When I'm invited to a room": "Quando vengo invitato/a in una stanza",
"You cannot delete this image. (%(code)s)": "Non puoi eliminare quest'immagine. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Non puoi eliminare questo messaggio. (%(code)s)",
"You are not receiving desktop notifications": "Non stai ricevendo le notifiche sul desktop",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Stai usando Riot come ospite.<a>Registrati</a> o <a>accedi</a> per ottenere più stanze e funzionalità!",
"World readable": "Leggibile da tutti",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Potresti averli configurati in un client diverso da Riot. Non puoi cambiarli in Riot ma sono comunque applicati",
"Sunday": "Domenica",
"Monday": "Lunedì",
"Tuesday": "Martedì",
"Wednesday": "Mercoledì",
"Thursday": "Giovedì",
"Friday": "Venerdì",
"Saturday": "Sabato",
"Today": "Oggi",
"Yesterday": "Ieri",
"OK": "OK",
"Warning": "Attenzione",
"Checking for an update...": "Controllo aggiornamenti...",
"Error encountered (%(errorDetail)s).": "Errore riscontrato (%(errorDetail)s).",
"No update available.": "Nessun aggiornamento disponibile.",
"Downloading update...": "Scaricamento aggiornamento...",
"You need to be using HTTPS to place a screen-sharing call.": "Devi usare HTTPS per utilizzare una chiamata con condivisione schermo.",
"Welcome page": "Pagina di benvenuto",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Con il tuo attuale browser, l'aspetto e la sensazione generale dell'applicazione potrebbero essere completamente sbagliati e alcune delle funzionalità potrebbero non funzionare. Se vuoi provare comunque puoi continuare, ma non riceverai aiuto per qualsiasi problema tu possa riscontrare!",
"Welcome to Riot.im": "Benvenuto/a su Riot.im",
"Search the room directory": "Cerca nella lista delle stanze",
"Chat with Riot Bot": "Chatta con Riot Bot",
"Get started with some tips from Riot Bot!": "Inizia con alcuni consigli di Riot Bot!",
"General discussion about Matrix and Riot": "Discussioni generali riguardo Matrix e Riot",
"Couldn't load home page": "Impossibile caricare la pagina principale",
"Riot/Web &amp; Desktop chat": "Chat su Riot/Web &amp; Desktop",
"Riot/iOS &amp; matrix-ios-sdk chat": "Chat su Riot/iOS &amp; matrix-ios-sdk",
"Riot/Android &amp; matrix-android-sdk chat": "Chat su Riot/Android &amp; matrix-android-sdk",
"Matrix technical discussions": "Discussioni tecniche su Matrix",
"Running Matrix services": "Esecuzione servizi Matrix",
"Community-run support for Synapse": "Supporto per Synapse dalla comunità",
"Admin support for Dendrite": "Supporto amministrativo per Dendrite",
"Announcements about Synapse releases": "Annunci riguardo i rilasci di Synapse",
"Support for those using and running matrix-appservice-irc": "Supporto per chi usa e amministra matrix-appservice-irc",
"Building services on Matrix": "Costruzione servizi su Matrix",
"Support for those using the Matrix spec": "Supporto per chi utilizza le specifiche Matrix",
"Design and implementation of E2E in Matrix": "Design e implementazione di E2E in Matrix",
"Implementing VR services with Matrix": "Implementazione servizi VR con Matrix",
"Implementing VoIP services with Matrix": "Implementazione servizi VoIP con Matrix",
"Discussion of the Identity Service API": "Discussione sull'Identity Service API",
"Drop here %(toAction)s": "Rilascia qui %(toAction)s",
"Support for those using, running and writing other bridges": "Supporto per chi usa, amministra e scrive altri bridge",
"Contributing code to Matrix and Riot": "Contributi alla programmazione di Matrix e Riot",
"Co-ordination for Riot/Web translators": "Coordinamento per i traduttori di Riot/Web",
"Failed to change password. Is your password correct?": "Modifica password fallita. La tua password è corretta?",
"You have successfully set a password!": "Hai impostato una password con successo!",
"You can now return to your account after signing out, and sign in on other devices.": "Ora puoi tornare al tuo account dopo esserti disconnesso e accedere su altri dispositivi.",
"Continue": "Continua",
"Please set a password!": "Imposta una password!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Questo ti permetterà di ritornare al tuo account dopo esserti disconnesso e accedere in altri dispositivi.",
"You have successfully set a password and an email address!": "Hai impostato con successo una password e un indirizzo email!",
"Remember, you can always set an email address in user settings if you change your mind.": "Ricorda, puoi sempre specificare un indirizzo email nelle impostazioni utente se cambi idea.",
"To return to your account in future you need to <u>set a password</u>": "Per tornare nel tuo account in futuro devi <u>impostare una password</u>",
"Set Password": "Imposta Password",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s su %(osName)s",
"Unable to fetch notification target list": "Impossibile ottenere la lista di obiettivi notifiche",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat &amp; collaborazioni decentralizzate e criptate, offerte da [matrix]",
"Discussion of all things Matrix!": "Discussione su tutto quanto riguardi Matrix!",
"Dev chat for the Riot/Web dev team": "Chat per gli sviluppatori di Riot/Web",
"Dev chat for the Dendrite dev team": "Chat per gli sviluppatori di Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti già esistenti (Slack, IRC, Gitter ecc) o indipendenti. Dai un'occhiata all'elenco!"
}

61
src/i18n/strings/ja.json Normal file
View File

@@ -0,0 +1,61 @@
{
"All messages": "全ての発言",
"All messages (loud)": "全ての発言(通知音あり)",
"Cancel": "取消",
"Close": "閉じる",
"Create new room": "新しい部屋を作成",
"Direct Chat": "対話",
"Favourite": "お気に入り",
"Hide panel": "右欄を非表示",
"Invite to this room": "この部屋へ招待",
"Low Priority": "低優先度",
"Members": "参加者",
"Mentions only": "呼び掛けられた時のみ",
"Mute": "通知しない",
"Notifications": "通知",
"Report a bug": "バグを報告",
"Resend": "再送信",
"Riot is not supported on mobile web. Install the app?": "Riotはスマートフォンでの表示に対応していません。できればアプリをインストールして頂けませんでしょうか?",
"Room directory": "公開部屋一覧",
"Room not found": "部屋が見つかりません",
"Search": "検索",
"Search…": "検索…",
"Send": "送信",
"Settings": "設定",
"Sorry, your browser is <b>not</b> able to run Riot.": "申し訳ありません。あなたのブラウザではRiotは<b>動作できません</b>。",
"Start chat": "対話開始",
"This Room": "この部屋",
"Waiting for response from server": "サーバからの応答を待っています",
"You cannot delete this message. (%(code)s)": "あなたはこの発言を削除できません (%(code)s)",
"Sunday": "日曜日",
"Monday": "月曜日",
"Tuesday": "火曜日",
"Wednesday": "水曜日",
"Thursday": "木曜日",
"Friday": "金曜日",
"Saturday": "土曜日",
"Today": "今日",
"Yesterday": "昨日",
"Warning": "警告",
"No update available.": "更新はありません。",
"Welcome to Riot.im": "Riot.imへようこそ",
"Search the room directory": "部屋一覧を検索",
"Failed to change password. Is your password correct?": "パスワード変更に失敗しました。パスワードは正しいですか?",
"Set Password": "パスワードを設定",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a>と<a href=\"http://opera.com\">Opera</a>でも動作します。",
"A new version of Riot is available.": "新しいバージョンのRiotが利用可能です。",
"All Rooms": "全ての部屋",
"Changelog": "変更履歴",
"Directory": "部屋一覧",
"Download this file": "この添付ファイルをダウンロード",
"Enable desktop notifications": "デスクトップ画面に通知を行う",
"Enable email notifications": "電子メールでの通知を行う",
"Enable notifications for this account": "このアカウントで通知を行う",
"Failed to change settings": "設定の変更に失敗しました",
"Failed to get public room list": "公開部屋一覧の取得に失敗しました",
"Failed to join the room": "部屋への参加に失敗しました",
"Filter room names": "部屋名検索",
"Forget": "忘れる",
"Leave": "退室",
"Files": "添付ファイル"
}

View File

@@ -25,7 +25,7 @@
"Directory": "목록",
"Dismiss": "없애기",
"Download this file": "이 파일 받기",
"Enable desktop notifications": "데스크탑에서 알림 받기",
"Enable desktop notifications": "컴퓨터에서 알림 받기",
"Enable email notifications": "이메일로 알림 받기",
"Enable notifications for this account": "이 계정의 알림 받기",
"Error": "오류",
@@ -62,7 +62,7 @@
"Remove from Directory": "목록에서 지우기",
"Report a bug": "오류 보고하기",
"Resend": "다시 보내기",
"Riot Desktop on %(platformName)s": "%(platformName)s에서 라이엇 데스크탑",
"Riot Desktop on %(platformName)s": "%(platformName)s에서 라이엇 컴퓨터판",
"Riot is not supported on mobile web. Install the app?": "라이엇은 모바일 사이트를 지원하지 않아요. 앱을 설치하시겠어요?",
"Room directory": "방 목록",
"Room not found": "방을 찾지 못했어요",
@@ -72,7 +72,7 @@
"Send": "보내기",
"Send logs": "로그 보내기",
"Settings": "설정",
"Source URL": "출처 주소",
"Source URL": "출처 URL",
"Sorry, your browser is <b>not</b> able to run Riot.": "죄송해요. 브라우저에서 라이엇을 켤 수가 <b>없어요</b>.",
"Start chat": "이야기하기",
"This Room": "방",
@@ -87,7 +87,7 @@
"Waiting for response from server": "서버에서 응답을 기다리는 중",
"You cannot delete this image. (%(code)s)": "이 사진을 지우실 수 없어요. (%(code)s)",
"You cannot delete this message. (%(code)s)": "이 메시지를 지우실 수 없어요. (%(code)s)",
"You are not receiving desktop notifications": "데스크탑 알림을 받지 않고 있어요",
"You are not receiving desktop notifications": "컴퓨터 알림을 받지 않고 있어요",
"Sunday": "일요일",
"Monday": "월요일",
"Tuesday": "화요일",
@@ -106,7 +106,7 @@
"Please set a password!": "비밀번호를 설정해주세요!",
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)s의 %(browserName)s을 통한 %(appName)s",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">사파리</a>와 <a href=\"http://opera.com\">오페라</a>에서도 작동해요.",
"customServer_text": "사용자 지정 서버 설정에서 다른 홈 서버 주소를 지정해 다른 매트릭스 서버에 로그인할 수 있어요.<br/>이를 통해 라이엇과 다른 홈 서버의 기존 매트릭스 계정을 함께 쓸 수 있죠.<br/><br/>사용자 지정 ID 서버를 설정할 수도 있지만 이메일 주소로 사용자를 초대하거나 초대받을 수는 없답니다.",
"customServer_text": "사용자 지정 서버 설정에서 다른 홈 서버 URL을 지정해 다른 매트릭스 서버에 로그인할 수 있어요.<br/>이를 통해 라이엇과 다른 홈 서버의 기존 매트릭스 계정을 함께 쓸 수 있죠.<br/><br/>사용자 지정 ID 서버를 설정할 수도 있지만 이메일 주소로 사용자를 초대하거나 초대받을 수는 없답니다.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "방 가명 %(alias)s 을 지우고 목록에서 %(name)s를 지우시겠어요?",
"Drop here %(toAction)s": "여기에 놓아주세요 %(toAction)s",
"Enable audible notifications in web client": "웹 클라이언트에서 알림 소리 켜기",
@@ -171,7 +171,7 @@
"Get started with some tips from Riot Bot!": "라이엇 봇에게 조언을 받고 시작하세요!",
"General discussion about Matrix and Riot": "매트릭스와 라이엇에 대한 일반 논의",
"Discussion of all things Matrix!": "매트릭스의 모든 것에 대한 토론!",
"Riot/Web &amp; Desktop chat": "라이엇/웹 &amp; 데스크탑 대화",
"Riot/Web &amp; Desktop chat": "라이엇/웹 &amp; 컴퓨터 이야기",
"Riot/iOS &amp; matrix-ios-sdk chat": "라이엇/IOS &amp; matrix-ios-sdk 대화",
"Riot/Android &amp; matrix-android-sdk chat": "매트릭스/안드로이드 &amp; matrix-ios-sdk 대화",
"Matrix technical discussions": "매트릭스 기술 논의",
@@ -198,5 +198,13 @@
"You have successfully set a password and an email address!": "비밀번호와 이메일 주소를 설정했어요!",
"Remember, you can always set an email address in user settings if you change your mind.": "잊지마세요, 마음이 바뀌면 언제라도 사용자 설정에서 이메일 주소를 바꾸실 수 있다는 걸요.",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "손님으로 라이엇에 들어오셨네요. <a>계정을 등록하거나</a> <a>로그인하시고</a> 더 많은 방과 기능을 즐기세요!",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "라이엇이 아닌 다른 클라이언트에서 구성하셨을 수도 있어요. 라이엇에서 조정할 수는 없지만 여전히 적용되있을 거에요"
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "라이엇이 아닌 다른 클라이언트에서 구성하셨을 수도 있어요. 라이엇에서 조정할 수는 없지만 여전히 적용되있을 거에요",
"To return to your account in future you need to <u>set a password</u>": "나중에 계정으로 돌아가려면 <u>비밀번호 설정</u>을 해야만 해요",
"Set Password": "비밀번호 설정",
"Warning": "주의",
"Checking for an update...": "업데이트를 확인하는 중...",
"Error encountered (%(errorDetail)s).": "오류가 일어났어요 (%(errorDetail)s).",
"No update available.": "업데이트가 없어요.",
"Downloading update...": "업데이트를 받는 중...",
"Couldn't load home page": "중심 화면을 불러올 수 없어요"
}

209
src/i18n/strings/lv.json Normal file
View File

@@ -0,0 +1,209 @@
{
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s caur %(browserName)s un %(osName)s",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "darbojas arī <a href=\"http://apple.com/safari\">Safari</a> un <a href=\"http://opera.com\">Opera</a>.",
"A new version of Riot is available.": "Ir pieejama jauna Riot versija.",
"Add an email address above to configure email notifications": "Pievieno augšā epasta adresi, lai konfigurētu epasta notifikāciju paziņojumus",
"Advanced notification settings": "Īpašie notifikāciju uzstādījumi",
"All messages": "Visas ziņas",
"All messages (loud)": "Visas ziņas (skaļi)",
"All Rooms": "Visas istabas",
"All notifications are currently disabled for all targets.": "Visi notifikāciju paziņojumi ir atspējoti visiem saņēmējiem.",
"An error occurred whilst saving your email notification preferences.": "Radās kļūda saglabājot tavus epasta notifikāciju ziņu uzstādījumus.",
"Call invitation": "Ielūguma zvans",
"Cancel": "Atcelt",
"Cancel Sending": "Atcelt sūtīšanu",
"Can't update user notification settings": "Nav iespējams atjaunot lietotāja notifikāciju ziņu uzstādījumus",
"Changelog": "Izmaiņu saraksts",
"Close": "Aizvērt",
"Collapse panel": "Aizvērt apgabalu",
"Collecting app version information": "Tiek apkopota programmas versijas informācija",
"Collecting logs": "Tiek apkopoti logfaili",
"Create new room": "Izveidot jaunu istabu",
"Couldn't find a matching Matrix room": "Nav iespējams noteikt atbilstošo Matrix istabu",
"Custom Server Options": "Īpaši servera uzstādījumi",
"customServer_text": "Tu vari izmantot īpašus servera uzstādījumus, lai pierakstītos citos Matrix serveros, norādot atšķirīgu servera URL adresi.<br/>Tas atļaus Tev izmantot Riot ar jau eksistējošu Matrix kontu citā serverī.<br/><br/>Tu vari norādīt arī īpašu identitātes serveri, bet tad nevarēsi uzaicināt lietotājus pēc epasta adreses,kā arī pēc tās tikt uzaicināts/a.",
"Discussion of the Identity Service API": "Diskusija par identitātes servisa API",
"delete the alias.": "dzēst aizstājējvārdu.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Dzēst istabas aizstājējvārdu %(alias)s un dzēst %(name)s no kataloga?",
"Describe your problem here.": "Apraksti savu problēmu šeit.",
"Direct Chat": "Tiešais čats",
"Directory": "Katalogs",
"Dismiss": "Noņemt",
"Download this file": "Lejupielādēt šo failu",
"Drop here %(toAction)s": "Ievelc šeit %(toAction)s",
"Enable audible notifications in web client": "Iespējot skaņas paziņojumus web klienta programmā",
"Enable desktop notifications": "Iespējot darbvirsmas notifikāciju paziņojumus",
"Enable email notifications": "Iespējot epasta notifikāciju paziņojumus",
"Enable notifications for this account": "Iespējot notifikāciju paziņojumus šim kontam",
"Enable them now": "Iespējot tos tagad",
"Enter keywords separated by a comma:": "Ievadi atslēgvārdus, atdalītus ar komatu:",
"Error": "Kļūda",
"Error saving email notification preferences": "Kļūda saglabājot epasta notifikāciju paziņojumu uzstādījumus",
"#example": "#piemērs",
"Expand panel": "Izvērst apgabalu",
"Failed to": "Neizdevās",
"Failed to add tag %(tagName)s to room": "Neizdevās pievienot birku %(tagName)s istabai",
"Failed to change settings": "Neizdevās mainīt uzstādījumus",
"Failed to forget room %(errCode)s": "Neizdevās \"aizmirst\" istabu %(errCode)s",
"Failed to update keywords": "Neizdevās atjaunot atslēgvārdus",
"Failed to get protocol list from Home Server": "Neizdevās iegūt protokolu sarakstu no mājas servera",
"Failed to get public room list": "Neizdevās iegūt publisko istabu sarakstu",
"Failed to join the room": "Neizdevās pievienoties istabai",
"Failed to remove tag %(tagName)s from room": "Neizdevās dzēst istabas birku %(tagName)s",
"Failed to send report: ": "Neizdevās nosūtīt atskaiti: ",
"Failed to set direct chat tag": "Neizdevās uzstādīt birku tiešajam čatam",
"Continue": "Turpināt",
"Failed to change password. Is your password correct?": "Neizdevās mainīt paroli. Vai tava parole ir pareiza?",
"Favourite": "Favorīts",
"Mute": "Apklusināt",
"Notifications": "Paziņojumi",
"OK": "LABI",
"Operation failed": "Darbība neizdevās",
"Please Register": "Lūdzu reģistrējies",
"Remove": "Dzēst",
"Search": "Meklēt",
"Settings": "Iestatījumi",
"unknown error code": "nezināms kļūdas kods",
"Monday": "Pirmdiena",
"Tuesday": "Otrdiena",
"Wednesday": "Trešdiena",
"Thursday": "Ceturtdiena",
"Friday": "Piektdiena",
"Saturday": "Sestdiena",
"Sunday": "Svētdiena",
"Welcome page": "\"Laipni lūdzam\" lapa",
"Room directory": "Istabu katalogs",
"Start chat": "Uzsākt čatu",
"powered by Matrix": "spēcināts ar Matrix",
"Failed to set Direct Message status of room": "Neizdevās iestatīt istabas tiešo ziņu statusu",
"Fetching third party location failed": "Neizdevās iegūt trešās puses atrašanās vietu",
"Files": "Faili",
"Filter room names": "Filtrēt pēc istabu nosaukuma",
"Forget": "\"Aizmirst\"",
"Forward Message": "Pārsūtīt ziņu",
" from room": " no istabas",
"Guests can join": "Viesi var pievienoties",
"Guest users can't invite users. Please register to invite.": "Viesi nevar uzaicināt lietotājus. Lūdzu reģistrējies, lai uzaicinātu.",
"Hide panel": "Slēpt apgabalu",
"(HTTP status %(httpStatus)s)": "(HTTP statuss %(httpStatus)s)",
"I understand the risks and wish to continue": "Es saprotu riskus un vēlos turpināt",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Problēmu diagnosticēšanas ietvaros, šī klienta logfaili tiks nosūtīti kopā ar šo kļūdas paziņojumu. Ja vēlies nosūtīt vienīgi zemākesošo tekstu, lūdzu atķeksē:",
"Invite to this room": "Uzaicināt uz šo istabu",
"Keywords": "Atslēgvārdi",
"Leave": "Atstāt",
"Login": "Pierakstīties",
"Loading bug report module": "Ielādējas kļūdas ziņojumu modulis",
"Low Priority": "Zema prioritāte",
"Members": "Biedri",
"Mentions only": "Vienīgi atsauces",
"Messages containing my display name": "Ziņas, kuras satur manu redzamo vārdu",
"Messages containing <span>keywords</span>": "Ziņas,kuras satur <span>atslēgvārdus</span>",
"Messages containing my user name": "Ziņas, kuras satur manu lietotājvārdu",
"Messages in group chats": "Ziņas grupas čatos",
"Messages in one-to-one chats": "Ziņas viens-pret-vienu čatos",
"Messages sent by bot": "Botu nosūtītās ziņas",
"more": "vairāk",
"No rooms to show": "Nav istabu, ko parādīt",
"Noisy": "Trokšņains",
"Notification targets": "Notifikācijas paziņojuma mērķi",
"Notifications on the following keywords follow rules which cant be displayed here:": "Paziņojumi par šādiem atslēgvārdiem atbilst noteikumiem, kurus šeit nevar parādīt:",
"Notify for all other messages/rooms": "Paziņot par visām citām ziņām/istabām",
"Notify me for anything else": "Paziņot man par jebko citu",
"Off": "Izslēgts",
"On": "Ieslēgts",
"Permalink": "Pastāvīgā saite",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Lūdzu, apraksti kļūdu. Ko Tu darīji? Kas tika gaidīts, lai notiktu? Kas rezultātā notika?",
"Please describe the bug and/or send logs.": "Lūdzu apraksti kļūdu un/vai nosūti logfailus.",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Lūdzu instalē <a href=\"https://www.google.com/chrome\">Chrome</a> vai <a href=\"https://getfirefox.com\">Firefox</a> pārlūku labākai pārlūkošanas pieredzei.",
"Quote": "Citāts",
"Reject": "Noraidīt",
"Remove %(name)s from the directory?": "Dzēst %(name)s no kataloga?",
"remove %(name)s from the directory.": "dzēst %(name)s no kataloga.",
"Remove from Directory": "Dzēst no kataloga",
"Report a bug": "Paziņot par kļūdu",
"Resend": "Nosūtīt atkārtoti",
"Riot Desktop on %(platformName)s": "Riot darbvirsma %(platformName)s",
"Riot does not know how to join a room on this network": "Riot neatpazina iespēju pievienoties istabai šajā tīklā",
"Riot is not supported on mobile web. Install the app?": "Riot netiek atbalstīts mobilajā versijā. Instalēt aplikāciju?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot izmanto daudzas īpašās pārlūka iespējas, no kurām dažas var nebūt pieejamas vai ir eksperimentālas tavā pašreizējā pārlūkā.",
"Room not found": "Istaba nav atrasta",
"Search…": "Meklēt…",
"Search for a room": "Meklēt istabu",
"Send": "Nosūtīt",
"Send logs": "Nosūtīt logfailus",
"Source URL": "Avota URL adrese",
"Sorry, your browser is <b>not</b> able to run Riot.": "Atvaino, diemžēl tavs pārlūks <b>nespēj</b> darboties ar Riot.",
"The Home Server may be too old to support third party networks": "Mājas serveris var būt pārāk novecojis, lai atbalstītu trešo pušu tīmekļa resurursus",
"There are advanced notifications which are not shown here": "Ir īpašie notifikāciju paziņojumi, kuri šeit nav redzami",
"The server may be unavailable or overloaded": "Serveris var nebūt pieejams vai ir pārslogots",
"This Room": "Šī istaba",
"This room is inaccessible to guests. You may be able to join if you register.": "Šī istaba viesiem nav pieejama. Tu varētu tai pievienoties, ja reģistrēsies.",
" to room": " uz istabu",
"Unable to fetch notification target list": "Nav iespējams iegūt notifikāciju paziņojumu mērķu sarakstu",
"Unable to join network": "Nav iespējams pievienoties tīmeklim",
"Unable to look up room ID from server": "Nav iespējams iegūt istabas ID no servera",
"Unavailable": "Nav pieejams",
"Unhide Preview": "Nerādīt priekšskatījumu",
"Unknown device": "Nezināma ierīce",
"Unnamed room": "Nezināma istaba",
"Update": "Atjaunot",
"Uploaded on %(date)s by %(user)s": "Augšuplādēts %(date)s no %(user)s",
"Uploading report": "Augšuplādē atskaiti",
"View Decrypted Source": "Skatīt atšifrētu avotu",
"View Source": "Skatīt avotu",
"What's New": "Kas jauns",
"What's new?": "Kas jauns?",
"Waiting for response from server": "Gaida atbildi no servera",
"When I'm invited to a room": "Kad esmu uzaicināts/a istabā",
"World readable": "Lasāms pasaulei",
"You cannot delete this image. (%(code)s)": "Tu nevari dzēst šo attēlu. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Tu nevari dzēst šo ziņu. (%(code)s)",
"You are not receiving desktop notifications": "Tu nesaņem darbvirsmas notifikāciju paziņojumus",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Tu šeit atrodies kā viesis. <a>Reģistrējies</a> vai <a>pieraksties</a>, lai piekļūtu visām istabām un iespējām!",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Tu, iespējams, konfigurēji tās kādā citā klientā, nevis Riot. Tu nevari pielāgot tos Riot, bet tie joprojām ir spēkā",
"Today": "Šodien",
"Yesterday": "Vakar",
"Warning": "Brīdinājums",
"Checking for an update...": "Lūkojamies pēc atjauninājuma...",
"Error encountered (%(errorDetail)s).": "Notika kļūda (%(errorDetail)s).",
"No update available.": "Atjauninājumi nav pieejami.",
"Downloading update...": "Lejupielādējam atjauninājumus...",
"You need to be using HTTPS to place a screen-sharing call.": "Tev ir nepieciešams izmantot HTTPS savienojumu, lai izmantotu ekrāna kopīgošanas zvanu.",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Tavā pašreizējā pārlūkā aplikācijas izskats un uzvedība var būt pilnīgi neatbilstoša, kā arī dažas no visām funkcijām var nedarboties. Ja vēlies turpināt izmantot šo pārlūku, Tu vari arī turpināt, apzinoties, ka šajā gadījumā esi viens/a ar iespējamo problēmu!",
"Welcome to Riot.im": "Laipni lūdzam Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizēta, šifrēta čata &amp; sistēma, spēcināta ar [matrix]",
"Search the room directory": "Meklēt istabu katalogu",
"Chat with Riot Bot": "Pačatot ar Riot botu",
"Get started with some tips from Riot Bot!": "Iepazīsties ar dažiem knifiem no Riot bota!",
"General discussion about Matrix and Riot": "Galvenā diskusija par Matrix un Riot",
"Discussion of all things Matrix!": "Diskusija par visām ar Matrix saistītajām lietām!",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; darbvirsmas čats",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk čats",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android &amp; matrix-android-sdk čats",
"Matrix technical discussions": "Matrix tehniskās diskusijas",
"Running Matrix services": "Izmantot Matrix pakalpojumus",
"Community-run support for Synapse": "Komūnas atbalsts Synapse",
"Admin support for Dendrite": "Administrācijas atbalsts Dendrite",
"Announcements about Synapse releases": "Paziņojumi par Synapse izlaidumiem",
"Support for those using and running matrix-appservice-irc": "Atbalsts tiem, kuri izmanto matrix-appservice-irc",
"Building services on Matrix": "Pakalpojumu būvēšana uz Matrix",
"Support for those using the Matrix spec": "Atbalsts tiem, kuri izmanto Matrix specifikācijas",
"Design and implementation of E2E in Matrix": "Dizains un E2E implementācija Matrix",
"Implementing VR services with Matrix": "VR servisu implementācija Matrix",
"Implementing VoIP services with Matrix": "VoIP pakalpojumu implementācija Matrix",
"Support for those using, running and writing other bridges": "Atbalsts tiem, kuri izmanto un raksta citus \"tilta\" risinājumus",
"Contributing code to Matrix and Riot": "Dot ieguldījumu Matrix and Riot kodā",
"Dev chat for the Riot/Web dev team": "Riot/Web izstrādātāju komandas čats",
"Dev chat for the Dendrite dev team": "Dendrite izstrādatāju komandas čats",
"Co-ordination for Riot/Web translators": "Riot/Web tulkotāju koordinācija",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix sistēmā pastāv neskaitāmas neatkarīgas vai eksistējošiem tīmekļa resursiem (Slack, IRC, Gitter utml.) piesaistītas istabas. Ar tām vari iepazīties katalogā!",
"You have successfully set a password!": "Tu veiksmīgi nomainīji paroli!",
"You can now return to your account after signing out, and sign in on other devices.": "Tu vari tagad atgriezties savā kontā pēc izrakstīšanās, un pierakstīties no citām ierīcēm.",
"Please set a password!": "Lūdzu iestati paroli!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Tas atļaus Tev atgriezties savā kontā pēc izrakstīšanās, un pierakstīties no citām ierīcēm.",
"You have successfully set a password and an email address!": "Tu veiksmīgi iestatīji paroli un epasta adresi!",
"Remember, you can always set an email address in user settings if you change your mind.": "Atceries, ka Tu vienmēr vari iestatīt epasta adresi lietotāja uzstādījumos, ja mainīsi domas.",
"To return to your account in future you need to <u>set a password</u>": "Lai nākotnē atgrieztos savā kontā, tev būs nepieciešams <u>iestatīt paroli</u>",
"Set Password": "Iestatīt paroli",
"Couldn't load home page": "Neizdevās ielādēt sākumlapu"
}

View File

@@ -2,5 +2,207 @@
"Add an email address above to configure email notifications": "ഇ മെയില്‍ അറിയിപ്പുകൾ ലഭിക്കാന്‍ മുകളില്‍ ഇ-മെയില്‍ വിലാസം നല്‍കൂ",
"All messages": "എല്ലാ സന്ദേശങ്ങളും",
"All messages (loud)": "എല്ലാ സന്ദേശങ്ങളും (ഉച്ചത്തിൽ)",
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)sല് %(browserName)s വഴി %(appName)s"
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)sല് %(browserName)s വഴി %(appName)s",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">സഫാരിയിലും</a>പിന്നെ <a href=\"http://opera.com\">ഓപ്പേറയിലും</a>പ്രവര്‍ത്തിക്കുന്നു.",
"A new version of Riot is available.": "റയട്ടിന്റെ ഒരു പുതിയ പതിപ്പ് ലഭ്യമാണ്.",
"Advanced notification settings": "അറിയപ്പുകളുടെ സങ്കീര്‍ണമായ സജ്ജീകരണങ്ങള്‍",
"All Rooms": "എല്ലാ മുറികളും കാണുക",
"All notifications are currently disabled for all targets.": "അറിയിപ്പുകളെല്ലാം നിര്‍ത്തിയിരിയ്ക്കുന്നു.",
"An error occurred whilst saving your email notification preferences.": "ഇ-മെയില്‍ വഴി അറിയിയ്ക്കാനുള്ള നിങ്ങളുടെ സജ്ജീകരണങ്ങള്‍ സൂക്ഷിക്കുന്നതില്‍ ഒരു പ്രശ്നമുണ്ടായി.",
"Call invitation": "വിളിയ്ക്കുന്നു",
"Cancel": "റദ്ദാക്കുക",
"Cancel Sending": "അയയ്ക്കുന്നത് റദ്ദാക്കുക",
"Can't update user notification settings": "ഉപയോക്താവിനെ അറിയിയ്ക്കാനുള്ള സജ്ജീകരണം പുതുക്കാനായില്ല",
"Changelog": "മാറ്റങ്ങളുടെ നാള്‍വഴി",
"Close": "അടയ്ക്കുക",
"Collapse panel": "പാനല്‍ കൊളാപ്സ് ചെയ്യുക",
"Collecting app version information": "ആപ്പ് പതിപ്പു വിവരങ്ങള്‍ ശേഖരിക്കുന്നു",
"Collecting logs": "നാള്‍വഴി ശേഖരിക്കുന്നു",
"Create new room": "പുതിയ റൂം സൃഷ്ടിക്കുക",
"Couldn't find a matching Matrix room": "ആവശ്യപ്പെട്ട മാട്രിക്സ് റൂം കണ്ടെത്താനായില്ല",
"Custom Server Options": "കസ്റ്റം സെര്‍വര്‍ ഓപ്ഷനുകള്‍",
"delete the alias.": "ഏലിയാസ് നീക്കം ചെയ്യുക.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "റൂം ഏലിയാസ് %(alias)s നീക്കം ചെയ്യുകയും %(name)s കള്‍ ഡയറക്ടറിയില്‍ നിന്നും നീക്കം ചെയ്യുകയും ചെയ്യുക ?",
"Describe your problem here.": "നിങ്ങള്‍ നേരിട്ട പ്രശ്നം ഇവിടെ വിവരിക്കാം.",
"Direct Chat": "നേരിട്ടുള്ള ചാറ്റ്",
"Directory": "ഡയറക്ടറി",
"Dismiss": "ഒഴിവാക്കുക",
"Download this file": "ഈ ഫയല്‍ ഡൌണ്‍ലോഡ് ചെയ്യുക",
"Drop here %(toAction)s": "ഇവിടെ നിക്ഷേപിക്കുക %(toAction)s",
"Enable audible notifications in web client": "വെബ് പതിപ്പിലെ അറിയിപ്പുകള്‍ കേള്‍ക്കാവുന്നതാക്കുക",
"Enable desktop notifications": "ഡെസ്ക്ടോപ്പ് നോട്ടിഫിക്കേഷനുകള്‍ ഇനേബിള്‍ ചെയ്യുക",
"Enable email notifications": "ഇമെയില്‍ നോട്ടിഫിക്കേഷനുകള്‍ ഇനേബിള്‍ ചെയ്യുക",
"Enable notifications for this account": "ഈ അക്കൌണ്ടില്‍ നോട്ടിഫിക്കേഷനുകള്‍ ഇനേബിള്‍ ചെയ്യുക",
"Enable them now": "ഇപ്പോള്‍ ഇനേബിള്‍ ചെയ്യുക",
"Enter keywords separated by a comma:": "കീവേഡുകളെ കോമ കൊണ്ട് വേര്‍ത്തിരിച്ച് ടൈപ്പ് ചെയ്യുക :",
"Error": "എറര്‍",
"Error saving email notification preferences": "ഇമെയില്‍ നോട്ടിഫിക്കേഷന്‍ സജ്ജീകരണങ്ങള്‍ സൂക്ഷിക്കവേ എറര്‍ നേരിട്ടു",
"#example": "#ഉദാഹരണം",
"Expand panel": "പാനല്‍ വലുതാക്കുക",
"Failed to": "സാധിച്ചില്ല",
"Failed to add tag %(tagName)s to room": "റൂമിന് %(tagName)s എന്ന ടാഗ് ആഡ് ചെയ്യുവാന്‍ സാധിച്ചില്ല",
"Failed to change settings": "സജ്ജീകരണങ്ങള്‍ മാറ്റുന്നവാന്‍ സാധിച്ചില്ല",
"Failed to forget room %(errCode)s": "%(errCode)s റൂം ഫോര്‍ഗെറ്റ് ചെയ്യുവാന്‍ സാധിച്ചില്ല",
"Failed to update keywords": "കീവേഡുകള്‍ പുതുക്കുവാന്‍ സാധിച്ചില്ല",
"Failed to get protocol list from Home Server": "ഹോം സെര്‍വറില്‍ നിന്ന് പ്രോട്ടോക്കോള്‍ ലിസ്റ്റ് നേടാന്‍ സാധിച്ചില്ല",
"Failed to get public room list": "പബ്ലിക്ക് റൂം ലിസ്റ്റ് നേടാന്‍ സാധിച്ചില്ല",
"Failed to join the room": "റൂമില്‍ അംഗമാകുവാന്‍ സാധിച്ചില്ല",
"Failed to remove tag %(tagName)s from room": "റൂമില്‍ നിന്നും %(tagName)s ടാഗ് നീക്കം ചെയ്യുവാന്‍ സാധിച്ചില്ല",
"Failed to send report: ": "റിപ്പോര്‍ട്ട് അയക്കുവാന്‍ സാധിച്ചില്ല : ",
"Failed to set direct chat tag": "ഡയറക്റ്റ് ചാറ്റ് ടാഗ് സെറ്റ് ചെയ്യാനായില്ല",
"Failed to set Direct Message status of room": "റൂമില്‍ നിന്നും ഡയറക്റ്റ് മെസേജ് സ്റ്റാറ്റസ് സജ്ജീകരിക്കാന്‍ കഴിഞ്ഞില്ല",
"Favourite": "പ്രിയപ്പെട്ടവ",
"Fetching third party location failed": "തേഡ് പാര്‍ട്ടി ലൊക്കേഷന്‍ ഫെച്ച് ചെയ്യാന്‍ കഴിഞ്ഞില്ല",
"Files": "ഫയലുകള്‍",
"Filter room names": "റൂം പേരുകള്‍ ഫില്‍ട്ടര്‍ ചെയ്യുക",
"Forget": "മറക്കുക",
"Forward Message": "സന്ദേശം ഫോര്‍വേഡ് ചെയ്യുക",
" from room": " റൂമില്‍ നിന്നും",
"Guests can join": "അതിഥികള്‍ക്കും പ്രവേശിക്കാം",
"Guest users can't invite users. Please register to invite.": "അതിഥികളായ അംഗങ്ങള്‍ക്ക് പുതിയ അംഗങ്ങളെ ക്ഷണിക്കാനാകില്ല. അതിന് ദയവായി രെജിസ്റ്റര്‍ ചെയ്യുക.",
"Hide panel": "പാനല്‍ ഒളിപ്പിക്കുക",
"(HTTP status %(httpStatus)s)": "(HTTP സ്റ്റാറ്റസ് %(httpStatus)s)",
"I understand the risks and wish to continue": "കുഴപ്പമാകാന്‍ സാധ്യതയുണ്ടെന്നെനിയ്ക്കു് മനസ്സിലായി, എന്നാലും മുന്നോട്ട് പോകുക",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "നേരിട്ട പ്രശ്നം മനസ്സിലാക്കാന്‍, ഈ ക്ലയന്റില്‍ നിന്നുള്ള നാള്‍വഴികള്‍ ബഗ് റിപ്പോര്‍ട്ടിനൊപ്പം അയയ്ക്കും. അതിനു പകരം ഈ എഴുത്ത് മാത്രം അയച്ചാല്‍ മതിയെങ്കില്‍ ദയവായി ശരിച്ഛിഹ്നം ഒഴിവാക്കുക:",
"Invite to this room": "ഈ റൂമിലേക്ക് ക്ഷണിക്കുക",
"Keywords": "കീവേഡുകള്‍",
"Leave": "വിടവാങ്ങുക",
"Login": "ലോഗിന്‍",
"Loading bug report module": "പിഴവുകള്‍ അറിയിയ്ക്കാനുള്ള ഘടകം ചേര്‍ക്കുന്നു",
"Low Priority": "താഴ്ന്ന പരിഗണന",
"Members": "അംഗങ്ങള്‍",
"Mentions only": "മെന്‍ഷനുകള്‍ മാത്രം",
"Messages containing my display name": "എന്റെ പേര് അടങ്ങിയിരിക്കുന്ന സന്ദേശങ്ങള്‍ക്ക്",
"Messages containing <span>keywords</span>": "<span>കീവേഡുകള്‍</span>അടങ്ങിയ സന്ദേശങ്ങള്‍ക്ക്",
"Messages containing my user name": "എന്റെ യൂസര്‍ നെയിം അടങ്ങിയിരിക്കുന്ന സന്ദേശങ്ങള്‍ക്ക്",
"Messages in group chats": "ഗ്രൂപ്പ് ചാറ്റുകളിലെ സന്ദേശങ്ങള്‍ക്ക്",
"Messages in one-to-one chats": "നേര്‍ക്കുനേര്‍ ചാറ്റിലെ സന്ദേശങ്ങള്‍ക്ക്",
"Messages sent by bot": "ബോട്ട് അയയ്ക്കുന്ന സന്ദേശങ്ങള്‍ക്ക്",
"more": "കൂടുതല്‍",
"Mute": "നിശ്ശബ്ദം",
"No rooms to show": "കാണിക്കാന്‍ റൂമുകളില്ല",
"Noisy": "ഉച്ചത്തില്‍",
"Notification targets": "നോട്ടിഫിക്കേഷന്‍ ടാര്‍ഗെറ്റുകള്‍",
"Notifications": "നോട്ടിഫിക്കേഷനുകള്‍",
"Operation failed": "ശ്രമം പരാജയപ്പെട്ടു",
"Permalink": "പെര്‍മാലിങ്ക്",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "ബഗ് വിശദീകരിക്കുക. എന്ത് ചെയ്തപ്പോഴാണ് വന്നത് ? എന്തായിരുന്നു പ്രതീക്ഷിച്ചിരുന്നത് ? ശരിക്കും എന്താണ് സംഭവിച്ചത് ?",
"Please describe the bug and/or send logs.": "ബഗ് വിശദീകരിക്കുക , കൂടെ / അല്ലെങ്കില്‍ നാള്‍വഴികളും അയക്കുക.",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "ഏറ്റവും മികച്ച ഉപയോഗത്തിനായി <a href=\"https://www.google.com/chrome\">ഗൂഗിള്‍ ക്രോം</a>ബ്രൌസറോ അല്ലെങ്കില്‍ <a href=\"https://getfirefox.com\">ഫയര്‍ഫോക്സ്</a> ബ്രൌസറോ ഇന്‍സ്റ്റാള്‍ ചെയ്യൂ.",
"Please Register": "ദയവായി റെജിസ്റ്റർ ചെയ്യുക",
"powered by Matrix": "മാട്രിക്സില്‍ പ്രവര്‍ത്തിക്കുന്നു",
"Quote": "ഉദ്ധരിക്കുക",
"Reject": "നിരസിക്കുക",
"Remove %(name)s from the directory?": "%(name)s കള്‍ ഡയറക്റ്ററിയില്‍ നിന്നും മാറ്റണോ ?",
"Remove": "നീക്കം ചെയ്യുക",
"Remove from Directory": "ഡയറക്റ്ററിയില്‍ നിന്നും നീക്കം ചെയ്യുക",
"Report a bug": "ബഗ് റിപ്പോര്‍ട്ട് ചെയ്യുക",
"Resend": "വീണ്ടും അയയ്ക്കുക",
"Riot Desktop on %(platformName)s": "%(platformName)s ലെ റയട്ട് ഡെസ്ക്ടോപ്പ്",
"Riot does not know how to join a room on this network": "ഈ നെറ്റ്‍വര്‍ക്കിലെ ഒരു റൂമില്‍ എങ്ങനെ അംഗമാകാമെന്ന് റയട്ടിന് അറിയില്ല",
"Riot is not supported on mobile web. Install the app?": "മൊബൈലില്‍ റയട്ട് വെബ് പിന്തുണ ഇല്ല. ആപ്പ് ഇന്‍സ്റ്റാള്‍ ചെയ്യാം ?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "റയട്ട് നൂതന ബ്രൌസര്‍ ഫീച്ചറുകള്‍ ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ബ്രൌസറില്‍ അവയില്‍ പലതും ഇല്ല / പൂര്‍ണ്ണമല്ല .",
"Room directory": "റൂം ഡയറക്ടറി",
"Room not found": "റൂം കണ്ടെത്താനായില്ല",
"Search": "തിരയുക",
"Search…": "തിരയുക…",
"Search for a room": "ഒരു റൂം തിരയുക",
"Send": "അയയ്ക്കുക",
"Send logs": "നാള്‍വഴി അയയ്ക്കുക",
"Settings": "സജ്ജീകരണങ്ങള്‍",
"Source URL": "സോഴ്സ് യു ആര്‍ എല്‍",
"Sorry, your browser is <b>not</b> able to run Riot.": "ക്ഷമിക്കണം, നിങ്ങളുടെ ബ്രൌസര്‍ റയട്ട് പ്രവര്‍ത്തിപ്പിക്കാന്‍ <b>പര്യാപ്തമല്ല</b>.",
"Start chat": "ചാറ്റ് തുടങ്ങുക",
"The Home Server may be too old to support third party networks": "തേഡ് പാര്‍ട്ടി നെറ്റ്‍വര്‍ക്കുകളെ പിന്തുണക്കാത്ത വളരെ പഴയ ഹോം സെര്‍വര്‍ ആയേക്കാം",
"There are advanced notifications which are not shown here": "ഇവിടെ കാണിക്കാത്ത നൂതന നോട്ടിഫിക്കേഷനുകള്‍ ഉണ്ട്",
"The server may be unavailable or overloaded": "സെര്‍വര്‍ ലഭ്യമല്ല അല്ലെങ്കില്‍ ഓവര്‍ലോഡഡ് ആണ്",
"This Room": "ഈ മുറി",
"This room is inaccessible to guests. You may be able to join if you register.": "ഈ റൂം അതിഥികള്‍ക്ക് അപ്രാപ്യമാണ്. അംഗമാകാന്‍ റെജിസ്റ്റര്‍ ചെയ്യൂ.",
" to room": " റൂമിലേക്ക്",
"Unable to fetch notification target list": "നോട്ടിഫിക്കേഷന്‍ ടാര്‍ഗെറ്റ് ലിസ്റ്റ് നേടാനായില്ല",
"Unable to join network": "നെറ്റ്‍വര്‍ക്കില്‍ ജോയിന്‍ ചെയ്യാന്‍ കഴിയില്ല",
"Unable to look up room ID from server": "സെര്‍വറില്‍ നിന്നും റൂം ഐഡി കണ്ടെത്താനായില്ല",
"Unavailable": "ലഭ്യമല്ല",
"Unhide Preview": "പ്രിവ്യു കാണിക്കുക",
"Unknown device": "അപരിചിത ഡിവൈസ്",
"unknown error code": "അപരിചിത എറര്‍ കോഡ്",
"Unnamed room": "പേരില്ലാത്ത റൂം",
"Update": "പുതുക്കുക",
"Uploaded on %(date)s by %(user)s": "%(date)s ല്‍ %(user)s അപ്ലോഡ് ചെയ്തത്",
"Uploading report": "റിപ്പോര്‍ട്ട് അപ്ലോഡ് ചെയ്യുന്നു",
"View Decrypted Source": "ഡീക്രിപ്റ്റ് ചെയ്ത സോഴ്സ് കാണുക",
"View Source": "സോഴ്സ് കാണുക",
"What's New": "പുതിയ വിശേഷങ്ങള്‍",
"What's new?": "എന്തൊക്കെ പുതിയ വിശേഷങ്ങള്‍ ?",
"Waiting for response from server": "സെര്‍വറില്‍ നിന്നുള്ള പ്രതികരണത്തിന് കാക്കുന്നു",
"When I'm invited to a room": "ഞാന്‍ ഒരു റൂമിലേക്ക് ക്ഷണിക്കപ്പെടുമ്പോള്‍",
"You cannot delete this image. (%(code)s)": "നിങ്ങള്‍ക്ക് ഈ ചിത്രം നീക്കം ചെയ്യാനാകില്ല. (%(code)s)",
"You cannot delete this message. (%(code)s)": "നിങ്ങള്‍ക്ക് ഈ സന്ദേശം നീക്കം ചെയ്യാനാകില്ല. (%(code)s)",
"You are not receiving desktop notifications": "നിങ്ങള്‍ക്ക് ഇപ്പോള്‍ ഡെസ്ക്ടോപ്പ് നോട്ടിഫിക്കേഷനുകള്‍ ലഭിക്കുന്നില്ല",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "നിങ്ങള്‍ റയട്ട് ചെയ്യുന്നത് അതിഥി ആയാണ്. കൂടുതല്‍ റൂമുകള്‍ക്കും ഫീച്ചറുകള്‍ക്കും <a>റെജിസ്റ്റര്‍</a> ചെയ്യുകയോ <a>സൈന്‍ ഇന്‍</a> ചെയ്യുകയോ ചെയ്യുക !",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "ഇവ റയട്ടല്ലാതെ മറ്റൊരു ക്ലയന്റില്‍ വച്ച് കോണ്‍ഫിഗര്‍ ചെയ്തതാകാം. റയട്ടില്‍ അവ ലഭിക്കില്ല, എങ്കിലും അവ നിലവിലുണ്ട്",
"Sunday": "ഞായര്‍",
"Monday": "തിങ്കള്‍",
"Tuesday": "ചൊവ്വ",
"Wednesday": "ബുധന്‍",
"Thursday": "വ്യാഴം",
"Friday": "വെള്ളി",
"Saturday": "ശനി",
"Today": "ഇന്ന്",
"Yesterday": "ഇന്നലെ",
"OK": "ശരി",
"Warning": "മുന്നറിയിപ്പ്",
"Checking for an update...": "അപ്ഡേറ്റ് ഉണ്ടോ എന്ന് തിരയുന്നു...",
"Error encountered (%(errorDetail)s).": "എറര്‍ നേരിട്ടു (%errorDetail)s).",
"No update available.": "അപ്ഡേറ്റുകള്‍ ലഭ്യമല്ല.",
"Downloading update...": "അപ്ഡേറ്റ് ഡൌണ്‍ലോഡ് ചെയ്യുന്നു...",
"You need to be using HTTPS to place a screen-sharing call.": "സ്ക്രീന്‍ ഷെയറിങ്ങ് കോള്‍ നടത്തണമെങ്കില്‍ https ഉപയോഗിക്കണം.",
"Welcome page": "സ്വാഗതം",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "നിങ്ങളുടെ ഇപ്പോളത്തെ ബ്രൌസര്‍ റയട്ട് പ്രവര്‍ത്തിപ്പിക്കാന്‍ പൂര്‍ണമായും പര്യാപത്മല്ല. പല ഫീച്ചറുകളും പ്രവര്‍ത്തിക്കാതെയിരിക്കാം. ഈ ബ്രൌസര്‍ തന്നെ ഉപയോഗിക്കണമെങ്കില്‍ മുന്നോട്ട് പോകാം. പക്ഷേ നിങ്ങള്‍ നേരിടുന്ന പ്രശ്നങ്ങള്‍ നിങ്ങളുടെ ഉത്തരവാദിത്തത്തില്‍ ആയിരിക്കും!",
"Welcome to Riot.im": "റയട്ടിലേക്ക് സ്വാഗതം",
"Search the room directory": "റൂം ഡയറക്റ്ററിയില്‍ പരതുക",
"Chat with Riot Bot": "റയട്ട് ബോട്ടുമായി ചാറ്റ് ചെയ്യുക",
"Get started with some tips from Riot Bot!": "റയട്ട് ബോട്ടില്‍ നിന്നുള്ള നിര്‍ദേശങ്ങള്‍ സ്വീകരിച്ച് കൊണ്ട് തുടങ്ങൂ!",
"General discussion about Matrix and Riot": "മാട്രിക്സിനേയും റയട്ടിനേയും കുറിച്ചുള്ള പൊതു ചര്‍ച്ച",
"Discussion of all things Matrix!": "മാട്രിക്സിനെ കുറിച്ചുള്ള ചര്‍ച്ച!",
"Riot/Web &amp; Desktop chat": "റയട്ട്/വെബ് &amp; ഡെസ്ക്ടോപ്പ് ചാറ്റ്",
"Riot/iOS &amp; matrix-ios-sdk chat": "റയട്ട്/iOS&amp; matrix-ios-sdk ചാറ്റ്",
"Riot/Android &amp; matrix-android-sdk chat": "റയട്ട്/ആന്‍ഡ്രോയ്ഡ്&amp; matrix-android-sdk ചാറ്റ്",
"Matrix technical discussions": "മാട്രിക്സ് സാങ്കേതിക ചര്‍ച്ച",
"Running Matrix services": "മാട്രിക്സ് സര്‍വീസുകള്‍ റണ്‍ ചെയ്യുന്നു",
"Community-run support for Synapse": "സിനാപ്സിനുള്ള കമ്യൂണിറ്റി-നേതൃത്വത്തലുള്ള പിന്തുണ",
"Admin support for Dendrite": "ഡെന്‍ഡ്രൈറ്റിനുള്ള അഡ്മിന്‍ പിന്തുണ",
"Announcements about Synapse releases": "സിനാപ്സ് റിലീസുകളെ കുറിച്ചുള്ള അറിയിപ്പുകള്‍",
"Support for those using and running matrix-appservice-irc": "matrix-appservice-irc ഉപയോഗിക്കുന്നവര്‍ക്കും റണ്‍ ചെയ്യുന്നവര്‍ക്കുമുള്ള സപ്പോര്‍ട്ട്",
"Support for those using the Matrix spec": "Matrix spec ഉപയോഗിക്കുന്നവര്‍ക്കുള്ള പിന്തുണ",
"Design and implementation of E2E in Matrix": "മാട്രിക്സിലെ e2eയുടെ ഡിസൈനും ഇമ്പ്ലിമെന്റേഷനും",
"remove %(name)s from the directory.": "%(name)s ഡയറക്റ്ററിയില്‍ നിന്ന് നീക്കം ചെയ്യുക.",
"World readable": "ആർക്കും വായിക്കാവുന്നത്",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "വികേന്ദ്രീകൃത , എന്‍ക്രിപ്റ്റഡ് ചാറ്റ് &amp; മാട്രിക്സ് നല്‍കുന്ന കൊളാബൊറേഷന്‍",
"Support for those using, running and writing other bridges": "മറ്റ് ബ്രിഡ്ജുകള്‍ ഉപയോഗിക്കുന്ന, റണ്‍ ചെയ്യുന്ന, എഴുതുന്നവര്‍ക്കുള്ള പിന്തുണ",
"Contributing code to Matrix and Riot": "മാട്രിക്സിലേക്കും റയട്ടിലേക്കും കോഡ് സംഭാവന ചെയ്യാം",
"Dev chat for the Riot/Web dev team": "റയട്ട്/വെബ് ഡെവലപ്പര്‍ ടീമിനുള്ള dev chat",
"Dev chat for the Dendrite dev team": "ഡെന്‍ഡ്രൈറ്റ് ഡെവലപ്പര്‍ ടീമിനുള്ള dev chat",
"Co-ordination for Riot/Web translators": "റയട്ട്/വെബ് പരിഭാഷകരുടെ കൂട്ടായ്മ",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "മാട്രിക്സിലുള്ളതും പഴയ നെറ്റ്‍വര്‍ക്കുകളിലേക്ക് ( സ്ലാക്ക്, IRC, ഗിറ്റര്‍ മുതലായവ ) ലിങ്ക് ചെയ്തതുമൊക്കെയായ ധാരാളം റൂമുകളുണ്ട്. ഡയറക്റ്ററി പരിശാധിക്കൂ!",
"Failed to change password. Is your password correct?": "രഹസ്യവാക്ക് മാറ്റാന്‍ സാധിച്ചില്ല. രഹസ്യവാക്ക് ശരിയാണോ ?",
"You have successfully set a password!": "രഹസ്യവാക്ക് സജ്ജീകരിച്ചിരിക്കുന്നു!",
"You can now return to your account after signing out, and sign in on other devices.": "നിങ്ങള്‍ക്ക് ഇപ്പോള്‍ സൈന്‍ ഔട്ട് ചെയ്ത ശേഷവും നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് തിരികെ വരാം, അതു പോലെ മറ്റ് ഡിവൈസുകളില്‍ സൈന്‍ ഇന്‍ ചെയ്യുകയുമാവാം.",
"Continue": "മുന്നോട്ട്",
"Please set a password!": "ദയവായി ഒരു രഹസ്യവാക്ക് ക്രമീകരിക്കുക!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "സൈന്‍ ഔട്ട് ചെയ്ത ശേഷം വീണ്ടും നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് മടങ്ങി വരാനും, മറ്റ് ഡിവൈസുകളില്‍ സൈന്‍ ഇന്‍ ചെയ്യാനും ഇത് സഹായിക്കും.",
"You have successfully set a password and an email address!": "ഇമെയില്‍ വിലാസവും രഹസ്യവാക്കും വിജയകരമായി ക്രമീകരിച്ചിരിക്കുന്നു!",
"Remember, you can always set an email address in user settings if you change your mind.": "ഓര്‍ക്കുക, വേണ്ട സമയത്ത് യൂസര്‍ സെറ്റിങ്സില്‍ ഒരു ഇമെയില്‍ വിലാസം നല്‍കാം.",
"To return to your account in future you need to <u>set a password</u>": "വീണ്ടും ഈ അക്കൌണ്ട് ഉപയോഗിക്കണമെങ്കില്‍ <u>ഒരു രഹസ്യവാക്ക് സെറ്റ് ചെയ്യുക</u>",
"Set Password": "രഹസ്യവാക്ക് സജ്ജീകരിക്കുക",
"customServer_text": "മറ്റ് മാട്രിക്സ് സെര്‍വറുകളില്‍ ലോഗിന്‍ ചെയ്യാന്‍ കസ്റ്റം സെര്‍വര്‍ ഓപ്ഷനില്‍ ഹോം സെര്‍വര്‍ യു ആര്‍ എല്‍ വ്യക്തമാക്കുക.<br/>ഇത് വഴി മറ്റൊരു ഹോം സെര്‍വറില്‍ ഉള്ള മാട്രിക്സ് അക്കൌണ്ട് റയട്ടില്‍ ഉപയോഗിക്കാം.<br/><br/>അതു പോലെ, നിങ്ങള്‍ക്ക് കസ്റ്റം ഐഡന്റിറ്റി സെര്‍വറും ക്രമീകരിക്കാം. പക്ഷേ അപ്പോള്‍ നിങ്ങള്‍ക്ക് ആരേയും ഇമെയില്‍ വഴി ക്ഷണിക്കാനോ തിരിച്ചോ സാധിക്കില്ല.",
"Off": "ഓഫ്",
"On": "ഓണ്‍",
"Notify me for anything else": "ബാക്കി ഏതിനും എനിക്ക് അറിയിപ്പു നൽകുക",
"Notify for all other messages/rooms": "ബാക്കി എല്ലാ സന്ദേശങ്ങൾക്കും/റൂമുകൾക്കും അറിയിപ്പു നൽകുക",
"Building services on Matrix": "മട്രിക്സിന്മേൽ സർവീസുകൾ പണിയുന്നു",
"Implementing VR services with Matrix": "മട്രിക്സ് ഉപയോഗിച്ചു വി.അർ. സർവീസുകൾ നടപ്പിലാക്കുന്നു",
"Implementing VoIP services with Matrix": "മേട്രിക്സിന്മേൽ VoIP സർവീസുകൾ നടപ്പിലാക്കുന്നു",
"Discussion of the Identity Service API": "ഐഡൻടിറ്റി സർവീസ് എപിഐ യെ പറ്റിയുള്ള ചർച്ച",
"Notifications on the following keywords follow rules which cant be displayed here:": "ഈ പറയുന്ന കീവേർഡുകളെ പറ്റിയുള്ള അറിയിപ്പുകൾ പിൻതുടരുന്ന നിയമങ്ങൾ ഇവിടെ കാണിക്കുവാൻ സാധ്യമല്ല:"
}

View File

@@ -198,5 +198,13 @@
"Dev chat for the Riot/Web dev team": "Dev-chat voor het Riot/Web ontwikkelteam",
"Dev chat for the Dendrite dev team": "Dev-chat voor het Dendrite ontwikkelteam",
"You have successfully set a password and an email address!": "Het instellen van een wachtwoord en e-mailadres is geslaagd!",
"Remember, you can always set an email address in user settings if you change your mind.": "Onthoud dat u altijd een e-mailadres in kan stellen in de gebruikersinstellingen als u zich bedenkt."
"Remember, you can always set an email address in user settings if you change your mind.": "Onthoud dat u altijd een e-mailadres in kan stellen in de gebruikersinstellingen als u zich bedenkt.",
"Warning": "Waarschuwing",
"Checking for an update...": "Aan het kijken voor een update...",
"Error encountered (%(errorDetail)s).": "Fout ondervonden (%errorDetail)s).",
"No update available.": "Geen update beschikbaar.",
"Downloading update...": "Update aan het downloaden...",
"To return to your account in future you need to <u>set a password</u>": "Om in de toekomst naar je account terug te gaan moet je <u>een wachtwoord instellen</u>",
"Set Password": "Wachtwoord instellen",
"Couldn't load home page": "Kon de home pagina niet laden"
}

View File

@@ -14,7 +14,7 @@
"Cancel Sending": "Anuluj wysyłanie",
"Can't update user notification settings": "Nie można zaktualizować ustawień powiadomień użytkownika",
"Changelog": "Dziennik zmian",
"Close": "Blisko",
"Close": "Zamknij",
"Collecting app version information": "Zbieranie informacji o wersji aplikacji",
"Collecting logs": "Zbieranie dzienników",
"Create new room": "Utwórz nowy pokój",
@@ -33,7 +33,7 @@
"Send": "Wyślij",
"Settings": "Ustawienia",
"Collapse panel": "Ukryj panel",
"customServer_text": "Możesz używać opcji serwera niestandardowego do logowania się na inne serwery Matrix, określając inny adres URL serwera domowego.<br/>Pozwala to na wykorzystanie Riot z istniejącym kontem Matrix na innym serwerze domowym.<br/><br/>Można również ustawić niestandardowy serwer tożsamości, ale nie będzie można zapraszać użytkowników adresem e-mail, ani być zaproszony przez adres e-mailowy.",
"customServer_text": "Możesz używać opcji serwera niestandardowego do logowania się na inne serwery Matrix, określając inny adres URL serwera domowego.<br/>Pozwala to na wykorzystanie Riot z istniejącym kontem Matrix na innym serwerze domowym.<br/><br/>Można również ustawić niestandardowy serwer tożsamości, ale nie będzie można zapraszać użytkowników adresem e-mail, ani być zaproszonym przez adres e-mailowy.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Usuń alias %(alias)s i usuń %(name)s z katalogu?",
"Dismiss": "Zdymisjonować",
"Drop here %(toAction)s": "Upuść tutaj %(toAction)s",
@@ -107,7 +107,7 @@
"Send logs": "Wyślij logi",
"Sorry, your browser is <b>not</b> able to run Riot.": "Przepraszamy, Twoja przeglądarka <b>nie jest w stanie</b> uruchomić Riot.",
"Start chat": "Rozpocznij rozmowę",
"powered by Matrix": "zbudowane na Matrix",
"powered by Matrix": "napędzany przez Matrix",
"Redact": "Zredaguj",
"Reject": "Odrzuć",
"Remove": "Usuń",
@@ -198,5 +198,12 @@
"Please set a password!": "Proszę, ustaw hasło!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "To pozwoli Ci powrócić do Twojego konta po wylogowaniu i ponownym zalogowaniu się na innych urządzeniach.",
"You have successfully set a password and an email address!": "Z powodzeniem ustawiono hasło i adres e-mail dla Twojego konta!",
"Remember, you can always set an email address in user settings if you change your mind.": "Pamiętaj, że zawsze możesz zmienić swój e-mail lub hasło w panelu ustawień użytkownika."
"Remember, you can always set an email address in user settings if you change your mind.": "Pamiętaj, że zawsze możesz zmienić swój e-mail lub hasło w panelu ustawień użytkownika.",
"To return to your account in future you need to <u>set a password</u>": "Aby wrócić do swojego konta w przyszłości musisz <u> ustawić hasło </u>",
"Set Password": "Ustaw hasło",
"No update available.": "Brak aktualizacji.",
"Warning": "Ostrzeżenie",
"Error encountered (%(errorDetail)s).": "Wystąpił błąd (%(errorDetail)s).",
"Downloading update...": "Pobieranie aktualizacji...",
"Checking for an update...": "Sprawdzanie aktualizacji..."
}

View File

@@ -199,5 +199,15 @@
"Please set a password!": "Por favor, defina uma senha!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Isso permitirá que você possa retornar à sua conta após fazer logout, e também fazer login em outros dispositivos.",
"(HTTP status %(httpStatus)s)": "(Status HTTP %(httpStatus)s)",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo impulsionado por [matrix]"
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo impulsionado por [matrix]",
"You have successfully set a password and an email address!": "Você definiu uma senha e um endereço de e-mail com sucesso!",
"Remember, you can always set an email address in user settings if you change your mind.": "Lembre-se: você pode sempre definir um endereço de e-mail nas configurações de usuário, se mudar de ideia.",
"To return to your account in future you need to <u>set a password</u>": "Para poder, futuramente, retornar à sua conta, você precisa <u>definir uma senha</u>",
"Set Password": "Definir senha",
"Warning": "Atenção",
"Checking for an update...": "Verificando se há atualizações...",
"Error encountered (%(errorDetail)s).": "Erro encontrado (%(errorDetail)s).",
"No update available.": "Não há atualizações disponíveis.",
"Downloading update...": "Baixando atualização...",
"Couldn't load home page": "Não foi possível carregar a página inicial"
}

View File

@@ -1,102 +1,102 @@
{
"Add an email address above to configure email notifications": "Добавьте email адрес для оповещений",
"All notifications are currently disabled for all targets.": "Все оповещения отключены.",
"All notifications are currently disabled for all targets.": "Все оповещения для всех устройств отключены.",
"An error occurred whilst saving your email notification preferences.": "Возникла ошибка при сохранении настроек оповещения по электронной почте.",
"and remove": "и удалить",
"Can't update user notification settings": "Не возможно обновить пользовательские настройки оповещения",
"Can't update user notification settings": "Не удается обновить пользовательские настройки оповещения",
"Create new room": "Создать новую комнату",
"Couldn't find a matching Matrix room": "Не возможно найти подходящую Матриксу комнату",
"Custom Server Options": "Расширенные настройки сервера",
"Couldn't find a matching Matrix room": "Не удалось найти подходящую комнату Matrix",
"Custom Server Options": "Настраиваемые параметры сервера",
"delete the alias.": "удалить псевдоним.",
"Delete the room alias": "Удалить привязку комнаты",
"Direct Chat": "Приватный чат",
"Direct Chat": "Прямой чат",
"Directory": "Каталог",
"Dismiss": "Отказ",
"Drop here to": "Перетащите сюда",
"Enable audible notifications in web client": "Включить звуковые оповещения в веб клиенте",
"Enable audible notifications in web client": "Включить звуковые уведомления в веб клиенте",
"Enable desktop notifications": "Включить оповещения на рабочем столе",
"Enable email notifications": "Включить оповещения по электронной почте",
"Enable notifications for this account": "Включить оповещения для этого аккаунта",
"Enable email notifications": "Включить уведомления по электронной почте",
"Enable notifications for this account": "Включить уведомления для этой учетной записи",
"Enable them now": "Включить сейчас",
"Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:",
"Error": "Ошибка",
"Error saving email notification preferences": "Ошибка сохранения настроек оповещений по электронной почте",
"Error saving email notification preferences": "Ошибка при сохранении настроек уведомлений по электронной почте",
"#example": "#пример",
"Failed to": "Не удалось",
"Failed to add tag ": "Не удалось добавить тег ",
"Failed to change settings": "Не удалось изменить настройки",
"Failed to update keywords": "Не удалось обновить ключевые слова",
"Failed to get protocol list from Home Server": "Не удалось получить список протоколов с Пользовательского Сервера",
"Failed to get public room list": "Не удалось получить список открытых комнат",
"Failed to join the room": "Не удалось войти в комнату",
"Failed to get protocol list from Home Server": "Не удалось получить список протоколов с домашнего сервера",
"Failed to get public room list": "Не удалось получить список общедоступных комнат",
"Failed to join the room": "Не удалось присоединиться к комнате",
"Failed to remove tag ": "Не удалось удалить тег ",
"Failed to set Direct Message status of room": "Не удалось задать статус комнаты Персональное Сообщение",
"Failed to set Direct Message status of room": "Не удалось установить статус прямого сообщения в комнате",
"Favourite": "Избранное",
"Fetching third party location failed": "Не удалось получить местоположение",
"Fetching third party location failed": "Не удалось извлечь местоположение третьей стороны",
"Files": "Файлы",
"Filter room names": "Фильтр по назв. комнаты",
"Forget": "Удалить",
"Filter room names": "Фильтр по названию комнат",
"Forget": "Забыть",
"from the directory": "из каталога",
" from room": " из комнаты",
"Guests can join": "Гость может присоединиться",
"Guest users can't invite users. Please register to invite.": "Гость не может приглашать пользователей. Зарегистрируйтесь для приглашений.",
"Invite to this room": "Пригласить",
"Guests can join": "Гости могут присоединиться",
"Guest users can't invite users. Please register to invite.": "Гости не могут приглашать пользователей. Пожалуйста, зарегистрируйтесь, чтобы отправить приглашение.",
"Invite to this room": "Пригласить в эту комнату",
"Keywords": "Ключевые слова",
"Leave": "Покинуть",
"Low Priority": "Низкий приоритет",
"Members": "Пользователи",
"Members": "Участники",
"No rooms to show": "Нет комнат для отображения",
"Noisy": "Звук",
"Noisy": "Громко",
"Notification targets": "Цели уведомления",
"Notifications": "Уведомления",
"Notifications on the following keywords follow rules which cant be displayed here:": "Уведомления по следующим ключевым словам соответствуют правилам, которые нельзя отобразить здесь:",
"Notify for all other messages/rooms": "Уведомить обо всех других сообщениях/комнатах",
"Notify me for anything else": "Уведомить меня обо всем кроме",
"Notify for all other messages/rooms": "Уведомлять обо всех других сообщениях/комнатах",
"Notify me for anything else": "Уведомлять во всех остальных случаях",
"Off": "Выключить",
"On": "Включить",
"Operation failed": "Действие не удалось",
"Operation failed": "Сбой операции",
"Please Register": "Пожалуйста, зарегистрируйтесь",
"powered by Matrix": "управляемый с Matrix",
"powered by Matrix": "Основано на Matrix",
"Reject": "Отклонить",
"Remove": "Удалить",
"remove": "удалить",
"Remove from Directory": "Удалить из каталога",
"Riot does not know how to join a room on this network": "Riot не знает как войти в комнату в этой сети",
"Riot does not know how to join a room on this network": "Riot не знает, как присоединиться к комнате, принадлежащей к этой сети",
"Room directory": "Каталог комнат",
"Room not found": "Комната не найдена",
"Search for a room": "Искать комнату",
"Search for a room": "Поиск комнаты",
"Settings": "Настройки",
"Start chat": "Начать чат",
"The Home Server may be too old to support third party networks": "Home Server может быть слишком старым для поддержки сторонних сетей",
"There are advanced notifications which are not shown here": "Существуют расширенные уведомления, которые здесь не показаны",
"The server may be unavailable or overloaded": "Возможно сервер недоступен или перегружен",
"This room is inaccessible to guests. You may be able to join if you register.": "Эта комната недоступна для гостей. Вы можете присоединиться, если зарегистрируетесь.",
"The Home Server may be too old to support third party networks": "Домашний сервер может быть слишком старым для поддержки сетей сторонних производителей",
"There are advanced notifications which are not shown here": "Существуют дополнительные уведомления, которые не показаны здесь",
"The server may be unavailable or overloaded": "Сервер, вероятно, недоступен или перегружен",
"This room is inaccessible to guests. You may be able to join if you register.": "Эта комната недоступна для гостей. Возможно, вы сможете присоединиться, если выполните регистрацию.",
" to room": " к комнате",
"Unable to fetch notification target list": "Не удалось получить список целей уведомления",
"Unable to join network": "Не возможно присоединиться к сети",
"Unable to look up room ID from server": "Не возможно найти ID комнаты на сервере",
"unknown error code": "неизвестная ошибка",
"Unable to join network": "Не удается подключиться к сети",
"Unable to look up room ID from server": "Не удалось найти ID комнаты на сервере",
"unknown error code": "неизвестный код ошибки",
"Unnamed room": "Комната без названия",
"World readable": "Доступно всем",
"You are not receiving desktop notifications": "Вы не получаете уведомления на рабочем столе",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Вы могли настроить их в клиенте, отличном от Riot. Вы не можете настроить их в Riot, но они все еще применяются",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Возможно вы настроили их не в Riot, а в другом Matrix-клиенте. Настроить их в Riot не удастся, но они будут в нем применяться",
"All messages": "Все сообщения",
"All messages (loud)": "Все сообщения (громко)",
"Cancel Sending": "Отмена отправки",
"Cancel Sending": "Отменить отправку",
"Close": "Закрыть",
"Download this file": "Скачать этот файл",
"Drop here %(toAction)s": "Вставить сюда: %(toAction)s",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и очистить %(name)s из каталога?",
"Drop here %(toAction)s": "Перетащить сюда: %(toAction)s",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и удалить %(name)s из каталога?",
"Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату",
"Failed to forget room %(errCode)s": "Не удалось удалить комнату %(errCode)s",
"Failed to remove tag %(tagName)s from room": "Не удалось убрать пометку %(tagName)s из комнаты",
"Failed to set direct chat tag": "Не удалось пометить прямую беседу",
"Unhide Preview": "Показать анонс",
"Uploaded on %(date)s by %(user)s": "Загружено %(date)s %(user)s",
"View Decrypted Source": "Просмотр зашифрованного источника",
"Failed to remove tag %(tagName)s from room": "Не удалось удалить тег %(tagName)s из комнаты",
"Failed to set direct chat tag": "Не удалось установить тег прямого чата",
"Unhide Preview": "Показать предварительный просмотр",
"Uploaded on %(date)s by %(user)s": "Отправлено %(date)s для %(user)s",
"View Decrypted Source": "Просмотр расшифрованного источника",
"View Source": "Просмотр источника",
"You cannot delete this image. (%(code)s)": "Вы не можете удалить это изображение. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Вы не можете удалить это сообщение. (%(code)s)",
"You cannot delete this image. (%(code)s)": "Это изображение нельзя удалить. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Это сообщение нельзя удалить. (%(code)s)",
"Sunday": "Воскресенье",
"Monday": "Понедельник",
"Tuesday": "Вторник",
@@ -106,104 +106,112 @@
"Saturday": "Суббота",
"Today": "Сегодня",
"Yesterday": "Вчера",
"Mentions only": "Только упоминание",
"Mentions only": "Только если были упомянуты",
"Mute": "Беззвучный",
"Permalink": "Постоянная ссылка",
"Quote": "Цитата",
"Redact": "Удалить",
"Remove %(name)s from the directory?": "Удалить %(name)s из каталога?",
"remove %(name)s from the directory.": "удалить %(name)s из каталога.",
"Resend": "Переслать снова",
"Source URL": "Исходный URL",
"Welcome page": "Домашняя страница",
"Advanced notification settings": "Настройки уведомлений",
"Resend": "Переотправить",
"Source URL": "Исходный URL-адрес",
"Welcome page": "Страница приветствия",
"Advanced notification settings": "Дополнительные параметры уведомлений",
"Call invitation": "Пригласительный звонок",
"customServer_text": "Вы можете войти с помощью вашего сервера.<br/>Это позволяет вам использовать Riot с уже существующей учетной записью на другом сервере.<br/><br/>Вы также можете задать свой сервер идентификации, но тогда вы не можете приглашать пользователей с помощью email-адреса и не можете быть приглашены по нему.",
"customServer_text": "Вы можете использовать настраиваемые параметры сервера для входа на другие серверы Matrix, указав другой URL-адрес домашнего сервера.<br/>Это позволяет использовать это приложение с существующей учетной записью Matrix на другом домашнем сервере.<br/><br/>Вы также можете установить другой сервер идентификации, но это, как правило, будет препятствовать взаимодействию с пользователями на основе адреса электронной почты.",
"Messages containing my display name": "Сообщения, содержащие мое имя",
"Messages containing my user name": "Сообщение, содержащие мое имя пользователя",
"Messages in group chats": "Сообщения в групповых чатах",
"Messages in one-to-one chats": "Сообщения в приватных чатах",
"Messages in one-to-one chats": "Сообщения в индивидуальных чатах",
"Messages sent by bot": "Сообщения, отправленные ботом",
"more": "больше",
"When I'm invited to a room": "Когда я приглашен в комнату",
"When I'm invited to a room": "Когда меня приглашают в комнату",
"A new version of Riot is available.": "Доступна новая версия Riot.",
"All Rooms": "Все комнаты",
"Cancel": "Отмена",
"Changelog": "История изменений",
"Collapse panel": "Свернуть панель",
"Collecting app version information": "Сбор информации о версиях программы",
"Collecting logs": "Сбор протоколов",
"Collecting app version information": "Сбор информации о версии приложения",
"Collecting logs": "Сбор журналов",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s с %(browserName)s на %(osName)s",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> и <a href=\"http://opera.com\">Opera</a> работают тоже.",
"Describe your problem here.": "Опиши здесь свою проблему.",
"Expand panel": "Открыть панель",
"Failed to send report: ": "Не удалось отослать отчет: ",
"Forward Message": "Переслать сообщение дальше",
"Describe your problem here.": "Опишите вашу проблему здесь.",
"Expand panel": "Развернуть панель",
"Failed to send report: ": "Не удалось отправить отчет: ",
"Forward Message": "Переслать сообщение",
"Hide panel": "Скрыть панель",
"I understand the risks and wish to continue": "Я понимаю риск и хочу продолжать",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Что бы выявить проблему, будет отослан журнал этого клиента с сообщением о ошибке. Если Вы только верхний текст отослать хотите, отключите следующее:",
"Loading bug report module": "Загрузи Модуль ошибок",
"Messages containing <span>keywords</span>": "Сообщения, которые содержат определенные <span>ключевые слова</span>",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Пожалуйста опишите (на Английском) ошибку. Что Вы делали? Что Вы ожидали получить? Что произошло?",
"Please describe the bug and/or send logs.": "Пожалуйста опишите ошибку и/или перешлите протоколы.",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Пожалуйста установите <a href=\"https://www.google.com/chrome\">Chrome</a> или <a href=\"https://getfirefox.com\">Firefox</a> для лучшего результата.",
"Report a bug": "Отчет о ошибке",
"I understand the risks and wish to continue": "Я понимаю риски и желаю продолжить",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Чтобы диагностировать проблемы, логи этого клиента будут отправлены вместе с этим сообщением об ошибке. Если вы предпочитаете отправить только текст выше, пожалуйста, отключите:",
"Loading bug report module": "Загрузка модуля Отчет об ошибках",
"Messages containing <span>keywords</span>": "Сообщения, содержащие определенные <span>ключевые слова</span>",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Опишите ошибку. Что вы сделали? Чего вы ожидали? Что на самом деле произошло?",
"Please describe the bug and/or send logs.": "Опишите ошибку и/или отправьте журналы.",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Для получения наилучшего опыта при работе с Riot, пожалуйста, установите <a href=\"https://www.google.com/chrome\">Chrome</a> или <a href=\"https://getfirefox.com\">Firefox</a>.",
"Report a bug": "Сообщить об ошибке",
"Riot Desktop on %(platformName)s": "Riot Desktop на %(platformName)s",
"Riot is not supported on mobile web. Install the app?": "Riot не будет на мобильном Интернете работать. Программу инсталлировать?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot использует некоторые расширенные функции интернет-проводника - некоторые из них отсутствуют или экспериментальные в этом проводнике.",
"Riot is not supported on mobile web. Install the app?": "Riot не поддерживает версию веб-сайта для мобильных устройств. Установить приложение?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot использует многие передовые возможности браузера, некоторые из которых недоступны или являются экспериментальным в вашем текущем браузере.",
"Search": "Поиск",
"Search…": "Поиск.…",
"Send": "Отослать",
"Send logs": "Отослать протокол",
"Sorry, your browser is <b>not</b> able to run Riot.": "Извините, ваш браузер <b>не может</b> Riot запустить.",
"Send logs": "Отправить журналы",
"Sorry, your browser is <b>not</b> able to run Riot.": "К сожалению, ваш браузер <b>не способен</b> запустить Riot.",
"This Room": "Эта комната",
"Unavailable": "Недоступен",
"Unknown device": "Неизвестное устройство",
"Update": "Обновление",
"Uploading report": "Отчет загружается",
"Uploading report": "Отправка отчета",
"What's New": "Что нового",
"What's new?": "Что нового?",
"Waiting for response from server": "Подождите ответа от сервера",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Вы вошли в Riot как гость. <a>Зарегистрируйтесь</a> или <a>войдите в систему</a> и получите доступ к огромному количеству комнат и функций!",
"OK": "ОК",
"You need to be using HTTPS to place a screen-sharing call.": "Вы должны пользоваться HTTPS чтобы пользоваться видео звонком.",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Если Ваш браузер не корректно отображает информацию и все или некоторые функции отключены, Вы можете и дальше этим браузером пользоваться но ваши проблемы останутся с вами!",
"Waiting for response from server": "Ожидание ответа от сервера",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "Вы используете Riot как гость. <a>Зарегистрируйтесь</a> или <a>войдите</a> для получения доступа к большему количеству комнат и функций!",
"OK": "OK",
"You need to be using HTTPS to place a screen-sharing call.": "Требуется использование HTTPS для совместного использования рабочего стола.",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "В текущем браузере внешний вид приложения может быть полностью неверным, а некоторые или все функции могут не работать. Если вы хотите попробовать в любом случае, то можете продолжить, но с теми проблемами, с которыми вы можете столкнуться вам придется разбираться самостоятельно!",
"Login": "Войти",
"Welcome to Riot.im": "Добро пожаловать на Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Децентрализованное, шифрованное общение и сотрудничество на основе [matrix]",
"Search the room directory": "Поиск по директории комнат",
"Chat with Riot Bot": "Пообщаться с Riot Bot",
"Get started with some tips from Riot Bot!": "Начните с некоторых советов от Riot бота!",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Децентрализованный, зашифрованный чат и совместная работа при поддержке [matrix]",
"Search the room directory": "Поиск в каталоге комнат",
"Chat with Riot Bot": "Пообщаться с ботом Riot",
"Get started with some tips from Riot Bot!": "Начните с некоторых советов от бота Riot!",
"General discussion about Matrix and Riot": "Общая дискуссия о Matrix и Riot",
"Discussion of all things Matrix!": "Дискуссия обо всем Matrix!",
"Riot/Web &amp; Desktop chat": "Riot-Web &amp; Desktop-Чат",
"Matrix technical discussions": "Техническая дискуссия о Matrix",
"Running Matrix services": "Предлагать Matrix-Сервис",
"Discussion of all things Matrix!": "Дискуссия обо всем, что связано с Matrix!",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; Desktop-чат",
"Matrix technical discussions": "Технические дискуссии о Matrix",
"Running Matrix services": "Запуск сервисов Matrix",
"Community-run support for Synapse": "Поддержка Synapse от сообщества",
"Admin support for Dendrite": "Админ. помощь для Dendrite",
"Building services on Matrix": "Построить услуги для Matrix",
"Implementing VoIP services with Matrix": "Внедрение услуги VoIP с Matrix",
"(HTTP status %(httpStatus)s)": "(HTTP-Состояние %(httpStatus)s)",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot-iOS &amp; \"matrix-ios-sdk\"-Чат",
"Riot/Android &amp; matrix-android-sdk chat": "Riot-Android &amp; matrix-android-sdkат",
"Announcements about Synapse releases": "Объявления релизов Synapse",
"Support for those using and running matrix-appservice-irc": "Поддержка тех, кто matrix-appservice-irc эксплуатирует и использует",
"Admin support for Dendrite": "Административная поддержка Dendrite",
"Building services on Matrix": "Разработка сервисов на Matrix",
"Implementing VoIP services with Matrix": "Внедрение VoIP-услуг с помощью Matrix",
"(HTTP status %(httpStatus)s)": "(статус HTTP %(httpStatus)s)",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk чат",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android &amp; matrix-android-sdk чат",
"Announcements about Synapse releases": "Объявления о выпусках Synapse",
"Support for those using and running matrix-appservice-irc": "Поддержка тех, кто использует и работает с matrix-appservice-irc",
"You have successfully set a password!": "Вы успешно установили пароль!",
"Continue": "Продолжить",
"Please set a password!": "Задайте пароль!",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix существует множество комнат, связанных с существующими сетями (Slack, IRC, Gitter и т.д.) Или независимыми. Ищите в каталоге!",
"Please set a password!": "Пожалуйста, установите пароль!",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix существует множество комнат, как связанных с существующими сетями (Slack, IRC, Gitter и пр.), так и независимых. Ищите в каталоге!",
"Failed to change password. Is your password correct?": "Не удалось сменить пароль. Вы правильно ввели текущий пароль?",
"You can now return to your account after signing out, and sign in on other devices.": "Теперь Вы можете вернуться в свою учетную запись после выхода из системы, и войти в систему на других устройствах.",
"Support for those using the Matrix spec": "Поддержка для тех, кто использует спецификацию Matrix",
"Design and implementation of E2E in Matrix": "Разработка и внедрение E2E в Matrix",
"Implementing VR services with Matrix": "Внедрение служб VR с помощью Matrix",
"Discussion of the Identity Service API": "Обсуждение службы идентификации API",
"Support for those using, running and writing other bridges": "Поддержка тех, кто использует, работает и пишет другие мосты (bridges)",
"Contributing code to Matrix and Riot": "Взаимодействующий код для Matrix и Riot",
"Dev chat for the Riot/Web dev team": "Dev chat для группы разработчиков Riot/Web",
"Dev chat for the Dendrite dev team": "Dev chat для группы разработчиков Dendrite",
"Co-ordination for Riot/Web translators": "Координирование для переводчиков Riot / Web",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Это позволит Вам вернуться в свою учетную запись после выхода, и войти в систему на других устройствах.",
"You have successfully set a password and an email address!": "Пароль и адрес электронной почты успешно сохранены!",
"Remember, you can always set an email address in user settings if you change your mind.": "Помните, Вы всегда можете указать адрес электронной почты в пользовательских настройках, если передумаете."
"You can now return to your account after signing out, and sign in on other devices.": "Теперь вы сможете вернуться к своей учетной записи после выхода из системы и войти на других устройствах.",
"Support for those using the Matrix spec": "Поддержка пользователей, использующих Matrix spec",
"Design and implementation of E2E in Matrix": "Разработка и внедрение сквозного шифрования (E2E) в Matrix",
"Implementing VR services with Matrix": "Внедрение сервисов виртуальной реальности (VR) с помощью Matrix",
"Discussion of the Identity Service API": "Обсуждение API службы идентификации",
"Support for those using, running and writing other bridges": "Поддержка для тех, кто использует, разрабатывает и внедряет приложения интеграции для Matrix",
"Contributing code to Matrix and Riot": "Внести свой вклад в разработку кода Matrix и Riot",
"Dev chat for the Riot/Web dev team": "Чат с командой разработчиков Riot/Web",
"Dev chat for the Dendrite dev team": "Чат с командой разработчиков Dendrite",
"Co-ordination for Riot/Web translators": "Координация для переводчиков Riot/Web",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Это позволит вам вернуться к учетной записи после выхода из системы и войти на другие устройства.",
"You have successfully set a password and an email address!": "Вы успешно установили пароль и адрес электронной почты!",
"Remember, you can always set an email address in user settings if you change your mind.": "Помните, что вы всегда сможете задать адрес электронной почты в настройках пользователя, если передумаете.",
"Set Password": "Задать пароль",
"To return to your account in future you need to <u>set a password</u>": "Чтобы вернуться к учетной записи в будущем, необходимо <u>задать пароль</u>",
"Warning": "Предупреждение",
"Checking for an update...": "Проверка обновлений...",
"Error encountered (%(errorDetail)s).": "Обнаружена ошибка (%(errorDetail)s).",
"No update available.": "Нет доступных обновлений.",
"Downloading update...": "Загрузка обновления...",
"Couldn't load home page": "Не удалось загрузить домашнюю страницу"
}

View File

@@ -157,5 +157,8 @@
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Radera rumsadressen %(alias)s och ta bort %(name)s från katalogen?",
"Collecting logs": "Samlar in loggar",
"Collecting app version information": "Samlar in appversionsinformation",
"Notifications on the following keywords follow rules which cant be displayed here:": "Aviseringar för följande nyckelord följer regler som inte kan visas här:"
"Notifications on the following keywords follow rules which cant be displayed here:": "Aviseringar för följande nyckelord följer regler som inte kan visas här:",
"Continue": "Fortsätt",
"Failed to change password. Is your password correct?": "Det gick inte att byta lösenord. Är lösenordet rätt?",
"Operation failed": "Handlingen misslyckades"
}

61
src/i18n/strings/ta.json Normal file
View File

@@ -0,0 +1,61 @@
{
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a>மற்றும்<a href=\"http://opera.com\">Opera</a>விலும் செயல்படும்.",
"A new version of Riot is available.": "Riot-ன் புதிய பதிப்பு உள்ளது.",
"Add an email address above to configure email notifications": "மின்னஞ்சல் அறிவிப்புகளை ஏற்றபடி மாற்ற ஒரு மின்னஞ்சல் முகவரியை மேலே இணைக்கவும்",
"Advanced notification settings": "மேம்பட்ட அறிவிப்பிற்க்கான அமைப்புகள்",
"All messages": "அனைத்து செய்திகள்",
"All messages (loud)": "அனைத்து செய்திகள் (உரக்க)",
"All Rooms": "அனைத்து அறைகள்",
"All notifications are currently disabled for all targets.": "அனைத்து இலக்குகளுக்கான அனைத்து அறிவுப்புகளும் தற்காலிகமாக முடக்கப்பட்டுள்ளது.",
"An error occurred whilst saving your email notification preferences.": "உங்கள் மின்னஞ்சல் அறிவிப்பு விருப்பங்களை சேமிக்கும்பொழுது தவறு ஏற்ப்பட்டது.",
"Cancel": "நீக்கு",
"Cancel Sending": "அனுப்புதலை நீக்கு",
"Changelog": "மாற்றப்பதிவு",
"Close": "மூடு",
"Collapse panel": "பலகத்தை மாற்றியமை",
"Collecting app version information": "செயலியின் பதிப்பு தகவல்கள் சேகரிக்கப்படுகிறது",
"Collecting logs": "பதிவுகள் சேகரிக்கப்படுகிறது",
"Create new room": "புதிய அறையை உருவாக்கு",
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)s -ல் %(browserName)s -ன் வழியாக %(appName)s",
"Call invitation": "தொடர்பு கொள்ள அழைப்பு",
"Can't update user notification settings": "பயனர் அறிவிப்பு அமைப்புகளை மாற்ற முடியவில்லை",
"Couldn't find a matching Matrix room": "பொருத்தமான Matrix அறை கண்டுபிடிக்கப்படவில்லை",
"Custom Server Options": "விருப்பிற்கேற்ற வழங்கி இடப்புகள்",
"delete the alias.": "மாற்றை அழி.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "அறை மாற்று %(alias)s -ஐ அழித்து, %(name)s -ஐ அடைவிலிருந்து நீக்க தயாரா?",
"Describe your problem here.": "உங்கள் பிரச்சனையை இங்கு விவரிக்கவும்.",
"Direct Chat": "நேரடி அரட்டை",
"Directory": "அடைவு",
"Dismiss": "நீக்கு",
"Download this file": "இந்த கோப்பைத் தரவிறக்கு",
"Drop here %(toAction)s": "%(toAction)s -ஐ இங்கு விடு",
"Enable audible notifications in web client": "இணைய வாங்கியில் கேட்கக்கூடிய அறிவிப்புகளை ஏதுவாக்கு",
"Enable desktop notifications": "திரை அறிவிப்புகளை ஏதுவாக்கு",
"Enable email notifications": "மின்னஞ்சல் அறிவிப்புகளை ஏதுவாக்கு",
"Enable notifications for this account": "இந்த கணக்கிற்க்கான அறிவிப்புகளை ஏதுவாக்கு",
"Enable them now": "இப்போது அவற்றை ஏதுவாக்கு",
"Error": "தவறு",
"Expand panel": "பலகத்தை விரிவாக்கு",
"Failed to": "ல் தோல்வி",
"Failed to add tag %(tagName)s to room": "%(tagName)s எனும் குறிச்சொல்லை அறையில் சேர்ப்பதில் தோல்வி",
"Failed to change settings": "அமைப்புகள் மாற்றத்தில் தோல்வி",
"Failed to forget room %(errCode)s": "அறை மறப்பதில் தோல்வி %(errCode)s",
"Failed to update keywords": "முக்கிய வார்த்தைகளை புதுப்பித்தலில் தோல்வி",
"Failed to get public room list": "பொது அறைப் பட்டியலைப் பெறுவதில் தோல்வி",
"Failed to join the room": "அறையில் சேர்வதில் தோல்வி",
"Failed to send report: ": "அறிக்கை அனுப்புதலில் தோல்வி ",
"Favourite": "விருப்பமான",
"Files": "கோப்புகள்",
"Filter room names": "அறை பெயர்களை வடிகட்டு",
"Forget": "மற",
" from room": " அறையில் இருந்து",
"Guests can join": "விருந்தினர்கள் சேரலாம்",
"Hide panel": "பலகத்தை மறை",
"Invite to this room": "இந்த அறைக்கு அழை",
"Keywords": "முக்கிய வார்த்தைகள்",
"Leave": "வெளியேறு",
"Login": "உள்நுழை",
"Low Priority": "குறைந்த முன்னுரிமை",
"Members": "உறுப்பினர்கள்",
"Mentions only": "குறிப்பிடுகள் மட்டும்"
}

View File

@@ -1 +1,128 @@
{}
{
"Close": "ముసివెయండి",
"Continue": "కొనసాగించు",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వర %(osName)s కి",
"Friday": "శుక్రువారం",
"Cancel": "రద్దు",
"Monday": "సోమవారం",
"Tuesday": "మంగళవారం",
"Wednesday": "బుధవారం",
"Thursday": "గురువారం",
"Saturday": "శనివారం",
"Sunday": "ఆదివారం",
"Failed to forget room %(errCode)s": "గది %(errCode) లు మర్చిపోవడంలో విఫలమైంది",
"unknown error code": "తెలియని కోడ్ లోపం",
"A new version of Riot is available.": "కొత్త రిమోట్ వివరణము అందుబాటులో ఉంది.",
"Add an email address above to configure email notifications": "ఇమెయిల్ ప్రకటనలను రూపశిల్పం చేయడానికి ఎగువ ఇమెయిల్ చిరునామాను జోడించండి",
"Advanced notification settings": "ఆధునిక తాఖీదు అమరిక",
"All messages": "అన్ని సందేశాలు",
"All messages (loud)": "అన్ని సందేశాలు (గట్టిగ)",
"All Rooms": "అన్ని గదులు",
"Call invitation": "కాల్ ఆహ్వానం",
"Cancel Sending": "రద్దు చేయడాన్ని రద్దు చేయండి",
"Can't update user notification settings": "వినియోగదారు తాఖీదు అమరిక నవీకరించలేరు",
"Changelog": "నమోదు మార్చండి",
"Collapse panel": "ప్యానెల్ కుదించు",
"Collecting app version information": "అనువర్తన సంస్కరణ సమాచారాన్ని సేకరించడం",
"Collecting logs": "నమోదు సేకరించడం",
"Create new room": "క్రొత్త గది సృష్టించండి",
"Couldn't find a matching Matrix room": "సరిపోలిక మ్యాట్రిక్స్ గదిని కనుగొనలేకపోయాము",
"Custom Server Options": "మలచిన సేవిక ఎంపికలు",
"delete the alias.": "అలియాస్ తొలగించండి.",
"Describe your problem here.": "ఇక్కడ మీ సమస్యను వివరించండి.",
"Direct Chat": "ప్రత్యక్ష మాటామంతి",
"Directory": "వివరం",
"Dismiss": "రద్దుచేసే",
"Download this file": "ఈ దస్త్రం దిగుమతి చేయండి",
"Drop here %(toAction)s": "ఇక్కడ వదలండి %(toAction)s",
"Enable audible notifications in web client": "వెబ్ బంట్రౌతు వినిపించే నోటిఫికేషన్లను ప్రారంభించండి",
"Enable desktop notifications": "రంగస్థల తాఖీదు ప్రారంభించండి",
"Enable email notifications": "ఇమెయిల్ ప్రకటనలను ప్రారంభించండి",
"Enable notifications for this account": "ఈ ఖాతా కోసం తాఖీదు ప్రారంభించండి",
"Enable them now": "ఇప్పుడే వాటిని ప్రారంభించండి",
"Enter keywords separated by a comma:": "కామాతో వేరు చేయబడిన కీలక పదాలను నమోదు చేయండి:",
"Error": "లోపం",
"Error saving email notification preferences": "ఇమెయిల్ ప్రకటనలను ప్రాధాన్యతలను దాచు చేయడంలో లోపం",
"#example": "#ఉదాహరణ",
"Expand panel": "ప్యానెల్ను విస్తరింపజేయండి",
"Failed to": "విఫలమైంది",
"Failed to add tag %(tagName)s to room": "%(tagName)s ను బొందు జోడించడంలో విఫలమైంది",
"Failed to change settings": "అమరిక మార్చడం విఫలమైంది",
"Failed to update keywords": "కీలక పదాలను నవీకరించడంలో విఫలమైంది",
"Failed to get protocol list from Home Server": "హోమ్ సర్వర్ నుండి ప్రోటోకాల్ జాబితాను పొందడం విఫలమైంది",
"Failed to get public room list": "ప్రజా గది జాబితాను పొందడం విఫలమైంది",
"Failed to join the room": "గదిలో చేరడం విఫలమైంది",
"Failed to remove tag %(tagName)s from room": "గది నుండి బొందు %(tagName)s తొలగించడంలో విఫలమైంది",
"Failed to send report: ": "నివేదికను పంపడంలో విఫలమైంది: ",
"Failed to set direct chat tag": "ప్రత్యక్ష మాటామంతి బొందు సెట్ చేయడంలో విఫలమైంది",
"Failed to set Direct Message status of room": "గది యొక్క ప్రత్యక్ష సందేశ స్థితి సెట్ చేయడంలో విఫలమైంది",
"Favourite": "గుర్తుంచు",
"Fetching third party location failed": "మూడవ పార్టీ స్థానాన్ని పొందడం విఫలమైంది",
"Files": "దస్ర్తాలు",
"Filter room names": "గది పేర్లను ఫిల్టర్ చేయండి",
"Forget": "మర్చిపో",
"Forward Message": "సందేశాన్ని మునుముందుకు చేయండి",
" from room": " గది నుండి",
"Guests can join": "అతిథులు చేరవచ్చు",
"Guest users can't invite users. Please register to invite.": "అతిథి వినియోగదారులు వినియోగదారులను ఆహ్వానించలేరు. దయచేసి ఆహ్వానించడానికి నమోదు చేయండి.",
"Hide panel": "ప్యానెల్ను దాచు",
"(HTTP status %(httpStatus)s)": "(HTTP స్థితి %(httpStatus)s)",
"I understand the risks and wish to continue": "నేను నష్టాలను అర్థం చేసుకుంటాను మరియు కొనసాగించాలని కోరుకుంటున్నాను",
"Invite to this room": "ఈ గదికి ఆహ్వానించండి",
"Keywords": "ముఖ్యపదాలు",
"Leave": "వదిలి",
"Login": "ప్రవేశ ద్వారం",
"Loading bug report module": "దోష నివేదిక అధిభాగం లోడ్ చేస్తోంది",
"Low Priority": "తక్కువ ప్రాధాన్యత",
"Members": "సభ్యులు",
"Mentions only": "మాత్రమే ప్రస్తావిస్తుంది",
"Messages containing my display name": "నా ప్రదర్శన పేరును కలిగి ఉన్న సందేశాలు",
"Messages containing <span>keywords</span>": "కీలక పదాలను</span>కలిగి ఉన్న సందేశం<span>",
"Messages containing my user name": "నా వినియోగదారు పేరు కలిగి ఉన్న సందేశాలు",
"Messages in group chats": "సమూహ మాటామంతిలో సందేశాలు",
"Messages in one-to-one chats": "సందేశాలు నుండి ఒకరికి ఒకటి మాటామంతి",
"Messages sent by bot": "బాట్ పంపిన సందేశాలు",
"more": "మరింత",
"Mute": "నిశబ్ధము",
"No rooms to show": "చూపించడానికి గదులు లేవు",
"Noisy": "శబ్దం",
"Notification targets": "తాఖీదు లక్ష్యాలు",
"Notifications": "తాఖీదు",
"Notify for all other messages/rooms": "అన్ని ఇతర సందేశాలు / గదులు కోసం తెలియజేయండి",
"Off": "ఆపు",
"On": "వేయుము",
"Operation failed": "కార్యం విఫలమైంది",
"Reject": "తిరస్కరించు",
"Remove %(name)s from the directory?": "వివరము %(name)s నుండి తొలిగించు?",
"Remove": "తొలగించు",
"remove %(name)s from the directory.": "వివరము %(name)s నుండి తొలిగించు.",
"Remove from Directory": "`వివరము నుండి తొలిగించు",
"Report a bug": "లోపమును నివేదించు",
"Resend": "మళ్ళి పంపుము",
"Riot Desktop on %(platformName)s": "రియట్ రంగస్థలం లో %(platformName)s",
"Room directory": "గది వివరము",
"Room not found": "గది కనుగొనబడలేదు",
"Search": "శోధన",
"Search…": "శోధన…",
"Search for a room": "గది కోసం శోధించండి",
"Send": "పంపండి",
"Send logs": "నమోదును పంపు",
"Settings": "అమరికలు",
"Source URL": "మూల URL",
"Sorry, your browser is <b>not</b> able to run Riot.": "క్షమించండి, మీ బ్రౌజర్ <b>రియట్ని అమలు చేయలేరు</b>.",
"Today": "ఈ రోజు",
"Yesterday": "నిన్న",
"Warning": "హెచ్చరిక",
"Checking for an update...": "నవీకరణ కోసం తనిఖీ చేస్తోంది ...",
"Error encountered (%(errorDetail)s).": "లోపం సంభవించింది (%(errorDetail)s).",
"No update available.": "ఏ నవీకరణ అందుబాటులో లేదు.",
"Downloading update...": "నవీకరణను దిగుమతి చేస్తోంది...",
"Welcome page": "స్వాగత పేజీ",
"Welcome to Riot.im": "రిమోట్.ఇం కి స్వగతం",
"Search the room directory": "గది వివరాన్ని శోధించండి",
"Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి",
"Please set a password!": "దయచేసి మీ రహస్యపదాన్నీ అమర్చండి!",
"Set Password": "రహస్యపదాన్నీ అమర్చండి",
"Couldn't load home page": "హోమ్ పేజీని లోడ్ చేయలేకపోయాము",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">సఫరి</a>ఇంక<a href=\"http://opera.com\">ఒపెర</a>కుద పని చెసతయి."
}

View File

@@ -171,7 +171,7 @@
"Riot/Web &amp; Desktop chat": "แชทเกี่ยวกับ Riot บนเว็บและเดสก์ทอป",
"Riot/iOS &amp; matrix-ios-sdk chat": "แชทเกี่ยวกับ Riot บน iOS และ matrix-ios-sdk",
"Riot/Android &amp; matrix-android-sdk chat": "แชทเกี่ยวกับ Riot บน Android และ matrix-android-sdk",
"Matrix technical discussions": "พูดคุยเรื่อง Matrix ทางเทคนิค",
"Matrix technical discussions": "พูดคุยเรื่อง Matrix เชิงเทคนิค",
"Running Matrix services": "การติดตั้งบริการ Matrix",
"Community-run support for Synapse": "ฝ่ายสนับสนุน Synapse โดยชุมชนผู้ใช้",
"Admin support for Dendrite": "ฝ่ายสนับสนุน Dendrite จากผู้ดูแล",
@@ -182,7 +182,7 @@
"Implementing VR services with Matrix": "การอิมพลีเมนต์บริการ VR ด้วย Matrix",
"Implementing VoIP services with Matrix": "การอิมพลีเมนต์บริการ VoIP ด้วย Matrix",
"Support for those using, running and writing other bridges": "ฝ่ายสนับสนุนสำหรับผู้ใช้หรือพัฒนาตัวเชื่อมอื่น ๆ",
"Contributing code to Matrix and Riot": "สมทบโค๊ดกับ Matrix และ Riot",
"Contributing code to Matrix and Riot": "สมทบโค๊ดให้ Matrix และ Riot",
"Dev chat for the Riot/Web dev team": "แชทสำหรับทีมพัฒนา Riot บนเว็บ",
"Dev chat for the Dendrite dev team": "แชทสำหรับทีมพัฒนา Dendrite",
"Co-ordination for Riot/Web translators": "แชทสำหรับประสานงานการแปล Riot บนเว็บ",
@@ -199,5 +199,12 @@
"General discussion about Matrix and Riot": "พูดคุยเรื่องทั่วไป ทั้ง Matrix และ Riot",
"(HTTP status %(httpStatus)s)": "(สถานะ HTTP %(httpStatus)s)",
"Remember, you can always set an email address in user settings if you change your mind.": "อย่าลืม คุณสามารถตั้งที่อยู่อีเมลในการตั้งค่าผู้ใช้ได้ทุกเมื่อหากคุณเปลี่ยนใจ",
"You have successfully set a password and an email address!": "ตั้งรหัสผ่านและที่อยู่อีเมลสำเร็จแล้ว!"
"You have successfully set a password and an email address!": "ตั้งรหัสผ่านและที่อยู่อีเมลสำเร็จแล้ว!",
"Warning": "คำเตือน",
"Checking for an update...": "กำลังตรวจหาอัปเดต...",
"Error encountered (%(errorDetail)s).": "เกิดข้อผิดพลาด (%(errorDetail)s)",
"No update available.": "ไม่มีอัปเดตที่ใหม่กว่า",
"Downloading update...": "กำลังดาวน์โหลดอัปเดต...",
"To return to your account in future you need to <u>set a password</u>": "คุณต้อง<u>ตั้งรหัสผ่าน</u>เพื่อจะกลับมาที่บัญชีนี้ในอนาคต",
"Set Password": "ตั้งรหัสผ่าน"
}

View File

@@ -18,7 +18,7 @@
"Collapse panel": "Katlanır panel",
"Collecting app version information": "Uygulama sürümü bilgileri toplanıyor",
"Collecting logs": "Kayıtlar toplanıyor",
"Create new room": "Yeni oda oluştur",
"Create new room": "Yeni Oda Oluştur",
"Couldn't find a matching Matrix room": "Eşleşen bir Matrix odası bulunamadı",
"Custom Server Options": "Özel Sunucu Seçenekleri",
"customServer_text": "Farklı bir Ana Sunucu URL'si belirleyerek başka bir Matrix sunucusunda oturum açmak için Özel Sunucu Seçeneklerini kullanabilirsiniz. <br/> Bu , Riot'u mevcut Matrix hesabı ile farklı bir Ana Sunucuda kullanmanıza olanak tanır.<br/> <br/> Ayrıca Özel Kimlik Sunucu'da ayarlayabilirsiniz ama kullanıcıları e-posta adresleriyle veya kendi e-posta adresinizle davet edemezsiniz.",
@@ -27,9 +27,9 @@
"Describe your problem here.": "Probleminizi burada açıklayın.",
"Direct Chat": "Doğrudan Sohbet",
"Directory": "Dizin",
"Dismiss": "Reddet",
"Dismiss": "Uzaklaştır",
"Download this file": "Bu dosyayı indir",
"Drop here %(toAction)s": "Burayı terket %(toAction)s",
"Drop here %(toAction)s": "%(toAction)s'ı buraya bırak",
"Enable audible notifications in web client": "Web istemcisinde sesli bildirimleri etkinleştir",
"Enable desktop notifications": "Masaüstü bildirimlerini etkinleştir",
"Enable email notifications": "E-posta bildirimlerini etkinleştir",
@@ -43,11 +43,11 @@
"Failed to": "Başaramadı",
"Failed to add tag %(tagName)s to room": "%(tagName)s etiketi odaya eklenemedi",
"Failed to change settings": "Ayarlar değiştirilemedi",
"Failed to forget room %(errCode)s": "Odayı unutma başarısız oldu %(errCode)s",
"Failed to forget room %(errCode)s": "Oda unutulması başarısız oldu %(errCode)s",
"Failed to update keywords": "Anahtar kelimeler güncellenemedi",
"Failed to get protocol list from Home Server": "Ana Sunucu'dan protokol listesi alınamadı",
"Failed to get public room list": "Genel odalar listesi alınamadı",
"Failed to join the room": "Odaya girilemedi",
"Failed to join the room": "Odaya girme başarısız oldu",
"Failed to remove tag %(tagName)s from room": "Odadan %(tagName)s etiketi kaldırılamadı",
"Failed to send report: ": "Rapor gönderilemedi: ",
"Failed to set direct chat tag": "Direkt sohbet etiketi ayarlanamadı",
@@ -90,7 +90,7 @@
"Notify me for anything else": "Başka herhangi bir şey için bana bildirim yap",
"Off": "Kapalı",
"On": "Açık",
"Operation failed": "Operasyon başarısız",
"Operation failed": "Operasyon başarısız oldu",
"Permalink": "Kalıcı Bağlantı(permalink)",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Lütfen hatayı tanımlayın. Ne yaptınız ? Ne gerçekleşmesini beklediniz ? Ne gerçekleşti ?",
"Please describe the bug and/or send logs.": "Lütfen hatayı tanımlayın ve/veya kayıtları gönderin.",
@@ -110,7 +110,7 @@
"Riot does not know how to join a room on this network": "Riot bu ağdaki bir odaya nasıl gireceğini bilmiyor",
"Riot is not supported on mobile web. Install the app?": "Riot mobil web'de desteklenmiyor . Uygulamayı yükle ?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot geçerli tarayıcınızda mevcut olmayan veya denemelik olan birçok gelişmiş tarayıcı özelliği kullanıyor.",
"Room directory": "Oda dizini",
"Room directory": "Oda Rehberi",
"Room not found": "Oda bulunamadı",
"Search": "Ara",
"Search…": "Arama…",
@@ -120,7 +120,7 @@
"Settings": "Ayarlar",
"Source URL": "Kaynak URL",
"Sorry, your browser is <b>not</b> able to run Riot.": "Üzgünüz , tarayıcınız Riot'u <b> çalıştıramıyor </b>.",
"Start chat": "Sohbet başlat",
"Start chat": "Sohbet Başlat",
"The Home Server may be too old to support third party networks": "Ana Sunucu 3. parti ağları desteklemek için çok eski olabilir",
"There are advanced notifications which are not shown here": "Burada gösterilmeyen gelişmiş bildirimler var",
"The server may be unavailable or overloaded": "Sunucu kullanılamıyor veya aşırı yüklenmiş olabilir",
@@ -133,7 +133,7 @@
"Unavailable": "Kullanım dışı",
"Unhide Preview": "Önizlemeyi Göster",
"Unknown device": "Bilinmeyen aygıt",
"unknown error code": "Bilinmeyen hata kodu",
"unknown error code": "bilinmeyen hata kodu",
"Unnamed room": "İsimsiz oda",
"Update": "Güncelleştirme",
"Uploaded on %(date)s by %(user)s": "%(user)s tarafında %(date)s e yüklendi",
@@ -191,10 +191,10 @@
"Dev chat for the Dendrite dev team": "Dendrite Geliştirici Takımı için Geliştirici sohbeti",
"Co-ordination for Riot/Web translators": "Riot/Web çevirmenleri için koordinasyon",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix'te varolan ağlara (Slack , IRC , Gitter vb.) bağlı ya da bağımsız bir çok oda var . Dizini kontrol edin!",
"Failed to change password. Is your password correct?": "Şifre değiştirme başarısız oldu . Şifreniz doğru mu ?",
"Failed to change password. Is your password correct?": "Şifreniz değiştirilemedi . Şifreniz doğru mu ?",
"You have successfully set a password!": "Başarıyla bir şifre ayarladınız!",
"You can now return to your account after signing out, and sign in on other devices.": "Şimdi oturumunuzu iptal ettikten sonra başka cihazda oturum açarak hesabınıza dönebilirsiniz.",
"Continue": "Devam",
"Continue": "Devam Et",
"Please set a password!": "Lütfen bir şifre ayarlayın !",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Bu oturumunuzu kapattıktan sonra hesabınıza dönmenizi ve diğer cihazlarda oturum açmanızı sağlar.",
"You have successfully set a password and an email address!": "Başarıyla bir şifre ve e-posta adresi ayarladın !",

View File

@@ -3,7 +3,7 @@
"All messages": "Усі повідомлення",
"All messages (loud)": "Усі повідомлення (гучно)",
"All Rooms": "Усі кімнати",
"All notifications are currently disabled for all targets.": "Повідомлення для усіх цілей на даний момент вимкнені.",
"All notifications are currently disabled for all targets.": "Сповіщення для усіх цілей на даний момент вимкнені.",
"An error occurred whilst saving your email notification preferences.": "Під час збереження налаштувань сповіщень е-поштою трапилася помилка.",
"Cancel": "Скасувати",
"Cancel Sending": "Скасувати надсилання",
@@ -21,7 +21,7 @@
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s через %(browserName)s на %(osName)s",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> та <a href=\"http://opera.com\">Opera</a> також підтримуються.",
"Add an email address above to configure email notifications": "Додайте вище адресу е-пошти щоб налаштувати сповіщення е-поштою",
"Advanced notification settings": "Додаткові налаштування повідомлень",
"Advanced notification settings": "Додаткові налаштування сповіщень",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Видалити псевдонім %(alias)s та прибрати з каталогу %(name)s?",
"Describe your problem here.": "Опишіть вашу проблему тут.",
"Direct Chat": "Прямий чат",
@@ -194,5 +194,17 @@
"No rooms to show": "Кімнати відсутні",
"Noisy": "Шумний",
"Unavailable": "Нема в наявності",
"Unhide Preview": "Відкрити попередній перегляд"
"Unhide Preview": "Відкрити попередній перегляд",
"Failed to set Direct Message status of room": "Не вдалось встановити статус прямого спілкування в кімнаті",
"Messages containing my display name": "Повідомлення, вміщає моє ім'я",
"Running Matrix services": "Запуск служби Matrix",
"Set Password": "Задати пароль",
"Notifications on the following keywords follow rules which cant be displayed here:": "Сповіщення з наступних ключових слів дотримуються правил, що не можуть бути показані тут:",
"To return to your account in future you need to <u>set a password</u>": "Щоб мати змогу використовувати вашу обліковку у майбутньому, <u>зазначте пароль</u>",
"Warning": "Попередження",
"Checking for an update...": "Перевірка оновлень…",
"Error encountered (%(errorDetail)s).": "Трапилась помилка (%(errorDetail)s).",
"No update available.": "Оновлення відсутні.",
"Downloading update...": "Звантажується оновлення…",
"Couldn't load home page": "Не вдалось завантажити домівку"
}

View File

@@ -4,16 +4,16 @@
"Notifications": "通知",
"OK": "确定",
"Operation failed": "操作失败",
"%(appName)s via %(browserName)s on %(osName)s": "应用%(appName)s通过%(osName)s上的%(browserName)s浏览器运行",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a><a href=\"http://opera.com\">Opera</a>均可运行。",
"%(appName)s via %(browserName)s on %(osName)s": "应用 %(appName)s 通过 %(osName)s 上的 %(browserName)s 浏览器运行",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a><a href=\"http://opera.com\">Opera</a> 均可运行。",
"A new version of Riot is available.": "Riot 有更新可用。",
"Add an email address above to configure email notifications": "请在上方输入电子邮件地址以接收邮件通知",
"Advanced notification settings": "通知高级设置",
"All messages": "全部消息",
"All messages (loud)": "全部消息(高亮)",
"All Rooms": "全部房间",
"All Rooms": "全部聊天室",
"All notifications are currently disabled for all targets.": "当前所有目标的通知均已禁用。",
"An error occurred whilst saving your email notification preferences.": "保存邮件通知偏好设定时出现错误。",
"An error occurred whilst saving your email notification preferences.": "保存邮件通知首选项设定时出现错误。",
"Call invitation": "语音邀请",
"Cancel": "取消",
"Cancel Sending": "取消发送",
@@ -21,14 +21,189 @@
"Changelog": "变更日志",
"Collecting app version information": "正在收集应用版本信息",
"Collecting logs": "正在收集日志",
"Create new room": "创建新房间",
"Couldn't find a matching Matrix room": "未找到符合的 Matrix 房间",
"Create new room": "创建新聊天室",
"Couldn't find a matching Matrix room": "未找到符合的 Matrix 聊天室",
"Custom Server Options": "自定义服务器选项",
"customServer_text": "你可以通过指定自定义服务器选项中的其他 Home server URL 来登录其他 Matrix 服务器。<br/>该选项允许你在 Riot 上使用其他 Home server 上的帐号。<br/><br/>你也可以自定义身份验证服务器,但你将不能通过邮件邀请其他用户,同样的,你也不能通过邮件被其他用户邀请。",
"customServer_text": "你可以通过指定自定义服务器选项中的其他主服务器的 URL 来登录其他 Matrix 服务器。<br/>该选项允许你在 Riot 上使用其他主服务器上的帐号。<br/><br/>你也可以自定义身份验证服务器,但你将不能通过邮件邀请其他用户,同样的,你也不能通过邮件被其他用户邀请。",
"delete the alias.": "删除别名。",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "确定要删除房间别名 %(alias)s 并将 %(name)s 从列表中删除吗?",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "确定要删除聊天室别名 %(alias)s 并将 %(name)s 从列表中删除吗?",
"Describe your problem here.": "在这里描述你的问题。",
"Directory": "房间列表",
"Directory": "聊天室目录",
"Dismiss": "设为已读",
"Download this file": "下载该文件"
"Download this file": "下载该文件",
"Collapse panel": "折叠面板",
"Direct Chat": "私聊",
"Drop here %(toAction)s": "拖拽到这里 %(toAction)s",
"Enable audible notifications in web client": "在网页客户端启用音频通知",
"Enable desktop notifications": "启用桌面通知",
"Enable email notifications": "启用电子邮件通知",
"Enable notifications for this account": "为本账号启用通知",
"Enable them now": "现在启用",
"Enter keywords separated by a comma:": "输入以逗号间隔的关键字:",
"Error": "错误",
"Error saving email notification preferences": "保存电子邮件通知的首选项时出错",
"#example": "#例子",
"Expand panel": "展开面板",
"Failed to": "失败于",
"Failed to add tag %(tagName)s to room": "无法为聊天室新增标签 %(tagName)s",
"Failed to change settings": "变更设置失败",
"Failed to forget room %(errCode)s": "无法忘记聊天室 %(errCode)s",
"Failed to update keywords": "无法更新关键字",
"Failed to get protocol list from Home Server": "无法从主服务器取得协议列表",
"Failed to get public room list": "无法取得公开的聊天室列表",
"Failed to join the room": "无法加入此聊天室",
"Failed to remove tag %(tagName)s from room": "移除聊天室标签 %(tagName)s 失败",
"Failed to send report: ": "无法发送报告: ",
"Failed to set direct chat tag": "无法设定私聊标签",
"Failed to set Direct Message status of room": "无法设置聊天室的私聊状态",
"Favourite": "收藏",
"Fetching third party location failed": "获取第三方位置失败",
"Files": "文件",
"Filter room names": "过滤聊天室名称",
"Forget": "忘记",
"Forward Message": "转发消息",
" from room": " 来自聊天室",
"Guests can join": "访客可以加入",
"Guest users can't invite users. Please register to invite.": "访客不能邀请用户,请先注册再邀请。",
"Hide panel": "隐藏面板",
"(HTTP status %(httpStatus)s)": "(HTTP 状态 %(httpStatus)s)",
"I understand the risks and wish to continue": "我了解这些风险并愿意继续",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "为了诊断问题,来自客户端的活动记录会随着这个程序 bug 报告一并发出。如果你只想送出以上文字,请取消勾选:",
"Invite to this room": "邀请加入此聊天室",
"Keywords": "关键字",
"Leave": "离开",
"Login": "登录",
"Loading bug report module": "正在载入 bug 报告模块",
"Low Priority": "低优先级",
"Members": "成员",
"Mentions only": "只限提及",
"Messages containing my display name": "消息中含有我的显示名称",
"Messages containing <span>keywords</span>": "消息包含 <span>关键字</span>",
"Messages containing my user name": "消息中包含我的用户名",
"Messages in group chats": "群组聊天中的消息",
"Messages in one-to-one chats": "一对一聊天种的消息",
"Messages sent by bot": "由机器人发出的消息",
"more": "更多",
"No rooms to show": "无聊天室",
"Noisy": "吵闹",
"Notification targets": "通知目标",
"Notifications on the following keywords follow rules which cant be displayed here:": "以下关键字依照规则将不会在此显示:",
"Notify for all other messages/rooms": "为所有其他消息/聊天室显示通知",
"Notify me for anything else": "所有消息都通知我",
"Off": "关闭",
"On": "打开",
"Permalink": "永久链接",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "请描述这个 bug您做了什么动作预期会发生的状况以及实际发生的",
"Please describe the bug and/or send logs.": "请描述这个 bug 和/或发送日志。",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "请安装 <a href=\"https://www.google.com/chrome\">Chrome</a> 或 <a href=\"https://getfirefox.com\">Firefox</a> 来得到最佳体验。",
"Please Register": "请注册",
"powered by Matrix": "由 Matrix 提供",
"Quote": "引述",
"Reject": "拒绝",
"Remove %(name)s from the directory?": "从目录中移除 %(name)s 吗?",
"Remove": "移除",
"remove %(name)s from the directory.": "从目录中移除 %(name)s。",
"Remove from Directory": "从目录中移除",
"Report a bug": "报告一个 bug",
"Resend": "重新发送",
"Riot Desktop on %(platformName)s": "Riot 桌面版在 %(platformName)s",
"Riot does not know how to join a room on this network": "Riot 不知道如何在此网络中加入聊天室",
"Riot is not supported on mobile web. Install the app?": "Riot 不支持浏览器网页,要安装 app 吗?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot 使用了许多先进的浏览器功能,有些在你目前所用的浏览器上无法使用或仅为实验性的功能。",
"Room directory": "聊天室目录",
"Room not found": "找不到聊天室",
"Search": "搜索",
"Search…": "搜索…",
"Search for a room": "搜索聊天室",
"Send": "发送",
"Send logs": "发送日志",
"Settings": "设置",
"Source URL": "源网址",
"Sorry, your browser is <b>not</b> able to run Riot.": "抱歉,您的浏览器 <b>无法</b> 运行 Riot.",
"Start chat": "开始聊天",
"The Home Server may be too old to support third party networks": "主服务器可能太老旧无法支持第三方网络",
"There are advanced notifications which are not shown here": "更多的通知并没有在此显示出来",
"The server may be unavailable or overloaded": "服务器可能无法使用或超过负载",
"This Room": "此聊天室",
"This room is inaccessible to guests. You may be able to join if you register.": "此聊天室不对访客开放,要加入须注册。",
" to room": " 到聊天室",
"Unable to fetch notification target list": "无法获取通知目标列表",
"Unable to join network": "无法加入网络",
"Unable to look up room ID from server": "无法在服务器上找到聊天室 ID",
"Unavailable": "无法获得",
"Unhide Preview": "取消隐藏预览",
"Unknown device": "未知设备",
"unknown error code": "未知错误代码",
"Unnamed room": "未命名的聊天室",
"Update": "更新",
"Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 上传",
"Uploading report": "上传报告",
"View Decrypted Source": "查看解密的来源",
"View Source": "查看来源",
"What's New": "新鲜事",
"What's new?": "有什么新闻?",
"Waiting for response from server": "正在等待来自服务器的回应",
"When I'm invited to a room": "当我被邀请进入聊天室",
"World readable": "公开可读",
"You cannot delete this image. (%(code)s)": "您不能删除这个图片。(%(code)s)",
"You cannot delete this message. (%(code)s)": "您不能删除此消息。(%(code)s)",
"You are not receiving desktop notifications": "您将不会收到桌面通知",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "您目前以访客身份使用 Riot <a>注册</a> 或 <a>登录</a> 来加入更多聊天室和特性!",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "您也许不曾在其他 Riot 之外的客户端设置它们。在 Riot 下你无法调整他们但仍然可用",
"Sunday": "星期日",
"Monday": "星期一",
"Tuesday": "星期二",
"Wednesday": "星期三",
"Thursday": "星期四",
"Friday": "星期五",
"Saturday": "星期六",
"Today": "今天",
"Yesterday": "昨天",
"Warning": "警告",
"Checking for an update...": "正在检查更新…",
"Error encountered (%(errorDetail)s).": "遇到错误 (%(errorDetail)s)。",
"No update available.": "没有可用更新。",
"Downloading update...": "正在下载更新…",
"You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 来放置屏幕分享通话。",
"Welcome page": "欢迎页面",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "您目前的浏览器,应用程序的外观和感觉完全不正确,有些或全部功能可能无法使用。如果您仍想继续尝试,可以继续,但请自行负担其后果!",
"Welcome to Riot.im": "欢迎来到 Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "去中心化,加密聊天 &amp; 由 [matrix] 提供",
"Search the room directory": "搜索聊天室目录",
"Chat with Riot Bot": "与 Riot 机器人聊天",
"Get started with some tips from Riot Bot!": "使用从 Riot 机器人学来的小窍门开始!",
"General discussion about Matrix and Riot": "关于 Matrix 与 Riot 的一般讨论",
"Discussion of all things Matrix!": "讨论所有关于 Matrix 的事情!",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; 桌面聊天",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk 聊天",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android &amp; matrix-android-sdk 聊天",
"Matrix technical discussions": "Matrix 技术讨论",
"Running Matrix services": "正在运行 Matrix 服务",
"Community-run support for Synapse": "运行 Synapse 的社区支持",
"Admin support for Dendrite": "Dendrite 的管理员支持",
"Announcements about Synapse releases": "Synapse 的发布公告",
"Support for those using and running matrix-appservice-irc": "使用与执行 matrix-appservice-irc 的支持",
"Building services on Matrix": "正在 Matrix 上建立服务",
"Support for those using the Matrix spec": "使用 Matrix 规范的支持",
"Design and implementation of E2E in Matrix": "在 Matrix 中 E2E 的设计与实现",
"Implementing VR services with Matrix": "使用 Matrix 实现虚拟现实服务",
"Implementing VoIP services with Matrix": "使用 Matrix 实现 VoIP 服务",
"Discussion of the Identity Service API": "识别服务 API 的讨论",
"Support for those using, running and writing other bridges": "那些使用、运行并撰写其他桥接应用的支持",
"Contributing code to Matrix and Riot": "贡献程序代码给 Matrix 与 Riot",
"Dev chat for the Riot/Web dev team": "Riot/Web 开发团队的开发聊天",
"Dev chat for the Dendrite dev team": "Dendrite 的开发团队的开发聊天",
"Co-ordination for Riot/Web translators": "Riot/Web 翻译者的协调区",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有许多聊天室连接到已有的网络Slack、IRC 与 Gitter 等)或独立的网络,请查看目录!",
"Failed to change password. Is your password correct?": "修改密码失败。确认原密码输入正确吗?",
"You have successfully set a password!": "您已成功设置密码!",
"You can now return to your account after signing out, and sign in on other devices.": "您可以在注销后回到您的账号,并在其他设备上登录。",
"Continue": "继续",
"Please set a password!": "请设置密码!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "这让您可以在注销后回到您的账号,并在其他设备上登录。",
"You have successfully set a password and an email address!": "您已经成功设置了密码和电子邮件地址!",
"Remember, you can always set an email address in user settings if you change your mind.": "请记住,如果您改变想法,您永远可以在用户设置中设置电子邮件。",
"To return to your account in future you need to <u>set a password</u>": "要在未来回到您的账号,您需要 <u>设置密码</u>",
"Set Password": "设置密码",
"Couldn't load home page": "不能加载首页"
}

View File

@@ -1,48 +1,48 @@
{
"Direct Chat": "私",
"Drop here %(toAction)s": "拖到這 %(toAction)s",
"Direct Chat": "私人聊天",
"Drop here %(toAction)s": "拖到這 %(toAction)s",
"Error": "錯誤",
"Failed to forget room %(errCode)s": "無法忘記聊天室 %(errCode)s",
"Failed to join the room": "無法加入此聊天室",
"Favourite": "收藏",
"Search": "搜",
"Settings": "設",
"Favourite": "我的最愛",
"Search": "搜",
"Settings": "設",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s 透過 %(browserName)s 在 %(osName)s",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> 與 <a href=\"http://opera.com\">Opera</a> 也能使用。",
"Advanced notification settings": "進階通知設定",
"All messages": "所有訊息",
"All messages (loud)": "所有訊息 (loud)",
"All messages (loud)": "所有訊息(吵鬧)",
"All Rooms": "所有的聊天室",
"Call invitation": "通話邀請",
"Cancel": "取消",
"Cancel Sending": "取消傳送",
"Can't update user notification settings": "無法更新用戶的通知設定",
"Can't update user notification settings": "無法更新使用者的通知設定",
"Changelog": "變更記錄",
"Close": "關閉",
"Collapse panel": "閤上面版",
"Collapse panel": "摺疊面板",
"Collecting logs": "收集記錄",
"Create new room": "開設新聊天室",
"Create new room": "建立新聊天室",
"Couldn't find a matching Matrix room": "不能找到符合 Matrix 的聊天室",
"Custom Server Options": "自伺服器選項",
"delete the alias.": "刪除別名",
"Describe your problem here.": "在此描述你的問題",
"Custom Server Options": "自伺服器選項",
"delete the alias.": "刪除別名",
"Describe your problem here.": "在此描述你的問題",
"Directory": "目錄",
"Dismiss": "無視",
"Download this file": "下載這個檔案",
"Enable desktop notifications": "啟用桌面通知",
"Enable email notifications": "啟用電通知",
"Enable email notifications": "啟用電子郵件通知",
"Enable notifications for this account": "本帳號啟用通知",
"Enable them now": "現在啟用它們",
"#example": "#例",
"Expand panel": "擴充面版",
"#example": "#例",
"Expand panel": "展開面板",
"Failed to": "失敗於",
"Failed to change settings": "變更設定失敗",
"Failed to update keywords": "無法更新關鍵字",
"Members": "成員",
"Mentions only": "只有提到",
"Mentions only": "僅提及",
"Messages containing my display name": "訊息中有包含我的顯示名稱",
"Messages containing <span>keywords</span>": "訊息包含 <span>關鍵字</span>",
"Messages containing my user name": "訊息中有我的用戶名",
"Messages containing my user name": "訊息中有我的使用者名稱",
"Messages in group chats": "在群組聊天中的訊息",
"Messages in one-to-one chats": "在一對一聊天中的訊息",
"Messages sent by bot": "由機器人送出的訊息",
@@ -54,38 +54,38 @@
"Off": "關閉",
"On": "開啟",
"Operation failed": "操作失敗",
"powered by Matrix": "由Matrix架設",
"powered by Matrix": "由 Matrix 架設",
"Quote": "引述",
"Remove": "移除",
"Resend": "重新送",
"Resend": "重新送",
"Room directory": "聊天室目錄",
"Room not found": "找到聊天室",
"Search…": "搜尋...",
"Room not found": "找到聊天室",
"Search…": "搜尋",
"Search for a room": "搜尋聊天室",
"Send": "送",
"Send logs": "送記錄",
"Send": "送",
"Send logs": "送記錄",
"Source URL": "來源網址",
"Start chat": "開始聊天",
"This Room": "這個聊天室",
"This room is inaccessible to guests. You may be able to join if you register.": "這個聊天室不對訪客開放,要加入須先註冊。",
" to room": "到聊天室",
" to room": " 到聊天室",
"Unable to join network": "無法加入網路",
"Unable to look up room ID from server": "無法從伺服器找到聊天室 ID",
"Unavailable": "無法取得",
"Unhide Preview": "隱藏預覽",
"Unknown device": "不知名的設備",
"Unhide Preview": "取消隱藏預覽",
"Unknown device": "未知裝置",
"unknown error code": "未知的錯誤代碼",
"Unnamed room": "無名的聊天室",
"Unnamed room": "無名的聊天室",
"Update": "更新",
"Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 更新",
"Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 上傳",
"Uploading report": "上傳報告",
"View Decrypted Source": "檢解密的來源",
"View Source": "檢來源",
"View Decrypted Source": "檢解密的來源",
"View Source": "檢來源",
"What's New": "新鮮事",
"What's new?": "有什麼新聞?",
"Waiting for response from server": "等候來自伺服器的回應",
"Waiting for response from server": "正在等待來自伺服器的回應",
"When I'm invited to a room": "當我被邀請加入聊天室",
"You cannot delete this message. (%(code)s)": "你不能刪除這個訊息 (%(code)s)",
"You cannot delete this message. (%(code)s)": "你不能刪除這個訊息(%(code)s)",
"Sunday": "星期日",
"Monday": "星期一",
"Tuesday": "星期二",
@@ -95,70 +95,116 @@
"Saturday": "星期六",
"Today": "今天",
"Yesterday": "昨天",
"OK": "OK",
"You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來置放畫面分享的通話。",
"Welcome page": "歡迎頁",
"A new version of Riot is available.": "Riot 發佈了新版本",
"Add an email address above to configure email notifications": "在上面新增電子郵件以設定電通知",
"All notifications are currently disabled for all targets.": "目前所有的通知功能已取消",
"An error occurred whilst saving your email notification preferences.": "在儲存你的電通知偏好時發生錯誤",
"OK": "確定",
"You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來放置螢幕分享的通話。",
"Welcome page": "歡迎頁",
"A new version of Riot is available.": "Riot 釋出了新版本",
"Add an email address above to configure email notifications": "在上面新增電子郵件以設定電子郵件通知",
"All notifications are currently disabled for all targets.": "目前所有的通知功能已停用。",
"An error occurred whilst saving your email notification preferences.": "在儲存你的電子郵件通知偏好時發生錯誤",
"Collecting app version information": "收集應用程式版本資訊",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "刪除聊天室別名 %(alias)s並從目錄移除 %(name)s",
"Enable audible notifications in web client": "在網頁客戶端設定聲音通知",
"Enter keywords separated by a comma:": "輸入關鍵字以逼號,區隔",
"Error saving email notification preferences": "儲存電通知偏好時出錯",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "刪除聊天室別名 %(alias)s 並從目錄移除 %(name)s",
"Enable audible notifications in web client": "在網頁客戶端啟用音訊通知",
"Enter keywords separated by a comma:": "輸入以逗號隔開的關鍵字:",
"Error saving email notification preferences": "儲存電子郵件通知偏好設定時出錯",
"Failed to add tag %(tagName)s to room": "無法為聊天室新增標籤 %(tagName)s",
"Failed to get protocol list from Home Server": "無法從主機伺服器取得協清單",
"Failed to get protocol list from Home Server": "無法從主機伺服器取得協清單",
"Failed to get public room list": "無法取得公開的聊天室清單",
"Failed to remove tag %(tagName)s from room": "移除聊天室的標籤 %(tagName)s 失敗",
"Failed to send report: ": "無法傳送報告:",
"Failed to set direct chat tag": "無法設定直接聊天標籤",
"Failed to set Direct Message status of room": "無法設定聊天室的私狀態",
"Failed to send report: ": "無法傳送報告 ",
"Failed to set direct chat tag": "無法設定私人聊天標籤",
"Failed to set Direct Message status of room": "無法設定聊天室的私人訊息狀態",
"Fetching third party location failed": "抓取第三方位置失敗",
"Files": "檔案",
"Filter room names": "過濾聊天室名稱",
"Forget": "忘記",
"Forward Message": "轉寄訊息",
" from room": "來自聊天室",
" from room": " 來自聊天室",
"Guests can join": "訪客可以加入",
"Guest users can't invite users. Please register to invite.": "訪客不能邀請用戶,請先註冊再邀請。",
"Guest users can't invite users. Please register to invite.": "訪客不能邀請使用者,請先註冊再邀請。",
"Hide panel": "隱藏面板",
"I understand the risks and wish to continue": "我了解這些風險並願意繼續",
"Invite to this room": "邀請加入這個聊天室",
"Keywords": "關鍵字",
"Leave": "離開",
"Loading bug report module": "載入程式臭蟲報告模組",
"Low Priority": "低優先",
"Notify for all other messages/rooms": "通知所有其它的訊息/聊天室",
"Loading bug report module": "正在載入程式臭蟲報告模組",
"Low Priority": "低優先",
"Notify for all other messages/rooms": "通知其他所有的訊息/聊天室",
"Notify me for anything else": "所有消息都通知我",
"Permalink": "永久鏈接",
"Permalink": "永久連結",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "諘安裝 <a href=\"https://www.google.com/chrome\">Chrome</a> 或 <a href=\"https://getfirefox.com\">Firefox</a> 來取得最佳體驗。",
"Please Register": "請註冊",
"Redact": "纂輯\t",
"Reject": "拒絕",
"Remove %(name)s from the directory?": "自目錄中移除 %(name)s",
"remove %(name)s from the directory.": "自目錄中移除 %(name)s",
"remove %(name)s from the directory.": "自目錄中移除 %(name)s",
"Remove from Directory": "自目錄中移除",
"Report a bug": "回報程式臭蟲",
"Riot Desktop on %(platformName)s": "Riot 在 %(platformName)s 桌面",
"Riot Desktop on %(platformName)s": "Riot 桌面版在 %(platformName)s",
"Riot does not know how to join a room on this network": "Riot 不知道如何在此網路中加入聊天室",
"Sorry, your browser is <b>not</b> able to run Riot.": "可惜的瀏覽器 <b>無法</b> 執行 Riot.",
"Sorry, your browser is <b>not</b> able to run Riot.": "可惜,您的瀏覽器 <b>無法</b> 執行 Riot.",
"The Home Server may be too old to support third party networks": "主機伺服器可能太老舊無法支援第三方網路",
"The server may be unavailable or overloaded": "伺服器可能過載或無法連取",
"The server may be unavailable or overloaded": "伺服器可能無法使用或是超過負載",
"Unable to fetch notification target list": "無法抓取通知的目標清單",
"customServer_text": "你可以使用自伺服器選項來登入其它的 Matrix 伺服器,只要在在主機伺服器網址上指定其網址資料。<br/>這可讓你透過已有的 Matrix 帳號在不同的主機伺服器上使用 Riot。<br/><br/>你也可以設定自定的識別伺服器但你將無法透過電子郵件來邀請用戶或是以自己的電子郵件來接受別人的邀請。",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "為了診斷問題,來自客戶的活動記錄會隨著這個程式臭蟲報告一起送出。如果你只想送出以上文字,請取消勾選:",
"Notification targets": "通知標",
"customServer_text": "你可以使用自伺服器選項來登入其它的 Matrix 伺服器,只要在在主機伺服器網址上指定其網址資料。<br/>這可讓你透過已有的 Matrix 帳號在不同的主機伺服器上使用 Riot。<br/><br/>你也可以設定自定的識別伺服器但你將無法透過電子郵件來邀請用戶或是以自己的電子郵件來接受別人的邀請。",
"In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "為了診斷問題,來自客戶的活動記錄會隨著這個程式臭蟲報告一起送出。如果你只想送出以上文字,請取消勾選:",
"Notification targets": "通知標",
"Notifications on the following keywords follow rules which cant be displayed here:": "以下關鍵字依照規則其通知將不會顯示在此:",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "請描述這個程式臭蟲,你作了什麼動作?預期會發生什麼狀況?以及實際發生的狀況為何?",
"Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "請描述這個程式臭蟲,您做了什麼動作?預期會發生什麼狀況?以及實際發生的狀況為何?",
"Please describe the bug and/or send logs.": "請描述這個程式臭蟲以及/或送出活動記錄。",
"Riot is not supported on mobile web. Install the app?": "Riot 不支援行動網頁,要下載應用程式嗎?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Roit 使用了許多先進的瀏覽器功能,有些在你目前所用的瀏覽器上無法使用或僅為試驗效能。",
"There are advanced notifications which are not shown here": "有些進階的通知並未在此顯",
"World readable": "全世界可讀",
"You cannot delete this image. (%(code)s)": "你不能刪除這個圖片(%(code)s)",
"Riot is not supported on mobile web. Install the app?": "Riot 不支援行動網頁,要安裝應用程式嗎?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Roit 使用了許多先進的瀏覽器功能,有些在你目前所用的瀏覽器上無法使用或僅為實驗中的功能。",
"There are advanced notifications which are not shown here": "有些進階的通知並未在此顯",
"World readable": "公開可讀",
"You cannot delete this image. (%(code)s)": "你不能刪除這個圖片(%(code)s)",
"You are not receiving desktop notifications": "你將不會收到桌面通知",
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "你目前以訪客身份使用 Riot <a>註冊</a> 或 <a>登</a> 來使用更多聊天室和功能!",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "你也許不曾在其它Riot之外的客戶端設定它們在 Riot底下你無法調它們但其仍然可用",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "目前的瀏覽器,其應用程式的外觀和感覺可能完全不正確,有些或全部功能可以無法使用。如果仍想試,可以繼續但得自負後果。"
"You are Rioting as a guest. <a>Register</a> or <a>sign in</a> to access more rooms and features!": "你目前以訪客身份使用 Riot <a>註冊</a> 或 <a>登</a> 來使用更多聊天室和功能!",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "你也許不曾在其它 Riot 之外的客戶端設定它們在 Riot 底下你無法調它們但其仍然可用",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "目前的瀏覽器,其應用程式的外觀和感覺可能完全不正確,有些或全部功能可以無法使用。如果仍想要繼續嘗試,可以繼續,但必須自行承擔後果!",
"(HTTP status %(httpStatus)s)": "(HTTP 狀態 %(httpStatus)s)",
"Login": "登入",
"Warning": "警告",
"Checking for an update...": "正在檢查更新...",
"Error encountered (%(errorDetail)s).": "遇到錯誤 (%(errorDetail)s)。",
"No update available.": "沒有可用的更新。",
"Downloading update...": "正在下䵧更新...",
"Welcome to Riot.im": "歡迎來到 Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "去中心化、加密聊天 &amp; 由 [matrix] 提供協作",
"Search the room directory": "搜尋聊天室目錄",
"Chat with Riot Bot": "與 Riot 機器人聊天",
"Get started with some tips from Riot Bot!": "使用從 Riot 機器人來的一些訣竅開始!",
"General discussion about Matrix and Riot": "關於 Matrix 與 Riot 的一般討論",
"Discussion of all things Matrix!": "討論所有關於 Matrix 的事情!",
"Riot/Web &amp; Desktop chat": "Riot/網路 &amp; 桌面聊天",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk 聊天",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android &amp; matrix-android-sdk 聊天",
"Matrix technical discussions": "Matrix 技術討論",
"Running Matrix services": "正在執行 Matrix 服務",
"Community-run support for Synapse": "Synapse 的社群支援",
"Admin support for Dendrite": "Dendrite 的管理員支援",
"Announcements about Synapse releases": "關於 Synapse 釋出的公告",
"Support for those using and running matrix-appservice-irc": "使用與執行 matrix-appservice-irc 的支援",
"Building services on Matrix": "正在 Matrix 上建立服務",
"Support for those using the Matrix spec": "那些使用 Matrix 規範的支援",
"Design and implementation of E2E in Matrix": "在 Matrix 中 E2E 的設計與實作",
"Implementing VR services with Matrix": "使用 Matrix 實作虛擬實境服務",
"Implementing VoIP services with Matrix": "使用 Matrix 實作 VoIP 服務",
"Discussion of the Identity Service API": "識別服務 API 的討論",
"Support for those using, running and writing other bridges": "那些使用、執行與撰寫其他橋接的支援",
"Contributing code to Matrix and Riot": "貢獻程式碼給 Matrix 與 Riot",
"Dev chat for the Riot/Web dev team": "Riot/Web 開發團隊的開發聊天",
"Dev chat for the Dendrite dev team": "Dendrite 開發團隊的開發聊天",
"Co-ordination for Riot/Web translators": "Riot/Web 翻譯者的協調區",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有許多聊天室連結到已有的網路Slack、IRC 與 Gitter 等等)或是獨立的網路。看看目錄!",
"Failed to change password. Is your password correct?": "變更密碼失敗。您的密碼正確嗎?",
"You have successfully set a password!": "您已經成功設定密碼!",
"You can now return to your account after signing out, and sign in on other devices.": "您可以在登出後回到您的帳號,並在其他裝置上登入。",
"Continue": "繼續",
"Please set a password!": "請設定密碼!",
"This will allow you to return to your account after signing out, and sign in on other devices.": "這讓您可以在登入後回到您帳號,並在其他裝置上登入。",
"You have successfully set a password and an email address!": "您已經成功設定密碼與電子郵件地址!",
"Remember, you can always set an email address in user settings if you change your mind.": "記住,如果您改變心意了,您永遠可以在使用者設定中設定電子郵件地址。",
"To return to your account in future you need to <u>set a password</u>": "要在未來回到您的帳號,您需要 <u>設定密碼</u>",
"Set Password": "設定密碼",
"Couldn't load home page": "無法載入首頁"
}

View File

@@ -306,3 +306,24 @@ textarea {
.changelog_text {
font-family: 'Open Sans', Arial, Helvetica, Sans-Serif;
}
.mx_Beta {
color: red;
margin-right: 10px;
position: relative;
top: -3px;
background-color: white;
padding: 0 4px;
border-radius: 3px;
border: 1px solid darkred;
cursor: help;
transition-duration: 200ms;
font-size: smaller;
filter: opacity(0.5);
}
.mx_Beta:hover {
color: white;
border: 1px solid gray;
background-color: darkred;
}

View File

@@ -3,8 +3,10 @@
@import "./matrix-react-sdk/structures/_ContextualMenu.scss";
@import "./matrix-react-sdk/structures/_CreateRoom.scss";
@import "./matrix-react-sdk/structures/_FilePanel.scss";
@import "./matrix-react-sdk/structures/_GroupView.scss";
@import "./matrix-react-sdk/structures/_LoginBox.scss";
@import "./matrix-react-sdk/structures/_MatrixChat.scss";
@import "./matrix-react-sdk/structures/_MyGroups.scss";
@import "./matrix-react-sdk/structures/_NotificationPanel.scss";
@import "./matrix-react-sdk/structures/_RoomStatusBar.scss";
@import "./matrix-react-sdk/structures/_RoomView.scss";
@@ -17,6 +19,7 @@
@import "./matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_CreateGroupDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss";
@@ -38,6 +41,7 @@
@import "./matrix-react-sdk/views/messages/_RoomAvatarEvent.scss";
@import "./matrix-react-sdk/views/messages/_TextualEvent.scss";
@import "./matrix-react-sdk/views/messages/_UnknownBody.scss";
@import "./matrix-react-sdk/views/rooms/_AppsDrawer.scss";
@import "./matrix-react-sdk/views/rooms/_Autocomplete.scss";
@import "./matrix-react-sdk/views/rooms/_EntityTile.scss";
@import "./matrix-react-sdk/views/rooms/_EventTile.scss";
@@ -53,7 +57,6 @@
@import "./matrix-react-sdk/views/rooms/_RoomSettings.scss";
@import "./matrix-react-sdk/views/rooms/_RoomTile.scss";
@import "./matrix-react-sdk/views/rooms/_SearchableEntityList.scss";
@import "./matrix-react-sdk/views/rooms/_TabCompleteBar.scss";
@import "./matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss";
@import "./matrix-react-sdk/views/settings/_DevicesPanel.scss";
@import "./matrix-react-sdk/views/settings/_IntegrationsManager.scss";

View File

@@ -0,0 +1,157 @@
/*
Copyright 2017 Vector Creations Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_GroupView {
max-width: 960px;
width: 100%;
}
.mx_GroupView_error {
margin: auto;
}
.mx_GroupView_header {
max-width: 960px;
margin: auto;
height: 70px;
align-items: center;
display: flex;
margin-bottom: 20px;
}
.mx_GroupView_header_view {
border-bottom: 1px solid #e5e5e5;
}
.mx_GroupView_header_avatar, .mx_GroupView_header_info {
display: table-cell;
vertical-align: middle;
}
.mx_GroupHeader_button {
margin-left: 12px;
cursor: pointer;
}
.mx_GroupHeader_button object {
// prevents clicks from being swallowed by svg in 'object' tag
pointer-events: none;
}
.mx_GroupView_avatarPicker {
position: relative;
}
.mx_GroupView_avatarPicker_edit {
position: absolute;
top: 50px;
left: 15px;
}
.mx_GroupView_avatarPicker .mx_Spinner {
width: 48px;
height: 48px ! important;
}
.mx_GroupView_header_leftCol {
flex: 1;
}
.mx_GroupView_saveButton, .mx_GroupView_cancelButton {
display: table-cell;
}
.mx_GroupView_header_groupid {
font-weight: normal;
font-size: initial;
padding-left: 10px;
}
.mx_GroupView_header_name {
vertical-align: middle;
width: 100%;
height: 31px;
overflow: hidden;
color: $primary-fg-color;
font-weight: bold;
font-size: 22px;
padding-left: 19px;
padding-right: 16px;
/* why isn't text-overflow working? */
text-overflow: ellipsis;
border-bottom: 1px solid transparent;
}
.mx_GroupView_header_name input, .mx_GroupView_header_shortDesc input {
width: 400px;
}
.mx_GroupView_header_shortDesc {
vertical-align: bottom;
float: left;
max-height: 42px;
color: $settings-grey-fg-color;
font-weight: 300;
font-size: 13px;
padding-left: 19px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
border-bottom: 1px solid transparent;
}
.mx_GroupView_avatarPicker_label {
cursor: pointer;
}
.mx_GroupView_cancelButton {
padding-left: 8px;
}
.mx_GroupView_cancelButton img {
position: relative;
top: 5px;
}
.mx_GroupView_featuredThings {
margin-top: 20px;
}
.mx_GroupView_featuredThings_header {
font-weight: bold;
font-size: 120%;
margin-bottom: 20px;
}
.mx_GroupView_featuredThings_category {
font-weight: bold;
font-size: 110%;
margin-top: 10px;
}
.mx_GroupView_featuredThing {
cursor: pointer;
display: table-cell;
}
.mx_GroupView_uploadInput {
display: none;
}
.mx_GroupView_editLongDesc {
width: 100%;
height: 150px;
}

View File

@@ -0,0 +1,44 @@
/*
Copyright 2017 Vector Creations Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_MyGroups_joinCreateBox {
display: table;
margin-bottom: 30px;
}
.mx_MyGroups_createBox, .mx_MyGroups_joinBox {
display: table-cell;
width: 40%;
}
.mx_MyGroups_joinCreateHeader {
font-weight: bold;
margin-bottom: 10px;
}
.mx_MyGroups_joinCreateButton {
float: left;
margin: 10px;
}
.mx_MyGroups_joinCreateButton object {
/* Otherwise the SVG object absorbs clicks and the button doesn't work */
pointer-events: none;
}
.mx_MyGroups_content {
clear: left;
}

View File

@@ -140,11 +140,6 @@ limitations under the License.
cursor: pointer;
}
.mx_RoomStatusBar_tabCompleteBar {
padding-top: 10px;
color: $primary-fg-color;
}
.mx_RoomStatusBar_typingBar {
height: 50px;
line-height: 50px;
@@ -155,26 +150,6 @@ limitations under the License.
display: block;
}
.mx_RoomStatusBar_tabCompleteWrapper {
display: flex;
height: 26px;
}
.mx_RoomStatusBar_tabCompleteWrapper .mx_TabCompleteBar {
flex: 1 1 auto;
}
.mx_RoomStatusBar_tabCompleteEol {
flex: 0 0 auto;
color: $accent-color;
}
.mx_RoomStatusBar_tabCompleteEol object {
vertical-align: middle;
margin-right: 8px;
margin-top: -2px;
}
.mx_MatrixChat_useCompactLayout {
.mx_RoomStatusBar {
min-height: 40px;

View File

@@ -76,6 +76,10 @@ limitations under the License.
flex: 0 0 auto;
}
.mx_RoomView_auxPanel_apps {
max-width: 1920px ! important;
}
.mx_RoomView_topUnreadMessagesBar {
order: 3;
}

View File

@@ -102,6 +102,13 @@ limitations under the License.
padding-right: 1em;
}
.mx_UserSettings_passwordWarning {
/* To move the "Sign out" button out of the way */
clear: both;
color: $warning-color;
margin-bottom: 5px;
}
.mx_UserSettings_importExportButtons {
padding-top: 10px;
padding-left: 40px;

View File

@@ -265,3 +265,16 @@ limitations under the License.
margin: 3px;
vertical-align: top;
}
.mx_Login_language {
margin-left: auto;
margin-right: auto;
min-width: 60%;
}
.mx_Login_language_div {
display: flex;
margin-top: 12px;
margin-bottom: 12px;
}

View File

@@ -20,6 +20,7 @@ limitations under the License.
.mx_BaseAvatar_initial {
position: absolute;
left: 0px;
color: $avatar-initial-color;
text-align: center;
speak: none;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,17 +14,22 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
.mx_CreateGroupDialog_inputRow {
margin-top: 10px;
margin-bottom: 10px;
}
var POKE_RATE_MS = 10 * 60 * 1000; // 10 min
.mx_CreateGroupDialog_label {
text-align: left;
padding-bottom: 12px;
}
module.exports = {
start: function() {
module.exports.poll();
setInterval(module.exports.poll, POKE_RATE_MS);
},
.mx_CreateGroupDialog_input {
font-size: 15px;
border-radius: 3px;
border: 1px solid $input-border-color;
padding: 9px;
color: $primary-fg-color;
background-color: $primary-bg-color;
}
poll: function() {
PlatformPeg.get().pollForUpdate();
}
};

View File

@@ -50,11 +50,22 @@ limitations under the License.
}
.mx_MatrixChat_useCompactLayout {
.mx_MemberEventListSummary {
font-size: 13px;
.mx_EventTile_line {
line-height: 20px;
}
}
.mx_MemberEventListSummary_line {
line-height: 22px;
}
.mx_MemberEventListSummary_toggle {
margin-top: 2px;
margin-top: 3px;
}
.mx_TextualEvent.mx_MemberEventListSummary_summary {
font-size: 13px;
}
}

View File

@@ -2,19 +2,47 @@
// naming scheme; it's completely unclear where or how they're being used
// --Matthew
.mx_UserPill {
color: white;
background-color: $accent-color;
padding: 2px 8px;
.mx_UserPill,
.mx_RoomPill {
border-radius: 16px;
display: inline-block;
height: 20px;
line-height: 20px;
padding-left: 5px;
}
.mx_EventTile_body .mx_UserPill,
.mx_EventTile_body .mx_RoomPill {
cursor: pointer;
}
/* More specific to override `.markdown-body a` color */
.mx_EventTile_content .markdown-body a.mx_UserPill,
.mx_UserPill {
color: $primary-fg-color;
background-color: $other-user-pill-bg-color;
padding-right: 5px;
}
.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me {
color: $accent-fg-color;
background-color: $mention-user-pill-bg-color;
padding-right: 5px;
}
/* More specific to override `.markdown-body a` color */
.mx_EventTile_content .markdown-body a.mx_RoomPill,
.mx_RoomPill {
background-color: white;
color: $accent-color;
border: 1px solid $accent-color;
padding: 2px 8px;
border-radius: 16px;
color: $accent-fg-color;
background-color: $rte-room-pill-color;
padding-right: 5px;
}
.mx_UserPill .mx_BaseAvatar,
.mx_RoomPill .mx_BaseAvatar {
position: relative;
left: -3px;
top: 2px;
}
.mx_Markdown_BOLD {

View File

@@ -14,6 +14,10 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_MEmoteBody {
white-space: pre-wrap;
}
.mx_MEmoteBody_sender {
cursor: pointer;
}

View File

@@ -0,0 +1,237 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_AppsDrawer {
margin-bottom: 3px;
}
.mx_AppsContainer {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.mx_AddWidget_button {
order: 2;
cursor: pointer;
padding-right: 12px;
padding: 0;
margin: 5px auto 5px auto;
color: $accent-color;
font-size: 12px;
}
.mx_AddWidget_button_full_width {
max-width: 960px;
}
.mx_SetAppURLDialog_input {
border-radius: 3px;
border: 1px solid $input-border-color;
padding: 9px;
color: $primary-hairline-color;
background-color: $primary-bg-color;
font-size: 15px;
}
.mx_AppTile {
max-width: 960px;
width: 50%;
margin: 0 5px 2px 0;
border: 1px solid $primary-hairline-color;
border-radius: 2px;
// height: 350px;
// display: inline-block;
}
.mx_AppTileFullWidth {
max-width: 960px;
width: 100%;
margin: 0;
padding: 0;
border: 1px solid $primary-hairline-color;
border-radius: 2px;
// height: 350px;
// display: inline-block;
}
.mx_AppTileMenuBar {
// height: 15px;
margin: 0;
padding: 2px 10px;
// background-color: $e2e-verified-color;
// border-bottom: 1px solid $primary-hairline-color;
font-size: 10px;
}
.mx_AppTileMenuBarWidgets {
float: right;
}
.mx_AppTileMenuBarWidget {
// pointer-events: none;
cursor: pointer;
width: 10px;
height: 10px;
padding: 1px;
transition-duration: 500ms;
border: 1px solid transparent;
}
.mx_AppTileMenuBarWidgetDelete {
filter: none;
}
.mx_AppTileMenuBarWidget:hover {
border: 1px solid $primary-hairline-color;
border-radius: 2px;
}
.mx_AppTileBody{
height: 350px;
width: 100%;
overflow: hidden;
}
.mx_AppTileBody iframe {
width: 100%;
height: 350px;
overflow: hidden;
border: none;
padding: 0;
margin: 0;
display: block;
}
.mx_CloseAppWidget {
}
.mx_AppTileMenuBarWidgetPadding {
margin-right: 5px;
}
.mx_AppIconTile {
background-color: $lightbox-bg-color;
border: 1px solid rgba(0, 0, 0, 0);
width: 200px;
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
transition: 0.3s;
border-radius: 3px;
margin: 5px;
display: inline-block;
}
.mx_AppIconTile.mx_AppIconTile_active {
color: $accent-color;
border-color: $accent-color;
}
.mx_AppIconTile:hover {
border: 1px solid $accent-color;
box-shadow: 0 0 10px 5px rgba(200,200,200,0.5);
}
.mx_AppIconTile_content {
padding: 2px 16px;
height: 60px;
overflow: hidden;
}
.mx_AppIconTile_content h4 {
margin-top: 5px;
margin-bottom: 2px;
}
.mx_AppIconTile_content p {
margin-top: 0;
margin-bottom: 5px;
font-size: smaller;
}
.mx_AppIconTile_image {
padding: 10px;
width: 75%;
max-width:100px;
max-height:100px;
width: auto;
height: auto;
}
.mx_AppIconTile_imageContainer {
text-align: center;
width: 100%;
background-color: white;
border-radius: 3px 3px 0 0;
height: 155px;
display: flex;
justify-content: center;
align-items: center;
}
form.mx_Custom_Widget_Form div {
margin-top: 10px;
margin-bottom: 10px;
}
.mx_AppPermissionWarning {
text-align: center;
padding: 30px 0;
background-color: $primary-bg-color;
}
.mx_AppPermissionWarningImage {
margin: 10px 0;
}
.mx_AppPermissionWarningImage img {
width: 100px;
}
.mx_AppPermissionWarningText {
max-width: 400px;
margin: 10px auto 10px auto;
color: $primary-fg-color;
}
.mx_AppPermissionWarningTextLabel {
font-weight: bold;
display: block;
}
.mx_AppPermissionWarningTextURL {
color: $accent-color;
}
.mx_AppPermissionButton {
padding: 5px;
border-radius: 5px;
color: $warning-color;
background-color: $primary-bg-color;
}
.mx_AppPermissionButton:hover {
background-color: $primary-fg-color;
cursor: pointer;
}
.mx_AppLoading {
min-height: 305px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-weight: bold;
}

View File

@@ -38,6 +38,7 @@
.mx_Autocomplete_Completion_pill {
border-radius: 17px;
height: 34px;
padding: 0px 5px;
display: flex;
user-select: none;
cursor: pointer;
@@ -45,10 +46,22 @@
color: $primary-fg-color;
}
.mx_Autocomplete_Completion_pill * {
.mx_Autocomplete_Completion_pill > * {
margin: 0 3px;
}
.mx_Autocomplete_Completion_container_truncate {
.mx_Autocomplete_Completion_title,
.mx_Autocomplete_Completion_subtitle,
.mx_Autocomplete_Completion_description {
/* Ellipsis for long names/subtitles/descriptions*/
max-width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
/* container for pill-style completions */
.mx_Autocomplete_Completion_container_pill {
margin: 12px;

View File

@@ -128,6 +128,12 @@ limitations under the License.
color: $event-sending-color;
}
.mx_EventTile_sending .mx_UserPill,
.mx_EventTile_sending .mx_RoomPill,
.mx_EventTile_sending .mx_emojione {
opacity: 0.5;
}
.mx_EventTile_notSent {
color: $event-notsent-color;
}
@@ -316,7 +322,7 @@ limitations under the License.
font-family: inherit ! important;
white-space: normal ! important;
line-height: inherit ! important;
color: inherit;
color: inherit; // inherit the colour from the dark or light theme by default (but not for code blocks)
font-size: 14px;
}
@@ -330,8 +336,11 @@ limitations under the License.
}
.mx_EventTile_content .markdown-body code {
// deliberate constants as we're behind an invert filter
background-color: #f8f8f8;
color: #333;
}
.mx_EventTile_copyButton {
position: absolute;
display: inline-block;
@@ -343,14 +352,17 @@ limitations under the License.
height: 19px;
background-image: url($copy-button-url);
}
.mx_EventTile_body pre {
position: relative;
border: 1px solid transparent;
}
.mx_EventTile:hover .mx_EventTile_body pre
{
border: 1px solid $primary-hairline-color;
border: 1px solid #e5e5e5; // deliberate constant as we're behind an invert filter
}
.mx_EventTile_body pre:hover .mx_EventTile_copyButton
{
visibility: visible;
@@ -364,6 +376,7 @@ limitations under the License.
.mx_EventTile_content .markdown-body h6
{
font-family: inherit ! important;
color: inherit;
}
@@ -390,7 +403,15 @@ limitations under the License.
}
.mx_EventTile.mx_EventTile_info {
// same as the padding for non-compact .mx_EventTile.mx_EventTile_info
padding-top: 0px;
font-size: 13px;
.mx_EventTile_line {
line-height: 20px;
}
.mx_EventTile_avatar {
top: 4px;
}
}
.mx_EventTile .mx_SenderProfile {
@@ -398,6 +419,7 @@ limitations under the License.
}
.mx_EventTile.mx_EventTile_emote {
// add a bit more space for emotes so that avatars don't collide
padding-top: 8px;
.mx_EventTile_avatar {
top: 2px;
@@ -425,10 +447,6 @@ limitations under the License.
top: 2px;
}
.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar {
top: 5px;
}
.mx_EventTile_e2eIcon {
top: 7px;
}
@@ -442,12 +460,21 @@ limitations under the License.
}
.mx_EventTile_continuation .mx_EventTile_readAvatars,
.mx_EventTile_info .mx_EventTile_readAvatars,
.mx_EventTile_emote .mx_EventTile_readAvatars {
top: 5px;
}
.mx_EventTile_info .mx_EventTile_readAvatars {
top: 4px;
}
.mx_RoomView_MessageList h2 {
margin-top: 6px;
}
.mx_EventTile_content .markdown-body {
p, ul, ol, dl, blockquote, pre, table {
margin-bottom: 4px; // 1/4 of the non-compact margin-bottom
}
}
}

View File

@@ -18,6 +18,12 @@ limitations under the License.
padding: 10px 0px;
}
.mx_MemberDeviceInfo.mx_DeviceVerifyButtons {
padding: 6px 0;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.mx_MemberDeviceInfo_textButton {
color: $accent-fg-color;
@@ -26,12 +32,11 @@ limitations under the License.
text-align: center;
padding-left: 1em;
padding-right: 1em;
width: 95px;
border: 0px;
font-size: 14px;
cursor: pointer;
display: inline;
margin: 2px;
flex: 1;
}
.mx_MemberDeviceInfo_deviceId {
@@ -44,11 +49,6 @@ limitations under the License.
border-bottom: 1px solid rgba(0,0,0,0.1);
}
.mx_MemberDeviceInfo_blacklist,
.mx_MemberDeviceInfo_unblacklist {
float: right;
}
/* "Unblacklist" is too long for a regular button: make it wider and
reduce the padding. */
.mx_EncryptedEventDialog .mx_MemberDeviceInfo_blacklist,

View File

@@ -78,6 +78,16 @@ limitations under the License.
margin-right: 6px;
}
@keyframes visualbell
{
from { background-color: #faa }
to { background-color: $primary-bg-color }
}
.mx_MessageComposer_input_error {
animation: 0.2s visualbell;
}
.mx_MessageComposer_input_empty .public-DraftEditorPlaceholder-root {
display: none;
}
@@ -85,7 +95,17 @@ limitations under the License.
.mx_MessageComposer_input .DraftEditor-root {
width: 100%;
flex: 1;
word-break: break-word;
}
.mx_MessageComposer_input .DraftEditor-root .DraftEditor-editorContainer {
/* Ensure mx_UserPill and mx_RoomPill (see _RichText) are not obscured from the top */
padding-top: 2px;
}
.mx_MessageComposer_input .public-DraftEditor-content {
max-height: 120px;
min-height: 21px;
overflow: auto;
}
@@ -96,6 +116,12 @@ limitations under the License.
border-left: 4px solid $blockquote-bar-color;
}
.mx_MessageComposer_input pre.public-DraftStyleDefault-pre pre {
background-color: $rte-code-bg-color;
border-radius: 3px;
padding: 10px;
}
.mx_MessageComposer_input textarea {
display: block;
width: 100%;
@@ -128,7 +154,8 @@ limitations under the License.
.mx_MessageComposer_upload,
.mx_MessageComposer_hangup,
.mx_MessageComposer_voicecall,
.mx_MessageComposer_videocall {
.mx_MessageComposer_videocall,
.mx_MessageComposer_apps {
/*display: table-cell;*/
/*vertical-align: middle;*/
/*padding-left: 10px;*/
@@ -140,7 +167,8 @@ limitations under the License.
.mx_MessageComposer_upload object,
.mx_MessageComposer_hangup object,
.mx_MessageComposer_voicecall object,
.mx_MessageComposer_videocall object {
.mx_MessageComposer_videocall object,
.mx_MessageComposer_apps object {
pointer-events: none;
}
@@ -181,11 +209,6 @@ limitations under the License.
cursor: pointer;
}
.mx_MessageComposer_format_button_disabled {
cursor: not-allowed;
opacity: 0.5;
}
.mx_MessageComposer_formatbar_cancel {
margin-right: 22px;
}

View File

@@ -1,56 +0,0 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_TabCompleteBar {
overflow: hidden;
}
.mx_TabCompleteBar_item {
display: inline-block;
margin-right: 15px;
margin-bottom: 2px;
cursor: pointer;
}
.mx_TabCompleteBar_command {
margin-right: 8px;
background-color: $accent-color;
padding-left: 8px;
padding-right: 8px;
padding-top: 2px;
padding-bottom: 2px;
margin-bottom: 6px;
border-radius: 30px;
position: relative;
top: 1px;
}
.mx_TabCompleteBar_command .mx_TabCompleteBar_text {
opacity: 1.0;
vertical-align: initial;
color: $accent-fg-color;
}
.mx_TabCompleteBar_item img {
margin-right: 8px;
vertical-align: middle;
}
.mx_TabCompleteBar_text {
color: $primary-fg-color;
vertical-align: middle;
opacity: 0.5;
}

View File

@@ -19,6 +19,8 @@ $focus-brightness: 125%;
// red warning colour
$warning-color: #ff0064;
$mention-user-pill-bg-color: #ff0064;
$other-user-pill-bg-color: rgba(0, 0, 0, 0.1);
$preview-bar-bg-color: #f7f7f7;
@@ -78,6 +80,7 @@ $voip-accept-color: #80f480;
$rte-bg-color: #e9e9e9;
$rte-code-bg-color: rgba(0, 0, 0, 0.04);
$rte-room-pill-color: #aaa;
// ********************

View File

@@ -20,6 +20,8 @@ $focus-brightness: 200%;
// red warning colour
$warning-color: #ff0064;
$other-user-pill-bg-color: rgba(255, 255, 255, 0.1);
$preview-bar-bg-color: #333;
// left-panel style muted accent color

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch -->
<title>Slice 1</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<path d="M9.74464309,-3.02908503 L8.14106175,-3.02908503 L8.14106175,8.19448443 L-3.03028759,8.19448443 L-3.03028759,9.7978515 L8.14106175,9.7978515 L8.14106175,20.9685098 L9.74464309,20.9685098 L9.74464309,9.7978515 L20.9697124,9.7978515 L20.9697124,8.19448443 L9.74464309,8.19448443 L9.74464309,-3.02908503" id="Fill-108" opacity="0.9" fill="#ff0064" sketch:type="MSShapeGroup" transform="translate(8.969712, 8.969712) rotate(-315.000000) translate(-8.969712, -8.969712) "></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<g>
<rect x="178.846" y="92.087" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 224.3476 631.1498)" width="128.085" height="354.049"/>
<path d="M471.723,88.393l-48.115-48.114c-11.723-11.724-31.558-10.896-44.304,1.85l-45.202,45.203l90.569,90.568l45.202-45.202
C482.616,119.952,483.445,100.116,471.723,88.393z"/>
<polygon points="64.021,363.252 32,480 148.737,447.979 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 876 B

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px"
height="35px" viewBox="0 0 35 35" enable-background="new 0 0 35 35" xml:space="preserve">
<g id="Layer_1">
<path id="Oval-109-Copy" fill="#76CFA6" enable-background="new " d="M17.5,35C27.165,35,35,27.165,35,17.5S27.165,0,17.5,0
S0,7.835,0,17.5S7.835,35,17.5,35z"/>
<g id="Icon">
<g>
<path fill="none" stroke="#FFFFFF" d="M7.5,12.5h5v-5h-5V12.5z M15,27.5h5v-5h-5V27.5z M7.5,27.5h5v-5h-5V27.5z M7.5,20h5v-5h-5
V20z M15,20h5v-5h-5V20z M22.5,7.5v5h5v-5H22.5z M15,12.5h5v-5h-5V12.5z M22.5,20h5v-5h-5V20z M22.5,27.5h5v-5h-5V27.5z"/>
</g>
</g>
</g>
<g id="Layer_2">
<g id="Icon_1_" opacity="0.15">
<g>
<path fill="none" stroke="#76CFA6" d="M7.5,12.5h5v-5h-5V12.5z M15,27.5h5v-5h-5V27.5z M7.5,27.5h5v-5h-5V27.5z M7.5,20h5v-5h-5
V20z M15,20h5v-5h-5V20z M22.5,7.5v5h5v-5H22.5z M15,12.5h5v-5h-5V12.5z M22.5,20h5v-5h-5V20z M22.5,27.5h5v-5h-5V27.5z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="35px" height="35px" viewBox="0 0 35 35" enable-background="new 0 0 35 35" xml:space="preserve">
<path id="Oval-109-Copy" opacity="0.15" fill="#76CFA6" enable-background="new " d="M17.5,35C27.165,35,35,27.165,35,17.5
S27.165,0,17.5,0S0,7.835,0,17.5S7.835,35,17.5,35z"/>
<g id="Icon">
<g>
<path fill="none" stroke="#76CFA6" d="M7.5,12.5h5v-5h-5V12.5z M15,27.5h5v-5h-5V27.5z M7.5,27.5h5v-5h-5V27.5z M7.5,20h5v-5h-5
V20z M15,20h5v-5h-5V20z M22.5,7.5v5h5v-5H22.5z M15,12.5h5v-5h-5V12.5z M22.5,20h5v-5h-5V20z M22.5,27.5h5v-5h-5V27.5z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 941 B

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xml:space="preserve">
<style type="text/css">
.st1{opacity:0.85;}
.st2{fill:none;stroke:#FFFFFF;stroke-width:1;stroke-linecap:round;stroke-miterlimit:10;}
.st3{fill:#FFFFFF;}
.st4{fill:none;stroke:#FFFFFF;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Layer_1_1_">
<path id="Oval-109-Copy" fill="#76CFA6" d="M17.5,35C27.2,35,35,27.2,35,17.5S27.2,0,17.5,0S0,7.8,0,17.5S7.8,35,17.5,35z"/>
</g>
<g id="frame" class="st1">
<g id="Layer_3">
<g>
<g>
<line class="st2" x1="17.5" y1="21" x2="17.5" y2="26"/>
<g>
<polygon class="st3" points="15.5,21.8 17.5,18.3 19.5,21.8 "/>
</g>
</g>
</g>
</g>
<rect x="6.7" y="6.7" class="st4" width="21.6" height="21.6"/>
<line class="st4" x1="6.7" y1="16.7" x2="28.2" y2="16.7"/>
<path class="st3" d="M13.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3H9.9c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H13
C13.2,13.5,13.3,13.4,13.3,13.3z"/>
<path class="st3" d="M19.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H19
C19.2,13.5,19.3,13.4,19.3,13.3z"/>
<path class="st3" d="M25.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H25
C25.2,13.5,25.3,13.4,25.3,13.3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xml:space="preserve">
<style type="text/css">
.st0{opacity:0.15;}
.st2{fill:none;stroke-width:1;stroke-linecap:round;stroke-miterlimit:10;}
.st3{fill:none;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Layer_1_1_" class="st0">
<path id="Oval-109-Copy" fill="#76CFA6" d="M17.5,35C27.2,35,35,27.2,35,17.5S27.2,0,17.5,0S0,7.8,0,17.5S7.8,35,17.5,35z"/>
</g>
<g id="frame">
<g id="Layer_3">
<g>
<g>
<line class="st2" stroke="#76CFA6" x1="17.5" y1="23.9" x2="17.5" y2="18.9"/>
<g>
<polygon fill="#76CFA6" points="19.5,23.1 17.5,26.6 15.5,23.1 "/>
</g>
</g>
</g>
</g>
<rect x="6.7" y="6.7" class="st3" stroke="#76CFA6" width="21.6" height="21.6"/>
<line class="st3" stroke="#76CFA6" x1="6.7" y1="16.7" x2="28.2" y2="16.7"/>
<path fill="#76CFA6" d="M13.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3H9.9c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H13
C13.2,13.5,13.3,13.4,13.3,13.3z"/>
<path fill="#76CFA6" d="M19.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H19
C19.2,13.5,19.3,13.4,19.3,13.3z"/>
<path fill="#76CFA6" d="M25.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H25
C25.2,13.5,25.3,13.4,25.3,13.3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -45,6 +45,12 @@ rageshake.init().then(() => {
console.error("Failed to initialise rageshake: " + err);
});
window.addEventListener('beforeunload', (e) => {
console.log('riot-web closing');
// try to flush the logs to indexeddb
rageshake.flush();
});
// add React and ReactPerf to the global namespace, to make them easier to
// access via the console
@@ -59,8 +65,7 @@ var sdk = require("matrix-react-sdk");
const PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg");
sdk.loadSkin(require('../component-index'));
var VectorConferenceHandler = require('../VectorConferenceHandler');
var UpdateChecker = require("./updater");
var q = require('q');
import Promise from 'bluebird';
var request = require('browser-request');
import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
import * as languageHandler from 'matrix-react-sdk/lib/languageHandler';
@@ -182,11 +187,11 @@ var makeRegistrationUrl = function(params) {
window.addEventListener('hashchange', onHashChange);
function getConfig() {
let deferred = q.defer();
function getConfig(configJsonFilename) {
let deferred = Promise.defer();
request(
{ method: "GET", url: "config.json" },
{ method: "GET", url: configJsonFilename },
(err, response, body) => {
if (err || response.status < 200 || response.status >= 300) {
// Lack of a config isn't an error, we should
@@ -216,18 +221,16 @@ function getConfig() {
return deferred.promise;
}
function onLoadCompleted() {
function onTokenLoginCompleted() {
// if we did a token login, we're now left with the token, hs and is
// url as query params in the url; a little nasty but let's redirect to
// clear them.
if (window.location.search) {
var parsedUrl = url.parse(window.location.href);
parsedUrl.search = "";
var formatted = url.format(parsedUrl);
console.log("Redirecting to " + formatted + " to drop loginToken " +
"from queryparams");
window.location.href = formatted;
}
var parsedUrl = url.parse(window.location.href);
parsedUrl.search = "";
var formatted = url.format(parsedUrl);
console.log("Redirecting to " + formatted + " to drop loginToken " +
"from queryparams");
window.location.href = formatted;
}
async function loadApp() {
@@ -258,10 +261,20 @@ async function loadApp() {
}
}
// Load the config file. First try to load up a domain-specific config of the
// form "config.$domain.json" and if that fails, fall back to config.json.
let configJson;
let configError;
try {
configJson = await getConfig();
try {
configJson = await getConfig(`config.${document.domain}.json`);
// 404s succeed with an empty json config, so check that there are keys
if (Object.keys(configJson).length === 0) {
throw new Error(); // throw to enter the catch
}
} catch (e) {
configJson = await getConfig("config.json");
}
} catch (e) {
configError = e;
}
@@ -277,7 +290,9 @@ async function loadApp() {
Unable to load config file: please refresh the page to try again.
</div>, document.getElementById('matrixchat'));
} else if (validBrowser) {
UpdateChecker.start();
const platform = PlatformPeg.get();
platform.startUpdater();
const MatrixChat = sdk.getComponent('structures.MatrixChat');
window.matrixChat = ReactDOM.render(
<MatrixChat
@@ -288,9 +303,9 @@ async function loadApp() {
realQueryParams={params}
startingFragmentQueryParams={fragparts.params}
enableGuest={true}
onLoadCompleted={onLoadCompleted}
onTokenLoginCompleted={onTokenLoginCompleted}
initialScreenAfterLogin={getScreenFromLocation(window.location)}
defaultDeviceDisplayName={PlatformPeg.get().getDefaultDeviceDisplayName()}
defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}
/>,
document.getElementById('matrixchat')
);

View File

@@ -17,14 +17,21 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import VectorBasePlatform from './VectorBasePlatform';
import VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';
import dis from 'matrix-react-sdk/lib/dispatcher';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import q from 'q';
import electron, {remote, ipcRenderer} from 'electron';
import Promise from 'bluebird';
import {remote, ipcRenderer} from 'electron';
import rageshake from '../rageshake';
remote.autoUpdater.on('update-downloaded', onUpdateDownloaded);
// try to flush the rageshake logs to indexeddb before quit.
ipcRenderer.on('before-quit', function () {
console.log('riot-desktop closing');
rageshake.flush();
});
function onUpdateDownloaded(ev: Event, releaseNotes: string, ver: string, date: Date, updateURL: string) {
dis.dispatch({
action: 'new_version',
@@ -62,10 +69,42 @@ function _onAction(payload: Object) {
}
}
function getUpdateCheckStatus(status) {
if (status === true) {
return { status: updateCheckStatusEnum.DOWNLOADING };
} else if (status === false) {
return { status: updateCheckStatusEnum.NOTAVAILABLE };
} else {
return {
status: updateCheckStatusEnum.ERROR,
detail: status,
};
}
}
export default class ElectronPlatform extends VectorBasePlatform {
constructor() {
super();
dis.register(_onAction);
this.updatable = Boolean(remote.autoUpdater.getFeedURL());
/*
IPC Call `check_updates` returns:
true if there is an update available
false if there is not
or the error if one is encountered
*/
ipcRenderer.on('check_updates', (event, status) => {
if (!this.showUpdateCheck) return;
dis.dispatch({
action: 'check_updates',
value: getUpdateCheckStatus(status),
});
this.showUpdateCheck = false;
});
this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
}
getHumanReadableName(): string {
@@ -134,20 +173,21 @@ export default class ElectronPlatform extends VectorBasePlatform {
}
getAppVersion(): Promise<string> {
return q(remote.app.getVersion());
return Promise.resolve(remote.app.getVersion());
}
pollForUpdate() {
// In electron we control the update process ourselves, since
// it needs to run in the main process, so we just run the timer
// loop in the main electron process instead.
startUpdateCheck() {
if (this.showUpdateCheck) return;
super.startUpdateCheck();
ipcRenderer.send('check_updates');
}
installUpdate() {
// IPC to the main process to install the update, since quitAndInstall
// doesn't fire the before-quit event so the main process needs to know
// it should exit.
electron.ipcRenderer.send('install_update');
ipcRenderer.send('install_update');
}
getDefaultDeviceDisplayName(): string {
@@ -161,7 +201,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
isElectron(): boolean { return true; }
requestNotificationPermission(): Promise<string> {
return q('granted');
return Promise.resolve('granted');
}
reload() {

View File

@@ -19,9 +19,18 @@ limitations under the License.
import BasePlatform from 'matrix-react-sdk/lib/BasePlatform';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import dis from 'matrix-react-sdk/lib/dispatcher';
import Favico from 'favico.js';
export const updateCheckStatusEnum = {
CHECKING: 'CHECKING',
ERROR: 'ERROR',
NOTAVAILABLE: 'NOTAVAILABLE',
DOWNLOADING: 'DOWNLOADING',
READY: 'READY',
};
/**
* Vector-specific extensions to the BasePlatform template
*/
@@ -34,7 +43,12 @@ export default class VectorBasePlatform extends BasePlatform {
// and we set the state each time, even if the value hasn't changed,
// so we'd need to fix that if enabling the animation.
this.favicon = new Favico({animation: 'none'});
this.showUpdateCheck = false;
this._updateFavicon();
this.updatable = true;
this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
}
getHumanReadableName(): string {
@@ -75,12 +89,32 @@ export default class VectorBasePlatform extends BasePlatform {
}
/**
* Check for the availability of an update to the version of the
* app that's currently running.
* If an update is available, this function should dispatch the
* 'new_version' action.
* Begin update polling, if applicable
*/
pollForUpdate() {
startUpdater() {
}
/**
* Whether we can call checkForUpdate on this platform build
*/
canSelfUpdate(): boolean {
return this.updatable;
}
startUpdateCheck() {
this.showUpdateCheck = true;
dis.dispatch({
action: 'check_updates',
value: { status: updateCheckStatusEnum.CHECKING },
});
}
stopUpdateCheck() {
this.showUpdateCheck = false;
dis.dispatch({
action: 'check_updates',
value: false,
})
}
/**

View File

@@ -17,19 +17,24 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import VectorBasePlatform from './VectorBasePlatform';
import VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';
import request from 'browser-request';
import dis from 'matrix-react-sdk/lib/dispatcher.js';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import q from 'q';
import Promise from 'bluebird';
import url from 'url';
import UAParser from 'ua-parser-js';
var POKE_RATE_MS = 10 * 60 * 1000; // 10 min
export default class WebPlatform extends VectorBasePlatform {
constructor() {
super();
this.runningVersion = null;
this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
}
getHumanReadableName(): string {
@@ -63,7 +68,7 @@ export default class WebPlatform extends VectorBasePlatform {
// annoyingly, the latest spec says this returns a
// promise, but this is only supported in Chrome 46
// and Firefox 47, so adapt the callback API.
const defer = q.defer();
const defer = Promise.defer();
global.Notification.requestPermission((result) => {
defer.resolve(result);
});
@@ -98,7 +103,7 @@ export default class WebPlatform extends VectorBasePlatform {
}
_getVersion(): Promise<string> {
const deferred = q.defer();
const deferred = Promise.defer();
// We add a cachebuster to the request to make sure that we know about
// the most recent version on the origin server. That might not
@@ -127,13 +132,18 @@ export default class WebPlatform extends VectorBasePlatform {
getAppVersion(): Promise<string> {
if (this.runningVersion !== null) {
return q(this.runningVersion);
return Promise.resolve(this.runningVersion);
}
return this._getVersion();
}
startUpdater() {
this.pollForUpdate();
setInterval(this.pollForUpdate.bind(this), POKE_RATE_MS);
}
pollForUpdate() {
this._getVersion().done((ver) => {
return this._getVersion().then((ver) => {
if (this.runningVersion === null) {
this.runningVersion = ver;
} else if (this.runningVersion !== ver) {
@@ -142,9 +152,29 @@ export default class WebPlatform extends VectorBasePlatform {
currentVersion: this.runningVersion,
newVersion: ver,
});
// Return to skip a MatrixChat state update
return;
}
return { status: updateCheckStatusEnum.NOTAVAILABLE };
}, (err) => {
console.error("Failed to poll for update", err);
return {
status: updateCheckStatusEnum.ERROR,
detail: err.message || err.status ? err.status.toString() : 'Unknown Error',
};
});
}
startUpdateCheck() {
if (this.showUpdateCheck) return;
super.startUpdateCheck();
this.pollForUpdate().then((updateState) => {
if (!this.showUpdateCheck) return;
if (!updateState) return;
dis.dispatch({
action: 'check_updates',
value: updateState,
});
});
}

View File

@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import q from "q";
import Promise from 'bluebird';
// This module contains all the code needed to log the console, persist it to
// disk and submit bug reports. Rationale is as follows:
@@ -116,7 +116,7 @@ class IndexedDBLogStore {
*/
connect() {
let req = this.indexedDB.open("logs");
return q.Promise((resolve, reject) => {
return new Promise((resolve, reject) => {
req.onsuccess = (event) => {
this.db = event.target.result;
// Periodically flush logs to local storage / indexeddb
@@ -193,7 +193,7 @@ class IndexedDBLogStore {
}
// there is no flush promise or there was but it has finished, so do
// a brand new one, destroying the chain which may have been built up.
this.flushPromise = q.Promise((resolve, reject) => {
this.flushPromise = new Promise((resolve, reject) => {
if (!this.db) {
// not connected yet or user rejected access for us to r/w to
// the db.
@@ -277,7 +277,7 @@ class IndexedDBLogStore {
}
function deleteLogs(id) {
return q.Promise((resolve, reject) => {
return new Promise((resolve, reject) => {
const txn = db.transaction(
["logs", "logslastmod"], "readwrite"
);
@@ -375,7 +375,7 @@ class IndexedDBLogStore {
*/
function selectQuery(store, keyRange, resultMapper) {
const query = store.openCursor(keyRange);
return q.Promise((resolve, reject) => {
return new Promise((resolve, reject) => {
let results = [];
query.onerror = (event) => {
reject(new Error("Query failed: " + event.target.errorCode));
@@ -410,8 +410,16 @@ module.exports = {
}
logger = new ConsoleLogger();
logger.monkeyPatch(window.console);
if (window.indexedDB) {
store = new IndexedDBLogStore(window.indexedDB, logger);
// just *accessing* indexedDB throws an exception in firefox with
// indexeddb disabled.
let indexedDB;
try {
indexedDB = window.indexedDB;
} catch(e) {}
if (indexedDB) {
store = new IndexedDBLogStore(indexedDB, logger);
initPromise = store.connect();
return initPromise;
}
@@ -419,6 +427,13 @@ module.exports = {
return initPromise;
},
flush: function() {
if (!store) {
return;
}
store.flush();
},
/**
* Clean up old logs.
* @return Promise Resolves if cleaned logs.

View File

@@ -15,7 +15,7 @@ limitations under the License.
*/
import pako from 'pako';
import q from "q";
import Promise from 'bluebird';
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
@@ -100,7 +100,7 @@ export default async function sendBugReport(bugReportEndpoint, opts) {
}
function _submitReport(endpoint, body, progressCallback) {
const deferred = q.defer();
const deferred = Promise.defer();
const req = new XMLHttpRequest();
req.open("POST", endpoint);

View File

@@ -33,10 +33,10 @@ var React = require('react');
var ReactDOM = require('react-dom');
var ReactTestUtils = require('react-addons-test-utils');
var expect = require('expect');
var q = require('q');
import Promise from 'bluebird';
var test_utils = require('../test-utils');
var MockHttpBackend = require('../mock-request');
var MockHttpBackend = require('matrix-mock-request');
var HS_URL='http://localhost';
var IS_URL='http://localhost';
@@ -100,29 +100,19 @@ describe('joining a room', function () {
// wait for /sync to happen. This may take some time, as the client
// has to initialise indexeddb.
console.log("waiting for /sync");
let syncDone = false;
httpBackend.when('GET', '/sync')
.check((r) => {syncDone = true;})
.respond(200, {});
function awaitSync(attempts) {
if (syncDone) {
return q();
}
if (!attempts) {
throw new Error("Gave up waiting for /sync")
}
return httpBackend.flush().then(() => awaitSync(attempts-1));
}
return awaitSync(10).then(() => {
return httpBackend.flushAllExpected({
timeout: 1000,
}).then(() => {
// wait for the directory requests
httpBackend.when('POST', '/publicRooms').respond(200, {chunk: []});
httpBackend.when('GET', '/thirdparty/protocols').respond(200, {});
return q.all([
httpBackend.flush('/thirdparty/protocols'),
httpBackend.flush('/publicRooms'),
]);
return httpBackend.flushAllExpected();
}).then(() => {
console.log(`${Date.now()} App made requests for directory view; switching to a room.`);
var roomDir = ReactTestUtils.findRenderedComponentWithType(
matrixChat, RoomDirectory);
@@ -139,19 +129,17 @@ describe('joining a room', function () {
httpBackend.when('GET', '/rooms/'+encodeURIComponent(ROOM_ID)+"/initialSync")
.respond(401, {errcode: 'M_GUEST_ACCESS_FORBIDDEN'});
return q.all([
httpBackend.flush('/directory/room/'+encodeURIComponent(ROOM_ALIAS), 1, 200),
httpBackend.flush('/rooms/'+encodeURIComponent(ROOM_ID)+"/initialSync", 1, 200),
]);
return httpBackend.flushAllExpected();
}).then(() => {
httpBackend.verifyNoOutstandingExpectation();
console.log(`${Date.now()} App made room preview request`);
return q.delay(1);
}).then(() => {
// we should now have a roomview, with a preview bar
// we should now have a roomview
roomView = ReactTestUtils.findRenderedComponentWithType(
matrixChat, RoomView);
// the preview bar may take a tick to be displayed
return Promise.delay(1);
}).then(() => {
const previewBar = ReactTestUtils.findRenderedComponentWithType(
roomView, RoomPreviewBar);
@@ -164,14 +152,14 @@ describe('joining a room', function () {
.respond(200, {room_id: ROOM_ID});
}).then(() => {
// wait for the join request to be made
return q.delay(1);
return Promise.delay(1);
}).then(() => {
// and again, because the state update has to go to the store and
// then one dispatch within the store, then to the view
// XXX: This is *super flaky*: a better way would be to declare
// that we expect a certain state transition to happen, then wait
// for that transition to occur.
return q.delay(1);
return Promise.delay(1);
}).then(() => {
// the roomview should now be loading
expect(roomView.state.room).toBe(null);
@@ -186,7 +174,7 @@ describe('joining a room', function () {
}).then(() => {
httpBackend.verifyNoOutstandingExpectation();
return q.delay(1);
return Promise.delay(1);
}).then(() => {
// We've joined, expect this to false
expect(roomView.state.joining).toBe(false);

View File

@@ -22,16 +22,19 @@ import React from 'react';
import ReactDOM from 'react-dom';
import ReactTestUtils from 'react-addons-test-utils';
import expect from 'expect';
import q from 'q';
import Promise from 'bluebird';
import MatrixReactTestUtils from 'matrix-react-test-utils';
import jssdk from 'matrix-js-sdk';
import sdk from 'matrix-react-sdk';
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
import * as languageHandler from 'matrix-react-sdk/lib/languageHandler';
import {VIEWS} from 'matrix-react-sdk/lib/components/structures/MatrixChat';
import dis from 'matrix-react-sdk/lib/dispatcher';
import * as test_utils from '../test-utils';
import MockHttpBackend from '../mock-request';
import MockHttpBackend from 'matrix-mock-request';
import {parseQs, parseQsFromFragment} from '../../src/vector/url_utils';
var DEFAULT_HS_URL='http://my_server';
@@ -47,8 +50,8 @@ describe('loading:', function () {
// the mounted MatrixChat
let matrixChat;
// a promise which resolves when the MatrixChat calls onLoadCompleted
let loadCompletePromise;
// a promise which resolves when the MatrixChat calls onTokenLoginCompleted
let tokenLoginCompletePromise;
beforeEach(function() {
test_utils.beforeEach(this);
@@ -68,7 +71,8 @@ describe('loading:', function () {
});
});
afterEach(async function() {
afterEach(async function () {
console.log(`${Date.now()}: loading: afterEach`);
if (parentDiv) {
ReactDOM.unmountComponentAtNode(parentDiv);
parentDiv.remove();
@@ -78,9 +82,15 @@ describe('loading:', function () {
// unmounting should have cleared the MatrixClientPeg
expect(MatrixClientPeg.get()).toBe(null);
// chrome seems to take *ages* to delete the indexeddbs.
this.timeout(10000);
// clear the indexeddbs so we can start from a clean slate next time.
await test_utils.deleteIndexedDB('matrix-js-sdk:crypto');
await test_utils.deleteIndexedDB('matrix-js-sdk:riot-web-sync');
await Promise.all([
test_utils.deleteIndexedDB('matrix-js-sdk:crypto'),
test_utils.deleteIndexedDB('matrix-js-sdk:riot-web-sync'),
]);
console.log(`${Date.now()}: loading: afterEach complete`);
});
/* simulate the load process done by index.js
@@ -99,8 +109,8 @@ describe('loading:', function () {
toString: function() { return this.search + this.hash; },
};
let loadCompleteDefer = q.defer();
loadCompletePromise = loadCompleteDefer.promise;
let tokenLoginCompleteDefer = Promise.defer();
tokenLoginCompletePromise = tokenLoginCompleteDefer.promise;
function onNewScreen(screen) {
console.log(Date.now() + " newscreen "+screen);
@@ -135,7 +145,7 @@ describe('loading:', function () {
realQueryParams={params}
startingFragmentQueryParams={fragParts.params}
enableGuest={true}
onLoadCompleted={loadCompleteDefer.resolve}
onTokenLoginCompleted={() => tokenLoginCompleteDefer.resolve()}
initialScreenAfterLogin={getScreenFromLocation(windowLocation)}
makeRegistrationUrl={() => {throw new Error('Not implemented');}}
/>, parentDiv
@@ -153,8 +163,8 @@ describe('loading:', function () {
.check((r) => {syncRequest = r;})
.respond(200, response);
console.log("waiting for /sync");
for (let attempts = 10; attempts > 0; attempts--) {
console.log(Date.now() + " waiting for /sync");
if (syncRequest) {
return syncRequest;
}
@@ -167,7 +177,7 @@ describe('loading:', function () {
it('gives a login panel by default', function (done) {
loadApp();
q.delay(1).then(() => {
Promise.delay(1).then(() => {
// at this point, we're trying to do a guest registration;
// we expect a spinner
assertAtLoadingSpinner(matrixChat);
@@ -179,12 +189,9 @@ describe('loading:', function () {
return httpBackend.flush();
}).then(() => {
// Wait for another trip around the event loop for the UI to update
return q.delay(1);
return awaitLoginComponent(matrixChat);
}).then(() => {
// we expect a single <Login> component following session load
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login'));
expect(windowLocation.hash).toEqual("");
expect(windowLocation.hash).toEqual("#/login");
}).done(done, done);
});
@@ -193,7 +200,7 @@ describe('loading:', function () {
uriFragment: "#/room/!room:id",
});
q.delay(1).then(() => {
Promise.delay(1).then(() => {
// at this point, we're trying to do a guest registration;
// we expect a spinner
assertAtLoadingSpinner(matrixChat);
@@ -205,7 +212,7 @@ describe('loading:', function () {
return httpBackend.flush();
}).then(() => {
// Wait for another trip around the event loop for the UI to update
return q.delay(1);
return Promise.delay(10);
}).then(() => {
return completeLogin(matrixChat);
}).then(() => {
@@ -228,7 +235,7 @@ describe('loading:', function () {
uriFragment: "#/login",
});
return q.delay(100).then(() => {
return awaitLoginComponent(matrixChat).then(() => {
// we expect a single <Login> component
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login'));
@@ -335,7 +342,7 @@ describe('loading:', function () {
},
});
return q.delay(1).then(() => {
return Promise.delay(1).then(() => {
// we expect a loading spinner while we log into the RTS
assertAtLoadingSpinner(matrixChat);
@@ -360,6 +367,9 @@ describe('loading:', function () {
loadApp({
uriFragment: "#/login",
});
// give the UI a chance to display
return awaitLoginComponent(matrixChat);
});
it('shows a login view', function() {
@@ -396,7 +406,7 @@ describe('loading:', function () {
it('shows a home page by default', function (done) {
loadApp();
q.delay(1).then(() => {
Promise.delay(1).then(() => {
// at this point, we're trying to do a guest registration;
// we expect a spinner
assertAtLoadingSpinner(matrixChat);
@@ -429,7 +439,7 @@ describe('loading:', function () {
loadApp();
q.delay(1).then(() => {
Promise.delay(1).then(() => {
// at this point, we're trying to do a guest registration;
// we expect a spinner
assertAtLoadingSpinner(matrixChat);
@@ -464,7 +474,7 @@ describe('loading:', function () {
loadApp({
uriFragment: "#/room/!room:id"
});
q.delay(1).then(() => {
Promise.delay(1).then(() => {
// at this point, we're trying to do a guest registration;
// we expect a spinner
assertAtLoadingSpinner(matrixChat);
@@ -489,6 +499,76 @@ describe('loading:', function () {
expect(windowLocation.hash).toEqual("#/room/!room:id");
}).done(done, done);
});
describe('Login as user', function() {
beforeEach(function() {
// first we have to load the homepage
loadApp();
httpBackend.when('POST', '/register').check(function(req) {
expect(req.queryParams.kind).toEqual('guest');
}).respond(200, {
user_id: "@guest:localhost",
access_token: "secret_token",
});
return httpBackend.flush().then(() => {
return awaitSyncingSpinner(matrixChat);
}).then(() => {
// we got a sync spinner - let the sync complete
return expectAndAwaitSync();
}).then(() => {
// once the sync completes, we should have a home page
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.HomePage'));
// we simulate a click on the 'login' button by firing off
// the relevant dispatch.
//
// XXX: is it an anti-pattern to access the react-sdk's
// dispatcher in this way? Is it better to find the login
// button and simulate a click? (we might have to arrange
// for it to be shown - it's not always, due to the
// collapsing left panel
dis.dispatch({ action: 'start_login' });
return awaitLoginComponent(matrixChat);
});
});
it('should give us a login page', function() {
expect(windowLocation.hash).toEqual("#/login");
// we expect a single <Login> component
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login')
);
});
it('should allow us to return to the app', function() {
const login = ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login')
);
const linkText = 'Return to app';
const returnToApp = ReactTestUtils.scryRenderedDOMComponentsWithTag(
login, 'a').find((e) => e.innerText === linkText);
if (!returnToApp) {
throw new Error(`Couldn't find '${linkText}' link`);
}
ReactTestUtils.Simulate.click(returnToApp);
return Promise.delay(1).then(() => {
// we should be straight back into the home page
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.HomePage'));
});
});
});
});
describe('Token login:', function() {
@@ -497,7 +577,7 @@ describe('loading:', function () {
queryString: "?loginToken=secretToken&homeserver=https%3A%2F%2Fhomeserver&identityServer=https%3A%2F%2Fidserver",
});
q.delay(1).then(() => {
Promise.delay(1).then(() => {
// we expect a spinner while we're logging in
assertAtLoadingSpinner(matrixChat);
@@ -513,12 +593,12 @@ describe('loading:', function () {
return httpBackend.flush();
}).then(() => {
// at this point, MatrixChat should fire onLoadCompleted, which
// at this point, MatrixChat should fire onTokenLoginCompleted, which
// makes index.js reload the app. We're not going to attempt to
// simulate the reload - just check that things are left in the
// right state for the reloaded app.
return loadCompletePromise;
return tokenLoginCompletePromise;
}).then(() => {
// check that the localstorage has been set up in such a way that
// the reloaded app can pick up where we leave off.
@@ -530,7 +610,6 @@ describe('loading:', function () {
});
});
// check that we have a Login component, send a 'user:pass' login,
// and await the HTTP requests.
function completeLogin(matrixChat) {
@@ -539,7 +618,6 @@ describe('loading:', function () {
matrixChat, sdk.getComponent('structures.login.Login'));
httpBackend.when('POST', '/login').check(function(req) {
console.log(req);
expect(req.data.type).toEqual('m.login.password');
expect(req.data.identifier.type).toEqual('m.id.user');
expect(req.data.identifier.user).toEqual('user');
@@ -553,7 +631,7 @@ describe('loading:', function () {
return httpBackend.flush().then(() => {
// Wait for another trip around the event loop for the UI to update
return q.delay(1);
return Promise.delay(1);
}).then(() => {
// we expect a spinner
ReactTestUtils.findRenderedComponentWithType(
@@ -589,7 +667,8 @@ function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) {
retryCount = 0;
}
if (matrixChat.state.loading || matrixChat.state.loggingIn) {
if (matrixChat.state.view === VIEWS.LOADING ||
matrixChat.state.view === VIEWS.LOGGING_IN) {
console.log(Date.now() + " Awaiting sync spinner: still loading.");
if (retryCount >= retryLimit) {
throw new Error("MatrixChat still not loaded after " +
@@ -597,7 +676,7 @@ function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) {
}
// loading can take quite a long time, because we delete the
// indexedDB store.
return q.delay(5).then(() => {
return Promise.delay(5).then(() => {
return awaitSyncingSpinner(matrixChat, retryLimit, retryCount + 1);
});
}
@@ -606,7 +685,7 @@ function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) {
// state looks good, check the rendered output
assertAtSyncingSpinner(matrixChat);
return q();
return Promise.resolve();
}
function assertAtSyncingSpinner(matrixChat) {
@@ -628,14 +707,13 @@ function awaitRoomView(matrixChat, retryLimit, retryCount) {
retryCount = 0;
}
if (matrixChat.state.loading ||
!(matrixChat.state.loggedIn && matrixChat.state.ready)) {
if (matrixChat.state.view !== VIEWS.LOGGED_IN || !matrixChat.state.ready) {
console.log(Date.now() + " Awaiting room view: not ready yet.");
if (retryCount >= retryLimit) {
throw new Error("MatrixChat still not ready after " +
retryCount + " tries");
}
return q.delay(0).then(() => {
return Promise.delay(0).then(() => {
return awaitRoomView(matrixChat, retryLimit, retryCount + 1);
});
}
@@ -645,5 +723,11 @@ function awaitRoomView(matrixChat, retryLimit, retryCount) {
// state looks good, check the rendered output
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.RoomView'));
return q();
return Promise.resolve();
}
function awaitLoginComponent(matrixChat, attempts) {
return MatrixReactTestUtils.waitForRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login'), attempts,
);
}

View File

@@ -1,336 +0,0 @@
"use strict";
const q = require("q");
import expect from 'expect';
/**
* Construct a mock HTTP backend, heavily inspired by Angular.js.
* @constructor
*/
function HttpBackend() {
this.requests = [];
this.expectedRequests = [];
const self = this;
// the request function dependency that the SDK needs.
this.requestFn = function(opts, callback) {
const req = new Request(opts, callback);
console.log(`${Date.now()} HTTP backend received request: ${req}`);
self.requests.push(req);
const abort = function() {
const idx = self.requests.indexOf(req);
if (idx >= 0) {
console.log("Aborting HTTP request: %s %s", opts.method,
opts.uri);
self.requests.splice(idx, 1);
req.callback("aborted");
}
};
return {
abort: abort,
};
};
// very simplistic mapping from the whatwg fetch interface onto the request
// interface, so we can use the same mock backend for both.
this.fetchFn = function(input, init) {
init = init || {};
const requestOpts = {
uri: input,
method: init.method || 'GET',
body: init.body,
};
return new Promise((resolve, reject) => {
function callback(err, response, body) {
if (err) {
reject(err);
}
resolve({
ok: response.statusCode >= 200 && response.statusCode < 300,
json: () => body,
});
};
const req = new Request(requestOpts, callback);
console.log(`HTTP backend received request: ${req}`);
self.requests.push(req);
});
};
}
HttpBackend.prototype = {
/**
* Respond to all of the requests (flush the queue).
* @param {string} path The path to flush (optional) default: all.
* @param {integer} numToFlush The number of things to flush (optional), default: all.
* @param {integer=} waitTime The time (in ms) to wait for a request to happen.
* default: 100
*
* @return {Promise} resolves when there is nothing left to flush, with the
* number of requests flushed
*/
flush: function(path, numToFlush, waitTime) {
const defer = q.defer();
const self = this;
let flushed = 0;
if (waitTime === undefined) {
waitTime = 100;
}
function log(msg) {
console.log(`${Date.now()} flush[${path || ''}]: ${msg}`);
}
log("HTTP backend flushing... (path=" + path
+ " numToFlush=" + numToFlush
+ " waitTime=" + waitTime
+ ")",
);
const endTime = waitTime + Date.now();
const tryFlush = function() {
// if there's more real requests and more expected requests, flush 'em.
log(` trying to flush => reqs=[${self.requests}] ` +
`expected=[${self.expectedRequests}]`,
);
if (self._takeFromQueue(path)) {
// try again on the next tick.
flushed += 1;
if (numToFlush && flushed === numToFlush) {
log(`Flushed assigned amount: ${numToFlush}`);
defer.resolve(flushed);
} else {
log(` flushed. Trying for more.`);
setTimeout(tryFlush, 0);
}
} else if (flushed === 0 && Date.now() < endTime) {
// we may not have made the request yet, wait a generous amount of
// time before giving up.
log(` nothing to flush yet; waiting for requests.`);
setTimeout(tryFlush, 5);
} else {
if (flushed === 0) {
log("nothing to flush; giving up");
} else {
log(`no more flushes after flushing ${flushed} requests`);
}
defer.resolve(flushed);
}
};
setTimeout(tryFlush, 0);
return defer.promise;
},
/**
* Attempts to resolve requests/expected requests.
* @param {string} path The path to flush (optional) default: all.
* @return {boolean} true if something was resolved.
*/
_takeFromQueue: function(path) {
let req = null;
let i;
let j;
let matchingReq = null;
let expectedReq = null;
let testResponse = null;
for (i = 0; i < this.requests.length; i++) {
req = this.requests[i];
for (j = 0; j < this.expectedRequests.length; j++) {
expectedReq = this.expectedRequests[j];
if (path && path !== expectedReq.path) {
continue;
}
if (expectedReq.method === req.method &&
req.path.indexOf(expectedReq.path) !== -1) {
if (!expectedReq.data || (JSON.stringify(expectedReq.data) ===
JSON.stringify(req.data))) {
matchingReq = expectedReq;
this.expectedRequests.splice(j, 1);
break;
}
}
}
if (matchingReq) {
// remove from request queue
this.requests.splice(i, 1);
i--;
for (j = 0; j < matchingReq.checks.length; j++) {
matchingReq.checks[j](req);
}
testResponse = matchingReq.response;
console.log(`${Date.now()} responding to ${matchingReq.path}`);
let body = testResponse.body;
if (Object.prototype.toString.call(body) == "[object Function]") {
body = body(req.path, req.data);
}
req.callback(
testResponse.err, testResponse.response, body,
);
matchingReq = null;
}
}
if (testResponse) { // flushed something
return true;
}
return false;
},
/**
* Makes sure that the SDK hasn't sent any more requests to the backend.
*/
verifyNoOutstandingRequests: function() {
const firstOutstandingReq = this.requests[0] || {};
expect(this.requests.length).toEqual(0,
"Expected no more HTTP requests but received request to " +
firstOutstandingReq.path,
);
},
/**
* Makes sure that the test doesn't have any unresolved requests.
*/
verifyNoOutstandingExpectation: function() {
const firstOutstandingExpectation = this.expectedRequests[0] || {};
expect(this.expectedRequests.length).toEqual(0,
"Expected to see HTTP request for " + firstOutstandingExpectation.path,
);
},
/**
* Create an expected request.
* @param {string} method The HTTP method
* @param {string} path The path (which can be partial)
* @param {Object} data The expected data.
* @return {Request} An expected request.
*/
when: function(method, path, data) {
const pendingReq = new ExpectedRequest(method, path, data);
this.expectedRequests.push(pendingReq);
return pendingReq;
},
};
/**
* Represents the expectation of a request.
*
* <p>Includes the conditions to be matched against, the checks to be made,
* and the response to be returned.
*
* @constructor
* @param {string} method
* @param {string} path
* @param {object?} data
*/
function ExpectedRequest(method, path, data) {
this.method = method;
this.path = path;
this.data = data;
this.response = null;
this.checks = [];
}
ExpectedRequest.prototype = {
toString: function() {
return this.method + " " + this.path
},
/**
* Execute a check when this request has been satisfied.
* @param {Function} fn The function to execute.
* @return {Request} for chaining calls.
*/
check: function(fn) {
this.checks.push(fn);
return this;
},
/**
* Respond with the given data when this request is satisfied.
* @param {Number} code The HTTP status code.
* @param {Object|Function} data The HTTP JSON body. If this is a function,
* it will be invoked when the JSON body is required (which should be returned).
*/
respond: function(code, data) {
this.response = {
response: {
statusCode: code,
headers: {},
},
body: data,
err: null,
};
},
/**
* Fail with an Error when this request is satisfied.
* @param {Number} code The HTTP status code.
* @param {Error} err The error to throw (e.g. Network Error)
*/
fail: function(code, err) {
this.response = {
response: {
statusCode: code,
headers: {},
},
body: null,
err: err,
};
},
};
/**
* Represents a request made by the app.
*
* @constructor
* @param {object} opts opts passed to request()
* @param {function} callback
*/
function Request(opts, callback) {
this.opts = opts;
this.callback = callback;
Object.defineProperty(this, 'method', {
get: function() {
return opts.method;
},
});
Object.defineProperty(this, 'path', {
get: function() {
return opts.uri;
},
});
Object.defineProperty(this, 'data', {
get: function() {
return opts.body;
},
});
Object.defineProperty(this, 'queryParams', {
get: function() {
return opts.qs;
},
});
Object.defineProperty(this, 'headers', {
get: function() {
return opts.headers || {};
},
});
}
Request.prototype = {
toString: function() {
return this.method + " " + this.path;
},
};
/**
* The HttpBackend class.
*/
module.exports = HttpBackend;

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