Compare commits

...

144 Commits

Author SHA1 Message Date
09c2d198fd Update i18n/ssr-hu.po 2023-12-28 18:23:41 +00:00
7ca61d87a7 Update i18n/hu.po 2023-12-28 18:22:56 +00:00
HF
45fc4b4d9c final commit v1.0 2023-12-21 19:01:52 +01:00
HF
18d9828b2b silently fail when pixellog file doesn't exist
fix #76
2023-12-13 12:15:17 +01:00
HF
9c5596d86a only extract langs from server when full build 2023-12-13 11:25:24 +01:00
HF
8d41c6533d don't require server restart on client changes,
by watching the asset files and reloading if changed
2023-12-13 11:11:25 +01:00
HF
058290aa16 do minifyCss right after cleaning assets
Use hashes in css filenames again
2023-12-13 11:10:07 +01:00
HF
0a4199e633 make example ecosystem.yml watch the server script for changes 2023-12-13 10:58:13 +01:00
HF
05298604b1 fix image link in mail 2023-12-13 10:57:12 +01:00
HF
260f6a6210 fix typo 2023-12-13 04:05:16 +01:00
HF
fb87a18bd7 update deployment scripts 2023-12-13 04:01:34 +01:00
HF
1304dfb4ba change all logger prefixes 2023-12-13 03:45:11 +01:00
HF
eb6c76c1b6 add shard names to logfile names 2023-12-13 03:18:14 +01:00
HF
6ecffafd00 remove assets.json from deployement scripts 2023-12-13 02:07:46 +01:00
HF
d8042552d8 move langage-code-to-country-code mapping into ssr filename 2023-12-13 02:04:55 +01:00
HF
3895bf292a only extract languages on full builds 2023-12-13 01:41:32 +01:00
hf
dddc0d0823 Merge pull request 'Add ge translation' (#91) from sallbet/pixelplanet-fork:translations into master
Reviewed-on: ppfun/pixelplanet#91
2023-12-13 00:36:09 +00:00
HF
b5ccda251c use multiple processes while building
extract langs on production builds not on dev
update webpack
2023-12-13 01:30:02 +01:00
HF
ab840c6f23 default to english only production build in webpack config 2023-12-12 20:33:05 +01:00
HF
3aad00dca7 allow building of only specfic languages,
english is not a required locale anymore
2023-12-12 20:30:39 +01:00
HF
872c3a5659 clean webpack cache on full build
add option to clena assets
2023-12-12 18:58:53 +01:00
HF
997d887cfd dont generate styleassets.json 2023-12-12 18:58:34 +01:00
HF
b48821e92e no-cache on http requests depending on cookies
(etag reevaluation still works)
2023-12-12 18:57:40 +01:00
HF
a3edd2cb44 use sting 'en' for english translation instead of 'default' 2023-12-12 17:58:59 +01:00
HF
6d3b6edd8a cache all language builds in the same folder
write custom webpack loader to invalidate language specific files
choose most recent asset based on mtime rather than birthtime
2023-12-12 17:58:06 +01:00
HF
22b9cf2612 make asset detection smarter 2023-12-11 22:26:16 +01:00
HF
b5d48be01f renaming entry points fixes different three.js compilations weirdly 2023-12-11 22:11:55 +01:00
HF
af97cf7ec8 don't clean dist directory before build 2023-12-11 22:11:39 +01:00
HF
bcc489eff9 fix etag caching when run on localhost
(languages were not possible to be selected if run locally, cause of
aggressive caching)
2023-12-11 20:56:26 +01:00
HF
6b0404b66d THREE.js doesn't like the timestamp name,
cause every language bundle builds its own three.js
change order of script insertion (vendor before client)
2023-12-11 20:54:52 +01:00
HF
d2fa61f3c6 use port 5000 on example ecosystem.yml 2023-12-11 16:49:27 +01:00
HF
fe8541bcbf save cookie by hostname instead of host, because cookies don't like
ports
2023-12-11 16:48:47 +01:00
HF
8544c42e7b deprecate assets.json by reading the assets directory ourselves,
use build timestamp instead of hash in filename
fix #92
2023-12-11 16:48:26 +01:00
878f2cd269
Add ge translation 2023-12-01 17:51:32 +03:00
HF
72561d9752 change pixeltraa script 2023-11-24 11:06:59 +01:00
HF
16a889c5e8 fa maps to country code ir for iran
pr -> fa (language code for persian)
2023-10-09 21:58:07 +02:00
hf
0c18500e87 Merge pull request 'Add sc and persian translation' (#85) from sallbet/pixelplanet-fork:translations into master
Reviewed-on: ppfun/pixelplanet#85
2023-10-09 19:51:29 +00:00
hf
d72f471d6d Merge pull request 'Change colors for Thoia a bit' (#88) from sallbet/pixelplanet-fork:master into master
Reviewed-on: ppfun/pixelplanet#88
2023-10-09 19:50:53 +00:00
5be5f0908c
Change colors for Thoia a bit 2023-10-09 22:44:03 +03:00
HF
b0bb296ac6 fix top 10 size change date 2023-10-07 01:06:50 +02:00
HF
5cda6e161b Merge branch 'sallbet-canvases' 2023-10-07 00:32:09 +02:00
HF
e2e35971c7 use api/me for historyDownload.py
camel_case canvasID in areaDownload.py
add parameters to USER_AGENT in both
2023-10-07 00:30:04 +02:00
HF
249fabfd91 remove requests dependency from areaDownload.py 2023-10-07 00:30:03 +02:00
95cdcade90 Add to translation 2023-10-07 00:30:03 +02:00
2a5e62b08e Add logic to areaDownload, make it dynamic by fetching api/me 2023-10-07 00:30:03 +02:00
HF
7c3477921b remove websocket surveillance to test 2023-10-07 00:30:03 +02:00
HF
7f9d0f9429 care about undefined cli in Converter 2023-10-07 00:30:03 +02:00
e3ef515a90 Add cz and gr translations, update ru translation 2023-10-07 00:30:03 +02:00
cb66038058 Fix country mute/unmute message in channels 2023-10-07 00:30:03 +02:00
HF
7fe938bad2 decodeURIComponent hash 2023-10-07 00:30:03 +02:00
5d5eb38fc2
Replace r/place canvas with Thoia canvas
Remove r/place from constants.js
Change preview for new canvas
Change top10 canvas size
2023-10-07 00:03:45 +03:00
6ab3993586
Completely remove meme names and add custom flag 2023-10-07 00:03:16 +03:00
1499e7b0a4
Add perisan translation 2023-10-06 16:28:14 +03:00
b374c3ad83 Merge branch 'master' into translations 2023-10-05 11:42:15 +00:00
cc58fb1446
Add sc translation 2023-10-05 11:40:06 +03:00
HF
e108a23a83 use api/me for historyDownload.py
camel_case canvasID in areaDownload.py
add parameters to USER_AGENT in both
2023-10-01 01:48:40 +02:00
HF
d79636ae88 remove requests dependency from areaDownload.py 2023-10-01 00:03:57 +02:00
hf
ed154a0737 Merge pull request 'Add logic to areaDownload, make it dynamic by fetching api/me' (#83) from sallbet/pixelplanet-fork:master into master
Reviewed-on: ppfun/pixelplanet#83
2023-09-30 22:01:49 +00:00
hf
108fc1b8f6 Merge branch 'master' into master 2023-09-30 22:01:38 +00:00
hf
30ec0bf059 Merge pull request 'Add to translation' (#82) from sallbet/pixelplanet-fork:translations into master
Reviewed-on: ppfun/pixelplanet#82
2023-09-30 20:28:22 +00:00
8ab0961e85
Add logic to areaDownload, make it dynamic by fetching api/me 2023-09-26 00:57:31 +03:00
b41362c05e
Add to translation 2023-09-16 04:29:19 +03:00
HF
df3c5b3d4f remove websocket surveillance to test 2023-09-09 18:01:46 +02:00
HF
2fccfc8e25 care about undefined cli in Converter 2023-09-09 18:01:18 +02:00
hf
332a6ebb2e Merge pull request 'Add cz and gr translations, update ru translation' (#78) from sallbet/pixelplanet-fork:translations into master
Reviewed-on: ppfun/pixelplanet#78
2023-09-01 22:07:00 +00:00
5703bfe881
Add cz and gr translations, update ru translation 2023-08-29 10:46:08 +03:00
hf
f5ddcddd35 Merge pull request 'Fix country mute/unmute message in channels' (#73) from sallbet/pixelplanet-fork:master into master
Reviewed-on: ppfun/pixelplanet#73
2023-08-11 23:18:49 +00:00
1bb11d593e
Fix country mute/unmute message in channels 2023-08-11 15:22:07 +03:00
HF
76bb885d09 decodeURIComponent hash 2023-08-04 18:45:03 +02:00
HF
0d2f438947 adjust reddit canvas cooldowns and requirements 2023-08-04 18:44:40 +02:00
hf
ab8bde5bd0 Merge pull request 'Add new canvas' (#71) from sallbet/pixelplanet-fork:canvases into master
Reviewed-on: ppfun/pixelplanet#71
2023-08-02 13:02:20 +00:00
7013601f1f
Add new canvas 2023-08-02 15:50:24 +03:00
HF
0373379e24 reorganize LICENSE into an easier readably form.
Add term to include CoC.
2023-07-21 21:16:03 +02:00
HF
f20827f2dc reformat CODE_OF_CONDUCT 2023-07-21 20:12:13 +02:00
HF
ab9f3c3358 add CODE_OF_CONDUCT 2023-07-21 15:21:03 +02:00
hf
ecfb66b7ac Merge pull request 'Add nl translation' (#69) from sallbet/pixelplanet:translations into master
Reviewed-on: ppfun/pixelplanet#69
2023-07-09 17:30:44 +00:00
a59d4446d4 Add nl translation 2023-07-05 16:43:59 +00:00
HF
d5469f7dc6 add default cooldown for unregistered first-connections 2023-06-29 17:43:08 +02:00
HF
924fb41741 updating drawOcean.js script and instructions 2023-06-22 23:21:23 +02:00
HF
bfa3e19c2c make wsupgrade async 2023-06-15 23:24:56 +02:00
HF
5c353dd8c2 adjust tr cooldown 2023-06-14 10:47:06 +02:00
HF
3561e80873 catch upgrade errors 2023-06-14 00:03:00 +02:00
HF
263c89fef5 fix userid < 5000 special chat priviledge 2023-06-11 19:17:18 +02:00
HF
5743276ea9 update nginx config
reinstate temporary turk cooldown increase to 1.2
2023-06-10 13:22:17 +02:00
HF
557579e668 change ukraine into novorussia flag
remove obsolete hcaptcha svg
2023-06-10 02:25:05 +02:00
HF
86eff1185c let users with id below 5000 talk in chat even when their country is
muted
2023-06-05 02:49:24 +02:00
HF
af3fa2090b check if limiter exists when adding deltaTime 2023-06-04 19:46:07 +02:00
HF
b89b2d19d3 dont rethrow websocket onbinary error 2023-06-04 19:28:31 +02:00
HF
301bb72d99 add discord cdn to allowed embeds and change tiktok embed 2023-06-01 19:36:38 +02:00
HF
0dafd59699 update tr translation 2023-05-31 13:24:09 +02:00
HF
291df69851 revert turk cooldown 2023-05-31 09:13:42 +02:00
HF
8c6a048e1c force IPv4 on whois 2023-05-30 23:12:24 +02:00
hf
7450c3c0f8 Merge pull request 'Add croatian translation' (#67) from sallbet/pixelplanet:translations into master
Reviewed-on: ppfun/pixelplanet#67
2023-05-30 20:53:56 +00:00
cce9bbda42
Add romanian translation 2023-05-30 17:34:12 +03:00
8d310bc100
Fix spaces and dots 2023-05-30 16:44:56 +03:00
0dd1b99fab
Add croatian translation 2023-05-30 16:27:53 +03:00
HF
1a0f3b9876 remove Ukrainian language 2023-04-05 21:14:32 +02:00
HF
91fe9517e9 enable google login again 2023-04-05 21:13:12 +02:00
HF
3e58eb6111 remove discord auto chatban again 2023-03-31 23:20:17 +02:00
HF
cf7217f66e increase turkey cooldown temporarily 2023-03-23 14:57:40 +01:00
HF
92d0a08669 temporarily disable google login 2023-03-19 13:17:59 +01:00
HF
cfa9fb5f03 annoy arin also a bit 2023-03-19 00:37:46 +01:00
HF
016f6bf91a temporarily disallow muted users from deleting their accounts or
changing mail
2023-03-18 21:06:08 +01:00
HF
0607c70f24 automan null string names 2023-03-18 17:37:10 +01:00
HF
4b550920ef remove remporary debugging stuff 2023-03-18 15:27:26 +01:00
HF
2437b44db7 little inconsistencies 2023-03-18 14:32:33 +01:00
HF
c7a87fbaa7 add extra logs for user hf for debugging 2023-03-18 13:36:12 +01:00
HF
063813cb41 fix some eqeqeq and add store to window for debugging 2023-03-18 12:24:28 +01:00
HF
e85073733c add cidr group to pixel logging tables and make cidr copy to clickboard
on click
2023-03-16 16:30:46 +01:00
HF
7cee79f103 fix "a.getRenderer is not a function" error in popups, use optional
chaining synthax
2023-03-16 16:21:01 +01:00
HF
b7954ce11b fix some idea errors 2023-03-16 16:20:35 +01:00
HF
5c51137777 fix broken ${ in armenian translation and one character in french translation 2023-03-14 18:08:42 +01:00
hf
855b537fc1 Merge pull request 'Update hu and ru translation. Fix typos in most .po files.' (#48) from sallbet/pixelplanet:language-files into master
Reviewed-on: ppfun/pixelplanet#48
2023-03-14 16:58:25 +00:00
363b29ac86 Update hu and ru translation. Fix typos 2023-03-14 18:58:21 +03:00
HF
17bbbbf6d2 delete old creeper.svg 2023-03-14 16:35:56 +01:00
HF
3cb9ec5c9f give mod-watch-tool tables unique keys on fetch
fixes #47
2023-03-14 14:42:27 +01:00
HF
f6e3fd60b3 update nginx config 2023-03-13 16:25:04 +01:00
HF
81133c90aa handle deleted users on reload
fixes #42
2023-03-13 10:41:09 +01:00
HF
73ae694ef1 add rebuild script 2023-03-13 09:55:47 +01:00
HF
2de138d93d send changedMe before reload 2023-03-13 04:32:23 +01:00
b91dcac040 fix typo, refactor and add da language 2023-03-13 04:11:27 +01:00
HF
f668c025f2 make gc care better about other zoomlevles of the same area
closes #43
2023-03-13 03:25:00 +01:00
HF
a7e6a49a79 remove memflags, update packages 2023-03-13 00:36:09 +01:00
HF
59033b57c9 add az language 2023-01-17 16:14:56 +01:00
HF
90cd2016aa make parent classes for renderer and chunks,
move GC into those parent classes
restrict the total amount of loaded Chunks
2023-01-17 16:07:21 +01:00
HF
060688337d adjust chunk registration, trigger ratelimit when registering too much 2023-01-16 02:04:42 +01:00
HF
a7200ca4bd rate limit every socket message type, move ratelimiter into own class 2023-01-15 16:37:14 +01:00
HF
a7c493913f adjust ratelimit timings 2023-01-15 04:09:18 +01:00
HF
eb7f8b90f3 adjust socket rate limiter to also trigger on connection attempts 2023-01-15 03:48:03 +01:00
HF
8ea31b2ae1 add kazakh translation 2023-01-04 22:54:50 +01:00
HF
83564f9e03 add Italian language 2023-01-04 21:25:15 +01:00
HF
15683394ef add Belarusian language 2023-01-03 22:24:59 +01:00
HF
240052d782 fix clientPrediction reverting too many pixels 2022-11-12 21:50:39 +01:00
HF
616f6f7918 adjustments of bodyScript 2022-11-12 02:03:38 +01:00
HF
723b9ce9ac fix pixels being lost on chunk crossings 2022-11-12 01:14:44 +01:00
HF
0a4ad3a906 fix receivechunk extension hook 2022-11-11 01:18:40 +01:00
HF
9e11ea3729 give extensions a way to hook into pixel updates via
window.registerPixelUpdates
2022-11-11 00:51:05 +01:00
HF
65269f5af7 update translation templates
watch websockets
2022-11-11 00:21:19 +01:00
HF
c5b90064d9 add body script 2022-11-10 23:18:01 +01:00
HF
ca7130a6b9 add content-security-policy 2022-11-10 15:07:09 +01:00
HF
6fdaecca06 adjust userscript bot detection 2022-11-10 15:06:53 +01:00
HF
f51b350d55 Sum up ModWatchTool columns over shards
adjust userscript bot detection
2022-11-09 22:08:52 +01:00
HF
6431cf3945 add halloween theme 2022-10-31 02:57:03 +01:00
HF
c34eb89920 update banme 2022-10-20 21:12:03 +02:00
222 changed files with 40503 additions and 10816 deletions

View File

@ -28,6 +28,7 @@
"function-call-argument-newline":"off",
"max-len": [1, 80, 2, {"ignoreComments": true}],
"no-bitwise": 0,
"no-restricted-syntax": 0,
"no-plusplus" : "off",
"no-param-reassign": "off",
"no-mixed-operators":"off",

1
.gitignore vendored
View File

@ -10,6 +10,7 @@ logs
*.log
npm-debug.log*
*.tmp
records.json
pids
*.pid

93
CODE_OF_CONDUCT.md Normal file
View File

@ -0,0 +1,93 @@
# Code of conduct
## History
A Code of Conduct (hereafter: **“CoC”**) is nowadays demanded by a variety of actors, institutions and corporations. It sets basic rules and guidelines for a community and its contributors to follow and consequences in case of a violation.
In order to avoid any future confusion or discussion about it, the founder of pixelplanet took an active stance, considered multiple options and created this document.
This CoC is derived from the [SQLite Code of Ethics](https://sqlite.org/codeofethics.html).
## Our Pledge
The founder of pixelplanet, and developers at the time when this document was derived (21.07.2023), have pledged to try to govern their interactions with each other, with their clients, and with the larger pixelplanet user community in accordance with the “Tools of good works” from chapter 4 of [The Rule of St. Benedict](https://theruleofbenedict.com/) (hereafter: **“The Rule“**). They view *The Rule* as their promise to all pixelplanet users of how the developers are expected to behave. This is a one-way promise, or covenant. In other words, the developers are saying: “We will treat you this way regardless of how you treat us.”
This rule has proven its mettle in thousands of diverse communities for over 1,500 years, and has served as a baseline for many civil law codes since the time of Charlemagne.
## Scope of Application
No one is required to follow *The Rule*, to know *The Rule*, or even to think that *The Rule* is a good idea. The Founder of pixelplanet believes that anyone who follows *The Rule* will live a happier and more productive life, but individuals are free to dispute or ignore that advice if they wish.
## The Rule
1. First of all, love the Lord God with your whole heart, your whole soul, and your whole strength.
2. Then, love your neighbor as yourself.
3. Do not murder.
4. Do not commit adultery.
5. Do not steal.
6. Do not covet.
7. Do not bear false witness.
8. Honor all people.
9. Do not do to another what you would not have done to yourself.
10. Deny oneself in order to follow Christ.
11. Chastise the body.
12. Do not become attached to pleasures.
13. Love fasting.
14. Relieve the poor.
15. Clothe the naked.
16. Visit the sick.
17. Bury the dead.
18. Be a help in times of trouble.
19. Console the sorrowing.
20. Be a stranger to the world's ways.
21. Prefer nothing more than the love of Christ.
22. Do not give way to anger.
23. Do not nurse a grudge.
24. Do not entertain deceit in your heart.
25. Do not give a false peace.
26. Do not forsake charity.
27. Do not swear, for fear of perjuring yourself.
28. Utter only truth from heart and mouth.
29. Do not return evil for evil.
30. Do no wrong to anyone, and bear patiently wrongs done to yourself.
31. Love your enemies.
32. Do not curse those who curse you, but rather bless them.
33. Bear persecution for justice's sake.
34. Be not proud.
35. Be not addicted to wine.
36. Be not a great eater.
37. Be not drowsy.
38. Be not lazy.
39. Be not a grumbler.
40. Be not a detractor.
41. Put your hope in God.
42. Attribute to God, and not to self, whatever good you see in yourself.
43. Recognize always that evil is your own doing, and to impute it to yourself.
44. Fear the Day of Judgment.
45. Be in dread of hell.
46. Desire eternal life with all the passion of the spirit.
47. Keep death daily before your eyes.
48. Keep constant guard over the actions of your life.
49. Know for certain that God sees you everywhere.
50. When wrongful thoughts come into your heart, dash them against Christ immediately.
51. Disclose wrongful thoughts to your spiritual mentor.
52. Guard your tongue against evil and depraved speech.
53. Do not love much talking.
54. Speak no useless words or words that move to laughter.
55. Do not love much or boisterous laughter.
56. Listen willingly to holy reading.
57. Devote yourself frequently to prayer.
58. Daily in your prayers, with tears and sighs, confess your past sins to God, and amend them for the future.
59. Fulfill not the desires of the flesh; hate your own will.
60. Obey in all things the commands of those whom God has placed in authority over you even though they (which God forbid) should act otherwise, mindful of the Lord's precept, "Do what they say, but not what they do."
61. Do not wish to be called holy before one is holy; but first to be holy, that you may be truly so called.
62. Fulfill God's commandments daily in your deeds.
63. Love chastity.
64. Hate no one.
65. Be not jealous, nor harbor envy.
66. Do not love quarreling.
67. Shun arrogance.
68. Respect your seniors.
69. Love your juniors.
70. Pray for your enemies in the love of Christ.
71. Make peace with your adversary before the sun sets.
72. Never despair of God's mercy.

675
COPYING Normal file
View File

@ -0,0 +1,675 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/philosophy/why-not-lgpl.html>.

695
LICENSE
View File

@ -1,674 +1,21 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
PixelCanvas Copyright (C) 2017 Rafael Arquero
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
pixelplanet - Collaborative online canvas to draw with multiple people
Copyright (C) 2020 hf
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
The content of the CODE_OF_CONDUCT.md file in this directory shall not
be modified by anyone but its initial author. This notice and the
CODE_OF_CONDUCT.md file shall be included in all copies and
modified versions of this software.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. See the 'COPYING' file in this directory.
If not, see <https://www.gnu.org/licenses/>.

View File

@ -1,3 +1,5 @@
> **Currently pixelplanet is being developed in a another private repository. This development version diverted and is incompatible with the stable version here. Until it is ready, this public repository will be frozen.**
# PixelPlanet.fun
@ -7,7 +9,7 @@ Official repository of [pixelplanet.fun](http://www.pixelplanet.fun).
![videothumb](promotion/videothumb.gif)
> **TRANSLATORS NEEDED** If you want to help us translate pixelplanet.fun, look into [i18n](./i18n)
> If you want to help us translate pixelplanet.fun, look into [i18n](./i18n)
To the 2nd anniversary of r/space, pixelplanet takes pixelgames to a new level. Place pixels, create pixelart and fight faction wars on pixelplanet.fun.
Pixelplanet is a 65k x 65k large canvas that is a map of the world and can also be seen as 3d globe, you can place pixels where ever you want, build an island, take over another country with a flag or just create pixelart.
@ -256,11 +258,19 @@ If v is set and true for a canvas in the canvas.json, it will be a 3D voxel canv
Run `npm run lint:src` to check for code errors and warnings or `npm run lint -- ./your/file.js` to check a single file.
[ttag](https://github.com/ttag-org/ttag/) is used for handling translations. For server-side rendering the `Accept-Language` header gets checked and the first locale used and on-the-fly translated (`src/core/ttag.js` provides the functions for it). On the client-side a seperate bundle for every language gets provided.
The language definitions in `i18n/template.pot` and `i18n/template-ssr.pot` get updated when doing a dev build with
Compile with source-maps and debug options (but only english language) with
```
npm run build:dev
```
which also only builds the default local in a development environment for debugging.
[ttag](https://github.com/ttag-org/ttag/) is used for handling translations. For server-side rendering the `Accept-Language` header gets checked and the first locale used and on-the-fly translated (`src/core/ttag.js` provides the functions for it). On the client-side a seperate bundle for every language gets provided.
The language definitions in `i18n/template.pot` and `i18n/template-ssr.pot` get updated when doing a full production build with all languages (`npm run build`)-
To build only specific languages, you can define them with the `--langs` flag:
```
npm run build -- --langs de,gr
```
You can use `npm run babel-node ./utils/script.js` to execute a script with local babel (path always relative to the root directory).

View File

@ -13,6 +13,9 @@ Basic nodejs script to print a message and a youtube video, used as a message wh
## githook.sh
Pixelplanet has its own git repository for deployment on the live system, if an commit get pushed to it, it will automatically build the canvas and deploy it. This hook is managing that on the server.
## rebuild.sh
script to manually trigger rebuilding and restarting pixelplanet on the server
## Some notes:
Cloudflare Caching Setting `Broser Cache Expiration` should be set to `Respect Existing Headers` or it would default to 4h, which is unreasonable for chunks.
Additinally make sure that cachebreakers get blocked by setting Cloudflare Firewall rules to block empty query strings at least for chunks

View File

@ -1,9 +1,11 @@
apps:
- script : ./server.js
name : 'ppfun-server'
node_args: --nouse-idle-notification --expose-gc
- script : ./server.js
name : 'ppfun'
node_args : --nouse-idle-notification --expose-gc
watch : [ 'server.js' ]
watch_delay: 5000
env:
PORT: 80
PORT: 5000
HOST: "localhost"
REDIS_URL: 'redis://localhost:6379'
MYSQL_HOST: "localhost"

View File

@ -1,15 +1,13 @@
#!/bin/bash
# This hook builds pixelplanet after a push, and deploys it, it should be ron post-receive
# If it is the master branch, it will deploy it on the life system, and other branch will get deployed to the dev-canvas (a second canvas that is running on the server)
# This hook builds pixelplanet after a push to a development branch,
# and starts the dev-canvas
#
# To set up a server to use this, you have to go through the building steps manually first.
#
#folder for building the canvas (the git repository will get checkout there and the canvas will get buil thtere)
#folder for building the canvas (the git repository will get checkout there and the canvas will get built thtere)
BUILDDIR="/home/pixelpla/pixelplanet-build"
#folder for dev canvas
DEVFOLDER="/home/pixelpla/pixelplanet-dev"
#folder for production canvas
PFOLDER="/home/pixelpla/pixelplanet"
should_reinstall () {
local TMPFILE="${BUILDDIR}/package.json.${1}.tmp"
@ -33,14 +31,12 @@ npm_reinstall () {
copy () {
local TARGETDIR="${1}"
local REINSTALL="${2}"
cp -r dist/*.js "${TARGETDIR}/"
cp -r dist/workers "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/*.js "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/workers "${TARGETDIR}/"
rm -rf "${TARGETDIR}/public/assets"
cp -r dist/public "${TARGETDIR}/"
cp -r dist/captchaFonts "${TARGETDIR}/"
cp -r dist/package.json "${TARGETDIR}/"
cp -r dist/assets.json "${TARGETDIR}/"
cp -r dist/styleassets.json "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/public "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/captchaFonts "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/package.json "${TARGETDIR}/"
mkdir -p "${TARGETDIR}/log"
cd "${TARGETDIR}"
[ $REINSTALL -eq 0 ] && npm_reinstall
@ -53,28 +49,10 @@ do
GIT_WORK_TREE="$BUILDDIR" GIT_DIR="${BUILDDIR}/.git" git fetch --all
cd "$BUILDDIR"
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ]; then
echo "---UPDATING REPO ON PRODUCTION SERVER---"
GIT_WORK_TREE="$BUILDDIR" GIT_DIR="${BUILDDIR}/.git" git reset --hard "origin/$branch"
COMMITS=`git log --pretty=format:'- %s%b' $newrev ^$oldrev`
COMMITS=`echo "$COMMITS" | sed ':a;N;$!ba;s/\n/\\\n/g'`
echo "---BUILDING pixelplanet---"
should_reinstall master
DO_REINSTALL=$?
[ $DO_REINSTALL -eq 0 ] && npm_reinstall
npm run build
echo "---RESTARTING CANVAS---"
pm2 stop ppfun-server
pm2 stop ppfun-backups
copy "${PFOLDER}" "${DO_REINSTALL}"
cd "$PFOLDER"
pm2 start ecosystem-backup.yml
else
if [ "test" == "$branch" ] || [ "devel" == "$branch" ]; then
echo "---UPDATING REPO ON DEV SERVER---"
pm2 stop ppfun-server-dev
GIT_WORK_TREE="$BUILDDIR" GIT_DIR="${BUILDDIR}/.git" git reset --hard "origin/$branch"
COMMITS=`git log --pretty=format:'- %s%b' $newrev ^$oldrev`
COMMITS=`echo "$COMMITS" | sed ':a;N;$!ba;s/\n/\\\n/g'`
echo "---BUILDING pixelplanet---"
should_reinstall dev
DO_REINSTALL=$?

View File

@ -1,3 +1,6 @@
# set realip header to actual ip, when
# going through cloudflare
# - IPv4
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
@ -26,3 +29,31 @@ set_real_ip_from 2c0f:f248::/32;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;
# check if request is going through cloudflare
# use with like: if ($cloudflare_ip != 1) {return 403}
geo $realip_remote_addr $cloudflare_ip {
default 0;
173.245.48.0/20 1;
103.21.244.0/22 1;
103.22.200.0/22 1;
103.31.4.0/22 1;
141.101.64.0/18 1;
108.162.192.0/18 1;
190.93.240.0/20 1;
188.114.96.0/20 1;
197.234.240.0/22 1;
198.41.128.0/17 1;
162.158.0.0/15 1;
104.16.0.0/13 1;
104.24.0.0/14 1;
172.64.0.0/13 1;
131.0.72.0/22 1;
2400:cb00::/32 1;
2606:4700::/32 1;
2803:f800::/32 1;
2405:b500::/32 1;
2405:8100::/32 1;
2a06:98c0::/29 1;
2c0f:f248::/32 1;
}

View File

@ -1,5 +1,7 @@
limit_req_zone $binary_remote_addr zone=websocket:5m rate=1r/s;
# halfed because of ddos
limit_req_zone $binary_remote_addr zone=websocket:5m rate=30r/m;
limit_req_zone $binary_remote_addr zone=general:5m rate=1r/s;
# from 40 to 30 because of ddos
limit_req_zone $binary_remote_addr zone=chunks:5m rate=40r/s;
limit_req_zone $binary_remote_addr zone=captcha:5m rate=20r/m;
limit_req_zone $binary_remote_addr zone=authimp:5m rate=5r/m;

View File

@ -1,3 +1,16 @@
geo $allow_ws {
default 0;
178.158.0.0/17 1;
91.200.160.0/22 1;
92.118.132.0/24 1;
195.189.44.0/22 1;
# Sevastopol
185.71.80.0/22 1;
195.209.151.0/24 1;
213.59.160.0/20 1;
62.76.12.0/24 1;
}
geo $deny_ws {
default 0;
# Google
@ -39,4 +52,50 @@ geo $deny_ws {
2a02:6b8:c08::/48 1;
# PlusWeb
2a0a:fa40::/29 1;
# Some Brazil University
200.235.0.0/17 1;
# Turk spamer
85.100.70.0/23 1;
85.99.178.0/23 1;
# Hohols
103.108.94.130 1;
104.223.100.81 1;
109.236.81.170 1;
141.95.54.180 1;
146.0.86.196 1;
169.150.196.109 1;
178.17.170.189 1;
178.20.142.170 1;
185.107.56.163 1;
185.231.207.118 1;
185.43.191.203 1;
185.72.247.151 1;
199.244.49.79 1;
2a01:36d:1400:28d2:bd93:65a6:5e31:e322 1;
2a09:bac1:7540:48::84:6d 1;
31.192.105.104 1;
31.222.253.215 1;
31.223.105.113 1;
37.120.156.234 1;
37.63.9.104 1;
37.78.224.175 1;
45.132.194.16 1;
46.166.182.34 1;
46.166.182.57 1;
5.173.158.92 1;
5.173.172.228 1;
5.180.128.110 1;
83.71.204.117 1;
85.100.66.238 1;
85.110.146.67 1;
86.120.52.125 1;
86.124.56.51 1;
88.134.42.187 1;
89.43.30.38 1;
91.219.238.174 1;
93.115.28.181 1;
94.110.186.197 1;
99.224.5.31 1;
141.94.31.178 1;
146.70.52.247 1;
}

View File

@ -8,9 +8,22 @@
# root /home/pixelpla/pixelplace-redirect/wait;
#}
include /etc/nginx/includes/certbotroot.conf;
set $test 0;
if ($cloudflare_ip != 1) {
return 404;
}
if ($http_cf_ipcountry = "UA") {
set $test 1;
}
if ($deny_ws) {
set $test 1;
}
if ($allow_ws) {
set $test 0;
}
location / {
limit_req zone=general burst=20 delay=10;
proxy_set_header X-Real-IP $remote_addr;
@ -66,9 +79,8 @@ location /chunks {
}
location /ws {
#proxy_no_cache 1;
limit_req zone=websocket burst=5;
if ($deny_ws) {
if ($test) {
return 403;
}
proxy_http_version 1.1;
@ -84,8 +96,8 @@ location /captcha.svg {
proxy_no_cache 1;
limit_req zone=captcha burst=5;
limit_req_status 429;
if ($http_user_agent ~* (python-requests)) {
return 503;
if ($test) {
return 403;
}
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://$ppfun$request_uri;
@ -109,6 +121,9 @@ location /mcws {
location /api/auth {
proxy_no_cache 1;
if ($test) {
return 403;
}
limit_req zone=websocket burst=5;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
@ -116,13 +131,6 @@ location /api/auth {
proxy_pass http://$ppfun$request_uri;
}
location /api/captcha {
proxy_no_cache 1;
limit_req zone=general burst=10 nodelay;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://$ppfun$request_uri;
}
location /moderation {
autoindex on;
expires 15m;

View File

@ -1,4 +1,4 @@
# very handy for setting a common webroot for certbot only
# for letsencrypt certbot webroot
location /.well-known/acme-challenge {
root /home/pixelpla/certbotroot;
}

63
deployment/rebuild.sh Executable file
View File

@ -0,0 +1,63 @@
#!/bin/bash
# Rebuild and Restert pixelplanet
#folder for building the canvas (the git repository will get checkout there and the canvas will get buil thtere)
BUILDDIR="/home/pixelpla/pixelplanet-build"
#folder for dev canvas
DEVFOLDER="/home/pixelpla/pixelplanet-dev"
#folder for production canvas
PFOLDER="/home/pixelpla/pixelplanet"
#which branch to use
BRANCH="master"
should_reinstall () {
local TMPFILE="${BUILDDIR}/package.json.${1}.tmp"
local NODEDIR="${BUILDDIR}/node_modules"
local ORFILE="${BUILDDIR}/package.json"
[ -f "${TMPFILE}" ] && [ -d "${NODEDIR}" ] && diff -q "${TMPFILE}" "${ORFILE}" && {
echo "package.json stil the same, no need to rerun npm install."
return 1
}
cp "${ORFILE}" "${TMPFILE}"
echo "package.json changed, need to run npm install."
return 0
}
npm_reinstall () {
rm -rf node_modules
rm package-lock.json
npm install
}
copy () {
local TARGETDIR="${1}"
local REINSTALL="${2}"
cp -r "${BUILDDIR}"/dist/*.js "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/workers "${TARGETDIR}/"
rm -rf "${TARGETDIR}/public/assets"
cp -r "${BUILDDIR}"/dist/public "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/captchaFonts "${TARGETDIR}/"
cp -r "${BUILDDIR}"/dist/package.json "${TARGETDIR}/"
mkdir -p "${TARGETDIR}/log"
cd "${TARGETDIR}"
[ ${REINSTALL} -eq 0 ] && npm_reinstall
cd -
}
cd "$BUILDDIR"
GIT_WORK_TREE="$BUILDDIR" GIT_DIR="${BUILDDIR}/.git" git fetch --all
echo "---UPDATING REPO ON PRODUCTION SERVER---"
GIT_WORK_TREE="$BUILDDIR" GIT_DIR="${BUILDDIR}/.git" git reset --hard "origin/${BRANCH}"
echo "---BUILDING pixelplanet---"
should_reinstall master
DO_REINSTALL=$?
[ $DO_REINSTALL -eq 0 ] && npm_reinstall
npm run build
echo "---RESTARTING CANVAS---"
cp dist/canvases.json ~/
cd "$PFOLDER"
pm2 stop ppfun-backups
pm2 stop ecosystem.config.js
copy "${PFOLDER}" "${DO_REINSTALL}"
pm2 start ecosystem-backup.yml
pm2 start ecosystem.config.js

View File

@ -6,6 +6,8 @@ Translation files can be created out of the templates [template.pot](https://git
All translated languages get an own chat channel that just people who use this language can access.
If a language code differs from the country code of a wanted flag, it can be defined in the ssr filename, like `ssr-en-gb.po` would be the english language, with the flag of Great Britain.
## With poedit
### Create new translation

File diff suppressed because it is too large Load Diff

1570
i18n/be.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -922,7 +922,7 @@ msgid "Register"
msgstr "Registra't"
#: src/components/UserAreaContent.jsx:63
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Píxels col·locats avui"
#: src/components/UserAreaContent.jsx:67

1567
i18n/cz.po Normal file

File diff suppressed because it is too large Load Diff

1570
i18n/da.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -371,7 +371,7 @@ msgid "Send"
msgstr "Senden"
#: src/components/BanInfo.jsx:67
msgid "You are banned. You think it is unjustifed? Check out the "
msgid "You are banned. You think it is unjustified? Check out the "
msgstr ""
"Du bist verbannt. Wenn du glaubst, dass dies ein Irrtum war, sehe in die "
@ -1001,7 +1001,7 @@ msgid "Register"
msgstr "Registrieren"
#: src/components/UserAreaContent.jsx:62
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Heutige Pixel"
#: src/components/UserAreaContent.jsx:66

View File

@ -605,7 +605,7 @@ msgid "LogIn"
msgstr ""
#: src/components/UserArea.jsx:57
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr ""
#: src/components/UserArea.jsx:61

View File

@ -722,7 +722,7 @@ msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
msgstr "Rangigas ĉiu 5 minutoj. Hodiaŭa rangojn nuligas je meznokto UTC."
#: src/components/UserArea.jsx:57
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Hodiaŭa Metitaj Pikseloj"
#: src/components/UserArea.jsx:61

View File

@ -742,7 +742,7 @@ msgstr ""
"la medianoche UTC."
#: src/components/UserArea.jsx:57
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Píxeles Colocados Hoy"
#: src/components/UserArea.jsx:61

1572
i18n/fa.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -835,7 +835,7 @@ msgstr "Le nom doit avoir moins de 26 caractères"
#: src/utils/validation.js:39
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Le nom contient un caractère non valide comme @, /, \\ ou $"
msgstr "Le nom contient un caractère non valide comme @, /, \\ ou #"
#: src/utils/validation.js:54
msgid "No password given."
@ -975,7 +975,7 @@ msgstr ""
"recommence à minuit TUC."
#: src/components/UserAreaContent.jsx:63
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Pixels placés aujourd'hui"
#: src/components/UserAreaContent.jsx:67

1575
i18n/ge.po Normal file

File diff suppressed because it is too large Load Diff

1598
i18n/gr.po Normal file

File diff suppressed because it is too large Load Diff

1447
i18n/hr.po Normal file

File diff suppressed because it is too large Load Diff

2792
i18n/hu.po

File diff suppressed because it is too large Load Diff

View File

@ -652,7 +652,7 @@ msgid "You must be logged in to chat"
msgstr "Դուք պետք է մուտք գործեք զրուցելու համար"
#: src/components/UserArea.jsx:57
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Այսօր տեղադրված պիքսելներ"
#: src/components/UserArea.jsx:61

1574
i18n/it.po Normal file

File diff suppressed because it is too large Load Diff

1565
i18n/kk.po Normal file

File diff suppressed because it is too large Load Diff

1584
i18n/nl.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -712,7 +712,7 @@ msgid "LogIn"
msgstr "Бацу"
#: src/components/UserArea.jsx:57
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Абонон Равæрды Пикселтæ"
#: src/components/UserArea.jsx:61

View File

@ -672,7 +672,7 @@ msgid "LogIn"
msgstr "Entrar"
#: src/components/UserArea.jsx:57
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Píxeis colocados hoje"
#: src/components/UserArea.jsx:61

1576
i18n/ro.po Normal file

File diff suppressed because it is too large Load Diff

1323
i18n/ru.po

File diff suppressed because it is too large Load Diff

467
i18n/sc.po Normal file
View File

@ -0,0 +1,467 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sicilian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Generator: Poedit 3.3.1\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Umpo mannari messaggia cu li proxy"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "U to paisi esti bannatu temporaniaminti ri stu canali"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr "Si bannatu pi ssempri, trasi nalu guilded pi appellari"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Si bannatu"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "U to provider ri l'internet esti bannatu"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Si mutatu pi n'avutri ${ timeMin } minuta"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Si mutatu pi n'avutri ${ ttl } sicunna"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Sta mannannu messaggia troppu veloci, asspittari ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Unna a accessu a stu canali"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "A to email ava a essiri verificata pi parrari intra a chat"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Umpo mannari messaggia accussi longa"
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Piffauri usa a chat int"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Abbasta affunnari."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Mannasti na password vacanti o data mmlira"
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "U link pi ressettari a password unne chiu validu"
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Li password un cuncirunu"
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "St'utenti unnisisti nalu database"
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "Password canciata."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Url mmaliru,piffauri talia l'email arre..."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobe"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "U globo 3d ri tutta a mappa"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Ammacca rui voti nalu globo pi iri in arre."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Caricannu..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PopUp ri PixelPlanet.Fun"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Piazza pixel culurata intra na mappa a stili canvas cu avutri chistiana"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "A email umpo essiri vacanti."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "A email ava aviri aimmenu 5 carattera."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "A Email umpo aviri chiu ri 40 carattera."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "A Email ava aviri un puntu"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "A Email ava aviri na @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "U numi un po essiri vacanti."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "U numi ava essiri longa aimmenu ri rui carattera"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "U numi ava essiri chiu cuirtu ri vintisei carattera"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "U numi avi carattera invalida a tipo @, /, \\ o #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Password un rata."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "A Password ava a essiri aimmenu ri 6 carattera."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "A Password unpo aviri chiu ri 60 carattera."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "Reset rila password"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Resetta a password ca"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Resetta a password"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Ammacca ca"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "va arre su Pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Salutamu ${ name }, po canciari a password ca."
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Nova password"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Cunfirma a nova password"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Cunfirma"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Unsi loggatu"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Unna u pirmissu pi trasiri intra sta pagina"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Sulu li admin ponnu fari chistu"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Unsi bannatu"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Unsi mancu loggatu."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Erruri rilu server quannu loggasti fora."
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Verifica pi email"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Si verificatu"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"U To codici pi verificarti j'e mmalidu o scarutu ;(, piffauri richiedi "
"navutru."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Stu provider rila email unne valiru"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Captcha un ratu"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "E-Mail gia usata."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Username gia pigghiatu."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Ci mittisti troppu assa, prova arre."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Rixi morto Fallisti u captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Errori rilu captcha sconosciutu"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Falli a criari un novu utenti"
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Falli a fari na sissiuni ropu a registazioni :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Unsi autenticatu."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Password sbagliata!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "Account ri PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Veni mannatu nala paggina automaticamente 'n 15s"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "O ${ clickHere } Pi gghiri arre su pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Terra"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Luna"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Canvas"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Coronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"U Canvas principali, na mappa ranni ri tuttu u munnu. Piazza unne ghie ca ti "
"piaci"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Canvas rila luna. spaziu sicuru pi li arti. Nenti banneri ne scritti rossi "
"(Aimmenu sa un fannu parti rilu disegnu) ne arti chiu ranni ri 1.5k x 1.5k "
"pixels."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Piazza Voxels intra 'n canvas 3D cu l'avutri"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Canvas spiciali pi diffunniri a consapevolizza sulu SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Specchiu ri PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Specchiu ri PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Canvas 'n viancu j'e' nivuru"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"U canvas sulu pili iucatura chiu attiva d'aeri. Aggiurnamenti a 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "Binvinutu ${ name } na pixelplanet, piffauri verifica a to email"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Salutamu ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"binvinuto nala community ri niavutri pixelplacers, usa u to account, "
"virifica a to email, u po fari ca: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Ammacca pi Verificariti"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "O copia stu url:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "Addivertiti j'e' un esitari a contattarici si viri quacchi problema :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Razi"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Mannamu gia n' email pi a verifica' ni po arrichiediri navutra fra "
"${ minLeft } minuta."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Addimenticasti a to password? arrichiedini navutra ca"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Salutamu"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr "Arrichieristi navutra password, a po canciari tra navutri 30 minuta "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Si un arrichieristi sti email, ignorala (U ip ca arrichidi sti email esti "
"${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "A Littra unne configurata nalu server"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Ti mannamu gia' na littra culi istruziuni. Aspittassi n'anticchia pi farini "
"mannari navutra."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Unputimu attruvari a to email nalu database"

View File

@ -737,7 +737,7 @@ msgstr ""
"noči UTC."
#: src/components/UserArea.jsx:57
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Danes Postavljeni Pixli"
#: src/components/UserArea.jsx:61

View File

@ -344,7 +344,7 @@ msgid "Canvas Archive"
msgstr "Arhiva kanvasa"
#: src/components/BanInfo.jsx:67
msgid "You are banned. You think it is unjustifed? Check out the "
msgid "You are banned. You think it is unjustified? Check out the "
msgstr "Banovani ste. Da li mislite da ovo nije fer? Pogledajte"
#: src/components/BanInfo.jsx:77
@ -983,7 +983,7 @@ msgid "Register"
msgstr "Registruj se"
#: src/components/UserAreaContent.jsx:62
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr "Današnji postavljeni pikseli"
#: src/components/UserAreaContent.jsx:66

472
i18n/ssr-az.po Normal file
View File

@ -0,0 +1,472 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: az\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Proxylə chata mesaj atabilməzsiniz"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Sİzin ölkəniz bu söhbət kanalından keçici olaraq susturulub"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Daimi olaraq susturuldun,qaldırtmaq üçün guilded serverinə qatıl"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Sən banlandın"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Sənin İnternet Provayderin banlandı"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "${ timeMin } dəqiqəliyinə susturuldun"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "${ ttl } saniyəliyinə susturuldun"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Çox tez mesaj göndərirsən, ${ waitTime } saniyə gözləmən lazımdır :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Sənin bu kanala ərişimin yoxdur"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Doğrulanan bir emailin olmadan söhbət eliyəbilməzsən"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Bu qədər uzun bir mesaj göndərəbilməzsən :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Zəhmət olmasa int kanalından istifadə edin"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Floodlamayı burax."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Boş bir parol göndərdin vəya keçərsiz data :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Parol dəyişdirmə bağlantısı artıq keçərli deyil :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Parolların birbirinə uymur :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Istifadəçi databazamızda mövcud deyil :("
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Parolunuz uğurla dəyişdirildi."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Keçərsiz bağlantı :( Zəhmət olmasa emailinizi yenidən yoxlayın."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobus"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "Bütün xəritəmizin 3D globusu"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Globusa iki dəfə basaraq geri dön."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Yüklənir..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Digər oyunçularla biryerdə fərqli lövhələrdə fərqli rənglərdə pixellər atın"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Email boş olabilməz."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Email ən az 5 simvol uzunluğunda olmalıdır."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Email 40 simvoldan uzun olabilməz."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Email ən az 1 nöqtə içərməlidir."
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Emaildə @ işarəsi olmaldır"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Ad boş olabilməz."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Ad ən az 2 simvol uzunluğunda olmalıdır"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Ad 26 simvoldan qısa olmalıdır"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Ad keçərsiz simvol içərir, məsəlan @, /, \\ vəya #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Heçbir şifrə verilmədi."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Parol ən az 6 simvol uzunluğunda olmalıdır."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Parol 60 simvoldan qısa olmalıdır."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Parol Sıfırlama"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Parolunuzu burdan sıfırlayın"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Parolu Sıfırla"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Bura basın"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "pixelplanetə qayıtmaq üçün"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Salam ${ name }, yeni parolunu burdan ayarlayabilərsən:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Yeni Parol"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Yeni Parolu Doğrulayın"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "təqdim edin"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Siz daxil olmamısınız"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Sizin bu səhifəyi görüntüləməyə icazəniz yoxdur"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Sadəcə adminlər bunu edəbilər"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Sən banlı deyilsən"
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Bu email provayderinə icazə verilmir"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Captcha mətni verilməyib"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Email artıq istifadə olunur."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Ad artıq istifadə olunur."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Bu çox vaxt aldı,təkrar yoxla."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Captchayı səhv girdin"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Naməlum Captcha Xətası"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Yeni istifadəçi yaradılamadı :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Hesab oluşdurulurkən bir xəta meydana gəldi :("
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Siz heç daxil olmamasınız bilə."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Çıxış zamanı server xətası."
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Kimliyiniz doğrulanamadı."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Səhv Parol!"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Email doğrulaması"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Artıq hesabın doğrulandı :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Doğrulama kodun keçərsiz vəya sürəsi dolub :(,Zəhmət olmasa yeni bir tələbdə "
"bulun."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun Hesabları"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "15 saniyə sonra avtomatik olaraq yönləndiriləcəksən"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Vəya Pixelplanetə qayıtmaq üçün bura basın ${ clickHere }"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Dünya"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Ay"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Lövhə"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Koronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Bizim əsas lövhəmiz,dünyanın böyük bir dünya xəritəsi.İstədiyiniz yerə pixel "
"qoyun"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Ay lövhəsi.Rəsmlər üçün təhlükəsiz yerdir.Bayraqlar vəya böyük "
"yazılar(əsərin parçası deyilsə) vəya 1.5k x 1.5k pixeldən oluşan əsərlər "
"qadağandır."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr " başqaları ilə birlikdə 3D lövhə üzərinə kub pixellər yerləşdirin"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "SARS-CoV2 haqqında məlumatlılığı yaymaq üçün xüsusi lövhə"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "PixelZone'nin aynası"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "PixelCanvas'ın aynası"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Ağ-Qara Lövhə"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Əvvəlki günün ən aktiv oyunçuları üçün lövhə. Gündəlik reytinq yeniləmələri "
"00:00 UTC'də həyata keçirilir."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "PixelPlanetə xoş gəldin ${ name },Zəhmət olmasa emailini doğrula"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Salam ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"kiçik pixelplacers icmamıza xoş gəlmisiniz, hesabınızdan istifadə etmək üçün "
"emailinizi doğrulamalısınız. Bunu burada edə bilərsiniz:"
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Doğrulamaq üçün basın"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Və ya aşağıdakı url-ni kopyalayaraq:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Əylənin və hər hansı bir problemlə qarşılaşsanız, bizimlə əlaqə saxlamaqdan "
"çəkinməyin :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Təşəkkürlər"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Artıq sizə doğrulama emaili göndərmişik, ${ minLeft } dəqiqə ərzində başqa "
"doğrulama emaili tələb edə bilərsiniz."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "PixelPlanet üçün parolunuzu unutmusunuz? Burada yenisini əldə edin"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Salam"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Siz yeni parol əldə etməyi tələb etdiniz. Növbəti 30 dəqiqə ərzində "
"parolunuzu burada dəyişə bilərsiniz:"
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Əgər siz bu emaili tələb etməmisinizsə, lütfən, onu vecinizə almayın (bu "
"emaili tələb edən IP ${ ip } idi)."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Email serverdə konfiqurasiya edilməyib"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Artıq sizə təlimatlarla bir email göndərmişik. Lütfən, başqa email tələb "
"etməzdən əvvəl gözləyin."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Bu emaili databazamızda tapabilmədik"

476
i18n/ssr-be-by.po Normal file
View File

@ -0,0 +1,476 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr ""
"Вы не можаце адпраўляць паведамленні ў чаце, пакуль у вас уклячана проксі"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Ваша краіна часова прыглушана ў гэтым канале чата"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Вы прыглушаны назаўжды, далучыцеся да нашага Guilded, каб падаць апеляцыю"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Вы забанены"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Ваш інтэрнэт-правайдэр забанены"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Вы прыглушаны яшчэ на ${ timeMin } хвілін"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Вы прыглушаны яшчэ на ${ ttl } секунд"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"Вы дасылаеце паведамленні занадта хутка, вам прыйдзецца пачакаць "
"${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Вы не маеце доступу да гэтага канала"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Ваша пошта павінна быць верыфікаванай, каб вы маглі карыстацца чатам"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Вы не можаце даслаць такое доўгае паведамленне :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Калі ласка, карыстайцеся інтэрнацыянальным чатам (int)"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Не флудзіце."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Вы даслалі пусты пароль або няправільныя дадзеныя :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Гэтая спасылка для скідання паролю больш не працуе :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Вашыя паролі не супадаюць :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Такога карыстальніка не існуе :("
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Пароль паспяхова зменены."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Няправільны URL :( Калі ласка, праверце сваю пошту яшчэ раз."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3D Глобус"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "3D Глобус усёй нашай мапы"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Каб вярнуцца, двойчы націсніце па глобусу."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Загрузка..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ппфан"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "Усплывальнае акно PixelPlanet.Fun"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Стаўце рознакаляровыя пікселі на палатне ў выглядзе мапы свету анлайн, разам "
"з іншымі гульцамі"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Пошта не можа быць пустой."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Даўжыня адрасу эл. пошты мае быць не менш за 5 сімвалаў."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Даўжыня адрасу пошты мае быць не больш за 40 сімвалаў."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Адрас пошты павінен мець прынамсі адну кропку"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Адрас пошты павінен мець @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Імя не можа быць пустым."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Даўжыня імя мае быць не менш за 2 сімвалы"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Даўжыня імя мае быць менш за 26 сімвалаў"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Імя мае недапушчальны сімвал, такі як @, /, \\ ці #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Пароль адсутнічае."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Даўжыня паролю мае быць не менш за 6 сімвалаў."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Даўжыня паролю мае быць менш за 60 сімвалаў."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "Скіданне паролю PixelPlanet.fun"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Скінуць свой пароль"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Скінуць пароль"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Націсніце тут"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "каб вярнуцца да pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Вітаем, ${ name }, вы можаце ўвесці свой новы пароль:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Новы пароль"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Пацвярдзіце новы пароль"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Даслаць"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Вы не ўвайшлі ў акаўнт"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Вам нельга захадзіць на гэтую старонку"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Толькі адміністратары могуць гэта рабіць"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Вы не забанены"
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Гэты email-правайдэр забанены"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Капча адсутнічае"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Гэтая пошта ўжо выкарыстоўваецца."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Гэтае імя ўжо выкарыстоўваецца."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Вам спатрэбілася занадта многа часу, паспрабуйце яшчэ раз."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Вы правалілі сваю капчу"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Невядомая памылка капчы"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Не атрымалася стварыць новага карыстальніка :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Не атрымалася стварыць сэсію пасля рэгістрацыі :("
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Вы нават не ўвайшлі ў акаўнт."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Памылка сервера пры выхадзе з акаўнту."
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Вы не аўтарызаваны."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Няправільны пароль!"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Спраўджанне пошты"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Цяпер вы спраўджаны :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Ваш код спраўджання пошты няправільны або ужо не працуе :(, калі ласка, "
"запытайце новы."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "Акаўнты PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Вы будзеце аўтаматычна перанакіраваныя праз 15с"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Альбо ${ clickHere } каб вярнуцца да pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Зямля"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Луна"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D палатно"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Каранавірус"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1-біт"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Топ 10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Наша галоўнае палатно, вялізарная мапа свету. Стаўце пікселі дзе заўгодна"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Палатно Луна. Бяспечнае месца для малюнкаў. Ніякіх сцягаў ці вялікага тэксту "
"(калі гэта ня частка малюнку), ці малюнкаў больш за 1.5k x 1.5k пікселяў."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Стаўце вокселі на 3D палатне разам з іншымі"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Асаблівае палатно, прызванае распаўсюджваць дасведчанасць аб SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Люстэрка PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Люстэрка PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Ч/Б палатно"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Палатно для найбольш актыўных гульцоў апошняга дня. Спіс аднаўляецца кожны "
"дзень у 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Вітаем у PixelPlanet, ${ name }, калі ласка, спраўдзіце сваю пошту"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Вітаем, ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"запрашаем да нашай суполцы піксельных гульцоў. Каб выкарыстоўваць свой "
"акаўнт, вы павінны спраўдзіць сваю пошту. Вы можаце зрабіць гэта тут: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Націсніце, каб спраўдзіць"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Або скапіяваўшы гэты URL:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Весяліцеся і не бойцеся пісаць нам, калі ў вас будуць якія-небудзь "
"праблемы :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Дзякуй"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Мы ўжо даслалі вам пісьмо аб спраўджанні. Вы можаце запрасіць яшчэ адзін "
"праз ${ minLeft } хвілін."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Вы забыліся на ваш пароль ад PixelPlanet? Атрымайце новы тут"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Вітаем"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Вы запрасілі атрымаць новы пароль. Вы можаце змяніць свой пароль на працягу "
"30 хвілін тут: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Калі вы не запрашалі гэтага пісьма, калі ласка, проста ігнаруйце яго ( IP, "
"які запрасіў гэты ліст - ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Пошта не наладжана на серверы"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Мы ўжо даслалі вам пісьмо з інструкцыямі. Калі ласка, пачакайце перад тым, "
"як запрасіць яшчэ адно."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Не можам знайсці такую пошту ў нашай базе дадзеных"

View File

@ -30,7 +30,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "El teu correu electrònic ha de ser verificat per poder xatejar"
#: src/core/ChatProvider.js:366
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Estàs permanentment silenciat, uneix-te al nostre Guilded per apel·lar el "
"mute"
@ -81,7 +81,7 @@ msgid "User doesn't exist in our database :("
msgstr "L'usuari no existeix a la nostra base de dades :("
#: src/routes/reset_password.js:90
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "La contrasenya s'ha canviat exitosament."
#: src/routes/reset_password.js:109
@ -133,7 +133,7 @@ msgstr ""
"ne un altre en ${ minLeft } minuts."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr ""
"Benvingut ${ name } a PixelPlanet, si us plau verifica el teu correu "
"electrònic"
@ -162,7 +162,7 @@ msgstr "O copiant la següent URL:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Diverteix-te i no dubtis de contactar amb nosaltres si tens cap problema :)"

466
i18n/ssr-cz.po Normal file
View File

@ -0,0 +1,466 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: cs_CZ\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n"
"X-Generator: Poedit 3.3.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Nemůžeš posílat zprávy s proxy"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Tvůj stát je prozatím mutelej z tohodle chat kanálů"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"Jseš permanentně mutelej, připoj se na náš guilded aby sis mohl appealnout "
"mute"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Jsi zabanován"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Tvůj poskytovatel internetu je zabanován"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Jseš mutelej na dalších ${ timeMin } minut"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Jseš mutelej na dalších ${ ttl } sekund"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Posíláš zprávy příliš rychlo, musíš počkat ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Nemáš přístup na tenhle kanál"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Tvůj email musí bejt ověřen aby ses mohl bavit"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Nemůžeš posílat zprávy takhle dlouhý :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Prosím použíj int kanál"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Přestaň spamovat."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Si poslal prázdné heslo nebo chybný data :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Tohle heslo-resetující odkaz už je neplatný :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Tvoje hesla nejsou stejná :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Uživatelské jméno neexistuje v naší database :("
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "Heslo úspěšně změněno."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Neplatný URL :( Prosím zkontroluj svůj mail zase."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobe"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "3D mapa naší celej mapy"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Dvakrát klikní na globus aby si šel zpátky"
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Načítaní..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Polož barevné pixely na mapově stylované plátno s ostatníma online hráčema"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Email nemůže bejt prázdnej"
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Email musí obsahovat 5 znaků."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Email nemůže být delší jak 40 znaků"
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Email musí obsahovat tečku"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Email musí obsahovat @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Jméno nemůže být prázdný"
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Jméno musí mít aspoň 2 znaky."
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Jméno musí být kratší jak 26 znaků"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Jméno obsahuje chybné znaky jako @, /, \\ or #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Nebylo zadané heslo"
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Heslo musí obsahovat aspoň 6 znaků."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Heslo musí být kratší jak 60 znaků."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Heslo reset"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Resetuj si heslo tu"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Resetovat Heslo"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Klikni tu"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "aby si šel zpátky na pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Ahoj ${ name }, můžeš si nastavit svoje nové heslo tady:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Nový heslo"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Potvrdit Nový Heslo"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Potvrdit"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Nejsi přihlášenej"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Nejste povolen na tuhle stránků"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Pouze admini to můžou dělat"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Nejste zabanován"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Nejste ani přihlášen"
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Serverová chyba při odhlašování"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Ověřování mailu"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Od teď jste ověřen"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Váš mailovej ověřující kód je již neplatný :(, prosím poproste o novej."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Tenhle email dodavatel tu není povolen"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Žádná captcha zadaná"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "E-mail je už používán"
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Jméno je už používáno"
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Trvalo vám to až moc dlouho, zkuste znovu."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Nepodařila se vám vaše captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Neznáma chyba captcha"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Nepodařilo se udělat nového uživatele :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Nepodařilo se vytvořit schůzi hned po registraci :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Nejste ověřený"
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Nesprávné heslo!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun účty"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Budete automaticky přesměrováný po 15s"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Nebo ${ clickHere } aby ses dostal zpátky na pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Zem"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Měsíc"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Plátno"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Coronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "Pixelzone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "Naše hlavní plátno, velká mapa země. Pokládejte kde chcete"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Plátno měsíce. Bezpečný místo pro obrazy. Žádné vlajky nebo velký texty "
"(pouze jestli to není část obrazu) nebo obrazy větší jak 1,5k x 1,5k pixelu."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Polož Voxely na 3D plátno s ostatníma"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Speciální plátno pro zvýšení pozornosti o SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Zrcadlo PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Zrcadlo PixelCanvasu"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Černo-Bíle plátno"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Plátno pro nejvíc aktivní hráče ze včerejška. Denní hodnocení se aktualizuje "
"v 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "Vítej ${ name } na PixelPlanet, prosím ověř svůj mail"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Ahoj ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"vítej na naší malou komunitu pixelplacerů, pro použití tvého účtu, musíš si "
"ověřit mail. Můžeš to udělat zde:"
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Klikni pro ověření"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Nebo zkopírůj tohle URL:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "Měj zábavů a neboj se nás kontaktovat jestli najdeš nějaký problémy :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Dík"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Už jsme vám poslali ověřující email, můžeš poprosit o novej za ${ minLeft } "
"minut"
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Zapomenul sis heslo na PixelPlanet? Získej nový tady"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Ahoj"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr "Požádal si o nový heslo. Můžeš si změnit heslo v rámci 30 minut tady:"
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Jestli si o tenhle email nepožadoval, prosím to ignoruj (ip které o tenhle "
"mail požadoval je ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Mail není konfigurován na servru"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Už jsme vám poslali mail s instrukcemi. Prosím počkej než budete požádat o "
"další mail."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Nemohli jsme najít tenhle mail v naší database"

471
i18n/ssr-da-dk.po Normal file
View File

@ -0,0 +1,471 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Du kan ikke sende chat beskeder med proxy"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Dit land er midlertidigt gjort stum i denne chat kanal"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Du er permanent gjort stum, Tilslut dig til vores Guilded for at appellere "
"om at du blev gjort stum"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Du er bannet"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Din Internetudbyder er bannet"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Du er gjort stum for en anden ${ timeMin } minutes"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Du er gjort stum for en anden ${ ttl } Sekunder"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Du sender beskeder for hurtigt, du skal vente ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Du har ikke tilladelse til at se denne kanal"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Din mail skal være bekræftet for at chatte"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Du kan ikke sende en besked så lang :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Venligst brug int kanal"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Lad være med at oversvømme chatten."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Du sendte en tom adgangskode eller ugyldig data :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Dette adgangskode-nulstillings link er ikke længere gyldig :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Dine adgangskoder matcher ikke :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Bruger eksisterer ikke i vores database :("
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Adgangskode blev succesfuldt ændret."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Ugyldig url :( Venligst tjek din mail igen."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobus"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "En 3D klode af hele vores kort"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Dobbeltklik på kloden for at gå tilbage."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Indlæser..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Placer farvede pixels på et kort-stilet kanvas med andre spillere online"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Email må ikke være tom."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Email skal være mindst 5 tegn lang."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Email kan ikke være længere end 40 tegn."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Email skal indeholde i det mindste én prik"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Email skal indeholde et @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Navn kan ikke være tomt."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Navn skal være mindst 2 tegn langt"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Navn skal være kortere end 26 tegn"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Navn indeholder ugyldige tegn f.eks. @, /, \\ eller #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Ingen adgangskode angivet."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Adgangskode skal være mindst 6 tegn lang."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Adgangskode skal være kortere end 60 tegn."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Adgangskode Nulstilling"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Nulstil din adgangskode her"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Nulstil Adgangskode"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Klik her"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "for at gå tilbage til pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Hej ${ name }, du kan skrive din nye adgangskode her:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Nye adgangskode"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Bekræft Nye Adgangskode"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Indsend"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Du er ikke logget ind"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Du er ikke tilladt til at få adgang til denne side"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Kun administratorer kan gøre det"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Du er ikke bannet"
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Denne email udbyder er ikke tilladt"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Ingen Captcha angivet"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "E-Mail allerede i brug."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Brugernavn allerede i brug."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Du tog for lang tid, prøv igen."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Du fejlede din captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Ukendt Captcha Fejl"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Kunne ikke oprette ny bruger :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Kunne ikke oprette session efter registrering :("
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Du er engang logget in."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Server fejl ved log ud."
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Du er ikke godkendt."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Forkerte adgangskode!"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Mail Bekræftelse"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Du er nu bekræftet"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Din mail bekræftelseskode er ugyldig eller allerede udløbet :(, venligst "
"anmod om en ny en."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun Kontoer"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Du vil blive automatisk omdirigeret efter 15s"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Eller ${ clickHere } for at gå tilbage til pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Jorden"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Måne"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Kanvas"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Koronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelKanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "Vores hovedkanvas, et kæmpe verdenskort. Placer hvor end du vil"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Måne kanvas. Sikkert sted for kunst. Ingen flager eller stor text (undtagen "
"hvis del af kunst) eller større end 1,5k x 1,5k pixels."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Placer Voxels på et 3D kanvas med andre"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Specielt kanvas for at sprede viden om SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Spejl af PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Spejl af Pixelcanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Sort og hvid kanvas"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Et kanvas for de mest aktive spillere fra den tidligere dag. Daglig "
"rangering opdaterer kl. 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Velkommen ${ name } til PixelPlanet, venligst bekræft din mail"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Hej ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"velkommen til vores lille samfund of pixelplacere, for at bruge din konto, "
"har du brug for at bekræfte din mail. Du kan gøre det her: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Klik for at Bekræfte"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Eller ved at kopiere følgende url:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Hav' det sjovt og tøv ikke med at kontakte os hvis du støder på nogle "
"problemer :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Tak"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Vi har allerede sendt dig en bekræftelsesmail, du kan anmode om endnu en om "
"${ minLeft } minutter."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Glemt din adgangskode for PixelPlanet? Få en ny en her"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Hello"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Du anmodet om en ny adgangskode. Du kan ændre din adgangskode inden for de "
"næste 30min her: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Hvis du ikke anmodet om denne mail, venligst bare ignorerer den (ip'en der "
"anmodet om denne mail var ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Mail er ikke konfigureret på serveren"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Vi har allerede sendt dig en mail med instruktioner. Venligst vent før du "
"anmoder om en ny mail."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Kunne ikke finde denne mail i vores database"

View File

@ -42,7 +42,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "E-Mail muss verifiziert sein um Nachrichten zu senden"
#: src/core/ChatProvider.js:436
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Du bsit permanent stummgeschaltet, gehe zu unser guilded um dagegen "
"einzusprechen"
@ -93,7 +93,7 @@ msgid "User doesn't exist in our database :("
msgstr "Spieler existiert nicht in unserer Datenbank :("
#: src/routes/reset_password.js:87
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Passwort erfolgreich geändert."
#: src/routes/reset_password.js:106
@ -142,7 +142,7 @@ msgstr ""
"in ${ minLeft } minuten anfordern."
#: src/core/mail.js:78
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr ""
"Willkommen ${ name } auf PixelPlanet, bitte verifiziere deine Mail Adresse"
@ -170,7 +170,7 @@ msgstr "Oder kopiere den folgenden Link:"
#: src/core/mail.js:81
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Viel Spaß und scheue dich nicht uns zu kontaktieren, falls du Probleme "
"hast :)"

View File

@ -34,7 +34,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Vian retpostadreson devas esti verigita por babili"
#: src/core/ChatProvider.js:331
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Vi estas silentata senfine, eniru je l' guilded por malfari ĝi"
#: src/core/ChatProvider.js:336
@ -107,7 +107,7 @@ msgid "User doesn't exist in our database :("
msgstr "Uzanto ne ekzistas ŭwŭ"
#: src/routes/reset_password.js:108
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Pasvorton Malerare Ŝanĝita."
#: src/routes/reset_password.js:127
@ -132,7 +132,7 @@ msgstr ""
"en ${ minLeft } minutoj."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Bonvenon ${ name } to PixelPlanet, bonvolu verigi vian retpostadreson"
#: src/core/mail.js:77
@ -158,7 +158,7 @@ msgstr "Aŭ kopianta la URL:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr "Amuziĝu kaj ne heziti kontakti nin se renkontus ajna problemojn ŭwŭ"
#: src/core/mail.js:80 src/core/mail.js:130

View File

@ -37,7 +37,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Tu correo tiene que ser verificado para poder chatear"
#: src/core/ChatProvider.js:331
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Estás silenciado permanentemente, únete a nuestro guilded para apelar"
#: src/core/ChatProvider.js:336
@ -110,7 +110,7 @@ msgid "User doesn't exist in our database :("
msgstr "El usuario no existe en la base de datos :("
#: src/routes/reset_password.js:108
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Contraseña cambiada exitosamente."
#: src/routes/reset_password.js:127
@ -135,7 +135,7 @@ msgstr ""
"${ minLeft } minutos."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Bienvenido a PixelPlanet ${ name }, por favor verifica tu correo"
#: src/core/mail.js:77
@ -161,7 +161,7 @@ msgstr "O copiando la siguiente url:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr "Diviértete y no dudes en contactarnos si encuentras algún problema :)"
#: src/core/mail.js:80 src/core/mail.js:130

469
i18n/ssr-fa-ir.po Normal file
View File

@ -0,0 +1,469 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n==0 || n==1);\n"
"X-Generator: Poedit 3.4\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "تو نمیتونی با فیلترشکن پیام بفرستی"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "کشور شما موقتاً از این کانال چت بی‌صدا شده است"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr "شما برای همیشه بی‌صدا شده‌اید، به گیلدد ما بپیوندید تا نادیده گرفته شود"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "بن شدی سید"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "ارائه دهنده اینترنت شما ممنوع شده است"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "شما برای ${ timeMin } دقیقه بی صدا شدین"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "شما برای ${ ttl } ثانیه بی صدا شدین"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "خیلی داری تند تند پیام میفرستی. باید ${ waitTime } صبر کنی"
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "تو به این کانال دسترسی نداری"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "برای چت کردن، ایمیل شما باید تأیید شود"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "نمیشه اینقدر پیام بدی :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "لطفا از کانال int استفاده کنید"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "اینقدر پیام نفرست."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "رمز خالی یا داده نامعتبر فرستادی :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "این password-reset دیگر معتبر نیست :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "رمزهای شما همخوانی ندارند :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "کاربر در پایگاه داده ما وجود ندارد :("
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "رمز عبور با موفقیت تغییر کرد."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "آدرس اینترنتی نامعتبر :( لطفا دوباره ایمیل خود را بررسی کنید."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr ""
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "یک کره سه بعدی از کل نقشه ما"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "برای بازگشت بر روی globe دوبار کلیک کنید."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "بارگذاری..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr ""
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr ""
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr ""
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr "پیکسل‌های رنگی را روی بوم طرح‌دار نقشه با دیگر بازیکنان آنلاین قرار دهید"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "ایمیل نمی تواند خالی باشد."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "ایمیل باید حداقل 5 کاراکتر باشد."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "ایمیل نمی تواند بیشتر از 40 کاراکتر باشد."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "ایمیل حداقل باید حاوی یک نقطه باشد"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "ایمیل باید حاوی @ باشد"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "نام نمی تواند خالی باشد."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "نام باید حداقل 2 کاراکتر باشد"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "نام باید کمتر از 26 کاراکتر باشد"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "نام حاوی نویسه نامعتبر مانند @، /، \\ یا # است"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "رمز عبور داده نشده است."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "رمز عبور باید حداقل 6 کاراکتر باشد."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "رمز عبور باید کمتر از 60 کاراکتر باشد."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "تنظیم مجدد رمز عبور PixelPlanet.fun"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "رمز عبور خود را در اینجا بازنشانی کنید"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "بازنشانی رمز عبور"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "اینجا کلیک کنید"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "برای بازگشت به pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "سلام ${ name }، میتونی اینجا رمز جدیدت رو بزاری:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "رمز عبور جدید"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "رمز عبور جدید را تأیید کنید"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "ارسال"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "شما وارد نشده اید"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "شما اجازه دسترسی به این صفحه را ندارید"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "فقط ادمین ها میتونن این کار رو بکنن"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "تو بن نشدی"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "تو حتی وارد هم نشدی."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "خطای سرور هنگام خروج از سیستم."
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "تایید ایمیل"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "الان تایید شدی :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"کد تأیید ایمیل شما نامعتبر است یا قبلاً منقضی شده است :(، لطفاً یک کد جدید "
"درخواست کنید."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "این ارائه دهنده ایمیل مجاز نیست"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "کپچا داده نشده است"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "ایمیل در حال حاضر در حال استفاده است."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "نام کاربری در حال حاضر استفاده شده است."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "خیلی کار رو طولش دادی، دوباره امتحان کن."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "شما کپچای خود را اشتباه جواب دادین"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "کپچا یه خطایی داده که خودمم نمیدونم چیه"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "کاربر جدید ایجاد نشد :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "تشکیل جلسه پس از ثبت نام انجام نشد :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "شما احراز هویت نشده اید."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "رمزت رو غلط وارد کردی!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "حساب‌های PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "پس از 15 ثانیه به طور خودکار هدایت می شوید"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "یا ${ clickHere } تا به پیکسل پلنت برگردی"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "زمین"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "ماه"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "بوم سه بعدی"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "ویروس کرونا"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "منطقه پیکسل"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "بوم پیکسل"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "یک بیت"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "ده نفر برتر"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"بوم اصلی ما، نقشه عظیمی از جهان است. هر جایی که دوست دارید پیکسل قرار دهید"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"بوم ماه. فضای امن برای هنر بدون پرچم یا متن بزرگ (مگر اینکه بخشی از هنر) یا "
"هنری بزرگتر از 1.5k × 1.5k پیکسل باشد."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Voxels را روی بوم سه بعدی با دیگران قرار دهید"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "یک بوم مخصوص برای آگاهی رسانی درمورد ویروس کرونا"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "آینه منطقه پیکسل"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "آینه بوم پیکسل"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "بوم سیاه و سفید"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"بوم برای فعال ترین بازیکنان روز قبل. به روز رسانی رتبه بندی روزانه در ساعت "
"00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "خوش اومدی آقای ${ name } به پیکسل پلنت. بی زحمت ایمیلت رو تایید کن"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "سلام ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"به pixelplacers خوش آمدید، برای استفاده از حساب خود، باید ایمیل خود را تأیید "
"کنید. تو میتوانی آن کار را اینجا انجام بدی: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "برای تایید کلیک کنید"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "یا با کپی کردن آدرس زیر:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "لذت ببرید و در صورت بروز هرگونه مشکل با ما در ارتباط باشید :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "ممنون"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"ما قبلاً یک ایمیل تأیید برای شما ارسال کرده‌ایم، می‌توانید یک ایمیل دیگر را در "
"${ minLeft }دقیقه دیگر درخواست کنید."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr ""
"رمز عبور خود را برای PixelPlanet فراموش کرده اید؟ یک مورد جدید را از اینجا "
"دریافت کنید"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "سلام"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"شما درخواست کرده اید که یک رمز عبور جدید دریافت کنید. می توانید رمز عبور خود "
"را ظرف 30 دقیقه آینده در اینجا تغییر دهید: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"اگر شما این نامه را درخواست نکردید، لطفاً آن را نادیده بگیرید (IP درخواست "
"کننده این نامه ${ ip } بود)."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "ایمیل روی سرور پیکربندی نشده است"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"ما قبلاً یک ایمیل با دستورالعمل برای شما ارسال کردیم. لطفاً قبل از درخواست "
"ایمیل دیگری صبر کنید."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "این ایمیل در پایگاه داده ما یافت نشد"

View File

@ -36,7 +36,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Votre adresse de courriel doit être vérifiée pour chatter"
#: src/core/ChatProvider.js:331
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Vous êtes mis en sourdine pour toujours, rejoignez notre guilded pour faire "
"appel"
@ -113,7 +113,7 @@ msgid "User doesn't exist in our database :("
msgstr "Cet utilisateur n'existe pas dans notre base de données :("
#: src/routes/reset_password.js:108
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Le mot de passe a été modifié avec succès."
#: src/routes/reset_password.js:127
@ -139,7 +139,7 @@ msgstr ""
"autre en ${ minLeft } minutes."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Bienvenue ${ name } à PixelPlanet, veuillez vérifier votre courriel"
#: src/core/mail.js:77
@ -166,7 +166,7 @@ msgstr "Ou copiez l'adresse URL suivante :"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"S'amusez-vous bien et ne pas hésiter à nous contacter si vous rencontrez un "
"problème :)"

477
i18n/ssr-ge.po Normal file
View File

@ -0,0 +1,477 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ka\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.1\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "ვერ გაგზავნი მესიჯებს პროქსით"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "თქვენი ქვეყანა დამუდებული არის ამ ჩატიდან"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"თქვენ სამუდამოდ დადუმებული ხართ, შემოუერთდით ჩვენს გილდიას, რათა გაასაჩივროთ "
"მუნჯი"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "აკრძალული ხარ. თქვენ ფიქრობთ, რომ ეს გაუმართლებელია? შეამოწმეთ"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "თქვენს ინტერნეტ პროვაიდერს აეკრძალა ამ თამაშის თამაში"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "თქვენ დადუმებული ხართ კიდევ $ {timeMin } წუთით"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "თქვენ დადუმებული ხართ კიდევ ${ ttl } წამით"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"თქვენ ძალიან სწრაფად აგზავნით შეტყობინებებს, უნდა დაელოდოთ ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "თქვენ არ გაქვთ წვდომა ამ არხზე"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "თქვენი ფოსტა უნდა დადასტურდეს ჩეთისთვის"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "ამდენ ხანს მესიჯს ვერ გაუგზავნი :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "გთხოვთ გამოიყენოთ int არხი"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "შეაჩერე ჩატის გასპამვა."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "თქვენ გაგზავნეთ ცარიელი პაროლი ან არასწორი მონაცემები :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "ეს პაროლის აღდგენის ბმული აღარ არის მოქმედი :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Თქვენი პაროლები არ ემთხვევა :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "მომხმარებელი არ არსებობს ჩვენს მონაცემთა ბაზაში :("
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "პაროლი წარმატებით შეიცვალა."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "არასწორი url :( გთხოვთ, ხელახლა შეამოწმოთ თქვენი ფოსტა."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobe"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "ჩვენი მთელი რუკის 3D გლობუსი"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "ორჯერ დააწკაპუნეთ გლობუსზე უკან დასაბრუნებლად."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Ჩატვირთვა..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"განათავსეთ ფერადი პიქსელები რუკის კანვასზე ტილოზე სხვა მოთამაშეებთან ერთად "
"ონლაინ რეჟიმში"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "ელფოსტა არ შეიძლება იყოს ცარიელი."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "ელფოსტა უნდა იყოს მინიმუმ 5 სიმბოლო."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "ელფოსტა არ შეიძლება იყოს 40 სიმბოლოზე მეტი."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "ელფოსტა მინიმუმ წერტილს უნდა შეიცავდეს"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "ელფოსტა უნდა შეიცავდეს @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "სახელი არ შეიძლება იყოს ცარიელი."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "სახელი უნდა იყოს მინიმუმ 2 სიმბოლო"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "სახელი უნდა იყოს 26 სიმბოლოზე მოკლე"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "სახელი შეიცავს არასწორ სიმბოლოს, როგორიცაა @, /, \\ ან #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "პაროლი არ არის მოცემული."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "პაროლი უნდა იყოს მინიმუმ 6 სიმბოლო."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "პაროლი უნდა იყოს 60 სიმბოლოზე ნაკლები."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun პაროლის აღდგენა"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "გადააყენეთ თქვენი პაროლი აქ"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "პაროლის აღდგენა"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Დააკლიკე აქ"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "პიქსელ პლანეტაზე დასაბრუნებლად"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "გამარჯობა ${ name }, შეგიძლიათ დააყენოთ თქვენი ახალი პაროლი აქ:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "ახალი პაროლი"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Დაადასტურეთ ახალი პაროლი"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "გაგზავნა"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "თქვენ არ ხართ შესული"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "თქვენ არ გაქვთ უფლება შეხვიდეთ ამ გვერდზე"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "ამის გაკეთება მხოლოდ ადმინებს შეუძლიათ"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "არ ხარ აკრძალული"
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "ელფოსტის ეს პროვაიდერი დაუშვებელია"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "კაპჩა არ არის მოცემული"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Ელექტრონული ფოსტა უკვე გამოყენებულია."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Მომხმარებლის სახელი უკვე გამოიყენება."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "ძალიან დიდი დრო დაგჭირდათ, ისევ სცადეთ."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "თქვენ ვერ მოახერხეთ თქვენი კაპტჩა"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "უცნობი კაპჩტას შეცდომა"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "ახალი მომხმარებლის შექმნა ვერ მოხერხდა :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "რეგისტრაციის შემდეგ სესიის დამყარება ვერ მოხერხდა :("
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "თქვენ არც კი ხართ შესული."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "სერვერის შეცდომა გამოსვლისას."
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "თქვენ არ ხართ დამოწმებული."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Არასწორი პაროლი!"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "ფოსტის გადამოწმება"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "ახლა დამოწმებული ხარ :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"თქვენი ფოსტის დამადასტურებელი კოდი არასწორია ან უკვე ვადაგასულია :(, გთხოვთ, "
"მოითხოვოთ ახალი."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun ანგარიშები"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "თქვენ ავტომატურად გადამისამართდებით 15 წამის შემდეგ"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "ან ${ clickHere } pixelplanet-ზე დასაბრუნებლად"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "დედამიწა"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "მთვარე"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3დ კანვასი"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "კორონავირუსი"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "პიქსელზონა"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1 ბიტი"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "10 საუკეთესო"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"ჩვენი მთავარი კანვასი, მსოფლიოს უზარმაზარი რუკა. განათავსეთ ყველგან, სადაც "
"გსურთ"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"მთვარის კანვასი. უსაფრთხო სივრცე ხელოვნებისთვის. არ არის დროშები ან დიდი "
"ტექსტი (თუ არ არის ხელოვნების ნაწილი) ან 1,5 კ x 1,5 კ პიქსელზე მეტი "
"ნამუშევარი."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "მოათავსეთ ვოქსელები 3D ტილოზე სხვებთან ერთად"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "სპეციალური ტილო SARS-CoV2-ის შესახებ ცნობადობის გასავრცელებლად"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "PixelZone-ის სარკე"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "PixelCanvas-ის სარკე"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "შავ-თეთრი ტილო"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"ტილო წინა დღის ყველაზე აქტიური მოთამაშეებისთვის. ყოველდღიური რეიტინგის "
"განახლებები 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr ""
"მოგესალმებით ${ name } PixelPlanet-ში, გთხოვთ, გადაამოწმოთ თქვენი ფოსტა"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "გამარჯობა ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"კეთილი იყოს თქვენი მობრძანება pixelplacers-ის ჩვენს პატარა საზოგადოებაში, "
"თქვენი ანგარიშის გამოსაყენებლად, თქვენ უნდა გადაამოწმოთ თქვენი ფოსტა. ამის "
"გაკეთება შეგიძლიათ აქ:"
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "დააწკაპუნეთ დასადასტურებლად"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "ან შემდეგი url-ის კოპირებით:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr ""
"გაერთეთ და ნუ მოგერიდებათ დაგვიკავშირდეთ თუ რაიმე პრობლემა შეგექმნათ :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "მადლობა"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"ჩვენ უკვე გამოგიგზავნეთ დამადასტურებელი წერილი, შეგიძლიათ მოითხოვოთ სხვა "
"${ minLeft } წუთში."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "დაგავიწყდათ თქვენი პაროლი PixelPlanet-ისთვის? მიიღეთ ახალი აქ"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "გამარჯობა"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"თქვენ მოითხოვეთ ახალი პაროლის მიღება. თქვენ შეგიძლიათ შეცვალოთ თქვენი პაროლი "
"შემდეგი 30 წუთის განმავლობაში აქ:"
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"თუ თქვენ არ მოითხოვეთ ეს წერილი, გთხოვთ, უბრალოდ უგულებელყოთ იგი (IP, "
"რომელმაც მოითხოვა ეს წერილი, იყო ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "ფოსტა არ არის კონფიგურირებული სერვერზე"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"ჩვენ უკვე გამოგიგზავნეთ მეილი ინსტრუქციებით. გთხოვთ, დაელოდოთ სხვა ფოსტის "
"მოთხოვნამდე."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "ვერ ვიპოვე ეს წერილი ჩვენს მონაცემთა ბაზაში"

479
i18n/ssr-gr.po Normal file
View File

@ -0,0 +1,479 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: el_GR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.3.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Δεν μπορείτε να στείλετε μηνύματα συνομιλίας με proxy"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr ""
"Η χώρα σας έχει τεθεί προσωρινά σε σίγαση από αυτό το κανάλι συνομιλίας"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"Βρίσκεστε σε μόνιμη σίγαση, εγγραφείτε στο guilded μας για να υποβάλετε "
"έκκληση για τη σίγαση"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Είστε απαγορευμένοι"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Ο πάροχος Διαδικτύου σας έχει απαγορευτεί"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Έχετε τεθεί σε σίγαση για άλλα ${ timeMin } λεπτά"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Βρίσκεστε σε σίγαση για άλλα ${ ttl } δευτερόλεπτα"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Στέλνετε μηνύματα πολύ γρήγορα, πρέπει να περιμένετε ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Δεν έχετε πρόσβαση σε αυτό το κανάλι"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Το mail σας πρέπει να επαληθευτεί για να συνομιλήσετε"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Δεν μπορείς να στείλεις τόσο μεγάλο μήνυμα :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Χρησιμοποιήστε το κανάλι int"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Σταματήστε το σπαμ."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Στείλατε έναν κενό κωδικό πρόσβασης ή μη έγκυρα δεδομένα :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr ""
"Αυτός ο σύνδεσμος επαναφοράς κωδικού πρόσβασης δεν είναι πλέον έγκυρος :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Οι κωδικοί πρόσβασης δεν ταιριάζουν"
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Ο χρήστης δεν υπάρχει στη βάση δεδομένων μας :("
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Μη έγκυρη διεύθυνση url :( Ελέγξτε ξανά το mail σας."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobe"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "Μια τρισδιάστατη σφαίρα ολόκληρου του χάρτη μας"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Κάντε διπλό κλικ στο globe για να επιστρέψετε."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Φόρτωση.."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Τοποθετήστε έγχρωμα pixel σε έναν μεγάλο καμβά με άλλους παίκτες στο "
"διαδίκτυο"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Το email δεν μπορεί να είναι κενό."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Το email πρέπει να αποτελείται από τουλάχιστον 5 χαρακτήρες."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Το email δεν μπορεί να είναι μεγαλύτερο από 40 χαρακτήρες."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Το email πρέπει να περιέχει τουλάχιστον μια τελεία"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Το email πρέπει να περιέχει ένα @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Το όνομα δεν μπορεί να είναι κενό."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Το όνομα πρέπει να αποτελείται από τουλάχιστον 2 χαρακτήρες"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Το όνομα πρέπει να είναι μικρότερο από 26 χαρακτήρες"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Το όνομα περιέχει μη έγκυρο χαρακτήρα όπως @, /, \\ ή #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Δεν δόθηκε κωδικός πρόσβασης."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Ο κωδικός θα πρέπει να είναι τουλάχιστον 6 χαρακτήρες."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Ο κωδικός πρόσβασης πρέπει να είναι μικρότερος από 60 χαρακτήρες."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Επαναφορά κωδικού πρόσβασης"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Επαναφέρετε τον κωδικό πρόσβασής σας εδώ"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Επαναφέρετε τον κωδικό πρόσβασης"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Κάντε κλικ εδώ"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "για να επιστρέψετε στο pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr ""
"Γεια σας ${ name }, μπορείτε να ορίσετε τον νέο σας κωδικό πρόσβασης εδώ:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Νέος Κωδικός"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Επιβεβαιώστε τον καινούριο σας κωδικό"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Yπέβαλλε"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Δεν είσται συνδεμένοι"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Δεν επιτρέπεται η πρόσβαση σε αυτή τη σελίδα"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Μόνο οι διαχειριστές μπορούν να το κάνουν αυτό"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Δεν είσαι απαγορευμένος"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Δεν είστε καν συνδεδεμένος."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Σφάλμα διακομιστή κατά την αποσύνδεση."
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Επαλήθευση mail"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Είσαι πλέον επαληθευμένος :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Ο κωδικός επαλήθευσης της αλληλογραφίας σας δεν είναι έγκυρος ή έχει ήδη "
"λήξει :(, ζητήστε νέο."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Αυτός ο πάροχος email δεν επιτρέπεται"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Δεν δόθηκε αναγνωριστικό captcha"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Email είναι ήδη σε χρήση."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Το όνομα χρήστη χρησιμοποιείται ήδη."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Χρειάστηκε πολύς χρόνος, δοκιμάστε ξανά."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Απέτυχες το captcha σου"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Άγνωστο σφάλμα Captcha"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Αποτυχία δημιουργίας νέου χρήστη :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Απέτυχε η δημιουργία συνεδρίας μετά την εγγραφή :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Δεν έχετε πιστοποιηθεί."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Λάθος κωδικός!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "Λογαριασμοί PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Θα ανακατευθυνθείτε αυτόματα μετά από 15 δευτερόλεπτα"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Ή ${ clickHere } για να επιστρέψετε στο pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Gh"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Φεγγάρι"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Canvas"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Coronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top 10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Ο κύριος καμβάς μας, ένας τεράστιος χάρτης του κόσμου. Τοποθετήστε όπου "
"θέλετε"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Καμβάς φεγγαριού. Ασφαλής χώρος για τέχνη. Χωρίς σημαίες ή μεγάλο κείμενο "
"(εκτός αν είναι μέρος της τέχνης) ή τέχνη μεγαλύτερη από 1,5k x 1,5k pixel."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Τοποθετήστε Voxel σε έναν τρισδιάστατο καμβά μαζί με άλλους"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Ειδικός καμβάς για τη διάδοση της ευαισθητοποίησης του SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Καθρέφτης του PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Καθρέφτης του PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Ασπρόμαυρος καμβάς"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Ένας καμβάς για τους πιο δραστήριους παίκτες από την προηγούμενη μέρα. "
"Καθημερινές ενημερώσεις κατάταξης στις 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "Καλώς ορίσατε το ${ name } στο PixelPlanet, επαληθεύστε τo mail σας"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Γεια σας ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"καλώς ήρθατε στη μικρή μας κοινότητα των pixelplacers, για να "
"χρησιμοποιήσετε τον λογαριασμό σας, πρέπει να επαληθεύσετε την αλληλογραφία "
"σας. Μπορείτε να το κάνετε εδώ: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Κάντε κλικ για επαλήθευση"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Ή αντιγράφοντας την παρακάτω διεύθυνση url:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr ""
"Διασκεδάστε και μη διστάσετε να επικοινωνήσετε μαζί μας αν αντιμετωπίσετε "
"οποιοδήποτε πρόβλημα :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Ευχαριστούμε"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Σας έχουμε ήδη στείλει ένα μήνυμα επαλήθευσης, μπορείτε να ζητήσετε ένα άλλο "
"σε ${ minLeft } λεπτά."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr ""
"Ξεχάσατε τον κωδικό πρόσβασής σας για το PixelPlanet; Αποκτήστε ένα νέο εδώ"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Γεια"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Ζητήσατε να λάβετε νέο κωδικό πρόσβασης. Μπορείτε να αλλάξετε τον κωδικό "
"πρόσβασής σας μέσα στα επόμενα 30 λεπτά εδώ: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Εάν δεν ζητήσατε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, απλώς αγνοήστε το "
"(η διεύθυνση IP που ζήτησε αυτό το μήνυμα ήταν ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Το mail δεν έχει ρυθμιστεί στον διακομιστή"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Σας έχουμε ήδη στείλει ένα mail με οδηγίες. Περιμένετε πριν ζητήσετε άλλo "
"mail."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Δεν ήταν δυνατή η εύρεση αυτού του μηνύματος στη βάση δεδομένων μας"

439
i18n/ssr-hr.po Normal file
View File

@ -0,0 +1,439 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Fontan 030 <pomanfedurin@gmail.com>\n"
"Language-Team: \n"
"Language: kk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Ne možete slati chat poruke putem proxyja"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Vaša zemlja je privremeno isključena iz ovog kanala za chat"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr "Trajno ste utišani, pridružite se našem Guildedu kako biste apelirali žalbu na utišavanje"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Zabranjeni ste"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Vaš Internet Provider je zabranjen"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Isključen vam je chat još ${ timeMin } minuta"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Isključen vam je još ${ ttl } sekundi"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Šaljete poruke prebrzo, morate čekati ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Nemate pristup ovom kanalu"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Vaša pošta mora biti potvrđena da biste mogli razgovarati"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Ne možete poslati poruku ovoliko dugu :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Molimo koristite int kanal"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Zaustavite poplavu."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Poslali ste praznu lozinku ili nevažeće podatke :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Ova veza za ponovno postavljanje lozinke više nije važeća :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Vaše lozinke se ne podudaraju :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Korisnik ne postoji u našoj bazi podataka :("
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Lozinka uspješno promijenjena."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Nevažeći url :( Provjerite svoju poštu ponovo."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3D-globus"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "3D globus naše cijele karte"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Dvaput kliknite na globus za povratak."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Učitavanje..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun pojava"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr "Postavite pixele u boji na platno u stilu karte s drugim igračima na mreži"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "E-pošta ne može biti prazna."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "E-pošta treba imati najmanje 5 znakova."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "E-pošta ne može biti duža od 40 znakova."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "E-pošta mora sadržavati barem točku"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "E-pošta treba sadržavati @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Ime ne može biti prazno."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Ime mora imati najmanje 2 znaka"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Ime mora biti kraće od 26 znakova"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Naziv sadrži nevažeći znak kao što je @, /, \\ ili #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Lozinka nije navedena."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Lozinka mora imati najmanje 6 znakova."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Lozinka mora biti kraća od 60 znakova."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Ponovno postavljanje lozinke"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Кұпиясөзіңізді осында арылта аласыз"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28 src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Ponovno postavite lozinku ovdje"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Kliknite ovdje"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "da biste se vratili na pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Pozdrav ${ name }, svoju novu lozinku možete postaviti ovdje:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Nova lozinka"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Potvrdi novu lozinku"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Podnesi"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Niste ulogirani"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Nije vam dopušten pristup ovoj stranici"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "To mogu samo administratori"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Niste zabranjeni"
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Ovaj pružatelj usluge e-pošte nije dopušten"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Nije data Captcha"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "E-pošta je već u uporabi."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Korisničko ime se već koristi."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Predugo vam je trebalo, pokušajte ponovno."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Pogrešio si s captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Nepoznata Captcha pogreška"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Stvaranje novog korisnika nije uspjelo :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Nije uspjelo uspostavljanje sesije nakon registracije :("
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Niste čak ni prijavljeni."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Pogreška poslužitelja prilikom odjave."
#: src/routes/api/auth/change_mail.js:43 src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Niste autentificirani."
#: src/routes/api/auth/change_mail.js:52 src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Netočna lozinka!"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Provjera pošte"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Sada ste verificirani :)"
#: src/routes/api/auth/verify.js:35
msgid "Your mail verification code is invalid or already expired :(, please request a new one."
msgstr "Vaš kod za provjeru pošte je nevažeći ili je već istekao :(, zatražitenovi."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun računi"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Bit ćete automatski preusmjereni nakon 15 s"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Ili ${ clickHere } da se vratite na pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Zemlja"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Mjesec"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D-platno"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Koronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top-10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "Naše glavno platno, ogromna karta svijeta. Stavite gdje god želite"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) or art larger than 1.5k x "
"1.5k pixels."
msgstr ""
"Mjesečevo platno. Siguran prostor za umjetnost. Bez zastava ili velikog teksta (osim ako je dio "
"umjetnosti)ili slika veća od 1,5k x 1,5 pixela."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Postavite Voxele na 3D platno s drugima"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Posebno platno za širenje svijesti o SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Ogledalo PixelZone-a"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Ogledalo PixelCanvasa"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Crno-bijelo platno"
#: src/canvasesDesc.js:36
msgid "A canvas for the most active players from the the previous day. Daily ranking updates at 00:00 UTC."
msgstr "Platno za najaktivnije igrače prethodnog dana. Dnevno ažuriranja poretka u 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "Dobro došli ${ name } na PixelPlanet, potvrdite svoju poštu"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Pozdrav ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you have to verify your mail. You "
"can do that here: "
msgstr ""
"dobrodošli u našu malu zajednicu pixelplacera, da koristite svoj račun, vi morate potvrditi svoju poštu. "
"To možete učiniti ovdje: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Kliknite za verifikaciju"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Ili kopiranjem sljedećeg url-a:"
#: src/core/MailProvider.js:69
msgid "Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "Zabavite se i ne ustručavajte se kontaktirati nas ako naiđete na probleme :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Hvala"
#: src/core/MailProvider.js:87
#, javascript-format
msgid "We already sent you a verification mail, you can request another one in ${ minLeft } minutes."
msgstr "Već smo vam poslali e-poruku za potvrdu, možete zatražiti drugu u ${ minLeft } minuta."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Zaboravili ste lozinku za PixelPlanet? Nabavite novu ovdje"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Pozdrav"
#: src/core/MailProvider.js:105
msgid "You requested to get a new password. You can change your password within the next 30min here: "
msgstr "Zatražili ste novu lozinku. Možete promijeniti svoju lozinku unutar sljedećih 30 minuta ovdje: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that requested this mail was ${ ip })."
msgstr "Ako niste zatražili ovu poruku, samo je zanemarite (ip kojizatražio je da ova poruka bude ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "E-pošta nije konfigurirana na poslužitelju"
#: src/core/MailProvider.js:122
msgid "We already sent you a mail with instructions. Please wait before requesting another mail."
msgstr "Već smo vam poslali e-mail s uputama. Pričekajte prije zahtjeva druge poruke."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Nismo mogli pronaći ovu poštu u našoj bazi podataka"

View File

@ -1,436 +1,495 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: hu_HU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.4.2\n"
#: src/core/ChatProvider.js:287
msgid "You can not send chat messages with proxy"
msgstr "Proxy-val nem küldhetsz üzenetet"
#: src/core/ChatProvider.js:292
msgid "Couldn't send your message, pls log out and back in again."
msgstr "Nem sikerült elküldeni az üzenetet, lépj ki és aztán újra be."
#: src/core/ChatProvider.js:306
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Túl gyorsan küldöd az üzeneteket, várnod kell ${ waitTime }mp-t :("
#: src/core/ChatProvider.js:310
msgid "You don't have access to this channel"
msgstr "Nincs hozzáférésed ehhez a csatornához"
#: src/core/ChatProvider.js:326
msgid "Your mail has to be verified in order to chat"
msgstr "Hitelesítsd az email címed ahhoz, hogy írni tudj"
#: src/core/ChatProvider.js:331
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"Véglegesen némítva lettél, csatlakozz a Guilded szerverünkhöz a "
"fellebbezéshez"
#: src/core/ChatProvider.js:336
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Még ${ timeMin } percig leszel némítva"
#: src/core/ChatProvider.js:338
msgid "You are muted for another ${ muted } seconds"
msgstr "Még ${ muted } másodpercig leszel némítva"
#: src/core/ChatProvider.js:346
msgid "Ow no! Spam protection decided to mute you"
msgstr "Jaj ne! A spam filter úgy döntött, hogy lenémít"
#: src/core/ChatProvider.js:357
msgid "You can't send a message this long :("
msgstr "Ilyen hosszú üzenetet nem küldhetsz :("
#: src/core/ChatProvider.js:361
msgid "Please use int channel"
msgstr "Kérlek, használt az int csatornát"
#: src/core/ChatProvider.js:365
msgid "Your country is temporary muted from chat"
msgstr "Az országod átmenetileg némítva van"
#: src/core/ChatProvider.js:373
msgid "Stop flooding."
msgstr "Helyedre!"
#: src/ssr-components/Globe.jsx:44
msgid "Double click on globe to go back."
msgstr "Kattints duplán a glóbuszra, hogy visszatérj."
#: src/ssr-components/Globe.jsx:45
msgid "Loading..."
msgstr "Töltünk..."
#: src/ssr-components/Globe.jsx:51
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPLanet.Fun 3DFöld"
#: src/ssr-components/Globe.jsx:52
msgid "A 3D globe of our whole map"
msgstr "A térképünk 3D-s modellje"
#: src/ssr-components/Main.jsx:73
msgid "PixelPlanet.fun"
msgstr "PixelPlanet.fun"
#: src/ssr-components/Main.jsx:75
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Helyezz el pixeleket egy hatalmas online vásznon más játékosokkal együtt"
#: src/routes/reset_password.js:58
msgid "You sent an empty password or invalid data :("
msgstr "Üres jelszót vagy hibás adatot adtál meg:("
#: src/routes/reset_password.js:70
msgid "This password-reset link isn't valid anymore :("
msgstr "A jelszó visszaállító link többé nem érvényes :("
#: src/routes/reset_password.js:81
msgid "Your passwords do not match :("
msgstr "A jelszavak nem egyeznek :("
#: src/routes/reset_password.js:96
msgid "User doesn't exist in our database :("
msgstr "Ilyen felhasználó nincs az adatbázisunkban :("
#: src/routes/reset_password.js:108
msgid "Passowrd successfully changed."
msgstr "Jelszó sikeresen megváltoztatva."
#: src/routes/reset_password.js:127
msgid "Invalid url :( Please check your mail again."
msgstr "Érvénytelen url :( Kérlek nézd meg újból az e-mailed."
#: src/routes/reset_password.js:140
msgid ""
"This passwort reset link is wrong or already expired, please request a new "
"one (Note: you can use those links just once)"
msgstr ""
"A jelszó visszaállító link hibás vagy már lejárt, kérj egy újat (Csak "
"egyszer használatos)"
#: src/core/mail.js:65
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Már küldtünk egy megerősítő e-mailt, kérhetsz újat ${ minLeft } perc múlva."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr ""
"${ name } , üdvözlünk a Pixelplaneten, kérlek hitesítsd az e-mail címed"
#: src/core/mail.js:77
#, javascript-format
msgid "Hello ${ name }"
msgstr "Szia ${ name }"
#: src/core/mail.js:78
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"üdvözlünk a pixel-művészek kis közösségében; hogy használni tudd a "
"felhasználód, hitelesítsd az e-mail címed. Ezt itt teheted meg: "
#: src/core/mail.js:78
msgid "Click to Verify"
msgstr "Hitelesítéshez kattints ide"
#: src/core/mail.js:78 src/core/mail.js:128
msgid "Or by copying following url:"
msgstr "Vagy úgy, hogy kimásolod a url-t:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "Érezd jól magad és ne keress minket bátran, ha problémád akadt."
#: src/core/mail.js:80 src/core/mail.js:130
msgid "Thanks"
msgstr "Köszi"
#: src/core/mail.js:98
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Már küldtünk egy utasításokat tartalmazó e-mailt. Kérlek várj mielőtt újat "
"kérsz."
#: src/core/mail.js:106
msgid "Couldn't find this mail in our database"
msgstr "Az e-mail cím nem található az adatbázisunkban"
#: src/core/mail.js:125
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Elfelejtetted a jelszavad? Itt kérhetsz újat"
#: src/core/mail.js:127
msgid "Hello"
msgstr "Szia"
#: src/core/mail.js:128
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr "Új jelszót kértél. itt tudod 30 percig megváltoztatni a jelszavad: "
#: src/core/mail.js:128 src/ssr-components/PasswordReset.jsx:19
#: src/ssr-components/PasswordReset.jsx:28
msgid "Reset Password"
msgstr "Jelszó visszaállítása"
#: src/core/mail.js:129
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Ha nem te kérted ez az e-mailt, akkor hagyd figyelmen kívül (az e-mailt "
"erről az ip-címről kérték ${ ip })."
#: src/ssr-components/PasswordReset.jsx:21
#: src/ssr-components/RedirectionPage.jsx:15
msgid "Click here"
msgstr "Kattints ide"
#: src/ssr-components/PasswordReset.jsx:22
msgid "to go back to pixelplanet"
msgstr "hogy visszamenj a pixelplanet-re"
#: src/ssr-components/PasswordReset.jsx:29
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Szia ${ name }, új jelszót itt választhatsz:"
#: src/ssr-components/PasswordReset.jsx:33
msgid "New Password"
msgstr "Új jelszó"
#: src/ssr-components/PasswordReset.jsx:41
msgid "Confirm New Password"
msgstr "Új jelszó megerősítése"
#: src/ssr-components/PasswordReset.jsx:47
msgid "Submit"
msgstr "Beküld"
#: src/ssr-components/PasswordReset.jsx:52
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Jelszó visszaállítás"
#: src/ssr-components/PasswordReset.jsx:53
msgid "Reset your password here"
msgstr "Állítsd vissza a jelszavad itt"
#: src/utils/validation.js:18
msgid "Email can't be empty."
msgstr "Adj meg egy e-mailt."
#: src/utils/validation.js:19
msgid "Email should be at least 5 characters long."
msgstr "Az e-mail címnek legalább 5 karakterből kell állnia."
#: src/utils/validation.js:20
msgid "Email can't be longer than 40 characters."
msgstr "Az e-mail cím nem lehet hosszabb 40 karakternél."
#: src/utils/validation.js:21
msgid "Email should at least contain a dot"
msgstr "Az e-mail címben legalább egy pontnak lennie kell"
#: src/utils/validation.js:23
msgid "Email should contain a @"
msgstr "Az e-mail címnek tartalmaznia kell egy @-t"
#: src/utils/validation.js:30
msgid "Name can't be empty."
msgstr "A név nem lehet üres."
#: src/utils/validation.js:31
msgid "Name must be at least 4 characters long"
msgstr "A névnek legalább 4 karakterből kell állnia"
#: src/utils/validation.js:32
msgid "Name must be shorter than 26 characters"
msgstr "A névnek 26 karakternél rövidebbnek kell lennie"
#: src/utils/validation.js:39
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "A név érvénytelen karaktereket tartalmaz mint: @, /, \\ vagy #"
#: src/utils/validation.js:54
msgid "No password given."
msgstr "Nem adtál meg jelszót."
#: src/utils/validation.js:57
msgid "Password must be at least 6 characters long."
msgstr "A jelszónak legalább 6 karakter hosszúságúnak kell lennie."
#: src/utils/validation.js:60
msgid "Password must be shorter than 60 characters."
msgstr "A jelszónak 60 karakternél rövidebbnek kell lennie."
#: src/routes/api/captcha.js:22
msgid "No captcha text given"
msgstr "Nem adott meg kend rovást"
#: src/routes/api/captcha.js:36
msgid "You took too long, try again."
msgstr "Túl lassú voltál, próbáld meg újból."
#: src/routes/api/captcha.js:42
msgid "You failed your captcha"
msgstr "Hát ez nem jött össze"
#: src/routes/api/captcha.js:48
msgid "Unknown Captcha Error"
msgstr "Ismeretlen Captcha hiba"
#: src/routes/api/captcha.js:55
msgid "Server error occured"
msgstr "Szerver hiba történt"
#: src/routes/api/auth/register.js:31
msgid "E-Mail already in use."
msgstr "E-mail cím már használatban."
#: src/routes/api/auth/register.js:33
msgid "Username already in use."
msgstr "Ez a felhasználó foglalt."
#: src/routes/api/auth/register.js:61
msgid "Failed to create new user :("
msgstr "Nem sikerült új felhasználót létrehozni :("
#: src/routes/api/auth/register.js:77
msgid "Failed to establish session after register :("
msgstr "A regisztáció után a munkamenet létrehozása nem sikerült :("
#: src/routes/api/auth/logout.js:13
msgid "You are not even logged in."
msgstr "Nem vagy bejelentkezve."
#: src/routes/api/auth/change_mail.js:41
#: src/routes/api/auth/change_passwd.js:37
#: src/routes/api/auth/delete_account.js:38
msgid "You are not authenticated."
msgstr "Nem vagy hitelesítve."
#: src/routes/api/auth/change_mail.js:50
#: src/routes/api/auth/change_passwd.js:46
#: src/routes/api/auth/delete_account.js:48
msgid "Incorrect password!"
msgstr "Helytelen jelszó!"
#: src/routes/api/auth/verify.js:25 src/routes/api/auth/verify.js:32
msgid "Mail verification"
msgstr "E-mail megerősítése"
#: src/routes/api/auth/verify.js:26
msgid "You are now verified :)"
msgstr "Most már érvényesítve vagy :)"
#: src/routes/api/auth/verify.js:32
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Az megerősító e-mail kódja érvénytelen vagy lejárt :(, kérlek kérj újat."
#: src/ssr-components/RedirectionPage.jsx:20
msgid "You will be automatically redirected after 15s"
msgstr "Automatikusan át leszel irányítva 15mp múlva"
#: src/ssr-components/RedirectionPage.jsx:21
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Vagy ${ clickHere } hogy visszatérj a pixelplanet-re"
#: src/ssr-components/RedirectionPage.jsx:25
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun Felhasználók"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Föld"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Hold"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Vászon"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Koronavírus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:28
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "A fő vásznunk egy hatalmas világtérkép. Azt rajzolsz rá, amit akarsz"
#: src/canvasesDesc.js:29
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art)"
msgstr ""
"Hold vászon. Ez egy biztonságos hely a rajzok számára. A zászló és nagy "
"szöveg tilos (hacsaknem egy rajz része)"
#: src/canvasesDesc.js:30
msgid "Place Voxels on a 3D canvas with others"
msgstr "Helyezz el voxeleket egy 3D-s vásznon"
#: src/canvasesDesc.js:31
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Speciális vászon a SARS-CoV2 terjesztésére"
#: src/canvasesDesc.js:32
msgid "Mirror of PixelZone"
msgstr "A PixelZone tükrözése"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelCanvas"
msgstr "A PixelCanvas tükrözése"
#: src/canvasesDesc.js:34
msgid "Black and White canvas"
msgstr "Fekete-fehér vászon"
#~ msgid "Could not connect to server, please try again later :("
#~ msgstr "Nem sikerült csatlakozni a szerverhez, próbáld meg később :("
#~ msgid "I think we experienced some error :("
#~ msgstr "Szerintem valami hiba történhetett :("
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Proxyval nem küldhetsz üzenetet"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Az országod ideiglenesen némítva van ezen a chaten"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Örökre némítva lettél, csatlakozz a Discord szerverünkhöz a fellebbezéshez"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Ki lettél tiltva"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Az internetszolgáltatód ki van tiltva"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "${ timeMin } percig némítva vagy"
#: src/core/ChatProvider.js:450
#, javascript-format
msgid "You are muted for another ${ ttl } seconds"
msgstr "${ ttl } másodpercig némítva vagy"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"Túl gyorsan küldöd az üzeneteket, várnod kell ${ waitTime } másodpercet :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Nincs hozzáférésed ehhez a csatornához"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr ""
"Az e-mail címednek hitelesítettnek kell lennie ahhoz, hogy írhass a chatre"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Nem tudsz ilyen hosszú üzenetet küldeni :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Kérjük, használd a nemzetközi csatornát"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Helyedre!"
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Üres jelszót vagy érvénytelen adatokat küldtél :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Ez a jelszó-visszaállítási link már nem érvényes :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "A jelszavak nem egyeznek :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "A felhasználó nem létezik az adatbázisunkban :("
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Jelszó sikeresen megváltoztatva."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Érvénytelen link :( Kérjük, ellenőrizd újra a leveled."
#: src/ssr/Globe.jsx:37
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3D földgömb"
#: src/ssr/Globe.jsx:38
msgid "A 3D globe of our whole map"
msgstr "3D-s földgömb az egész térképünkről"
#: src/ssr/Globe.jsx:51
msgid "Double click on globe to go back."
msgstr "Kattints duplán a földgömbre a visszatéréshez."
#: src/ssr/Globe.jsx:52
msgid "Loading..."
msgstr "Betöltés..."
#: src/ssr/PopUp.jsx:55
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:56
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun felugró"
#: src/ssr/Main.jsx:64
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:65
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Helyezz el pixeleket egy hatalmas online vásznon más játékosokkal együtt"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Az e-mail cím nem lehet üres."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Az e-mail címnek legalább 5 karakter hosszúnak kell lennie."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Az e-mail cím nem lehet hosszabb 40 karakternél."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Az e-mail címnek legalább egy pontot tartalmaznia kell"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Az e-mail címnek tartalmaznia kell egy @-t"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "A név nem lehet üres."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "A névnek legalább 2 karakterből kell állnia"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "A név nem lehet hosszabb 26 karakternél"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "A név érvénytelen karaktereket tartalmaz mint például: @, /, \\ vagy #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Nem adtál meg jelszót."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "A jelszónak legalább 6 karakter hosszúságúnak kell lennie."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "A jelszónak 60 karakternél rövidebbnek kell lennie."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun jelszó megváltoztatása"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Jelszó visszaállítása itt"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Jelszó visszaállítása"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Kattints ide"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "vissza a pixelplanetre"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Szia ${ name }, itt tudod beállítani az új jelszavadat:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Új jelszó"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Új jelszó megerősítése"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Küldés"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Nem vagy bejelentkezve"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Nincs hozzáférésed ehhez az oldalhoz"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Ezt csak az adminok tehetik meg"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Nem vagy kitiltva"
#: src/routes/api/auth/change_mail.js:22 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Ez az e-mail szolgáltató nem engedélyezett"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Nincs Captcha megadva"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Az e-mail cím már foglalt."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "A felhasználónév már foglalt."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Túl sokáig próbáltad, próbáld újra."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Nem sikerült a captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Ismeretlen captcha hiba"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Nem sikerült új felhasználót létrehozni :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Nem sikerült létrehozni a munkamenetet a regisztráció után :("
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "E-mail hitelesítés"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Mostantól hitelesített vagy :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"A leveled hitelesítő kódja érvénytelen vagy már lejárt :(, kérj egy újat."
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Még csak be sem vagy jelentkezve."
#: src/routes/api/auth/delete_account.js:65 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Szerverhiba a kijelentkezéskor."
#: src/routes/api/auth/change_mail.js:44
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:36
msgid "You are not authenticated."
msgstr "Nem vagy hitelesítve."
#: src/routes/api/auth/change_mail.js:53
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:55
msgid "Incorrect password!"
msgstr "Hibás jelszó!"
#: src/routes/api/auth/delete_account.js:46
msgid "Muted users can not delete their account."
msgstr "A némított felhasználók nem törölhetik fiókjukat."
#: src/routes/api/auth/change_mail.js:62
msgid "Muted users can not do this."
msgstr "A némított felhasználók nem tehetik meg ezt."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun fiókok"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Automatikusan átirányítunk 15 másodperc múlva"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Vagy ${ clickHere } a pixelplanetre való visszatéréshez"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Föld"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Hold"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D vászon"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Koronavírus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "Pixelzóna"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "Pixelvászon"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:27
msgid "Thoia"
msgstr "Trója"
#: src/canvasesDesc.js:30
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "A fő vásznunk egy hatalmas világtérkép. Azt rajzolsz rá, amit akarsz"
#: src/canvasesDesc.js:31
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Hold vászon. Biztonságos terület a művészet számára. Tiltott a zászló vagy "
"nagyméretű szöveg (kivéve, ha az az alkotás része) vagy 1,5k x 1,5k pixelnél "
"nagyobb rajz."
#: src/canvasesDesc.js:32
msgid "Place Voxels on a 3D canvas with others"
msgstr "Helyezz el voxeleket egy 3D-s vászonra, másokkal együtt"
#: src/canvasesDesc.js:33
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Speciális vászon a SARS-CoV2 terjesztésére"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelZone"
msgstr "A Pixelzóna tükörképe"
#: src/canvasesDesc.js:35
msgid "Mirror of PixelCanvas"
msgstr "A Pixelvászon tükörképe"
#: src/canvasesDesc.js:36
msgid "Black and White canvas"
msgstr "Fekete-fehér vászon"
#: src/canvasesDesc.js:37
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Az előző nap legaktívabb játékosainak vászna. A napi rangsor UTC idő szerint "
"00:00-kor frissül."
#: src/canvasesDesc.js:38
msgid ""
"Thoia World Canvas. Advanced fictional worldbuilding and arts. Abandon the "
"old world and all it entails."
msgstr ""
"Trójai világvászon. Haladó fiktív világépítés és művészetek. Hagyd el a régi "
"világot és minden velejáróját."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr ""
"Üdvözöljük ${ name } a PixelPlaneten, kérjük, hitelesítsd az e-mail címedet"
#: src/core/MailProvider.js:67
#, javascript-format
msgid "Hello ${ name }"
msgstr "Szia ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"Üdvözöljük a mi kis pixelrakó közösségünkben. Ha szeretnéd, hogy megmaradjon "
"a fiókod, meg kell erősítened az e-mail címedet. Ezt itt teheted meg: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Kattints ide a hitelesítéshez"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Vagy az alábbi link másolásával:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Jó szórakozást és ne felejtsd el felvenni a kapcsolatot velünk, ha bármilyen "
"probléma merülne fel :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Köszönjük"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Már küldtünk egy hitelesítő levelet, kérhetsz másikat ${ minLeft } perc "
"múlva."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Elfelejtetted a jelszavadat a PixelPlanethez? Itt szerezhetsz újat"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Szia"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Új jelszót kértél. Az elkövetkezendő 30 percen belül megváltoztathatod a "
"jelszavadat itt: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Ha nem Te kérted ezt a levelet, kérjük, hagyjad figyelmen kívül (az IP, aki "
"ezt a levelet kérte, ${ ip } volt)."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Az e-mail cím nincs beállítva a szerveren"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Már küldtünk neked egy e-mailt az utasításokkal együtt. Kérjük, várj, "
"mielőtt újabb levelet kérnél."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Az adatbázisunkban nem találtuk meg ezt az e-mailt"

View File

@ -1,16 +1,16 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: hy\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:243
msgid "You can not send chat messages with proxy"
@ -19,15 +19,13 @@ msgstr "Դուք չեք կարող պռուկսիի միջոցով զրուցո
# Թարքմանել է Նարեկ Ադամյանը ։)
#: src/core/ChatProvider.js:248
msgid "Couldn't send your message, pls log out and back in again."
msgstr ""
"Հնարավոր չէ ուղարկել ձեր հաղորդագրությունը, մուտք գործեք և նորից փորձեք:"
msgstr "Հնարավոր չէ ուղարկել ձեր հաղորդագրությունը, մուտք գործեք և նորից փորձեք:"
#: src/core/ChatProvider.js:262
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"Դուք շատ արագ հաղորդագրություններ եք ուղարկում, դուք պետք է սպասեք $ "
"{waitTime} s :("
"Դուք շատ արագ հաղորդագրություններ եք ուղարկում, դուք պետք է սպասեք ${waitTime} s :("
#: src/core/ChatProvider.js:266
msgid "You don't have access to this channel"
@ -38,7 +36,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Ձեր փոստը հաստատված պետք է լինի հաղորդագրություն ուղարկելու համար"
#: src/core/ChatProvider.js:287
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Դուք ընդմիշտ խլացված եք, միացեք մեր guilded բողոքարկելու համար"
#: src/core/ChatProvider.js:292
@ -111,7 +109,7 @@ msgid "User doesn't exist in our database :("
msgstr "Օգտագործողը գոյություն չունի մեր տվյալների բազայում :("
#: src/routes/reset_password.js:115
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Գաղտնաբառը հաջողությամբ փոխվեծ է:"
#: src/routes/reset_password.js:134
@ -120,8 +118,8 @@ msgstr "Անվավեր url :( Խնդրում ենք կրկին ստուգել ձ
#: src/routes/reset_password.js:147
msgid ""
"This passwort reset link is wrong or already expired, please request a new "
"one (Note: you can use those links just once)"
"This passwort reset link is wrong or already expired, please request a new one "
"(Note: you can use those links just once)"
msgstr ""
"Գաղտնաբառի վերակայման այս հղումը սխալ է կամ արդեն լրացել է, խնդրում ենք նորը "
"պահանջել (նշում. Այդ հղումները կարող եք օգտագործել միայն մեկ անգամ)"
@ -132,11 +130,11 @@ msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Մենք ձեզ արդեն ուղարկել ենք ստուգման նամակ, ${minLeft} րոպեից կարող եք "
"պահանջել մեկ այլ:"
"Մենք ձեզ արդեն ուղարկել ենք ստուգման նամակ, ${minLeft} րոպեից կարող եք պահանջել "
"մեկ այլ:"
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Բարի գալուստ ${name} PixelPlanet, խնդրում ենք ստուգել ձեր փոստը"
# Թառքմանել է Նարեկ Ադամյանը ։)
@ -147,11 +145,11 @@ msgstr "Ողջույն ${name}"
#: src/core/mail.js:78
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
"welcome to our little community of pixelplacers, to use your account, you have to "
"verify your mail. You can do that here: "
msgstr ""
"Բարի գալուստ pixelplacers-ի մեր փոքրիկ համայնք, ձեր հաշիվն օգտագործելու "
"համար պետք է ստուգեք ձեր փոստը: Դա կարող եք անել այստեղ ՝"
"Բարի գալուստ pixelplacers-ի մեր փոքրիկ համայնք, ձեր հաշիվն օգտագործելու համար պետք "
"է ստուգեք ձեր փոստը: Դա կարող եք անել այստեղ ՝"
#: src/core/mail.js:78
msgid "Click to Verify"
@ -162,10 +160,8 @@ msgid "Or by copying following url:"
msgstr "Կամ պատճենելով հետևյալ url- ը ՝"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr ""
"Զվարճացեք և մի ամոթ արեք կապնվել մեզ հետ, եթե խրախուսում եք որևէ խնդիր :)"
msgid "Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr "Զվարճացեք և մի ամոթ արեք կապնվել մեզ հետ, եթե խրախուսում եք որևէ խնդիր :)"
#: src/core/mail.js:80 src/core/mail.js:130
msgid "Thanks"
@ -176,8 +172,8 @@ msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Մենք ձեզ արդեն նամակ ենք ուղարկել ՝ հրահանգներով: Խնդրում ենք սպասել, նախքան "
"մեկ այլ նամակ խնդրեք:"
"Մենք ձեզ արդեն նամակ ենք ուղարկել ՝ հրահանգներով: Խնդրում ենք սպասել, նախքան մեկ "
"այլ նամակ խնդրեք:"
#: src/core/mail.js:106
msgid "Couldn't find this mail in our database"
@ -193,11 +189,11 @@ msgstr "Ողջույն"
#: src/core/mail.js:128
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
"You requested to get a new password. You can change your password within the next "
"30min here: "
msgstr ""
"Դուք խնդրել եք ձեռք բերել նոր գաղտնաբառ: Հաջորդ 30 րոպեի ընթացքում կարող եք "
"փոխել ձեր գաղտնաբառը ՝"
"Դուք խնդրել եք ձեռք բերել նոր գաղտնաբառ: Հաջորդ 30 րոպեի ընթացքում կարող եք փոխել "
"ձեր գաղտնաբառը ՝"
#: src/core/mail.js:128 src/ssr-components/PasswordReset.jsx:19
#: src/ssr-components/PasswordReset.jsx:28
@ -207,14 +203,13 @@ msgstr "Վերականգնել գաղտնաբառը"
#: src/core/mail.js:129
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
"If you did not request this mail, please just ignore it (the ip that requested "
"this mail was ${ ip })."
msgstr ""
"Եթե ​​դուք չեք խնդրել այս նամակը, պարզապես անտեսեք այն (ip- ը, որը պահանջել է "
"այս նամակը, ${ip} էր):"
"Եթե ​​դուք չեք խնդրել այս նամակը, պարզապես անտեսեք այն (ip- ը, որը պահանջել է այս "
"նամակը, ${ip} էր):"
#: src/ssr-components/PasswordReset.jsx:21
#: src/ssr-components/RedirectionPage.jsx:15
#: src/ssr-components/PasswordReset.jsx:21 src/ssr-components/RedirectionPage.jsx:15
msgid "Click here"
msgstr "Սեղմեք այստեղ"
@ -303,14 +298,12 @@ msgstr "Հնարավոր չէ միանալ սերվերին, փորձեք մի
msgid "I think we experienced some error :("
msgstr "Կարծում եմ, որ մենք որոշ սխալ ենք ունեցել :("
#: src/routes/api/auth/change_mail.js:41
#: src/routes/api/auth/change_passwd.js:37
#: src/routes/api/auth/change_mail.js:41 src/routes/api/auth/change_passwd.js:37
#: src/routes/api/auth/delete_account.js:38
msgid "You are not authenticated."
msgstr "Դուք վավերացված չեք:"
#: src/routes/api/auth/change_mail.js:50
#: src/routes/api/auth/change_passwd.js:46
#: src/routes/api/auth/change_mail.js:50 src/routes/api/auth/change_passwd.js:46
#: src/routes/api/auth/delete_account.js:48
msgid "Incorrect password!"
msgstr "Սխալ գաղտնաբառ!"
@ -345,11 +338,11 @@ msgstr "Դուք այժմ ստուգված եք :)"
#: src/routes/api/auth/verify.js:32
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
"Your mail verification code is invalid or already expired :(, please request a new "
"one."
msgstr ""
"Ձեր փոստի հաստատման ծածկագիրն անվավեր է կամ արդեն լրացել է :(, խնդրում ենք "
"խնդրել նորը:"
"Ձեր փոստի հաստատման ծածկագիրն անվավեր է կամ արդեն լրացել է :(, խնդրում ենք խնդրել "
"նորը:"
#: src/ssr-components/RedirectionPage.jsx:20
msgid "You will be automatically redirected after 15s"
@ -395,15 +388,14 @@ msgstr "1Բիթ"
#: src/canvasesDesc.js:28
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Մեր գլխավոր կտավը ՝ աշխարհի հսկայական քարտեզն է: Տեղադրեք ամենուր, որտեղ ձեզ "
"դուր է գալիս"
"Մեր գլխավոր կտավը ՝ աշխարհի հսկայական քարտեզն է: Տեղադրեք ամենուր, որտեղ ձեզ դուր "
"է գալիս"
#: src/canvasesDesc.js:29
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art)"
msgid "Moon canvas. Safe space for art. No flags or large text (unless part of art)"
msgstr ""
"Լուսնի կտավ: Արվեստի համար անվտանգ տարածք: Ոչ մի դրոշ կամ մեծ տեքստ "
"(բացառությամբ արվեստի մի մասի)"
"Լուսնի կտավ: Արվեստի համար անվտանգ տարածք: Ոչ մի դրոշ կամ մեծ տեքստ (բացառությամբ "
"արվեստի մի մասի)"
#: src/canvasesDesc.js:30
msgid "Place Voxels on a 3D canvas with others"

471
i18n/ssr-it.po Normal file
View File

@ -0,0 +1,471 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Non puoi mandare messaggi in chat con proxy, non fare come i serbi"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Il tuo paese è temporaneamente mutato da questa chat"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Sei mutato permanentemente, entra sul nostro server Guilded per richiedere "
"la rimozione del mute. Oppure entra su discord.io/italy "
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Sei bannato, vai a parlare con donne vere"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Il tuo internet provider è bannato (ti direi di ritenerti fortunato)"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Sei mutato ancora per ${ timeMin } minuti"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Sei mutato ancora per ${ ttl } secondi"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"Stai mandando messaggi troppo velocemente, devi aspettare ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Non hai accesso a questa chat"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Devi verificare la tua mail per chattare"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Non puoi mandare un messaggio così lungo :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Per favore usa il canale \"int\". Letteralmente 1984"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Manda messaggi più lentamente, sarai mica un turco"
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Hai inserito una password vuota o data invalido :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Questo password reset link non è più valido"
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Le tue password non corrispondono"
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Questo user non esiste nei nostri database"
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Password cambiata con successo"
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Url invalido :( Per favore controlla nuovamente la tua mail"
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun Globo 3D"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "Un Globo 3D di tutta la nostra mappa"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Doppio click sul globo per andare indietro"
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Caricamento..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr "Piazza pixel colorati in un canvas con altri player online"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "L'email non può essere vuota"
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "L'email dovrebbe essere almeno lunga 5 caratteri"
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "L'email non può essere più lunga di 40 caratteri"
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "L'email deve contenere almeno un punto"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "L'email deve contenere una @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Il nome non può essere vuoto"
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Il nome deve avere almeno due caratteri"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Il nome deve essere più corto di 26 caratteri"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Il nome contiene caratteri invalidi come @, /, \\ o #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Nessuna passwrod data"
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "La password deve avere almeno 6 caratteri"
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "La password deve essere più corta di 60 caratteri"
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Password Reset"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Resetta la tua password qui"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Reset Password"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Clicca qui"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "per tornare su pixelplanet "
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Ciao ${ name }, pui mettere la tua nuova password qui"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Nuova password"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Conferma nuova password"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Manda"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Non hai effettuato l'accesso"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Non hai il permasso di accedere a questa pagina"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Solo gli admin possono farlo"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Non sei bannato (purtroppo)"
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Il tuo email provider non è permesso, 1984"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Nessun captcha dato"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Email già in uso"
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Username già in uso"
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Ci hai messo troppo, riprova"
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Hai sbagliato il captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Errore del captcha sconosciuto"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Fallimento nel creare un nuovo user"
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Fallimento nel ristabilire una sessione dopo la registraione"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Non hai nemmeno fatto l'accesso"
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Errore del server durante il log out"
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Non sei autentificato"
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Password incorretta"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Verificazione mail"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Adesso sei verificato"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Il tuo mail verification code è invalido o è già scaduto ;(, per farvore "
"richiedine uno nuovo"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun Accounts"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Sarai rediretto automaticamente dopo 15s"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "o ${ clickHere } per tornare su pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Terra"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Luna "
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Canvas"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Coronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Il nostro canvas principale, una enorme mappa del mondo. Piazza onunque to "
"voglia"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Canvas luna. Spazio sicuro per le art. Nessuna bandiera o testo lago (a meno "
"che sia parte di un'art) o art più grande di 1.5kx1.5k pixel"
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Piazza Voxels sul canvas 3D con altri"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Canvas speciale per sensibilizzare sul SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Mirror di PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Mirror di PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Canvas in bianco e nero"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Canvas per i player più attivi del giorno precedente (leggi autistici). Le "
"classifiche giornaliere riniziano a 00:00 UTC"
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Benvenuto ${ name } su PixelPlanet, per favore verifica la tua mail"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Ciao ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"Benvenuo alla nostra piccola community di pixelplacers, per usare il tuo "
"account, devi verificare il tuo account mail. Lo puoi fare qui:"
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Clicca per verificare"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "o copia il link seguente"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr "Divertiti e non esitare a contattarci se incontri dei problemi"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Grazie, Ave Roma"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Ti abbiamo già mandato una mail per verifica, ne puoi richiedere un'altra in "
"${ minLeft } minuti"
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Hai dimenticato la tua password di PixelPlanet= Chiedine un'altra qui"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Ciao"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Hai richiesto una nuova password. Puoi cambiare la tua password nei prossimi "
"30 minuti qui:"
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Se non hai richiesto questa mail, per favore ignorala (l'IP che ha richiesto "
"questa mail era ${ ip })"
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Questa mail non è configurata sul server"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Ti abbiamo già mandato una mail con delle istruzioni. Per favore aspetta "
"prima di richiedere un'altra mail."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Non abbiamo trovato questa mail nei nostri database"

483
i18n/ssr-kk-kz.po Normal file
View File

@ -0,0 +1,483 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
"Last-Translator: Fontan 030 <pomanfedurin@gmail.com>\n"
"Language: kk\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Прокси қолданған кезде чатта жаза алмайсыз"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Осы арнада бүкіл еліңіздің жазу рұқсаты уақытша шектелген"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Жазу рұқсатыңыз мерзімсіз шектелген, шағым беру үшін біздің guilded-ке "
"қосылыңыз"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Сіз бұғатталғансыз"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Интернет провайдеріңіз бұғатталған"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Жазу рұқсатыңыз тағы ${ timeMin } минутқа шектелген"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Жазу рұқсатыңыз тағы ${ ttl } секундқа шектелген"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"Хаттарды тым жиі жіберіп отырсыз, ${ waitTime } секунд күтуіңіз керек :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Бұл арнаны көруге рұқсатыңыз жоқ"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Чатта жазу үшін эл. поштаңызды растау қажет"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Сондай ұзын хат жібере алмайсыз :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "int арнасында жазыңызшы"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Флудты доғарыңыз."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Бос құпиясөз немесе жарамсыз деректерді жібердіңіз :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Бұл құпиясөз арылту сілтемесі енді жарамсыз :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Сіздің құпиясөздер бірдей емес :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Біздің дерекқорда мұндай қолданушы жоқ :("
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Құпиясөз сәтті өзгертілді."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Жарамсыз URL :( Эл. поштаңызды қайта тексеріңіз."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3D-глобусы"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "Бүкіл картамыздың 3D-глобусы"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Оралу үшін глобусқа екі рет басыңыз."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Жүктелуде..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun қалқымалы терезесі"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Басқа желідегі ойыншылармен бірге түрлі-түсті пикселдерді карта стиліндегі "
"кенепке салыңыз"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Эл. пошта бос бола алмайды."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Эл. пошта кемінде 5 таңбадан тұруы керек."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Эл. пошта 40 таңбадан аспауы керек."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Эл. поштада кемінде бір нүкте болуы керек"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Эл. поштада @ болуы керек"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Қолданушы аты бос бола алмайды."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Қолданушы аты кемінде 2 таңбадан тұруы керек"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Қолданушы аты 26 таңбадан аспауы керек"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Қолданушы атында @, /, \\ немесе # сияқты жарамсыз таңбалар бар"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Құпиясөз берілмеген."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Құпиясөз кемінде 6 таңбадан тұруы керек."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Құпиясөз 60 таңбадан аспауы керек."
#: src/ssr/PasswordReset.jsx:20
#: src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun құпиясөзін арылту"
#: src/ssr/PasswordReset.jsx:21
#: src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Кұпиясөзіңізді осында арылта аласыз"
#: src/core/MailProvider.js:105
#: src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Құпиясөзді арылту"
#: src/ssr/PasswordReset.jsx:30
#: src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Осында басыңыз"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "pixelplanet-ке оралу үшін"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Сәлем, ${ name }, жаңа құпиясөзді мына жерде орната аласыз:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Жаңа құпиясөз"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Жаңа құпиясөзді растау"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Жіберу"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Кірмегенсіз"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Бұл бетті көруге рұқсатыңыз жоқ"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Мына әрекетті әкімшілер ғана жасай алады"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Сіз бұғаттауда емессіз"
#: src/routes/api/auth/change_mail.js:21
#: src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Осы эл. пошта сервисіне тыйым салынған"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Captcha берілмеген"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Бұл эл. поштаны біреу алып қойған."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Бұл қолданушы атын біреу алып қойған."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Тым көп уақыт өтті, қайта байқап көріңіз."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Captcha-ны шешпедіңіз"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Белгісіз Captcha қатесі"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Жаңа тіркелгі жасау мүмкін емес :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Тіркелуден кейінгі сессияны орнату мүмкін емес :("
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Сіз тіпті жүйеге кірмедіңіз."
#: src/routes/api/auth/delete_account.js:55
#: src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Жүйеден шыққанда сервер қатесі орын алды."
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Аутентификациядан өтпедіңіз."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Құпиясөз дұрыс емес!"
#: src/routes/api/auth/verify.js:26
#: src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Эл. пошта растау"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Енді сіз расталғансыз :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Эл. пошта растау кодыңыз жарамсыз немесе оның мерзімі өтіп кетті :(, жаңа "
"растау кодын сұратыңыз."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun тіркелгілері"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "15 секундтан кейін сізді автоматты түрде қайта бағдарлаймыз"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Немесе pixelplanet-ке оралу үшін ${ clickHere }"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Жер"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Ай"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D-кенеп"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Коронавирус"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1 битті"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Топ-10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "Басты кенебіміз, үлкен әлем картасы. Кез келген жерде сурет салыңыз"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Ай кенебі. Суреттер үшін қауіпсіз орын. Тулар, сурет құрамына кірмейтін "
"үлкен мәтін және өлшемі 1,5 мың x 1,5 мың пикселден асатын суреттерді салуға "
"болмайды."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Басқалармен бірге вокселдерді 3D-кенепке салыңыз"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "SARS-CoV2 туралы хабардарлықты арттыруға арналған арнайы кенеп"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "PixelZone айнасы"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "PixelCanvas айнасы"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Ақ-қара кенеп"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Кеше ең белсенді болған ойыншыларға арналған кенеп. Күнделікті рейтиң UTC "
"бойынша түн ортасында арылтады."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "${ name }, PixelPlanet-ке қош келдіңіз, эл. поштаңызды растаңыз"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Сәлем, ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"біздің пиксел салушылар шағын қоғамдастығымызға қош келдіңіз, тіркелгіңізді "
"қолдану үшін эл. пошта растауыңыз керек. Бұны мына жерде істей аласыз: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Растау үшін басыңыз"
#: src/core/MailProvider.js:68
#: src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Немесе осы сілтемені көшіріп алыңыз:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Уақытты жақсы өткізуіңізді тілейміз! Қандай да бір мәселелер болса, бізге "
"қысылмай хабарласыңыз :)"
#: src/core/MailProvider.js:70
#: src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Рахмет"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in ${ "
"minLeft } minutes."
msgstr ""
"Біз сізге растау хатын жіберіп қойдық, жаңасын ${ minLeft } минуттан кейін "
"сұрай аласыз."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "PixelPlanet құпиясөзіңізді ұмыттыңыз ба? Жаңасын мына жерден алыңыз"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Сәлем"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Сіз құпиясөз арылтуды сұрадыңыз. Келесі 30 минут ішінде құпиясөзіңізді "
"осында өзгерте аласыз: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Бұл сұрауды жасамаған болсаңыз, осы хатты елемей-ақ қойыңыз (оны сұраған IP: "
"${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Осы серверде эл. пошта бапталмаған"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Біз сізге нұсқаулы хатты жіберіп қойдық. Басқа хат сұрамас бұрын азғантай "
"күте тұрыңыз."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Осы эл. пошта біздің дерекқордан табылмады"

475
i18n/ssr-nl.po Normal file
View File

@ -0,0 +1,475 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.3.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Je kunt geen chatberichten versturen met proxy"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Je land is tijdelijk gedempt op dit chatkanaal"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"Je bent permanent gedempt, sluit je aan bij onze gilde om in beroep te gaan "
"tegen de demper"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Je bent gebanned"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Uw internetprovider is gebanned"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Je bent nog eens ${ timeMin } minuten gedempt"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Je bent nog eens ${ ttl } seconden gedempt"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Je verzendt berichten te snel, je moet ${ waitTime }s wachten :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Je hebt geen toegang tot dit kanaal"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Je e-mail moet worden geverifieerd om te kunnen chatten"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Je kunt niet zo lang een bericht sturen :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Gebruik alstublieft het int-kanaal"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Stop met spammen."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Je hebt een leeg wachtwoord of ongeldige gegevens verzonden :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr ""
"Deze link voor het opnieuw instellen van het wachtwoord is niet meer geldig :"
"("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "De wachtwoorden komen niet overeen :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Gebruiker bestaat niet in onze database :("
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "Wachtwoord succesvol veranderd."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Ongeldige url :( Controleer a.u.b. nogmaals uw mail."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobe"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "Een 3D-wereldbol van onze hele kaart"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Dubbelklik op wereldbol om terug te gaan."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Laden…"
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun-pop-up"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Plaats kleurpixels op een canvas in kaartstijl samen met andere spelers "
"online"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "E-mail mag niet leeg zijn."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "E-mail moet minimaal 5 tekens lang zijn."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "E-mail mag niet langer zijn dan 40 tekens."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "E-mail moet op zijn minst een punt bevatten"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "E-mail moet een @ bevatten"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Naam mag niet leeg zijn."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "De naam moet minimaal 2 tekens lang zijn"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "De naam moet korter zijn dan 26 tekens"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Naam bevat ongeldige tekens zoals @, /, \\ of #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Geen wachtwoord gegeven."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Het wachtwoord moet op zijn minst 6 tekens lang zijn."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Wachtwoord moet korter zijn dan 60 tekens."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun wachtwoord opnieuw instellen"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Stel hier uw wachtwoord opnieuw in"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Wachtwoord opnieuw instellen"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Klik hier"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "om terug te gaan naar pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Hallo ${ name }, je kunt hier je nieuwe wachtwoord instellen:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Nieuw wachtwoord"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Bevestig nieuw wachtwoord"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Indienen"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Je bent niet ingelogd"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "U heeft geen toegang tot deze pagina"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Alleen beheerders kunnen dat doen"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Je bent niet gebanned"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Je bent niet eens ingelogd."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Serverfout bij uitloggen."
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "E-mail verificatie"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Je bent nu geverifieerd :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Uw e-mailverificatiecode is ongeldig of al verlopen :(, vraag een nieuwe aan."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Deze e-mailprovider is niet toegestaan"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Geen Captcha gegeven"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Email is al in gebruik."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Gebruikersnaam al in gebruik."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Het duurde te lang, probeer het opnieuw."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Je captcha is mislukt"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Onbekende Captcha-fout"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Kan nieuwe gebruiker niet aanmaken :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Kan sessie niet tot stand brengen na registratie :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "U bent niet geauthenticeerd."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Onjuist wachtwoord!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun-accounts"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Na 15 seconden wordt u automatisch doorgestuurd"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Of ${ clickHere } om terug te gaan naar pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Aarde"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Maan"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D-canvas"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Coronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Ons belangrijkste canvas, een enorme kaart van de wereld. Plaats waar je "
"maar wilt"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Maan canvas. Veilige plek voor kunst. Geen vlaggen of grote tekst (tenzij "
"onderdeel van kunst) of kunst groter dan 1,5k x 1,5k pixels."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Plaats Voxels samen met anderen op een 3D-canvas"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Speciaal canvas om het bewustzijn van SARS-CoV2 te vergroten"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Mirror van PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Mirror van PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Zwart-wit canvas"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Een canvas voor de meest actieve spelers van de vorige dag. Dagelijkse "
"ranking-updates om 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "Welkom ${ name } bij PixelPlanet, verifieer a.u.b. uw e-mail"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Hallo ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"welkom bij onze kleine gemeenschap van pixelplacers, om je account te "
"gebruiken, moet je je e-mail verifiëren. Dat kan hier: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Klik om te verifiëren"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Of door volgende url te kopiëren:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr ""
"Veel plezier en aarzel niet om contact met ons op te nemen als u problemen "
"ondervindt :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Bedankt"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"We hebben je al een verificatiemail gestuurd, je kunt binnen ${ minLeft } "
"minuten een nieuwe aanvragen."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Je bent je wachtwoord voor PixelPlanet vergeten? Koop hier een nieuwe"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Hallo"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"U heeft een nieuw wachtwoord aangevraagd. U kunt uw wachtwoord hier binnen "
"30 minuten wijzigen: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Als je deze mail niet hebt aangevraagd, negeer deze dan gewoon (het IP-adres "
"dat deze mail opvroeg was ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Mail is niet geconfigureerd op de server"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"We hebben je al een mail gestuurd met instructies. Wacht a.u.b. voordat u "
"een nieuwe e-mail aanvraagt."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Kon deze mail niet vinden in onze database"

View File

@ -35,7 +35,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Дæ пост æвæццæгæн басгæрст, цæмæй чаты æмхиц уын"
#: src/core/ChatProvider.js:331
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Дæ Фæсмынæг, баиу махæн ырдæм цæмæй аппелиацийы хъалон"
#: src/core/ChatProvider.js:336
@ -108,7 +108,7 @@ msgid "User doesn't exist in our database :("
msgstr "Пайдагæнæг æнæ фæлдис нæ бындуры бæрæггæнæнтæ :("
#: src/routes/reset_password.js:108
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Парол æнтыстджынæй ивыдзинад."
#: src/routes/reset_password.js:127
@ -133,7 +133,7 @@ msgstr ""
"минуты фæстæ."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Æгас цу ${ name } PixelPlanet'мæ, табуафси сфидар дæ пост"
#: src/core/mail.js:77
@ -159,7 +159,7 @@ msgstr "Кæнæ къопи ис ма фæдылдзог URL:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr "Ивхæрс æмæ æфсæрмы нæй баздæх махæн, ды савзæр куы рæдыдтæ :)"
#: src/core/mail.js:80 src/core/mail.js:130

View File

@ -37,7 +37,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Você precisa verificar seu e-mail para falar no bate-papo"
#: src/core/ChatProvider.js:287
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Você foi silenciado para sempre, entre no nosso Guilded para pedir um "
"recurso sobre seu silenciamento"
@ -114,7 +114,7 @@ msgid "User doesn't exist in our database :("
msgstr "Usuário não existe em nosso banco de dados :("
#: src/routes/reset_password.js:115
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Senha trocada com sucesso."
#: src/routes/reset_password.js:134
@ -139,7 +139,7 @@ msgstr ""
"${ minLeft } minutos."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "Bem-vindo ${ name } ao PixelPlanet, por favor verifique seu e-mail"
#: src/core/mail.js:77
@ -165,7 +165,7 @@ msgstr "Ou copiando o seguinte URL:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr "Se divirta e não hesite para nos contar se encontrar algum problema :)"
#: src/core/mail.js:80 src/core/mail.js:130

1576
i18n/ssr-ro.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5,244 +5,186 @@ msgstr ""
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ru_RU\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Poedit 3.1.1\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:390
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Вы не можете отправлять сообщения в чат, если Вы используете прокси"
msgstr "Вы не можете отправлять сообщения в чат, используя прокси"
#: src/core/ChatProvider.js:392
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Ваша страна временно в муте в этом канале"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Вы в муте навсегда, заходите в Guilded, чтобы обжаловать мут"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Вы в бане"
msgstr "Вы забанены"
#: src/core/ChatProvider.js:394
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Ваш Интернет Провайдер в бане"
msgstr "Ваш интернет-провайдер заблокирован"
#: src/core/ChatProvider.js:396
msgid "You are not allowed to use chat"
msgstr "Вам запрещено использовать чат"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Вы в муте еще на ${ timeMin } минут"
#: src/core/ChatProvider.js:411
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Вы в муте еще на ${ ttl } секунд"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"Вы отправляете сообщения слишком часто, Вам нужно подождать ${ waitTime }"
"сек :("
"Вы отправляете сообщения слишком быстро, вам нужно подождать ${waitTime}с :("
#: src/core/ChatProvider.js:415
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "У Вас нет доступа к этому каналу"
msgstr "У вас нет доступа к этому каналу"
#: src/core/ChatProvider.js:433
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Чтобы писать в чате, Ваша почта должна быть подтверждена"
msgstr "Ваша почта должна быть подтверждена, чтобы общаться в чате"
#: src/core/ChatProvider.js:438
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr "Вам выдан мут навсегда, присоединитесь к нашему Guilded для апелляции"
#: src/core/ChatProvider.js:443
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Вам выдан мут еще на ${ timeMin } мин"
#: src/core/ChatProvider.js:445
msgid "You are muted for another ${ muted } seconds"
msgstr "Вам выдан мут еще на ${ muted } сек"
#: src/core/ChatProvider.js:453
msgid "Ow no! Spam protection decided to mute you"
msgstr "О нет! Защита от спама решила выдать Вам мут"
#: src/core/ChatProvider.js:464
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Вы не можете послать настолько длинное сообщение :("
msgstr "Вы не можете отправить сообщение такой длины :("
#: src/core/ChatProvider.js:468
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Пожалуйста, используйте канал int"
#: src/core/ChatProvider.js:475
msgid "Your country is temporary muted from this chat channel"
msgstr "В этом канале чата всей Вашей стране временно выдан мут"
#: src/core/ChatProvider.js:483
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Перестаньте флудить."
#: src/routes/reset_password.js:37
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Вы установили пустой пароль или неверные данные :("
msgstr "Вы отправили пустой пароль или неверные данные :("
#: src/routes/reset_password.js:49
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Это ссылка для сброса пароля больше недействительна :("
msgstr "Эта ссылка для сброса пароля больше недействительна :("
#: src/routes/reset_password.js:60
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Ваши пароли не совпадают :("
#: src/routes/reset_password.js:75
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Пользователь не существует в нашей базе данных :("
#: src/routes/reset_password.js:87
msgid "Passowrd successfully changed."
msgstr "Пароль успешно изменён."
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Пароль успешно изменен."
#: src/routes/reset_password.js:106
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Неверный url :( Пожалуйста проверьте вашу почту ещё раз."
msgstr "Неверный адрес :( Пожалуйста, проверьте свою почту еще раз."
#: src/routes/reset_password.js:119
msgid ""
"This passwort reset link is wrong or already expired, please request a new "
"one (Note: you can use those links just once)"
msgstr ""
"Эта ссылка на изменение пароля неверна или уже истекла, пожалуйста запросите "
"новую (Примечание: Вы можете использовать эти ссылки только один раз)"
#: src/ssr/Win.jsx:32
msgid "PixelPlanet.Fun Window"
msgstr "Окно PixelPlanet.fun"
#: src/ssr/Win.jsx:33
msgid "PixelPlanet.Fun Windows"
msgstr "Окна PixelPlanet.Fun"
#: src/ssr/Main.jsx:58
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.fun"
#: src/ssr/Main.jsx:59
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Ставьте цветные пиксели на полотне в виде карты мира вместе с другими "
"игроками по сети"
#: src/ssr/Globe.jsx:34
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "3D Глобус PixelPlanet.Fun"
msgstr "PixelPlanet.Fun 3D-глобус"
#: src/ssr/Globe.jsx:35
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "3D глобус всей нашей карты"
msgstr "3D-глобус всей нашей карты"
#: src/ssr/Globe.jsx:48
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Дважды кликните на глобус для возвращения назад."
msgstr "Дважды щелкните по глобусу, чтобы вернуться."
#: src/ssr/Globe.jsx:49
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Загрузка..."
#: src/core/mail.js:71
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "Всплывающее окно PixelPlanet.Fun"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr "Ставьте цветные пиксели на огромном полотне с другими людьми по сети"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Необходимо указать адрес электронной почты."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Электронная почта должна состоять не менее чем из 5 символов."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Электронная почта не может быть длиннее 40 символов."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Электронная почта должна содержать точку"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Электронная почта должна содержать @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Имя пользователя не может быть пустым."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Имя пользователя должно состоять не менее чем из 2 символов"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Имя пользователя должно быть короче 26 символов"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr ""
"Мы уже отправили Вам письмо с подтверждением, Вы можете запросить ещё одно "
"через ${ minLeft } мин."
"Имя пользователя содержит недопустимые символы, такие как @, /, \\ или #"
#: src/core/mail.js:78
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr ""
"Добро Пожаловать ${ name } на PixelPlanet, пожалуйста подтвердите Вашу почту"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Пароль не указан."
#: src/core/mail.js:79
#, javascript-format
msgid "Hello ${ name }"
msgstr "Здравствуйте, ${ name }"
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Пароль должен содержать как минимум 6 символов."
#: src/core/mail.js:80
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"добро пожаловать в наше небольшое сообщество ставящих пикселями, для "
"использования Вашего аккаунта Вам нужно подтвердить вашу почту. Вы можете "
"сделать это здесь: "
#: src/core/mail.js:80
msgid "Click to Verify"
msgstr "Нажмите чтобы Подтвердить"
#: src/core/mail.js:80 src/core/mail.js:127
msgid "Or by copying following url:"
msgstr "Или скопируйте следующий url:"
#: src/core/mail.js:81
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr ""
"Развлекайтесь и не стесняйтесь обращаться к нам, если у вас возникнут "
"проблемы :)"
#: src/core/mail.js:82 src/core/mail.js:129
msgid "Thanks"
msgstr "Спасибо"
#: src/core/mail.js:92
msgid "Mail is not configured on the server"
msgstr "Почта не настроена на сервере"
#: src/core/mail.js:101
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Мы уже отправили вам письмо с инструкциями. Пожалуйста подождите прежде чем "
"запрашивать другое письмо."
#: src/core/mail.js:109
msgid "Couldn't find this mail in our database"
msgstr "Не удалось найти эту почту в нашей базе данных"
#: src/core/mail.js:125
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Вы забыли ваш пароль от PixelPlanet? Введите новый здесь"
#: src/core/mail.js:126
msgid "Hello"
msgstr "Здравствуйте"
#: src/core/mail.js:127
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Вы запросили новый пароль. Вы можете сменить Ваш пароль в течение следующих "
"30 минут здесь: "
#: src/core/mail.js:127 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Сбросить Пароль"
#: src/core/mail.js:128
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Если Вы не запрашивали это письмо, пожалуйста просто проигнорируйте его (IP "
"которое запросило это письмо было ${ ip })."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Пароль должен быть короче 60 символов."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "Сброс Пароля PixelPlanet.fun"
msgstr "Сброс пароля PixelPlanet.fun"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Сбросьте свой пароль здесь"
msgstr "Сбросьте пароль здесь"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Сбросить пароль"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
@ -250,168 +192,112 @@ msgstr "Нажмите здесь"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "для возвращения назад на pixelplanet"
msgstr ", чтобы вернуться на pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Здравствуйте ${ name }, Вы можете установить новый пароль здесь:"
msgstr "Здравствуйте, ${ name }, вы можете установить новый пароль здесь:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Новый Пароль"
msgstr "Новый пароль"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Подтвердить Новый Пароль"
msgstr "Подтвердите новый пароль"
#: src/ssr/PasswordReset.jsx:64
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Подтвердить"
#: src/routes/api/captcha.js:20
msgid "No captcha text given"
msgstr "Не указан текст капчти"
#: src/routes/api/captcha.js:25
msgid "No captcha id given"
msgstr "Не указан идентификатор каптчи"
#: src/routes/api/auth/register.js:54 src/routes/api/captcha.js:44
msgid "You took too long, try again."
msgstr "Вы потратили слишком много времени, попробуйте снова."
#: src/routes/api/auth/register.js:57 src/routes/api/captcha.js:50
msgid "You failed your captcha"
msgstr "Вы провалили ваш ввод каптчи"
#: src/routes/api/auth/register.js:60 src/routes/api/captcha.js:56
msgid "Unknown Captcha Error"
msgstr "Неизвестная ошибка с каптчей"
#: src/routes/api/captcha.js:63
msgid "Server error occured"
msgstr "Случилась ошибка сервера"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Почта не может быть пустой."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Почта должна быть длинной минимум 5 символов."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Почта не может быть длиннее 40 символов."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Почта должна содержать как минимум одну точку"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Почта должна содержать @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Имя Пользователя не может быть пустым."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Имя Пользователя должно быть длиной минимум 2 символа"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Имя Пользователя должно быть короче 26 символов"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Имя Пользователя содержит неверные символы, например @, /, \\ или #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Пароль отсутствует."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Пароль должен быть минимум 6 символов длинной."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Пароль должен быть короче 60 символов."
msgstr "Отправить"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Вы не вошли в аккаунт"
msgstr "Вы не авторизованы"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Вам запрещен доступ к этой странице"
msgstr "У вас нет доступа к этой странице"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Только администраторы могут делать это"
msgstr "Это могут сделать только админы"
#: src/routes/api/baninfo.js:24
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Вы не в бане"
msgstr "Вы не забанены"
#: src/routes/api/auth/register.js:26
msgid "No Captcha given"
msgstr "Отсутствует Каптча"
#: src/routes/api/auth/register.js:29
msgid "E-Mail already in use."
msgstr "Эта Почта уже используется."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Этот провайдер электронной почты не разрешен"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Капча не введена"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Эта электронная почта уже используется."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Это Имя Пользователя уже используется."
msgstr "Это имя пользователя уже используется."
#: src/routes/api/auth/register.js:84
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Слишком долго, попробуйте еще раз."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Вы неправильно ввели капчу"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Неизвестная ошибка капчи"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Провал при создании нового пользователя :("
msgstr "Не удалось создать нового пользователя :("
#: src/routes/api/auth/register.js:100
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Провал при установлении сессии после регистрации :("
#: src/routes/api/auth/change_mail.js:38
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:34
msgid "You are not authenticated."
msgstr "Вы не авторизованы."
#: src/routes/api/auth/change_mail.js:47
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:44
msgid "Incorrect password!"
msgstr "Неверный пароль!"
msgstr "Не удалось установить сеанс после регистрации :("
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Вы даже не вошли в аккаунт."
msgstr "Вы даже не вошли в систему."
#: src/routes/api/auth/delete_account.js:54 src/routes/api/auth/logout.js:20
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Случилась ошибка сервера во время выхода из аккаунта."
msgstr "Ошибка сервера при выходе из аккаунта."
#: src/routes/api/auth/verify.js:22 src/routes/api/auth/verify.js:29
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Вы не авторизованы."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Неверный пароль!"
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Подтверждение почты"
#: src/routes/api/auth/verify.js:23
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Теперь вы подтверждены :)"
msgstr "Вы прошли проверку :)"
#: src/routes/api/auth/verify.js:29
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Ваше письмо с кодом подтверждения неверное или уже истекло :( , пожалуйста "
"запросите другое."
"Ваш код проверки почты недействителен или срок его действия уже истек :(, "
"запросите новый."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
@ -419,93 +305,172 @@ msgstr "Аккаунты PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Вы будете автоматически перенаправленны через 15с"
msgstr "Вы будете автоматически перенаправлены через 15 секунд"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Или ${ clickHere }, чтобы вернуться назад на pixelplanet"
msgstr "Или ${clickHere}, чтобы вернуться на pixelplanet"
#: src/canvasesDesc.js:18
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Земля"
#: src/canvasesDesc.js:19
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Луна"
#: src/canvasesDesc.js:20
msgid "3D Canvas"
msgstr "3D Полотно"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D полотно"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Коронавирус"
#: src/canvasesDesc.js:22
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:23
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:24
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1бит"
#: src/canvasesDesc.js:25
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Топ-10"
#: src/canvasesDesc.js:28
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "Наше главное полотно, огромная карта мира. Ставьте везде где хотите"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Наше главное полотно - огромная карта мира, вы можете ставить пиксели где "
"хотите"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Полотно Луна. Безопасное место для рисунков. Без флагов или больших текстов "
"(кроме случаев когда это часть рисунка), или когда рисунок больше 1.5тыс * "
"1.5тыс пикселей."
#: src/canvasesDesc.js:30
msgid "Place Voxels on a 3D canvas with others"
msgstr "Ставьте Воксели на 3D полотне с другими пользователями"
"Полотно луны. Безопасное место для рисунков. Никаких флагов и крупного "
"текста (если только это не часть рисунка) или изображений размером более 1,5 "
"х 1,5 тысячи пикселей."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Размещайте воксели на 3D полотне вместе с другими игроками"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Специальное полотно для распространения осведомленности о SARS-CoV2"
#: src/canvasesDesc.js:32
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Зеркало PixelZone"
#: src/canvasesDesc.js:33
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Зеркало PixelCanvas"
#: src/canvasesDesc.js:34
msgid "Black and White canvas"
msgstr "Черно-Белое полотно"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Чёрно-белое полотно"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Полотно для самых активных игроков прошлого дня. Ежедневный рейтинг "
"сбрасывается в 00:00 UTC."
"Полотно для самых активных игроков за предыдущий день. Ежедневное обновление "
"рейтинга в 00:00 UTC."
#~ msgid "Couldn't send your message, pls log out and back in again."
#~ msgstr ""
#~ "Невозможно отправить ваше сообщение, пожалуйста перезайдите в аккаунт."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr ""
"Добро пожаловать ${ name } на PixelPlanet, пожалуйста, подтвердите свою почту"
#~ msgid "Could not connect to server, please try again later :("
#~ msgstr ""
#~ "Не получается присоедениться к серверу, пожалуйста попробуйте позже :("
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Привет, ${ name }"
#~ msgid "I think we experienced some error :("
#~ msgstr "Я думаю у нас вышла ошибка :("
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"добро пожаловать в наше маленькое сообщество тех, кто ставит пиксели, чтобы "
"использовать свою учетную запись, вы должны подтвердить свою почту. Вы "
"можете сделать это здесь: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Нажмите для подтверждения"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Или скопировав следующий URL:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Получайте удовольствие и не стесняйтесь обращаться к нам, если у вас "
"возникнут какие-либо проблемы :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Спасибо"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Мы уже отправили вам письмо с подтверждением, вы можете запросить еще одно "
"через ${ minLeft } минут."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Вы забыли пароль от PixelPlanet? Получите новый здесь"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Привет"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Вы запросили новый пароль. Вы можете изменить свой пароль в течение "
"следующих 30 минут здесь: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Если вы не запрашивали это письмо, просто проигнорируйте его (IP-адрес, "
"который запрашивал это письмо: ${ip})."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Почта не настроена на сервере"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Мы уже отправили вам письмо с инструкциями. Пожалуйста, подождите, прежде "
"чем запрашивать другое письмо."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Не удалось найти эту почту в нашей базе данных"

467
i18n/ssr-sc.po Normal file
View File

@ -0,0 +1,467 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sicilian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Generator: Poedit 3.3.1\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Umpo mannari messaggia cu li proxy"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "U to paisi esti bannatu temporaniaminti ri stu canali"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr "Si bannatu pi ssempri, trasi nalu guilded pi appellari"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Si bannatu"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "U to provider ri l'internet esti bannatu"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Si mutatu pi n'avutri ${ timeMin } minuta"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Si mutatu pi n'avutri ${ ttl } sicunna"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Sta mannannu messaggia troppu veloci, asspittari ${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Unna a accessu a stu canali"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "A to email ava a essiri verificata pi parrari intra a chat"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Umpo mannari messaggia accussi longa"
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Piffauri usa a chat int"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Abbasta affunnari."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Mannasti na password vacanti o data mmalira"
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "U link pi ressettari a password unne chiu validu"
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Li password un cuncirunu"
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "St'utenti unnisisti nalu database"
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "Password canciata."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Url mmaliru,piffauri talia l'email arre..."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobe"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "U globo 3d ri tutta a mappa"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Ammacca rui voti nalu globo pi iri in arre."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Caricannu..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PopUp ri PixelPlanet.Fun"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Piazza pixel culurata intra na mappa a stili canvas cu avutri chistiana"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "A email umpo essiri vacanti."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "A email ava aviri aimmenu 5 carattera."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "A Email umpo aviri chiu ri 40 carattera."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "A Email ava aviri un puntu"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "A Email ava aviri na @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "U numi un po essiri vacanti."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "U numi ava essiri longa aimmenu ri rui carattera"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "U numi ava essiri chiu cuirtu ri vintisei carattera"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "U numi avi carattera invalida a tipo @, /, \\ o #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Password un rata."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "A Password ava a essiri aimmenu ri 6 carattera."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "A Password unpo aviri chiu ri 60 carattera."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "Reset rila password"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Resetta a password ca"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Resetta a password"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Ammacca ca"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "va arre su Pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Salutamu ${ name }, po mettiri a to nova password ca:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Nova password"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Cunfirma a nova password"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Cunfirma"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Unsi loggatu"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Unna u pirmissu pi trasiri intra sta pagina"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Sulu li admin ponnu fari chistu"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Unsi bannatu"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Unsi mancu loggatu."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Erruri rilu server quannu loggasti fora."
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Verifica pi email"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Si verificatu"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"U To codici pi verificarti j'e mmalidu o scarutu ;(, piffauri richiedi "
"navutru."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Stu provider rila email unne valiru"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Captcha un ratu"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "E-Mail gia usata."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Username gia pigghiatu."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Ci mittisti troppu assa, prova arre."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Rixi morto Fallisti u captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Errori rilu captcha sconosciutu"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Falli a criari un novu utenti"
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Falli a fari na sissiuni ropu a registazioni :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Unsi autenticatu."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Password sbagliata!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "Account ri PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Veni mannatu nala paggina automaticamente 'n 15s"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "O ${ clickHere } Pi gghiri arre su pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Terra"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Luna"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "Canvas 3D"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Coronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"U Canvas principali, na mappa ranni ri tuttu u munnu. Piazza unne ghie ca ti "
"piaci"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Canvas rila luna. spaziu sicuru pi li arti. Nenti banneri ne scritti rossi "
"(Aimmenu sa un fannu parti rilu disegnu) ne arti chiu ranni ri 1.5k x 1.5k "
"pixels."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Piazza Voxels intra 'n canvas 3D cu l'avutri"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Canvas spiciali pi diffunniri a consapevolizza sulu SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Specchiu ri PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Specchiu ri PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Canvas 'n viancu j'e' nivuru"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"U canvas sulu pili iucatura chiu attiva d'aeri. Aggiurnamenti a 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "Binvinutu ${ name } na pixelplanet, piffauri verifica a to email"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Salutamu ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"binvinuto nala community ri niavutri pixelplacers, usa u to account, "
"virifica a to email, u po fari ca: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Ammacca pi Verificariti"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "O copia stu url:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "Addivertiti j'e' un esitari a contattarici si viri quacchi problema :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Razi"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Mannamu gia n' email pi a verifica' ni po arrichiediri navutra fra "
"${ minLeft } minuta."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Addimenticasti a to password? arrichiedini navutra ca"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Salutamu"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr "Arrichieristi navutra password, a po canciari tra navutri 30 minuta "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Si un arrichieristi sti email, ignorala (U ip ca arrichidi sti email esti "
"${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "A Littra unne configurata nalu server"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Ti mannamu gia' na littra culi istruziuni. Aspittassi n'anticchia pi farini "
"mannari navutra."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Unputimu attruvari a to email nalu database"

View File

@ -37,7 +37,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Vaš E-naslov mora biti preverjen zato, da lahko klepetate"
#: src/core/ChatProvider.js:331
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
"Za vedno ste utišani, pridružite se guilded, da se pritožite na utišavo "
@ -113,7 +113,7 @@ msgid "User doesn't exist in our database :("
msgstr "Uporabnik ne obstaja v naši podatkovni bazi :("
#: src/routes/reset_password.js:108
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Geslo je bilo uspešno spremenjeno."
#: src/routes/reset_password.js:127
@ -138,7 +138,7 @@ msgstr ""
"čez ${ minLeft } minut."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "${ name } dobrodošel na PixelPlanetu, prosim potrdite vaš E-naslov"
#: src/core/mail.js:77
@ -165,7 +165,7 @@ msgstr "Ali pa tako, da kopirate naslednji naslov:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Imejte se lepo in ne bojte se nas kontaktirati če pridete, do kakšnih "
"težav :)"

View File

@ -43,7 +43,7 @@ msgid "Your mail has to be verified in order to chat"
msgstr "Tvoj e-mail treba da bude verifikovan da bi se četovalo"
#: src/core/ChatProvider.js:438
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Vi ste zauvek nemo, dođite u naš guilded da bi ste napravili zahtev"
#: src/core/ChatProvider.js:443
@ -92,7 +92,7 @@ msgid "User doesn't exist in our database :("
msgstr "Nalog ne postoji u našim podacima :("
#: src/routes/reset_password.js:87
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr "Lozinka uspešno promenjena"
#: src/routes/reset_password.js:106
@ -143,7 +143,7 @@ msgstr ""
"${ minLeft } minuta"
#: src/core/mail.js:78
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr ""
"Zdravo ${ name }! Dobrodošli u PixelPlanet, molimo vas verifikujte vaš e-mail"
@ -170,7 +170,7 @@ msgstr "Ili kopirati ovaj url:"
#: src/core/mail.js:81
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
"Zabavite se i nemojte zaboraviti da nas možete kontaktirati ako vidite "
"ikakve probleme :)"

483
i18n/ssr-to.po Normal file
View File

@ -0,0 +1,483 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: to\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.3.2\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "He ʻikai lava ke ke ʻave ha ngaahi popoaki talanoa mo e fakafofonga"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr ""
"ʻOku ʻikai ke ʻi ai ha meʻa fakataimi ʻi ho fonua mei he senolo ko ʻeni"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"ʻOku ʻikai ke ke fuʻu tokanga koe ki ai, kau ki heʻetau guilded ke apppeal "
"ʻa e fakalongo"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "ʻOku ke banned"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "ʻOku banned hoʻo kautaha ʻInitaneti"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "ʻOku ʻikai ke ke toe ʻi ha miniti ʻe ${ timeMin }"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "ʻOku ʻikai ke ke toe ʻi ai ha sekoni ʻe ${ ttl }"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"ʻOku ke ʻoatu ha ngaahi popoaki ʻoku fuʻu vave, kuo pau ke ke tatali ki he "
"${ waitTime }s :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "ʻOku ʻikai ke ke lava ʻo hu ki he senolo ko ʻeni"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Kuo pau ke fakapapauʻi hoʻo meili kae lava ke talanoa"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "He ʻikai lava ke ke ʻave ha popoaki fuoloa peheni :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Kātaki ʻo fakaʻaongaʻi ʻa e int channel"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Taʻofi e tafea."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Naʻá ke ʻave ha lea fufū ʻoku ʻikai fakafonu pe hala e fakamatalá :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr ""
"ʻOku ʻikai toe ʻaonga ʻa e fehokotakiʻanga fakafoʻou ko ʻeni ʻo e lea fufuú :"
"("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "ʻOku ʻikai tatau hoʻo ongo lea fufuú mo e :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "ʻOku ʻikai maʻu ʻa e tokotaha ngaue ʻi heʻetau faile fakakomipiuta :("
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "Naʻe lava lelei ʻo liliu ʻa e Passowrd."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "ʻIkai tonu e :( URL Kātaki ʻo toe vakaiʻi hoʻo meilí."
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DGlobe"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "Ko ha kolope 3D ʻo ʻetau mape kotoa"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Lomiʻi tuʻo ua ʻi he mamani ke toe foki."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Load..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.Fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.Fun"
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Fokotuʻu ʻa e lanu ʻo e lanu ʻi ha mape styled fakatataa mo e kau vaʻinga "
"kehe ʻi he ʻInitaneti"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "He ʻikai lava ke taʻe fakafonu e ʻimeili."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr ""
"ʻOku totonu ke ʻoua naʻa toe siʻi hifo he mataʻitohi ʻe 5 ʻa e ʻimeili."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "He ʻikai lava ke loloa ange ʻa e ʻimeili ʻi he mataʻitohi ʻe 40."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "ʻOku totonu ke ʻoua naʻa toe siʻi hifo he ʻimeili ha dot"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "ʻOku totonu ke kau ʻi he ʻimeili ha @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "ʻIkai lava ke taʻe ʻi ai ha hingoa."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Kuo pau ke mataʻitohi ʻe 2 hono lōloa ʻo e hingoá"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Kuo pau ke nounou ange ʻa e hingoá ʻi he mataʻitohi ʻe 26"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "ʻOku ʻi he hingoa ha mataʻitohi ʻoku hala hange ko @, /, \\ pe #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "ʻIkai ʻoange ha lea fufū."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Kuo pau ke ʻoua naʻa toe siʻi hifo he mataʻitohi ʻe 6 ʻa e lea fufuú."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Kuo pau ke nounou ange ʻa e lea fufuú ʻi he mataʻitohi ʻe 60."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "Toe Fakafoʻou e Lea Fufuú PixelPlanet.fun"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Fakafoʻou heni hoʻo lea fufuú"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Toe Fakafoʻou ʻa e Lea Fufuú"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Lomiʻi heni"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "ke foki ki pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr ""
"Malo e lelei ${ name }, te ke lava ʻo fokotuʻu heni hoʻo lea fufu foʻou:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Lea Fufū Foʻoú"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Fakapapauʻi ʻa e Lea Fufū Foʻoú"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Fakahū"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "ʻOku ʻikai ke ke hū ki he polokalamá"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "ʻOku ʻikai ngofua ke ke hū ki he peesi ko ʻení"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "ʻE lava ʻe he miniti pe ʻe taha ʻo fai ia"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "ʻOku ʻikai ke ke banned"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "ʻOku ʻikai ke ke hu ki he polokalama."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Fehalaaki ʻa e server ʻi he taimi ʻoku loka ai."
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Fakapapauʻi ʻo e meilí"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Kuo fakapapauʻi he taimí ni :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"ʻOku ʻikai tonu hoʻo kouti fakapapauʻi ʻo e meilí pe kuo ʻosi e taimi "
"ngāueʻaki :(, kātaki ʻo kole ha fika foʻou."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "ʻOku ʻikai fakangofua ʻa e kautaha ʻimeili ko ʻeni"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "ʻIkai ha Captcha ʻe foaki"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Kuo ʻosi fakaʻaongaʻi ʻa e ʻĪ-meilí."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Kuo ʻosi ngāueʻaki ʻe he tokotaha ngāue ki he polokala."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Naʻe fuʻu fuoloa hoʻo feinga."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Naʻe ʻikai ke ke lava hoʻo captcha"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Fehalaaki Captcha ʻikai ʻiloʻi"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "ʻIkai lava ʻo faʻu ha foʻou ki he polokalamá :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "ʻIkai lava ke fokotuʻu ha fakataha hili e lesisita :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "ʻOku ʻikai ke ke authenticated."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "ʻIkai tonu e lea fufuú!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "Ngaahi ʻAkauni PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "ʻE toe fakafoki fakahangatonu atu koe hili 15s"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Pe ${ clickHere } ke foki ki pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Mamani"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Mahina"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Fakatataa"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Coronavirus"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Ko ʻetau tefitoʻi fakatataa, ko ha mape lahi ʻo e mamani. Tuku ʻi he feituʻu "
"kotoa pe ʻoku ke saiʻia ai"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Fakatataa ʻo e mahina. Feituʻu malu ki he ʻati. ʻIkai ha fuka pe fakamatala "
"lahi (tuku kehe kapau ko ha konga ʻo e ʻati) pe ʻaati lahi ange ʻi he 1.5 k "
"x 1.5 k."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Fokotuʻu Voxels ʻi ha fakatataa 3D mo e niʻihi kehe"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Fakatataa makehe ke fakamafola hono ʻiloʻi ʻo e SARS-CoV2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Sioʻata ʻo e PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Sioʻata ʻo e PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Fakatataa ʻuliʻuli mo hinehina"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Ko ha fakatataa maʻa e kau vaʻinga malohi taha mei he ʻaho kimuʻa. Ngaahi "
"fakamatala fakamuimuitaha ʻi he 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr ""
"Talitali lelei ʻa e ${ name } ki he PixelPlanet, plese fakapapauʻi hoʻo meili"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Malo e lelei ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"talitali lelei ki homau kiʻi kolo pixelplacers, ke fakaʻaongaʻi hoʻo "
"ʻakauni, kuo pau ke ke fakapapauʻi hoʻo meili. Te ke lava ʻo fai ia heni: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Lomiʻi ke Fakapapauʻi"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Pe hiki tatau ʻa e URL ko ʻeni:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr ""
"Fiefia pea ʻoua naʻa ke momou ke fetuʻutaki mai kiate kimautolu kapau te ke "
"e encouter ha faʻahinga palopalema :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Malo"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Kuo mau ʻosi ʻoatu ha meili fakapapauʻi, te ke lava ʻo kole ha taha ʻi he "
"miniti ʻe ${ minLeft }."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Naʻe ngalo hoʻo lea fufuu ki he PixelPlanet? Maʻu ha taha foʻou heni"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Malo e lelei"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Naʻá ke kole ke maʻu mai ha lea fufū foʻou. Te ke lava ʻo liliu hoʻo lea "
"fufuu ʻi he miniti ʻe 30 ka hoko: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Kapau naʻe ʻikai ke ke kole ʻa e meili ko ʻeni, kataki ʻo tukunoaʻi pe ia "
"(ko e ip naʻa ne kole ʻa e meili ko ʻeni ko e ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "ʻOku ʻikai fakapolokalamaʻi ʻa e meili ʻi he server"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Kuo mau ʻosi ʻoatu ha meili mo ha ngaahi fakahinohino. Kātaki ʻo tatali "
"kimuʻa pea toki kole mai ha toe meili ʻe taha."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "ʻIkai lava ke maʻu e meili ko ʻeni ʻi heʻemau faile fakakomipiuta"

View File

@ -10,116 +10,412 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Generator: Poedit 3.2.2\n"
#: src/core/ChatProvider.js:370
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Proxy ile sohbete mesaj atamazsın"
msgstr "Proxy ile mesaj gönderemezsin"
#: src/core/ChatProvider.js:384
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Çok hızlı mesaj gönderiyorsun, ${ waitTime } saniye beklemen gerekiyor"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Ülken geçici süreliğine susturuldu"
#: src/core/ChatProvider.js:388
msgid "You don't have access to this channel"
msgstr "Bu kanala erişimin yok"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr "Kalıcı olarak susturuldun, kaldırılması için Guilded sunucumuza katıl"
#: src/core/ChatProvider.js:404
msgid "Your mail has to be verified in order to chat"
msgstr "Onaylı bir E-Posta adresin olmadan sohbete katılamazsın"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Banlandın"
#: src/core/ChatProvider.js:409
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr "Kalıcı olarak susturuldun, kaldırmak için Guilded sunucumuza katıl"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "İnternet sağlayıcın banlandı"
#: src/core/ChatProvider.js:414
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "${ timeMin } dakikalığına susturuldun"
#: src/core/ChatProvider.js:416
msgid "You are muted for another ${ muted } seconds"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "${ muted } saniyeliğine susturuldun"
#: src/core/ChatProvider.js:424
msgid "Ow no! Spam protection decided to mute you"
msgstr "Olamaz! Spam koruması seni susturdu"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Çok hızlı mesaj gönderiyorsun, ${ waitTime } saniye beklemen gerekiyor"
#: src/core/ChatProvider.js:435
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Bu kanala erişimin yok"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Onaylı bir E-Posta adresin olmadan sohbete katılamazsın"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Bu kadar uzun bir mesaj gönderemezsin :("
#: src/core/ChatProvider.js:439
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Lütfen int sohbet kanalını kullanın"
#: src/core/ChatProvider.js:443
msgid "Your country is temporary muted from chat"
msgstr "Ülken sohbetten geçici süreliğine susturuldu"
#: src/core/ChatProvider.js:451
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Flood yapmayı bırak."
#: src/routes/reset_password.js:40
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Boş bir parola gönderdin veya geçersiz data :("
#: src/routes/reset_password.js:52
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Parola değiştirme bağlantısı artık geçerli değil :("
#: src/routes/reset_password.js:63
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Parolaların uyuşmuyor"
#: src/routes/reset_password.js:78
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Kullanıcı veri tabanımızda bulunamadı :("
#: src/routes/reset_password.js:90
msgid "Passowrd successfully changed."
#: src/routes/reset_password.js:89
msgid "Password successfully changed."
msgstr "Parolanız başarılı bir şekilde değiştirildi."
#: src/routes/reset_password.js:109
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Geçersiz bağlantı :( Lütfen postanızı tekrar kontrol ediniz."
#: src/routes/reset_password.js:122
msgid ""
"This passwort reset link is wrong or already expired, please request a new "
"one (Note: you can use those links just once)"
msgstr ""
"Bu parola değiştirme bağlantısı yanlış veya çoktan sona erdi, lütfen yeni "
"bir talepte bulun (Not: bu bağlantıları tek seferlik kullanabilirsin)"
#: src/ssr-components/Globe.jsx:44
msgid "Double click on globe to go back."
msgstr "Küreye çift tıklayarak geri dön."
#: src/ssr-components/Globe.jsx:45
msgid "Loading..."
msgstr "Yükleniyor..."
#: src/ssr-components/Globe.jsx:51
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3BKüresel"
#: src/ssr-components/Globe.jsx:52
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "Tüm haritamızın 3 boyutlu küreseli"
#: src/ssr-components/Main.jsx:70
msgid "PixelPlanet.fun"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Küreye çift tıklayarak geri dön."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Yükleniyor..."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ppfun"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "PixelPlanet.fun PopUp"
#: src/ssr/Main.jsx:67
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.fun"
#: src/ssr-components/Main.jsx:72
#: src/ssr/Main.jsx:68
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Diğer oyuncularla beraber harita tarzı tuvallerde renkli pikseller atın"
#: src/core/mail.js:65
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Mail adresi boş bırakılamaz."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Mail adresi en az 5 karakterden oluşmalıdır."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Mail adresi 40 karakterden fazla olamaz."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Mail adresi içerisinde nokta bulundurmalıdır"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Mail adresi içerisinde @ bulundurmalıdır"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Kullanıcı adı boş bırakılamaz."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Kullanıcı adı 2 karakterden fazla olmalıdır"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Kullanıcı adı 26 karakterden az olmalıdır"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Kullanıcı adı @, /, \\ veya # gibi geçersiz karakter bulunduruyor"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Parola girilmedi."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Parola en az 6 karakterden oluşmalıdır."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Parolan 60 karakteri geçemez."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Parola Yenileme"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Parolanı buradan yenileyebilirsin"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Parola Yenile"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Buraya tıkla"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "pixelplanet'e dön"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Merhaba ${ name }, parolanı burada ayarlayabilirsin:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Yeni Parola"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Yeni Parolayı Onayla"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Gönder"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Giriş yapmadın"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Bu sayfaya erişimin yok"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Sadece adminler bunu yapabilir"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Banlanmadın"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Henüz oturum açmadın."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Oturum kapatılırken sunucu hatası oluştu."
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Mail adresi doğrulaması"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Artık hesabın doğrulandı :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Doğrulama kodun geçersiz veya süresi doldu :(, lütfen yeni bir talepte bulun."
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Bu e-posta sağlayıcısına izin verilmiyor"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Captcha girilmedi"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Mail adresi kullanımda."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Kullanıcı adı kullanımda."
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr "Fazla uzun sürdü, tekrar dene."
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr "Captcha'yı yanlış girdin"
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr "Bilinmeyen Captcha Hatası"
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Yeni hesap oluşturulamadı :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Hesap oluştururken bir hata meydana geldi :("
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Kimliğiniz doğrulanamadı."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Yanlış parola!"
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun Hesapları"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "15 saniye içerisinde otomatik olarak yönlendirileceksin"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Veya ${ clickHere } pixelplanet'e dönebilirsin"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Dünya"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Ay"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3B Tuval"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Koronavirüs"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "Ana tuvalimiz devasa dünya haritası. İstediğin yere piksel atabilirsin"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Ay tuvali. Eserler için güvenilir bir yer. Bayraklar veya büyük yazılar "
"(eserin parçası değilse) veya 1.5k x 1.5k pikselden oluşan eserler yasaktır."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "3B tuvalde diğer oyuncularla birlikte küp pikseller at"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Koronavirüs farkındalığını yaymak için özel olarak yapılan tuval"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "PixelZone'un aynası"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "PixelCanvas'ın aynası"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Siyah-beyaz tuval"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Geçen günün en aktif oyuncuları için yapılmış tuval. Sıralama her gün 00:00 "
"UTC'da güncellenir."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr "PixelPlanet'e hoş geldin ${ name }, lütfen mail adresini doğrula"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Merhaba ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"piksel atanlardan oluşan topluluğumuza hoş geldin, hesabını kullanmak için "
"mail adresini doğrula. Buradan yapabilirsin: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Doğrulamak için Tıkla"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Veya bağlantıyı kopyalayarak:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr "Eğlenmene bak ve problem yaşarsan bize ulaşmaktan çekinme :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Teşekkürler"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
@ -128,61 +424,15 @@ msgstr ""
"Size zaten doğrulara postası gönderildi, ${ minLeft } dakika içinde yenisini "
"talep edebilirsiniz."
#: src/core/mail.js:75
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "PixelPlanet'e hoş geldin ${ name }, lütfen mail adresini doğrula"
#: src/core/mail.js:77
#, javascript-format
msgid "Hello ${ name }"
msgstr "Merhaba ${ name }"
#: src/core/mail.js:78
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"piksel atanlardan oluşan topluluğumuza hoş geldin, hesabını kullanmak için "
"mail adresini doğrula. Buradan yapabilirsin: "
#: src/core/mail.js:78
msgid "Click to Verify"
msgstr "Doğrulamak için Tıkla"
#: src/core/mail.js:78 src/core/mail.js:128
msgid "Or by copying following url:"
msgstr "Veya bağlantıyı kopyalayarak:"
#: src/core/mail.js:79
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "Eğlenmene bak ve problem yaşarsan bize ulaşmaktan çekinme :)"
#: src/core/mail.js:80 src/core/mail.js:130
msgid "Thanks"
msgstr "Teşekkürler"
#: src/core/mail.js:98
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Sana çoktan talimatlar içeren bir posta gönderdik. Lütfen başka bir posta "
"talep etmeden önce bekle."
#: src/core/mail.js:106
msgid "Couldn't find this mail in our database"
msgstr "Bu mail adresini veri tabanımızda bulamadık"
#: src/core/mail.js:125
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "PixelPlanet parolanı unuttun mu? Buradan yenisini alabilirsin"
#: src/core/mail.js:127
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Merhaba"
#: src/core/mail.js:128
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
@ -190,270 +440,43 @@ msgstr ""
"Yeni bir parola talebinde bulundun. Parolanı 30 dakika içinde buradan "
"değiştirebilirsin:: "
#: src/core/mail.js:128 src/ssr-components/PasswordReset.jsx:19
#: src/ssr-components/PasswordReset.jsx:28
msgid "Reset Password"
msgstr "Parola Yenile"
#: src/core/mail.js:129
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Eğer bu maili talep etmediysen lütfen görmezden gel (bu postayı talep eden "
"Eğer bu postayı talep etmediysen lütfen görmezden gel (bu postayı talep eden "
"ip: ${ ip })"
#: src/ssr-components/PasswordReset.jsx:21
#: src/ssr-components/RedirectionPage.jsx:15
msgid "Click here"
msgstr "Buraya tıkla"
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Posta sunucuda yapılandırılmamış"
#: src/ssr-components/PasswordReset.jsx:22
msgid "to go back to pixelplanet"
msgstr "pixelplanet'e dön"
#: src/ssr-components/PasswordReset.jsx:29
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Merhaba ${ name }, parolanı burada ayarlayabilirsin:"
#: src/ssr-components/PasswordReset.jsx:33
msgid "New Password"
msgstr "Yeni Parola"
#: src/ssr-components/PasswordReset.jsx:41
msgid "Confirm New Password"
msgstr "Yeni Parolayı Onayla"
#: src/ssr-components/PasswordReset.jsx:47
msgid "Submit"
msgstr "Gönder"
#: src/ssr-components/PasswordReset.jsx:52
msgid "PixelPlanet.fun Password Reset"
msgstr "PixelPlanet.fun Parola Yenileme"
#: src/ssr-components/PasswordReset.jsx:53
msgid "Reset your password here"
msgstr "Parolanı buradan yenileyebilirsin"
#: src/routes/api/captcha.js:22
msgid "No captcha text given"
msgstr "Captcha metni girilmedi"
#: src/routes/api/captcha.js:27
msgid "No captcha id given"
msgstr "Captcha id'si girilmedi"
#: src/routes/api/auth/register.js:61 src/routes/api/captcha.js:41
msgid "You took too long, try again."
msgstr "Fazla uzun sürdü, tekrar dene."
#: src/routes/api/auth/register.js:64 src/routes/api/captcha.js:47
msgid "You failed your captcha"
msgstr "Captcha'yı yanlış girdin"
#: src/routes/api/auth/register.js:67 src/routes/api/captcha.js:53
msgid "Unknown Captcha Error"
msgstr "Bilinmeyen Captcha Hatası"
#: src/routes/api/captcha.js:60
msgid "Server error occured"
msgstr "Sunucu hatası oluştu"
#: src/routes/api/modtools.js:52
msgid "You are not logged in"
msgstr "Giriş yapmadın"
#: src/routes/api/modtools.js:64
msgid "You are not allowed to access this page"
msgstr "Bu sayfaya erişimin yok"
#: src/routes/api/modtools.js:166
msgid "Just admins can do that"
msgstr "Sadece adminler bunu yapabilir"
#: src/utils/validation.js:18
msgid "Email can't be empty."
msgstr "Mail adresi boş bırakılamaz."
#: src/utils/validation.js:19
msgid "Email should be at least 5 characters long."
msgstr "Mail adresi en az 5 karakterden oluşmalıdır."
#: src/utils/validation.js:20
msgid "Email can't be longer than 40 characters."
msgstr "Mail adresi 40 karakterden fazla olamaz."
#: src/utils/validation.js:21
msgid "Email should at least contain a dot"
msgstr "Mail adresi içerisinde nokta bulundurmalıdır"
#: src/utils/validation.js:23
msgid "Email should contain a @"
msgstr "Mail adresi içerisinde @ bulundurmalıdır"
#: src/utils/validation.js:30
msgid "Name can't be empty."
msgstr "Kullanıcı adı boş bırakılamaz."
#: src/utils/validation.js:31
msgid "Name must be at least 2 characters long"
msgstr "Kullanıcı adı 2 karakterden fazla olmalıdır"
#: src/utils/validation.js:32
msgid "Name must be shorter than 26 characters"
msgstr "Kullanıcı adı 26 karakterden az olmalıdır"
#: src/utils/validation.js:39
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Kullanıcı adı @, /, \\ veya # gibi geçersiz karakter bulunduruyor"
#: src/utils/validation.js:54
msgid "No password given."
msgstr "Parola girilmedi."
#: src/utils/validation.js:57
msgid "Password must be at least 6 characters long."
msgstr "Parola en az 6 karakterden oluşmalıdır."
#: src/utils/validation.js:60
msgid "Password must be shorter than 60 characters."
msgstr "Parolan 60 karakteri geçemez."
#: src/routes/api/auth/register.js:33
msgid "No Captcha given"
msgstr "Captcha Girilmedi"
#: src/routes/api/auth/register.js:36
msgid "E-Mail already in use."
msgstr "Mail adresi kullanımda."
#: src/routes/api/auth/register.js:38
msgid "Username already in use."
msgstr "Kullanıcı adı kullanımda."
#: src/routes/api/auth/register.js:91
msgid "Failed to create new user :("
msgstr "Yeni hesap oluşturulamadı :("
#: src/routes/api/auth/register.js:106
msgid "Failed to establish session after register :("
msgstr "Hesap oluştururken bir hata meydana geldi :("
#: src/routes/api/auth/logout.js:13
msgid "You are not even logged in."
msgstr "Henüz oturum açmadın."
#: src/routes/api/auth/change_mail.js:41
#: src/routes/api/auth/change_passwd.js:37
#: src/routes/api/auth/delete_account.js:38
msgid "You are not authenticated."
msgstr "Kimliğiniz doğrulanamadı."
#: src/routes/api/auth/change_mail.js:50
#: src/routes/api/auth/change_passwd.js:46
#: src/routes/api/auth/delete_account.js:48
msgid "Incorrect password!"
msgstr "Yanlış parola!"
#: src/routes/api/auth/verify.js:25 src/routes/api/auth/verify.js:32
msgid "Mail verification"
msgstr "Mail adresi doğrulaması"
#: src/routes/api/auth/verify.js:26
msgid "You are now verified :)"
msgstr "Artık hesabın doğrulandı :)"
#: src/routes/api/auth/verify.js:32
#: src/core/MailProvider.js:122
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Doğrulama kodun geçersiz veya süresi doldu :(, lütfen yeni bir talepte bulun."
"Halihazırda talimatlar içeren bir posta gönderildi. Lütfen başka bir posta "
"talep etmeden önce bekle."
#: src/ssr-components/RedirectionPage.jsx:20
msgid "You will be automatically redirected after 15s"
msgstr "15 saniye içerisinde otomatik olarak yönlendirileceksin"
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Bu mail adresini veri tabanımızda bulamadık"
#: src/ssr-components/RedirectionPage.jsx:21
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Veya ${ clickHere } pixelplanet'e dönebilirsin"
#~ msgid "Ow no! Spam protection decided to mute you"
#~ msgstr "Olamaz! Spam koruması seni susturdu"
#: src/ssr-components/RedirectionPage.jsx:25
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.fun Hesapları"
#~ msgid ""
#~ "This passwort reset link is wrong or already expired, please request a "
#~ "new one (Note: you can use those links just once)"
#~ msgstr ""
#~ "Bu parola değiştirme bağlantısı yanlış veya çoktan sona erdi, lütfen yeni "
#~ "bir talepte bulun (Not: bu bağlantıları tek seferlik kullanabilirsin)"
#: src/canvasesDesc.js:18
msgid "Earth"
msgstr "Dünya"
#~ msgid "No captcha text given"
#~ msgstr "Captcha metni girilmedi"
#: src/canvasesDesc.js:19
msgid "Moon"
msgstr "Ay"
#: src/canvasesDesc.js:20
msgid "3D Canvas"
msgstr "3B Tuval"
#: src/canvasesDesc.js:21
msgid "Coronavirus"
msgstr "Koronavirüs"
#: src/canvasesDesc.js:22
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:23
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:24
msgid "1bit"
msgstr "1bit"
#: src/canvasesDesc.js:25
msgid "Top10"
msgstr "Top10"
#: src/canvasesDesc.js:28
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr "Ana tuvalimiz devasa dünya haritası. İstediğin yere piksel atabilirsin"
#: src/canvasesDesc.js:29
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Ay tuvali. Eserler için güvenilir bir yer. Bayraklar veya büyük yazılar "
"(eserin parçası değilse) veya 1.5k x 1.5k pikselden oluşan eserler yasaktır."
#: src/canvasesDesc.js:30
msgid "Place Voxels on a 3D canvas with others"
msgstr "3B tuvalde diğer oyuncularla birlikte küp pikseller at"
#: src/canvasesDesc.js:31
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Koronavirüs farkındalığını yaymak için özel olarak yapılan tuval"
#: src/canvasesDesc.js:32
msgid "Mirror of PixelZone"
msgstr "PixelZone'un aynası"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelCanvas"
msgstr "PixelCanvas'ın aynası"
#: src/canvasesDesc.js:34
msgid "Black and White canvas"
msgstr "Siyah-beyaz tuval"
#: src/canvasesDesc.js:35
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Geçen günün en aktif oyuncuları için yapılmış tuval. Sıralama her gün 00:00 "
"UTC'da güncellenir."
#~ msgid "No captcha id given"
#~ msgstr "Captcha id'si girilmedi"

View File

@ -1,502 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Poedit 3.1.1\n"
#: src/core/ChatProvider.js:434
msgid "You can not send chat messages with proxy"
msgstr "Ви не можете спілкуватись в чаті з проксі"
#: src/core/ChatProvider.js:436
msgid "Your country is temporary muted from this chat channel"
msgstr "Вашу країну тимчасово замучено в цьому чаті"
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"Вам назавжди заборонено писати в чат, заходьте в наш guilded, щоб апелювати "
"свій мут"
#: src/core/ChatProvider.js:441
msgid "You are banned"
msgstr "Ви забанені"
#: src/core/ChatProvider.js:443
msgid "Your Internet Provider is banned"
msgstr "Ваш інтернет-провайдер забанений"
#: src/core/ChatProvider.js:448
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Ви в муті ще ${ timeMin } хвилин"
#: src/core/ChatProvider.js:450
msgid "You are muted for another ${ ttl } seconds"
msgstr "Ви в муті ще ${ ttl } секунд"
#: src/core/ChatProvider.js:467
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr ""
"Ви надсилаєте повідомлення занадто швидко, вам потрібно почекати "
"${ waitTime }с :("
#: src/core/ChatProvider.js:471
msgid "You don't have access to this channel"
msgstr "Ви не маєте доступу до цього каналу"
#: src/core/ChatProvider.js:488
msgid "Your mail has to be verified in order to chat"
msgstr "Ваша пошта повинна бути підтверджена для спілкування"
#: src/core/ChatProvider.js:498
msgid "You can't send a message this long :("
msgstr "Ви не можете надсилати настільки великі повідомлення :("
#: src/core/ChatProvider.js:502
msgid "Please use int channel"
msgstr "Будь ласка, використовуйте міжнародний чат"
#: src/core/ChatProvider.js:510
msgid "Stop flooding."
msgstr "Досить флудити."
#: src/routes/reset_password.js:39
msgid "You sent an empty password or invalid data :("
msgstr "Ви надіслали порожній пароль або недійсні дані :("
#: src/routes/reset_password.js:51
msgid "This password-reset link isn't valid anymore :("
msgstr "Це посилання для скидання пароля вже недійсне :("
#: src/routes/reset_password.js:62
msgid "Your passwords do not match :("
msgstr "Ваші паролі не збігаються :("
#: src/routes/reset_password.js:77
msgid "User doesn't exist in our database :("
msgstr "Такого користувача немає в нашій базі даних :("
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgstr "Пароль успішно змінено."
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr "Некоректне посилання :( Будь ласка, перевірте свою пошту знову."
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr "ппфан"
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr "Розгортання Піксельної Планети"
#: src/ssr/Globe.jsx:32
msgid "PixelPlanet.Fun 3DGlobe"
msgstr "PixelPlanet.Fun 3DГлобус"
#: src/ssr/Globe.jsx:33
msgid "A 3D globe of our whole map"
msgstr "3D глобус всієї карти"
#: src/ssr/Globe.jsx:46
msgid "Double click on globe to go back."
msgstr "Зробіть дабл клік по глобусу, щоб повернутись."
#: src/ssr/Globe.jsx:47
msgid "Loading..."
msgstr "Завантаження..."
#: src/ssr/Main.jsx:59
msgid "PixelPlanet.Fun"
msgstr "PixelPlanet.fun"
#: src/ssr/Main.jsx:60
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
"Ставте кольорові пікселі на полотні в стилі карти разом з іншими гравцями"
#: src/utils/validation.js:17
msgid "Email can't be empty."
msgstr "Електронна адреса не може бути порожньою."
#: src/utils/validation.js:18
msgid "Email should be at least 5 characters long."
msgstr "Електронна адреса повинна мати не менше 5 символів."
#: src/utils/validation.js:19
msgid "Email can't be longer than 40 characters."
msgstr "Електронна адреса не може містити більше 40 символів."
#: src/utils/validation.js:20
msgid "Email should at least contain a dot"
msgstr "Електронна адреса повинна містити принаймні крапку"
#: src/utils/validation.js:22
msgid "Email should contain a @"
msgstr "Електронна адреса повинна містити @"
#: src/utils/validation.js:29
msgid "Name can't be empty."
msgstr "Нікнейм не може бути порожнім."
#: src/utils/validation.js:30
msgid "Name must be at least 2 characters long"
msgstr "Нікнейм має містити щонайменше 2 символи"
#: src/utils/validation.js:31
msgid "Name must be shorter than 26 characters"
msgstr "Нікнейм не має перевищувати 26 символів"
#: src/utils/validation.js:38
msgid "Name contains invalid character like @, /, \\ or #"
msgstr "Нікнейм містить некоректний символ, такий як @, /, \\ або #"
#: src/utils/validation.js:53
msgid "No password given."
msgstr "Пароль не надано."
#: src/utils/validation.js:56
msgid "Password must be at least 6 characters long."
msgstr "Пароль повинен містити щонайменше 6 символів."
#: src/utils/validation.js:59
msgid "Password must be shorter than 60 characters."
msgstr "Пароль не має перевищувати 60 символів."
#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40
msgid "PixelPlanet.fun Password Reset"
msgstr "Скидання пароля PixelPlanet.fun"
#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41
msgid "Reset your password here"
msgstr "Скиньте свій пароль тут"
#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28
#: src/ssr/PasswordReset.jsx:49
msgid "Reset Password"
msgstr "Скинути пароль"
#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12
msgid "Click here"
msgstr "Клацни тут"
#: src/ssr/PasswordReset.jsx:30
msgid "to go back to pixelplanet"
msgstr "щоб повернутись на pixelplanet"
#: src/ssr/PasswordReset.jsx:50
#, javascript-format
msgid "Hello ${ name }, you can set your new password here:"
msgstr "Привіт, ${ name }, ти можеш змінити свій пароль тут:"
#: src/ssr/PasswordReset.jsx:54
msgid "New Password"
msgstr "Новий пароль"
#: src/ssr/PasswordReset.jsx:60
msgid "Confirm New Password"
msgstr "Підтвердити новий пароль"
#: src/ssr/PasswordReset.jsx:65
msgid "Submit"
msgstr "Підтвердити"
#: src/routes/api/auth/register.js:59 src/routes/api/captcha.js:34
msgid "You took too long, try again."
msgstr "Минуло занадто багато часу, спробуйте ще раз."
#: src/routes/api/auth/register.js:62 src/routes/api/captcha.js:39
msgid "You failed your captcha"
msgstr "Ви не пройшли капчу"
#: src/routes/api/captcha.js:43
msgid "No captcha text given"
msgstr "Текст капчі не надано"
#: src/routes/api/captcha.js:47
msgid "No captcha id given"
msgstr "ID капчі не надано"
#: src/routes/api/auth/register.js:65 src/routes/api/captcha.js:51
msgid "Unknown Captcha Error"
msgstr "Невідома помилка з капчею"
#: src/routes/api/captcha.js:57
msgid "Server error occured"
msgstr "Помилка серверу"
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr "Ви не авторизовані"
#: src/routes/api/modtools.js:65
msgid "You are not allowed to access this page"
msgstr "Ви не маєте доступу до цієї сторінки"
#: src/routes/api/modtools.js:207
msgid "Just admins can do that"
msgstr "Це можуть робити тільки адміни"
#: src/routes/api/baninfo.js:32
msgid "You are not banned"
msgstr "Ви не забанені"
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr "Ви навіть не авторизовані."
#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr "Помилка сервера під час виходу."
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr "Ви не авторизовані."
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr "Неправильний пароль!"
#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr "Цей постачальник електронної пошти заборонений"
#: src/routes/api/auth/register.js:31
msgid "No Captcha given"
msgstr "Капча не надана"
#: src/routes/api/auth/register.js:34
msgid "E-Mail already in use."
msgstr "Ця пошта вже використовується."
#: src/routes/api/auth/register.js:36
msgid "Username already in use."
msgstr "Цей нікнейм вже використовується."
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr "Не вдалося створити нового користувача :("
#: src/routes/api/auth/register.js:105
msgid "Failed to establish session after register :("
msgstr "Не вдалося встановити сесію після реєстрації :("
#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35
msgid "Mail verification"
msgstr "Підтвердження пошти"
#: src/routes/api/auth/verify.js:27
msgid "You are now verified :)"
msgstr "Тепер ви верифіковані :)"
#: src/routes/api/auth/verify.js:35
msgid ""
"Your mail verification code is invalid or already expired :(, please request "
"a new one."
msgstr ""
"Ваш код для підтвердження пошти недійсний або застарів :(, будь ласка, "
"зробіть запит нового."
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr "Аккаунти PixelPlanet.fun"
#: src/ssr/RedirectionPage.jsx:29
msgid "You will be automatically redirected after 15s"
msgstr "Через 15 секунд ви будете автоматично перенаправлені"
#: src/ssr/RedirectionPage.jsx:30
#, javascript-format
msgid "Or ${ clickHere } to go back to pixelplanet"
msgstr "Або ${clickHere}, щоб повернутись на pixelplanet"
#: src/canvasesDesc.js:19
msgid "Earth"
msgstr "Земля"
#: src/canvasesDesc.js:20
msgid "Moon"
msgstr "Місяць"
#: src/canvasesDesc.js:21
msgid "3D Canvas"
msgstr "3D Полотно"
#: src/canvasesDesc.js:22
msgid "Coronavirus"
msgstr "Коронавірус"
#: src/canvasesDesc.js:23
msgid "PixelZone"
msgstr "PixelZone"
#: src/canvasesDesc.js:24
msgid "PixelCanvas"
msgstr "PixelCanvas"
#: src/canvasesDesc.js:25
msgid "1bit"
msgstr "1біт"
#: src/canvasesDesc.js:26
msgid "Top10"
msgstr "Топ-10"
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
"Наше головне полотно, величезна карта світу. Ставте пікселі де захочете"
#: src/canvasesDesc.js:30
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of art) "
"or art larger than 1.5k x 1.5k pixels."
msgstr ""
"Місячне полотно. Безпечне місце для малюнків. Без прапорів, або великого "
"тексту (якщо це не частина арту), або малюнків більше 1.5тис. х 1.5тис. "
"пікселів."
#: src/canvasesDesc.js:31
msgid "Place Voxels on a 3D canvas with others"
msgstr "Ставте вокселі на 3D-полотні разом з іншими"
#: src/canvasesDesc.js:32
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr "Спеціальне полотно для поширення інформації про SARS-CoV-2"
#: src/canvasesDesc.js:33
msgid "Mirror of PixelZone"
msgstr "Дзеркало PixelZone"
#: src/canvasesDesc.js:34
msgid "Mirror of PixelCanvas"
msgstr "Дзеркало PixelCanvas"
#: src/canvasesDesc.js:35
msgid "Black and White canvas"
msgstr "Чорно-біле полотно"
#: src/canvasesDesc.js:36
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
"Полотно для найактивніших гравців минулого дня. Щоденний рейтинг обнулюється "
"о 00:00 UTC."
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgstr "${ name }, вітаємо на PixelPlanet, будь ласка, підтвердьте свою пошту"
#: src/core/MailProvider.js:67
msgid "Hello ${ name }"
msgstr "Привіт, ${ name }"
#: src/core/MailProvider.js:68
msgid ""
"welcome to our little community of pixelplacers, to use your account, you "
"have to verify your mail. You can do that here: "
msgstr ""
"вітаємо в нашій маленькій спільноті піксельних гравців, щоб використовувати "
"свій аккаунт, вам потрібно підтвердити свою пошту. Ви можете зробити це тут: "
#: src/core/MailProvider.js:68
msgid "Click to Verify"
msgstr "Клацни для підтвердження"
#: src/core/MailProvider.js:68 src/core/MailProvider.js:105
msgid "Or by copying following url:"
msgstr "Або перейди по цьому посиланню:"
#: src/core/MailProvider.js:69
msgid ""
"Have fun and don't hesitate to contact us if you encouter any problems :)"
msgstr "Веселіться і не соромтеся писати нам, якщо у вас виникли проблеми :)"
#: src/core/MailProvider.js:70 src/core/MailProvider.js:107
msgid "Thanks"
msgstr "Дякую"
#: src/core/MailProvider.js:87
#, javascript-format
msgid ""
"We already sent you a verification mail, you can request another one in "
"${ minLeft } minutes."
msgstr ""
"Ми вже надіслали вам лист для підтвердження, ви можете зробити запит нового "
"через ${ minLeft } хвилин."
#: src/core/MailProvider.js:103
msgid "You forgot your password for PixelPlanet? Get a new one here"
msgstr "Ви забули свій пароль до PixelPlanet? Отримайте новий тут"
#: src/core/MailProvider.js:104
msgid "Hello"
msgstr "Привіт"
#: src/core/MailProvider.js:105
msgid ""
"You requested to get a new password. You can change your password within the "
"next 30min here: "
msgstr ""
"Ви зробили запит нового пароля. Ви можете його змінити протягом наступних 30 "
"хвилин тут: "
#: src/core/MailProvider.js:106
#, javascript-format
msgid ""
"If you did not request this mail, please just ignore it (the ip that "
"requested this mail was ${ ip })."
msgstr ""
"Якщо ви не робили запит цього листа, просто проігноруйте його (IP-адреса, з "
"якої зробили запит цього листа - ${ ip })."
#: src/core/MailProvider.js:114
msgid "Mail is not configured on the server"
msgstr "Не налаштована пошта сервера"
#: src/core/MailProvider.js:122
msgid ""
"We already sent you a mail with instructions. Please wait before requesting "
"another mail."
msgstr ""
"Ми вже надіслали вам лист із інструкціями. Зачекайте, перш ніж робити запит "
"іншого листа."
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr "Не можемо знайти цю пошту в нашій базі данних"
#~ msgid "Ow no! Spam protection decided to mute you"
#~ msgstr "О ні! Спам-захист вирішив дати вам мут"
#~ msgid ""
#~ "This passwort reset link is wrong or already expired, please request a "
#~ "new one (Note: you can use those links just once)"
#~ msgstr ""
#~ "Це посилання для скидання паролю неправильне або вже застаріле, будь "
#~ "ласка, зробіть запит нового (Примітка: ви можете використовувати ці "
#~ "посилання лише один раз)"
#~ msgid "Couldn't send your message, pls log out and back in again."
#~ msgstr ""
#~ "Не можемо надіслати твоє повідомлення, будь ласка, вийди і зайди в "
#~ "аккаунт знову."

View File

@ -12,7 +12,7 @@ msgid "Your country is temporary muted from this chat channel"
msgstr ""
#: src/core/ChatProvider.js:439
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgid "You are permanently muted, join our guilded to appeal the mute"
msgstr ""
#: src/core/ChatProvider.js:441
@ -29,6 +29,7 @@ msgid "You are muted for another ${ timeMin } minutes"
msgstr ""
#: src/core/ChatProvider.js:450
#, javascript-format
msgid "You are muted for another ${ ttl } seconds"
msgstr ""
@ -74,42 +75,42 @@ msgid "User doesn't exist in our database :("
msgstr ""
#: src/routes/reset_password.js:89
msgid "Passowrd successfully changed."
msgid "Password successfully changed."
msgstr ""
#: src/routes/reset_password.js:108
msgid "Invalid url :( Please check your mail again."
msgstr ""
#: src/ssr/PopUp.jsx:58
msgid "ppfun"
msgstr ""
#: src/ssr/PopUp.jsx:59
msgid "PixelPlanet.Fun PopUp"
msgstr ""
#: src/ssr/Globe.jsx:32
#: src/ssr/Globe.jsx:37
msgid "PixelPlanet.Fun 3DGlobe"
msgstr ""
#: src/ssr/Globe.jsx:33
#: src/ssr/Globe.jsx:38
msgid "A 3D globe of our whole map"
msgstr ""
#: src/ssr/Globe.jsx:46
#: src/ssr/Globe.jsx:51
msgid "Double click on globe to go back."
msgstr ""
#: src/ssr/Globe.jsx:47
#: src/ssr/Globe.jsx:52
msgid "Loading..."
msgstr ""
#: src/ssr/Main.jsx:59
#: src/ssr/PopUp.jsx:55
msgid "ppfun"
msgstr ""
#: src/ssr/PopUp.jsx:56
msgid "PixelPlanet.Fun PopUp"
msgstr ""
#: src/ssr/Main.jsx:64
msgid "PixelPlanet.Fun"
msgstr ""
#: src/ssr/Main.jsx:60
#: src/ssr/Main.jsx:65
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
@ -203,33 +204,6 @@ msgstr ""
msgid "Submit"
msgstr ""
#: src/routes/api/auth/register.js:59
#: src/routes/api/captcha.js:34
msgid "You took too long, try again."
msgstr ""
#: src/routes/api/auth/register.js:62
#: src/routes/api/captcha.js:39
msgid "You failed your captcha"
msgstr ""
#: src/routes/api/captcha.js:43
msgid "No captcha text given"
msgstr ""
#: src/routes/api/captcha.js:47
msgid "No captcha id given"
msgstr ""
#: src/routes/api/auth/register.js:65
#: src/routes/api/captcha.js:51
msgid "Unknown Captcha Error"
msgstr ""
#: src/routes/api/captcha.js:57
msgid "Server error occured"
msgstr ""
#: src/routes/api/modtools.js:53
msgid "You are not logged in"
msgstr ""
@ -246,28 +220,7 @@ msgstr ""
msgid "You are not banned"
msgstr ""
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr ""
#: src/routes/api/auth/delete_account.js:55
#: src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr ""
#: src/routes/api/auth/change_mail.js:43
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:35
msgid "You are not authenticated."
msgstr ""
#: src/routes/api/auth/change_mail.js:52
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:45
msgid "Incorrect password!"
msgstr ""
#: src/routes/api/auth/change_mail.js:21
#: src/routes/api/auth/change_mail.js:22
#: src/routes/api/auth/register.js:24
msgid "This email provider is not allowed"
msgstr ""
@ -284,6 +237,18 @@ msgstr ""
msgid "Username already in use."
msgstr ""
#: src/routes/api/auth/register.js:59
msgid "You took too long, try again."
msgstr ""
#: src/routes/api/auth/register.js:62
msgid "You failed your captcha"
msgstr ""
#: src/routes/api/auth/register.js:65
msgid "Unknown Captcha Error"
msgstr ""
#: src/routes/api/auth/register.js:89
msgid "Failed to create new user :("
msgstr ""
@ -307,6 +272,35 @@ msgid ""
"request a new one."
msgstr ""
#: src/routes/api/auth/logout.js:11
msgid "You are not even logged in."
msgstr ""
#: src/routes/api/auth/delete_account.js:65
#: src/routes/api/auth/logout.js:20
msgid "Server error when logging out."
msgstr ""
#: src/routes/api/auth/change_mail.js:44
#: src/routes/api/auth/change_passwd.js:34
#: src/routes/api/auth/delete_account.js:36
msgid "You are not authenticated."
msgstr ""
#: src/routes/api/auth/change_mail.js:53
#: src/routes/api/auth/change_passwd.js:43
#: src/routes/api/auth/delete_account.js:55
msgid "Incorrect password!"
msgstr ""
#: src/routes/api/auth/delete_account.js:46
msgid "Muted users can not delete their account."
msgstr ""
#: src/routes/api/auth/change_mail.js:62
msgid "Muted users can not do this."
msgstr ""
#: src/ssr/RedirectionPage.jsx:19
msgid "PixelPlanet.fun Accounts"
msgstr ""
@ -352,48 +346,59 @@ msgstr ""
msgid "Top10"
msgstr ""
#: src/canvasesDesc.js:29
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
#: src/canvasesDesc.js:27
msgid "Thoia"
msgstr ""
#: src/canvasesDesc.js:30
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
#: src/canvasesDesc.js:31
msgid ""
"Moon canvas. Safe space for art. No flags or large text (unless part of "
"art) or art larger than 1.5k x 1.5k pixels."
msgstr ""
#: src/canvasesDesc.js:31
#: src/canvasesDesc.js:32
msgid "Place Voxels on a 3D canvas with others"
msgstr ""
#: src/canvasesDesc.js:32
#: src/canvasesDesc.js:33
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr ""
#: src/canvasesDesc.js:33
#: src/canvasesDesc.js:34
msgid "Mirror of PixelZone"
msgstr ""
#: src/canvasesDesc.js:34
#: src/canvasesDesc.js:35
msgid "Mirror of PixelCanvas"
msgstr ""
#: src/canvasesDesc.js:35
#: src/canvasesDesc.js:36
msgid "Black and White canvas"
msgstr ""
#: src/canvasesDesc.js:36
#: src/canvasesDesc.js:37
msgid ""
"A canvas for the most active players from the the previous day. Daily "
"ranking updates at 00:00 UTC."
msgstr ""
#: src/canvasesDesc.js:38
msgid ""
"Thoia World Canvas. Advanced fictional worldbuilding and arts. Abandon the "
"old world and all it entails."
msgstr ""
#: src/core/MailProvider.js:66
#, javascript-format
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
msgid "Welcome ${ name } to PixelPlanet, please verify your mail"
msgstr ""
#: src/core/MailProvider.js:67
#, javascript-format
msgid "Hello ${ name }"
msgstr ""
@ -413,7 +418,7 @@ msgid "Or by copying following url:"
msgstr ""
#: src/core/MailProvider.js:69
msgid "Have fun and don't hesitate to contact us if you encouter any problems :)"
msgid "Have fun and don't hesitate to contact us if you encounter any problems :)"
msgstr ""
#: src/core/MailProvider.js:70
@ -461,4 +466,4 @@ msgstr ""
#: src/core/MailProvider.js:130
msgid "Couldn't find this mail in our database"
msgstr ""
msgstr ""

View File

@ -46,136 +46,136 @@ msgstr ""
msgid "Hide Hidden Canvases"
msgstr ""
#: src/ui/PixelTransferController.js:63
#: src/ui/PixelTransferController.js:70
msgid "Error :("
msgstr ""
#: src/ui/PixelTransferController.js:64
#: src/ui/PixelTransferController.js:71
msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?"
msgstr ""
#: src/ui/PixelTransferController.js:96
#: src/ui/PixelTransferController.js:103
msgid "Invalid Canvas"
msgstr ""
#: src/ui/PixelTransferController.js:97
#: src/ui/PixelTransferController.js:104
msgid "This canvas doesn't exist"
msgstr ""
#: src/ui/PixelTransferController.js:100
#: src/ui/PixelTransferController.js:104
#: src/ui/PixelTransferController.js:108
#: src/ui/PixelTransferController.js:107
#: src/ui/PixelTransferController.js:111
#: src/ui/PixelTransferController.js:115
msgid "Invalid Coordinates"
msgstr ""
#: src/ui/PixelTransferController.js:101
#: src/ui/PixelTransferController.js:108
msgid "x out of bounds"
msgstr ""
#: src/ui/PixelTransferController.js:105
#: src/ui/PixelTransferController.js:112
msgid "y out of bounds"
msgstr ""
#: src/ui/PixelTransferController.js:109
#: src/ui/PixelTransferController.js:116
msgid "z out of bounds"
msgstr ""
#: src/ui/PixelTransferController.js:112
#: src/ui/PixelTransferController.js:119
msgid "Wrong Color"
msgstr ""
#: src/ui/PixelTransferController.js:113
#: src/ui/PixelTransferController.js:120
msgid "Invalid color selected"
msgstr ""
#: src/ui/PixelTransferController.js:116
#: src/ui/PixelTransferController.js:123
msgid "Just for registered Users"
msgstr ""
#: src/ui/PixelTransferController.js:117
#: src/ui/PixelTransferController.js:124
msgid "You have to be logged in to place on this canvas"
msgstr ""
#: src/ui/PixelTransferController.js:120
#: src/ui/PixelTransferController.js:127
msgid "Place more :)"
msgstr ""
#: src/ui/PixelTransferController.js:122
#: src/ui/PixelTransferController.js:129
msgid "You can not access this canvas yet. You need to place more pixels"
msgstr ""
#: src/ui/PixelTransferController.js:125
#: src/ui/PixelTransferController.js:132
msgid "Pixel protected!"
msgstr ""
#: src/ui/PixelTransferController.js:132
#: src/ui/PixelTransferController.js:139
msgid "Please prove that you are human"
msgstr ""
#: src/ui/PixelTransferController.js:136
#: src/ui/PixelTransferController.js:143
msgid "No Proxies Allowed :("
msgstr ""
#: src/ui/PixelTransferController.js:137
#: src/ui/PixelTransferController.js:144
msgid "You are using a Proxy."
msgstr ""
#: src/ui/PixelTransferController.js:140
#: src/ui/PixelTransferController.js:147
msgid "Not allowed"
msgstr ""
#: src/ui/PixelTransferController.js:141
#: src/ui/PixelTransferController.js:148
msgid "Just the Top10 of yesterday can place here"
msgstr ""
#: src/ui/PixelTransferController.js:144
#: src/ui/PixelTransferController.js:151
msgid "You are weird"
msgstr ""
#: src/ui/PixelTransferController.js:146
#: src/ui/PixelTransferController.js:153
msgid "Server got confused by your pixels. Are you playing on multiple devices?"
msgstr ""
#: src/ui/PixelTransferController.js:149
#: src/ui/PixelTransferController.js:156
msgid "Banned"
msgstr ""
#: src/ui/PixelTransferController.js:153
#: src/ui/PixelTransferController.js:160
msgid "Range Banned"
msgstr ""
#: src/ui/PixelTransferController.js:154
#: src/ui/PixelTransferController.js:161
msgid "Your Internet Provider is banned from playing this game"
msgstr ""
#: src/ui/PixelTransferController.js:157
#: src/ui/PixelTransferController.js:164
msgid "Timeout"
msgstr ""
#: src/ui/PixelTransferController.js:159
#: src/ui/PixelTransferController.js:166
msgid ""
"Didn't get an answer from pixelplanet. Maybe try to refresh if problem "
"persists?"
msgstr ""
#: src/ui/PixelTransferController.js:162
#: src/ui/PixelTransferController.js:169
msgid "Weird"
msgstr ""
#: src/ui/PixelTransferController.js:163
#: src/ui/PixelTransferController.js:170
msgid "Couldn't set Pixel"
msgstr ""
#: src/ui/PixelTransferController.js:168
#: src/ui/PixelTransferController.js:175
#, javascript-format
msgid "Error ${ retCode }"
msgstr ""
#: src/ui/renderer.js:35
#: src/ui/rendererFactory.js:30
msgid "Canvas Error"
msgstr ""
#: src/ui/renderer.js:36
#: src/ui/rendererFactory.js:31
msgid "Can't render 3D canvas, do you have WebGL2 disabled?"
msgstr ""
@ -194,6 +194,7 @@ msgid "try again after ${ ti }min"
msgstr ""
#: src/store/actions/fetch.js:70
#, javascript-format
msgid "Connection error ${ code } :("
msgstr ""
@ -230,12 +231,6 @@ msgstr ""
msgid "You have new messages in chat"
msgstr ""
#: src/components/Converter.jsx:561
#: src/components/CoordinatesBox.jsx:31
#: src/components/ModWatchtools.jsx:371
msgid "Copy to Clipboard"
msgstr ""
#: src/components/OnlineBox.jsx:40
msgid "Online Users on Canvas"
msgstr ""
@ -248,6 +243,13 @@ msgstr ""
msgid "Pixels placed"
msgstr ""
#: src/components/Converter.jsx:565
#: src/components/CoordinatesBox.jsx:31
#: src/components/ModWatchtools.jsx:378
#: src/components/ModWatchtools.jsx:396
msgid "Copy to Clipboard"
msgstr ""
#: src/components/buttons/CanvasSwitchButton.jsx:20
#: src/components/windows/index.js:19
msgid "Canvas Selection"
@ -279,7 +281,7 @@ msgstr ""
#: src/components/Admintools.jsx:103
#: src/components/ModCanvastools.jsx:222
#: src/components/ModWatchtools.jsx:118
#: src/components/ModWatchtools.jsx:120
#: src/components/Window.jsx:157
#: src/components/Window.jsx:260
#: src/components/contextmenus/ChannelContextMenu.jsx:59
@ -330,6 +332,10 @@ msgstr ""
msgid "Make Screenshot"
msgstr ""
#: src/components/buttons/GlobeButton.jsx:34
msgid "Globe View"
msgstr ""
#: src/components/buttons/PalselButton.jsx:30
msgid "Close Palette"
msgstr ""
@ -338,10 +344,6 @@ msgstr ""
msgid "Open Palette"
msgstr ""
#: src/components/buttons/GlobeButton.jsx:34
msgid "Globe View"
msgstr ""
#: src/components/windows/index.js:16
msgid "Registration"
msgstr ""
@ -358,23 +360,23 @@ msgstr ""
msgid "Canvas Archive"
msgstr ""
#: src/components/GlobalCaptcha.jsx:50
#: src/components/GlobalCaptcha.jsx:47
msgid "You took too long, try again."
msgstr ""
#: src/components/GlobalCaptcha.jsx:53
#: src/components/GlobalCaptcha.jsx:50
msgid "You failed your captcha"
msgstr ""
#: src/components/GlobalCaptcha.jsx:56
#: src/components/GlobalCaptcha.jsx:53
msgid "No or invalid captcha text"
msgstr ""
#: src/components/GlobalCaptcha.jsx:59
#: src/components/GlobalCaptcha.jsx:56
msgid "No captcha id given"
msgstr ""
#: src/components/GlobalCaptcha.jsx:62
#: src/components/GlobalCaptcha.jsx:59
msgid "Unknown Captcha Error"
msgstr ""
@ -384,7 +386,7 @@ msgstr ""
#: src/components/ChangeName.jsx:58
#: src/components/ChangePassword.jsx:79
#: src/components/DeleteAccount.jsx:55
#: src/components/GlobalCaptcha.jsx:74
#: src/components/GlobalCaptcha.jsx:71
#: src/components/LogInForm.jsx:70
#: src/components/windows/ForgotPassword.jsx:73
#: src/components/windows/Register.jsx:89
@ -395,18 +397,18 @@ msgstr ""
#: src/components/ChangeName.jsx:70
#: src/components/ChangePassword.jsx:115
#: src/components/DeleteAccount.jsx:68
#: src/components/GlobalCaptcha.jsx:83
#: src/components/GlobalCaptcha.jsx:80
#: src/components/windows/ForgotPassword.jsx:89
#: src/components/windows/Register.jsx:133
msgid "Cancel"
msgstr ""
#: src/components/GlobalCaptcha.jsx:89
#: src/components/GlobalCaptcha.jsx:86
msgid "Send"
msgstr ""
#: src/components/BanInfo.jsx:66
msgid "You are banned. You think it is unjustifed? Check out the "
msgid "You are banned. You think it is unjustified? Check out the "
msgstr ""
#: src/components/BanInfo.jsx:76
@ -516,6 +518,7 @@ msgid "Press ${ bindG } to toggle grid"
msgstr ""
#: src/components/windows/Help.jsx:64
#, javascript-format
msgid "Press ${ bindX } to toggle showing of pixel activity"
msgstr ""
@ -525,6 +528,7 @@ msgid "Press ${ bindH } to toggle historical view"
msgstr ""
#: src/components/windows/Help.jsx:66
#, javascript-format
msgid "Press ${ bindR } to copy coordinates"
msgstr ""
@ -546,6 +550,7 @@ msgid "Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to mo
msgstr ""
#: src/components/windows/Help.jsx:70
#, javascript-format
msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move"
msgstr ""
@ -555,6 +560,7 @@ msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom"
msgstr ""
#: src/components/windows/Help.jsx:72
#, javascript-format
msgid "Hold left ${ bindShift } for placing while moving mouse"
msgstr ""
@ -573,12 +579,14 @@ msgstr ""
#: src/components/windows/Help.jsx:75
#: src/components/windows/Help.jsx:87
#, javascript-format
msgid ""
"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to "
"select current hovering color"
msgstr ""
#: src/components/windows/Help.jsx:81
#, javascript-format
msgid "Press ${ bindE } and ${ bindC } to fly up and down"
msgstr ""
@ -595,6 +603,7 @@ msgid ""
msgstr ""
#: src/components/windows/Help.jsx:84
#, javascript-format
msgid "${ mouseSymbol } Right click and drag mouse to pan"
msgstr ""
@ -617,6 +626,7 @@ msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }."
msgstr ""
#: src/components/windows/Help.jsx:97
#, javascript-format
msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }."
msgstr ""
@ -684,7 +694,7 @@ msgstr ""
msgid "For when you are playing on a potato."
msgstr ""
#: src/components/Converter.jsx:376
#: src/components/Converter.jsx:380
#: src/components/windows/Settings.jsx:148
msgid "Light Grid"
msgstr ""
@ -971,7 +981,7 @@ msgid "Register"
msgstr ""
#: src/components/UserAreaContent.jsx:62
msgid "Todays Placed Pixels"
msgid "Today Placed Pixels"
msgstr ""
#: src/components/UserAreaContent.jsx:66
@ -1020,77 +1030,77 @@ msgstr ""
msgid "Choose Canvas"
msgstr ""
#: src/components/Converter.jsx:216
#: src/components/Converter.jsx:217
msgid "Palette Download"
msgstr ""
#: src/components/Converter.jsx:218
#: src/components/Converter.jsx:219
#, javascript-format
msgid "Palette for ${ gimpLink }"
msgstr ""
#: src/components/Converter.jsx:236
#: src/components/Converter.jsx:240
msgid "Image Converter"
msgstr ""
#: src/components/Converter.jsx:237
#: src/components/Converter.jsx:241
msgid "Convert an image to canvas colors"
msgstr ""
#: src/components/Converter.jsx:256
#: src/components/Converter.jsx:260
msgid "Choose Strategy"
msgstr ""
#: src/components/Converter.jsx:294
#: src/components/Converter.jsx:298
msgid "Serpentine"
msgstr ""
#: src/components/Converter.jsx:296
#: src/components/Converter.jsx:300
msgid "Minimum Color Distance"
msgstr ""
#: src/components/Converter.jsx:323
#: src/components/Converter.jsx:327
msgid "Calculate like GIMP"
msgstr ""
#: src/components/Converter.jsx:327
#: src/components/Converter.jsx:331
msgid "Choose Color Mode"
msgstr ""
#: src/components/Converter.jsx:356
#: src/components/Converter.jsx:360
msgid "Add Grid (uncheck if you need a 1:1 template)"
msgstr ""
#: src/components/Converter.jsx:378
#: src/components/Converter.jsx:394
#: src/components/Converter.jsx:382
#: src/components/Converter.jsx:398
msgid "Offset"
msgstr ""
#: src/components/Converter.jsx:423
#: src/components/Converter.jsx:427
msgid "Scale Image"
msgstr ""
#: src/components/Converter.jsx:434
#: src/components/Converter.jsx:438
msgid "Width"
msgstr ""
#: src/components/Converter.jsx:465
#: src/components/Converter.jsx:469
msgid "Height"
msgstr ""
#: src/components/Converter.jsx:504
#: src/components/Converter.jsx:508
msgid "Keep Ratio"
msgstr ""
#: src/components/Converter.jsx:517
#: src/components/Converter.jsx:521
msgid "Anti Aliasing"
msgstr ""
#: src/components/Converter.jsx:531
#: src/components/Converter.jsx:535
msgid "Reset"
msgstr ""
#: src/components/Converter.jsx:549
#: src/components/Converter.jsx:553
msgid "Download Template"
msgstr ""
@ -1189,7 +1199,7 @@ msgstr ""
msgid "Countries by Pixels Today"
msgstr ""
#: src/core/chartSettings.js:352
#: src/core/chartSettings.js:351
msgid "Total Pixels placed per day"
msgstr ""
@ -1339,14 +1349,14 @@ msgstr ""
#: src/components/ModCanvastools.jsx:330
#: src/components/ModCanvastools.jsx:403
#: src/components/ModCanvastools.jsx:486
#: src/components/ModWatchtools.jsx:174
#: src/components/ModWatchtools.jsx:176
msgid "Top-left corner"
msgstr ""
#: src/components/ModCanvastools.jsx:347
#: src/components/ModCanvastools.jsx:420
#: src/components/ModCanvastools.jsx:503
#: src/components/ModWatchtools.jsx:191
#: src/components/ModWatchtools.jsx:193
msgid "Bottom-right corner"
msgstr ""
@ -1406,27 +1416,27 @@ msgstr ""
msgid "Interval is invalid"
msgstr ""
#: src/components/ModWatchtools.jsx:122
#: src/components/ModWatchtools.jsx:124
msgid "Check who placed in an area"
msgstr ""
#: src/components/ModWatchtools.jsx:123
#: src/components/ModWatchtools.jsx:125
msgid "Canvas"
msgstr ""
#: src/components/ModWatchtools.jsx:142
#: src/components/ModWatchtools.jsx:144
msgid "Interval"
msgstr ""
#: src/components/ModWatchtools.jsx:157
#: src/components/ModWatchtools.jsx:159
msgid "IID (optional)"
msgstr ""
#: src/components/ModWatchtools.jsx:236
#: src/components/ModWatchtools.jsx:239
msgid "Get Pixels"
msgstr ""
#: src/components/ModWatchtools.jsx:267
#: src/components/ModWatchtools.jsx:271
msgid "Get Users"
msgstr ""
@ -1450,10 +1460,6 @@ msgstr ""
msgid "(0 = infinite)"
msgstr ""
#: src/components/contextmenus/ChannelContextMenu.jsx:46
msgid "Mute"
msgstr ""
#: src/components/contextmenus/UserContextMenu.jsx:49
msgid "Ping"
msgstr ""
@ -1466,6 +1472,10 @@ msgstr ""
msgid "Block"
msgstr ""
#: src/components/contextmenus/ChannelContextMenu.jsx:46
msgid "Mute"
msgstr ""
#: src/components/windows/Help.jsx:15
#: src/components/windows/Settings.jsx:87
msgctxt "keybinds"
@ -1532,4 +1542,4 @@ msgstr ""
#: src/components/windows/Settings.jsx:103
msgctxt "keybinds"
msgid "M"
msgstr ""
msgstr ""

1599
i18n/to.po Normal file

File diff suppressed because it is too large Load Diff

1382
i18n/tr.po

File diff suppressed because it is too large Load Diff

8664
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,8 +8,12 @@
"description": "Unlimited planet canvas for placing pixels",
"main": "server.js",
"scripts": {
"build": "node scripts/build.js && npm run minify-css",
"build:dev": "webpack --env extract --config ./webpack.config.server.js && webpack --env extract --env development --config ./webpack.config.client.js && npm run minify-css",
"build": "node scripts/build.js",
"build:server": "webpack --config ./webpack.config.server.js",
"build:client": "node scripts/build.js --client",
"build:dev": "webpack --config ./webpack.config.server.js && webpack --env development --config ./webpack.config.client.js && npm run minify-css",
"update-browserlist": "browserslist --update-db",
"deploy": "ssh pixelplanet /home/pixelpla/rebuild.sh",
"minify-css": "node scripts/minifyCss.js",
"babel-node": "babel-node",
"lint": "cd $INIT_CWD && eslint --ext .jsx --ext .js",
@ -22,11 +26,11 @@
"not IE_Mob 11"
],
"dependencies": {
"bcrypt": "^5.0.1",
"bcrypt": "^5.1.1",
"chart.js": "^3.9.1",
"compression": "^1.7.3",
"cookie": "^0.5.0",
"core-js": "^3.23.4",
"core-js": "^3.34.0",
"etag": "^1.8.1",
"express": "^4.17.2",
"express-session": "^1.17.2",
@ -35,7 +39,7 @@
"morgan": "^1.10.0",
"multer": "^1.4.5-lts.1",
"mysql2": "^2.3.3",
"nodemailer": "^6.7.8",
"nodemailer": "^6.9.7",
"passport": "^0.6.0",
"passport-discord": "^0.1.4",
"passport-facebook": "^3.0.0",
@ -47,57 +51,56 @@
"react": "^18.2.0",
"react-chartjs-2": "^4.3.1",
"react-dom": "^18.2.0",
"react-icons": "^4.3.1",
"react-icons": "^4.12.0",
"react-redux": "^8.0.2",
"react-stay-scrolled": "^8.0.0",
"react-toggle": "^4.1.3",
"redis": "^4.3.1",
"redis": "^4.6.11",
"redux": "^4.1.2",
"redux-persist": "^6.0.0",
"redux-thunk": "^2.4.1",
"reselect": "^4.1.6",
"sequelize": "^6.21.6",
"sequelize": "^6.35.2",
"sharp": "^0.31.0",
"startaudiocontext": "^1.2.1",
"three": "^0.143.0",
"three-trackballcontrols": "^0.9.0",
"ttag": "^1.7.24",
"url-search-params-polyfill": "^8.1.1",
"winston": "^3.8.2",
"ttag": "^1.8.3",
"url-search-params-polyfill": "^8.2.5",
"winston": "^3.11.0",
"winston-daily-rotate-file": "^4.5.5",
"ws": "^8.4.0"
"ws": "^8.15.1"
},
"devDependencies": {
"@babel/cli": "^7.18.6",
"@babel/core": "^7.18.6",
"@babel/eslint-parser": "^7.16.5",
"@babel/node": "^7.18.6",
"@babel/plugin-transform-react-constant-elements": "^7.18.6",
"@babel/plugin-transform-react-inline-elements": "^7.18.6",
"@babel/preset-env": "^7.18.6",
"@babel/preset-react": "^7.18.6",
"assets-webpack-plugin": "^7.1.1",
"babel-loader": "^8.2.3",
"@babel/cli": "^7.23.4",
"@babel/core": "^7.23.6",
"@babel/eslint-parser": "^7.23.3",
"@babel/node": "^7.22.19",
"@babel/plugin-transform-react-constant-elements": "^7.23.3",
"@babel/plugin-transform-react-inline-elements": "^7.23.3",
"@babel/preset-env": "^7.23.6",
"@babel/preset-react": "^7.23.3",
"babel-loader": "^9.1.3",
"babel-plugin-transform-react-pure-class-to-function": "^1.0.1",
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
"babel-plugin-ttag": "^1.7.30",
"babel-plugin-ttag": "^1.8.5",
"clean-css": "^5.2.2",
"clean-css-loader": "^4.1.1",
"clean-css-loader": "^4.2.1",
"copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.5.1",
"eslint": "^8.22.0",
"css-loader": "^6.8.1",
"eslint": "^8.55.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jsx-a11y": "^6.6.0",
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-import": "^2.29.0",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"generate-package-json-webpack-plugin": "^2.6.0",
"ttag-cli": "^1.9.3",
"ttag-cli": "^1.10.9",
"ttag-po-loader": "0.0.2",
"webpack": "^5.67.0",
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^4.9.2",
"webpack": "^5.89.0",
"webpack-bundle-analyzer": "^4.10.1",
"webpack-cli": "^5.1.4",
"webpack-node-externals": "^3.0.0"
},
"optionalDependencies": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 562 B

After

Width:  |  Height:  |  Size: 228 B

View File

@ -1,82 +0,0 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 450 450" style="enable-background:new 0 0 450 450;" xml:space="preserve">
<style type="text/css">
.st24{opacity:0.5;fill:#0074BF;enable-background:new ;}
.st25{opacity:0.7;fill:#0074BF;enable-background:new ;}
.st26{opacity:0.7;fill:#0082BF;enable-background:new ;}
.st27{opacity:0.8;fill:#0082BF;enable-background:new ;}
.st28{fill:#0082BF;}
.st29{opacity:0.5;fill:#008FBF;enable-background:new ;}
.st30{opacity:0.8;fill:#008FBF;enable-background:new ;}
.st31{fill:#008FBF;}
.st32{opacity:0.7;fill:#009DBF;enable-background:new ;}
.st33{fill:#009DBF;}
.st34{opacity:0.7;fill:#00ABBF;enable-background:new ;}
.st35{fill:#00ABBF;}
.st36{opacity:0.5;fill:#00B9BF;enable-background:new ;}
.st37{opacity:0.8;fill:#00B9BF;enable-background:new ;}
.st38{fill:#00B9BF;}
.st39{opacity:0.7;fill:#00C6BF;enable-background:new ;}
.st40{opacity:0.8;fill:#00C6BF;enable-background:new ;}
.st41{fill:#00C6BF;}
.st42{opacity:0.5;fill:#00D4BF;enable-background:new ;}
.st43{opacity:0.7;fill:#00D4BF;enable-background:new ;}
.st44{opacity:0.7;fill:#34E2C9;enable-background:new ;}
.st45{opacity:0.7;fill:#1EA4D3;enable-background:new ;}
.st46{opacity:0.7;fill:#9F75F2;enable-background:new ;}
.st47{opacity:0.7;fill:#FFCA55;enable-background:new ;}
.st48{opacity:0.7;fill:#F91919;enable-background:new ;}
</style>
<rect x="276.9" y="385.6" class="st24" width="51.9" height="51.9"/>
<rect x="225" y="385.6" class="st25" width="51.9" height="51.9"/>
<rect x="173.1" y="385.6" class="st25" width="51.9" height="51.9"/>
<rect x="121.3" y="385.6" class="st24" width="51.9" height="51.9"/>
<rect x="328.8" y="333.8" class="st26" width="51.9" height="51.9"/>
<rect x="276.9" y="333.8" class="st27" width="51.9" height="51.9"/>
<rect x="225" y="333.8" class="st28" width="51.9" height="51.9"/>
<rect x="173.1" y="333.8" class="st28" width="51.9" height="51.9"/>
<rect x="121.3" y="333.8" class="st27" width="51.9" height="51.9"/>
<rect x="69.4" y="333.8" class="st26" width="51.9" height="51.9"/>
<rect x="380.6" y="281.9" class="st29" width="51.9" height="51.9"/>
<rect x="328.8" y="281.9" class="st30" width="51.9" height="51.9"/>
<rect x="276.9" y="281.9" class="st31" width="51.9" height="51.9"/>
<rect x="225" y="281.9" class="st31" width="51.9" height="51.9"/>
<rect x="173.1" y="281.9" class="st31" width="51.9" height="51.9"/>
<rect x="121.3" y="281.9" class="st31" width="51.9" height="51.9"/>
<rect x="69.4" y="281.9" class="st30" width="51.9" height="51.9"/>
<rect x="17.5" y="281.9" class="st29" width="51.9" height="51.9"/>
<rect x="380.6" y="230" class="st32" width="51.9" height="51.9"/>
<rect x="328.8" y="230" class="st33" width="51.9" height="51.9"/>
<rect x="276.9" y="230" class="st33" width="51.9" height="51.9"/>
<rect x="225" y="230" class="st33" width="51.9" height="51.9"/>
<rect x="173.1" y="230" class="st33" width="51.9" height="51.9"/>
<rect x="121.3" y="230" class="st33" width="51.9" height="51.9"/>
<rect x="69.4" y="230" class="st33" width="51.9" height="51.9"/>
<rect x="17.5" y="230" class="st32" width="51.9" height="51.9"/>
<rect x="380.6" y="178.1" class="st34" width="51.9" height="51.9"/>
<rect x="328.8" y="178.1" class="st35" width="51.9" height="51.9"/>
<rect x="276.9" y="178.1" class="st35" width="51.9" height="51.9"/>
<rect x="225" y="178.1" class="st35" width="51.9" height="51.9"/>
<rect x="173.1" y="178.1" class="st35" width="51.9" height="51.9"/>
<rect x="121.3" y="178.1" class="st35" width="51.9" height="51.9"/>
<rect x="69.4" y="178.1" class="st35" width="51.9" height="51.9"/>
<rect x="17.5" y="178.1" class="st34" width="51.9" height="51.9"/>
<rect x="380.6" y="126.3" class="st36" width="51.9" height="51.9"/>
<rect x="328.8" y="126.3" class="st37" width="51.9" height="51.9"/>
<rect x="276.9" y="126.3" class="st38" width="51.9" height="51.9"/>
<rect x="225" y="126.3" class="st38" width="51.9" height="51.9"/>
<rect x="173.1" y="126.3" class="st38" width="51.9" height="51.9"/>
<rect x="121.3" y="126.3" class="st38" width="51.9" height="51.9"/>
<rect x="69.4" y="126.3" class="st37" width="51.9" height="51.9"/>
<rect x="17.5" y="126.3" class="st36" width="51.9" height="51.9"/>
<rect x="328.8" y="74.4" class="st39" width="51.9" height="51.9"/>
<rect x="276.9" y="74.4" class="st40" width="51.9" height="51.9"/>
<rect x="225" y="74.4" class="st41" width="51.9" height="51.9"/>
<rect x="173.1" y="74.4" class="st41" width="51.9" height="51.9"/>
<rect x="121.3" y="74.4" class="st40" width="51.9" height="51.9"/>
<rect x="69.4" y="74.4" class="st39" width="51.9" height="51.9"/>
<rect x="276.9" y="22.5" class="st42" width="51.9" height="51.9"/>
<rect x="225" y="22.5" class="st43" width="51.9" height="51.9"/>
<rect x="173.1" y="22.5" class="st43" width="51.9" height="51.9"/>
<rect x="121.3" y="22.5" class="st42" width="51.9" height="51.9"/>
<path fill="#ffffff" d="M154.1,213.6l14.5-32.4c5.3-8.3,4.6-18.5-1.2-24.2c-0.8-0.8-1.6-1.4-2.5-2c-4-2.5-8.9-3-13.3-1.6 c-5,1.6-9.3,4.9-12,9.3c0,0-19.8,46.2-27.2,66.9s-4.4,58.8,24,87.3c30.1,30.1,73.7,37,101.5,16.1c1.2-0.6,2.3-1.3,3.3-2.1 l85.7-71.6c4.2-3.4,10.3-10.5,4.8-18.6c-5.4-7.9-15.6-2.5-19.8,0.1l-49.3,35.9c-0.9,0.8-2.3,0.6-3.1-0.3c0,0,0,0-0.1-0.1 c-1.3-1.5-1.5-5.6,0.5-7.2l75.6-64.2c6.5-5.9,7.4-14.4,2.2-20.3c-5.2-5.7-13.4-5.6-20,0.4l-68.1,53.2c-1.3,1.1-3.2,0.9-4.2-0.4 c0,0-0.1-0.1-0.1-0.1c-1.3-1.5-1.9-4.1-0.3-5.6l77.1-74.8c6.1-5.7,6.4-15.2,0.8-21.3c-2.7-2.9-6.5-4.5-10.5-4.5 c-4,0-7.9,1.5-10.8,4.3l-78.8,74c-1.9,1.9-5.6,0-6-2.2c-0.2-0.8,0.1-1.6,0.7-2.2l60.3-68.7c6-5.6,6.3-15,0.7-21 c-5.6-6-15-6.3-21-0.7c-0.2,0.2-0.5,0.5-0.7,0.7l-91.4,101.1c-3.3,3.3-8.1,3.4-10.4,1.5C153.2,217.3,152.9,215.1,154.1,213.6z"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

BIN
public/loading9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
public/preview9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
public/pumpkin-texture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@ -0,0 +1,20 @@
/*
* webpack loader that
* marks modules that include ttag as non-cachable
*/
const filtered = {};
module.exports = function (source) {
if (filtered.hasOwnProperty(this.resourcePath)) {
if (filtered[this.resourcePath]) {
this.cacheable(false);
}
return source;
}
const hasTtag = source.slice(0, 400).includes('ttag');
filtered[this.resourcePath] = hasTtag;
if (hasTtag) {
this.cacheable(false);
}
return source;
}

View File

@ -3,14 +3,52 @@
* Lets split that here
*/
const path = require('path');
const fs = require('fs');
const { spawn } = require('child_process');
const webpack = require('webpack');
const minifyCss = require('./minifyCss');
const serverConfig = require('../webpack.config.server.js');
const clientConfig = require('../webpack.config.client.js');
const { getAllAvailableLocals } = clientConfig;
let langs = 'all';
let doBuildServer = false;
let doBuildClient = false;
let parallel = false;
let recursion = false;
for (let i = 0; i < process.argv.length; i += 1) {
switch (process.argv[i]) {
case '--langs': {
const newLangs = process.argv[++i];
if (newLangs) langs = newLangs;
break;
}
case '--client':
doBuildClient = true;
break;
case `--server`:
doBuildServer = true;
break;
case '--parallel':
parallel = true;
break;
case '--recursion':
recursion = true;
break;
default:
// nothing
}
}
if (!doBuildServer && !doBuildClient) {
doBuildServer = true;
doBuildClient = true;
}
function compile(webpackConfig) {
return new Promise((resolve, reject) => {
webpack(webpackConfig).run((err, stats) => {
webpack(webpackConfig, (err, stats) => {
if (err) {
return reject(err);
}
@ -21,31 +59,146 @@ function compile(webpackConfig) {
});
}
async function buildProduction() {
// server files
function buildServer() {
console.log('-----------------------------');
console.log(`Build server...`);
console.log('-----------------------------');
await compile(serverConfig({
development: false,
extract: false,
}));
// client files
const langs = getAllAvailableLocals();
console.log('Available locales:', langs);
const st = Date.now();
for(let i = 0; i < langs.length; i += 1) {
const lang = langs[i];
const ts = Date.now();
return new Promise((resolve, reject) => {
const argsc = (langs === 'all')
? ['webpack', '--env', 'extract', '--config', './webpack.config.server.js']
: ['webpack', '--config', './webpack.config.server.js']
const serverCompile = spawn('npx', argsc);
serverCompile.stdout.on('data', (data) => {
console.log(data.toString());
});
serverCompile.stderr.on('data', (data) => {
console.error(data.toString());
});
serverCompile.on('close', (code) => {
if (code) {
reject(new Error('Server compilation failed!'));
} else {
console.log('---------------------------------------');
console.log(`Server Compilation finished in ${Math.floor((Date.now() - ts) / 1000)}s`);
console.log('---------------------------------------');
resolve();
}
});
});
}
function buildClients(slangs) {
return new Promise((resolve, reject) => {
const clientCompile = spawn('npm', ['run', 'build', '--', '--client', '--recursion', '--langs', slangs.join(',')]);
clientCompile.stdout.on('data', (data) => {
console.log(data.toString());
});
clientCompile.stderr.on('data', (data) => {
console.error(data.toString());
});
clientCompile.on('close', (code) => {
if (code) {
reject(new Error('Client compilation failed!'));
} else {
resolve();
}
});
});
}
async function buildClientsSync(avlangs) {
for(let i = 0; i < avlangs.length; i += 1) {
const lang = avlangs[i];
console.log(`Build client for locale ${lang}...`);
console.log('-----------------------------');
await compile(clientConfig({
development: false,
analyze: false,
extract: false,
locale: lang,
clean: false,
readonly: recursion,
}));
}
console.log(`Finished building in ${(Date.now() - st) / 1000}s`);
}
function buildClientsParallel(avlangs) {
const st = Date.now();
const numProc = 3;
let nump = Math.floor(avlangs.length / numProc);
if (!nump) nump = 1;
const promises = [];
while (avlangs.length >= nump) {
const slangs = avlangs.splice(0, nump);
promises.push(buildClients(slangs));
}
if (avlangs.length) {
promises.push(buildClientsSync(avlangs));
}
return Promise.all(promises);
}
async function buildProduction() {
const st = Date.now();
// cleanup old files
if (!recursion) {
fs.rmSync(path.resolve(__dirname, '..', 'node_modules', '.cache', 'webpack'), { recursive: true, force: true });
}
// decide which languages to build
let avlangs = getAllAvailableLocals();
if (langs !== 'all') {
avlangs = langs.split(',').map((l) => l.trim())
.filter((l) => avlangs.includes(l));
if (!avlangs.length) {
console.error(`ERROR: language ${langs} not available`);
process.exit(1);
return;
}
}
console.log('Building locales:', avlangs);
const promises = [];
if (doBuildServer) {
promises.push(buildServer());
}
if (doBuildClient) {
if (!recursion) {
console.log(
'Building one package seperately to populate cache and possibly extract langs...',
);
await compile(clientConfig({
development: false,
analyze: false,
extract: (langs === 'all'),
locale: avlangs.shift(),
clean: true,
readonly: false,
}));
console.log('-----------------------------');
console.log(`Minify CSS assets...`);
console.log('-----------------------------');
await minifyCss();
}
if (parallel) {
promises.push(buildClientsParallel(avlangs));
} else {
promises.push(buildClientsSync(avlangs));
}
}
await Promise.all(promises);
if (!recursion) {
console.log(`Finished building in ${(Date.now() - st) / 1000}s`);
} else {
console.log(`Worker done in ${(Date.now() - st) / 1000}s`);
}
}
buildProduction();

View File

@ -14,6 +14,7 @@ const path = require('path');
const CleanCSS = require('clean-css');
const crypto = require('crypto');
const buildTs = Date.now();
const assetdir = path.resolve(__dirname, '..', 'dist', 'public', 'assets');
const builddir = path.resolve(__dirname, '..', 'dist');
@ -23,7 +24,6 @@ FILES.push('default.css');
async function minifyCss() {
console.log('Minifying css');
const assets = {};
FILES.forEach((file) => {
const input = fs.readFileSync(path.resolve(FOLDER, file), 'utf8');
const options = {};
@ -48,10 +48,7 @@ async function minifyCss() {
}
const filename = `${key}.${hash.substr(0, 8)}.css`;
fs.writeFileSync(path.resolve(assetdir, filename), output.styles, 'utf8');
assets[key] = `/assets/${filename}`;
});
const json = JSON.stringify(assets);
fs.writeFileSync(path.resolve(builddir, 'styleassets.json'), json);
}
async function doMinifyCss() {

View File

@ -18,9 +18,9 @@ import { createClient } from 'redis';
import {
updateBackupRedis,
createPngBackup,
incrementialBackupRedis,
incrementalBackupRedis,
updateBackupRedis,
} from './core/tilesBackup';
import canvases from './core/canvases';
@ -122,8 +122,7 @@ function getDateFolder() {
if (month < 10) month = `0${month}`;
if (day < 10) day = `0${day}`;
const dayDir = `${date.getUTCFullYear()}/${month}/${day}`;
const backupDir = `${dir}/${dayDir}`;
return backupDir;
return `${dir}/${dayDir}`;
}
async function dailyBackup() {
@ -139,25 +138,25 @@ async function dailyBackup() {
await createPngBackup(backupRedis, canvases, backupDir);
} catch (e) {
fs.rmSync(backupDir, { recursive: true });
console.log('Error occured during daily backup', e);
console.log('Error occurred during daily backup', e);
}
console.log('Daily full backup done');
}
async function incrementialBackup() {
async function incrementalBackup() {
const backupDir = getDateFolder();
if (!fs.existsSync(backupDir)) {
fs.mkdirSync(backupDir, { recursive: true });
}
try {
await incrementialBackupRedis(
await incrementalBackupRedis(
canvasRedis,
backupRedis,
canvases,
backupDir,
);
} catch (e) {
console.log('Error occured during incremential backup', e);
console.log('Error occurred during incremental backup', e);
}
}
@ -166,7 +165,7 @@ async function trigger() {
if (!fs.existsSync(backupDir)) {
await dailyBackup();
} else {
await incrementialBackup();
await incrementalBackup();
}
if (CMD) {
runCmd(CMD);

View File

@ -297,16 +297,76 @@
[ 67, 52, 85 ],
[ 0, 0, 0 ]
],
"size": 2048,
"size": 4096,
"historicalSizes": [
[
"20220627",
1024
],
[
"20231006",
2048
]
],
"bcd": 15000,
"cds": 900000,
"req": "top",
"sd": "2022-01-06"
},
"9": {
"ident": "e",
"colors": [
[ 255, 255, 255 ],
[ 163, 198, 238 ],
[ 255, 255, 255 ],
[ 221, 221, 221 ],
[ 172, 172, 172 ],
[ 109, 109, 109 ],
[ 58, 58, 58 ],
[ 0, 0, 0 ],
[ 255, 125, 120 ],
[ 255, 40, 40 ],
[ 191, 6, 6 ],
[ 127, 0, 0 ],
[ 163, 198, 238 ],
[ 0, 255, 240 ],
[ 18, 190, 255 ],
[ 0, 127, 240 ],
[ 16, 68, 194 ],
[ 17, 17, 84 ],
[ 167, 237, 0 ],
[ 69, 171, 5 ],
[ 79, 105, 32 ],
[ 0, 79, 13 ],
[ 109, 247, 177 ],
[ 0, 193, 154 ],
[ 0, 118, 127 ],
[ 172, 104, 39 ],
[ 114, 69, 36 ],
[ 84, 50, 24 ],
[ 255, 245, 92 ],
[ 255, 218, 8 ],
[ 227, 170, 0 ],
[ 255, 182, 113 ],
[ 255, 154, 8 ],
[ 222, 108, 0 ],
[ 230, 116, 255 ],
[ 191, 56, 222 ],
[ 136, 21, 178 ],
[ 73, 13, 119 ],
[ 255, 116, 225 ],
[ 255, 34, 169 ],
[ 172, 0, 109 ],
[ 252, 225, 184 ],
[ 213, 162, 115 ],
[ 152, 107, 70 ]
],
"cli": 2,
"size": 16384,
"bcd": 5000,
"cds": 600000,
"ranked": false,
"req": 500000,
"sd": "2023-10-07"
}
}

View File

@ -4,6 +4,7 @@
*
*/
import assetWatcher from './core/fsWatcher';
import canvases from './core/canvases';
import ttag from './core/ttag';
@ -24,6 +25,7 @@ function getCanvases(t) {
6: t`PixelCanvas`,
7: t`1bit`,
8: t`Top10`,
9: t`Thoia`,
};
const canvasDesc = {
0: t`Our main canvas, a huge map of the world. Place everywhere you like`,
@ -34,38 +36,44 @@ function getCanvases(t) {
6: t`Mirror of PixelCanvas`,
7: t`Black and White canvas`,
8: t`A canvas for the most active players from the the previous day. Daily ranking updates at 00:00 UTC.`,
9: t`Thoia World Canvas. Advanced fictional worldbuilding and arts. Abandon the old world and all it entails.`,
};
/*
* no edit below here needed when adding/removing canvas
*/
const localicedCanvases = {};
const localizedCanvases = {};
const canvasKeys = Object.keys(canvases);
for (let i = 0; i < canvasKeys.length; i += 1) {
const key = canvasKeys[i];
localicedCanvases[key] = { ...canvases[key] };
localicedCanvases[key].desc = canvasDesc[key]
localizedCanvases[key] = { ...canvases[key] };
localizedCanvases[key].desc = canvasDesc[key]
|| canvases[key].desc
|| `Canvas ${key}`;
localicedCanvases[key].title = canvasTitles[key]
localizedCanvases[key].title = canvasTitles[key]
|| canvases[key].title
|| `Canvas ${key}`;
}
return localicedCanvases;
return localizedCanvases;
}
const lCanvases = {};
(() => {
function translateCanvases() {
const parsedCanvases = {};
const langs = Object.keys(ttag);
langs.forEach((lang) => {
lCanvases[lang] = getCanvases(ttag[lang].t);
parsedCanvases[lang] = getCanvases(ttag[lang].t);
});
})();
export function getLocalicedCanvases(lang) {
return lCanvases[lang] || lCanvases.default;
return parsedCanvases;
}
export default lCanvases;
let lCanvases = translateCanvases();
// reload on asset change
assetWatcher.onChange(() => {
lCanvases = translateCanvases();
});
export default function getLocalizedCanvases(lang = 'en') {
return lCanvases[lang] || lCanvases.en;
}

View File

@ -17,9 +17,9 @@ import {
import pixelTransferController from './ui/PixelTransferController';
import store from './store/store';
import renderApp from './components/App';
import { initRenderer, getRenderer } from './ui/renderer';
import { requestBanMe } from './store/actions/fetch';
import { initRenderer, getRenderer } from './ui/rendererFactory';
import socketClient from './socket/SocketClient';
import { GC_INTERVAL } from './core/constants';
persistStore(store, {}, () => {
window.addEventListener('message', store.dispatch);
@ -51,7 +51,7 @@ persistStore(store, {}, () => {
store.dispatch(fetchMe());
socketClient.initialize(store);
socketClient.initialize(store, pixelTransferController, getRenderer);
});
(function load() {
@ -65,36 +65,8 @@ persistStore(store, {}, () => {
// garbage collection
setInterval(() => {
const renderer = getRenderer();
const chunks = renderer.getAllChunks();
if (chunks) {
const curTime = Date.now();
let cnt = 0;
chunks.forEach((value, key) => {
if (curTime > value.timestamp + 300000) {
const [zc, xc, yc] = value.cell;
if (!renderer.isChunkInView(zc, xc, yc)) {
cnt++;
if (value.isBasechunk) {
socketClient.deRegisterChunk([xc, yc]);
}
chunks.delete(key);
value.destructor();
}
}
});
// eslint-disable-next-line no-console
console.log('Garbage collection cleaned', cnt, 'chunks');
}
}, 300000);
// detect bot script
setTimeout(() => {
document.querySelectorAll('body > div > span').forEach((e) => {
if (e.innerText.includes('Void')) {
requestBanMe(1);
}
});
}, 40000);
renderer.gc();
}, GC_INTERVAL);
document.removeEventListener('DOMContentLoaded', onLoad);
};

View File

@ -63,7 +63,7 @@ const BanInfo = ({ close }) => {
return (
<div style={{ userSelect: 'text' }}>
<p>
{t`You are banned. You think it is unjustifed? Check out the `}
{t`You are banned. You think it is unjustified? Check out the `}
<span
role="button"
tabIndex={0}

View File

@ -202,6 +202,7 @@ function Converter() {
? null
: (
<option
key={canvas}
value={canvas}
>
{
@ -222,7 +223,10 @@ function Converter() {
onClick={() => {
const canvas = canvases[selectedCanvas];
const {
title, desc, colors, cli,
title,
desc,
colors,
cli = 0,
} = canvas;
fileDownload(
printGIMPPalette(title, desc, colors.slice(cli)),

View File

@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
width="864px"
height="864px"
viewBox="0 0 864 864"
enable-background="new 0 0 864 864"
xml:space="preserve"
sodipodi:docname="Creeper.svg"
inkscape:version="0.92.4 (unknown)"><metadata
id="metadata13"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs11" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2416"
inkscape:window-height="1621"
id="namedview9"
showgrid="false"
inkscape:zoom="0.77257965"
inkscape:cx="13.722139"
inkscape:cy="191.30415"
inkscape:window-x="423"
inkscape:window-y="239"
inkscape:window-maximized="0"
inkscape:current-layer="g6" />
<g
id="g6">
<path
d="m 169.92806,224.8757 c 12.96191,0 174.83965,2.84395 174.83965,2.84395 1.031,45.06702 -0.18501,97.37311 -0.18501,144.3008 H 169.92691 c 8.5e-4,-48.64059 8.5e-4,-96.25484 8.5e-4,-147.14475 z m 443.64407,451.61505 c 0,0 -81.1844,-0.18967 -85.99494,-0.0279 -0.0349,0.0116 -0.0698,0.0302 -0.10705,0.0279 -0.19899,-0.0105 -0.14779,-0.021 0.10705,-0.0279 3.75627,-1.25326 -0.69004,-78.95949 -0.69004,-78.95949 -30.07804,0 -157.04976,0.33745 -181.70519,-0.35492 v 77.17678 c 0,0 -60.2026,0.13615 -86.31027,0.13615 V 450.98926 h 88.10464 V 377.78518 H 523.3194 v 69.88884 h 90.25273 z m 90.54596,-304.1119 H 527.47014 V 224.80121 h 176.64795 z"
id="path4"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:currentColor;fill-rule:evenodd;stroke-width:1.16365039"
sodipodi:nodetypes="ccccccccccccccccccccccccc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -66,14 +66,14 @@ function LanguageSelect() {
/* set with selected language */
const d = new Date();
d.setTime(d.getTime() + 24 * MONTH);
let { host } = window.location;
if (host.lastIndexOf('.') !== host.indexOf('.')) {
host = host.slice(host.indexOf('.'));
let { hostname } = window.location;
if (hostname.lastIndexOf('.') !== hostname.indexOf('.')) {
hostname = hostname.slice(hostname.indexOf('.'));
} else {
host = `.${host}`;
hostname = `.${hostname}`;
}
// eslint-disable-next-line max-len
document.cookie = `plang=${langSel};expires=${d.toUTCString()};path=/;domain=${host}`;
document.cookie = `plang=${langSel};expires=${d.toUTCString()};path=/;domain=${hostname}`;
window.location.reload();
}}
>

View File

@ -25,7 +25,7 @@ const MdLink = ({ href, title, refEmbed }) => {
const desc = getLinkDesc(href);
// treat pixelplanet links seperately
// treat pixelplanet links separately
if (desc === window.location.hostname && href.includes('/#')) {
const coords = href.substring(href.indexOf('/#') + 1);
if (isPopUp() && window.opener && !window.opener.closed) {

View File

@ -5,7 +5,7 @@
import React from 'react';
import { getRenderer } from '../ui/renderer';
import { getRenderer } from '../ui/rendererFactory';
const btnStyle = {
fontSize: 34,

View File

@ -96,7 +96,9 @@ function ModWatchtools() {
selectCanvas(canvasId);
}, [canvasId]);
const { columns, types, rows } = table;
const {
columns, types, rows, ts,
} = table;
const cidColumn = (types) ? (types.indexOf('cid')) : -1;
return (
@ -227,6 +229,7 @@ function ModWatchtools() {
columns: ret.columns,
types: ret.types,
rows: ret.rows,
ts: Date.now(),
});
}
},
@ -258,6 +261,7 @@ function ModWatchtools() {
columns: ret.columns,
types: ret.types,
rows: ret.rows,
ts: Date.now(),
});
}
},
@ -269,7 +273,7 @@ function ModWatchtools() {
</div>
<br />
{(rows && columns && types) && (
<React.Fragment key="pxltable">
<React.Fragment key={ts}>
<div className="modaldivider" />
<table style={{ fontSize: 11 }}>
<thead>
@ -301,17 +305,17 @@ function ModWatchtools() {
.map((row) => (
<tr key={row[0]}>
{row.slice(1).map((val, ind) => {
if (val === null) {
return (<td>N/A</td>);
}
const type = types[ind + 1];
if (val === null) {
return (<td key={type}>N/A</td>);
}
switch (type) {
case 'ts': {
const date = new Date(val);
let minutes = date.getMinutes();
if (minutes < 10) minutes = `0${minutes}`;
return (
<td title={date.toLocaleDateString()}>
<td key={type} title={date.toLocaleDateString()}>
{`${date.getHours()}:${minutes}`}
</td>
);
@ -323,11 +327,14 @@ function ModWatchtools() {
&& canvases[cid].colors
&& canvases[cid].colors[val];
if (!rgb) {
return (<td>{val}</td>);
return (<td key={type}>{val}</td>);
}
const color = `rgb(${rgb[0]},${rgb[1]},${rgb[2]})`;
return (
<td style={{ backgroundColor: color }}>{val}</td>
<td
key={type}
style={{ backgroundColor: color }}
>{val}</td>
);
}
case 'coord': {
@ -336,7 +343,7 @@ function ModWatchtools() {
const ident = canvases[cid] && canvases[cid].ident;
const coords = `./#${ident},${val},47`;
return (
<td>
<td key={type}>
<a href={coords}>{val}</a>
</td>
);
@ -344,7 +351,7 @@ function ModWatchtools() {
case 'flag': {
const flag = val.toLowerCase();
return (
<td title={val}><img
<td key={type} title={val}><img
style={{
height: '1em',
imageRendering: 'crisp-edges',
@ -355,12 +362,30 @@ function ModWatchtools() {
);
}
case 'cid': {
const ident = canvases[val] && canvases[val].ident;
return (<td>{ident}</td>);
const ident = canvases?.ident;
return (<td key={type}>{ident}</td>);
}
case 'cidr': {
return (
<td key={type}>
<span
role="button"
tabIndex={-1}
style={{
cursor: 'pointer',
whiteSpace: 'initial',
}}
title={t`Copy to Clipboard`}
onClick={() => copyTextToClipboard(
val.slice(0, val.indexOf('/')),
)}
>{val}</span>
</td>
);
}
case 'uuid': {
return (
<td>
<td key={type}>
<span
role="button"
tabIndex={-1}
@ -377,10 +402,10 @@ function ModWatchtools() {
case 'user': {
const seperator = val.lastIndexOf(',');
if (seperator === -1) {
return (<td><span>{val}</span></td>);
return (<td key={type}><span>{val}</span></td>);
}
return (
<td title={val.slice(seperator + 1)}>
<td key={type} title={val.slice(seperator + 1)}>
<span>
{val.slice(0, seperator)}
</span>
@ -388,7 +413,7 @@ function ModWatchtools() {
);
}
default: {
return (<td>{val}</td>);
return (<td key={type}>{val}</td>);
}
}
})}

View File

@ -40,7 +40,7 @@ function getStylesByWindowSize(
paletteCols = 5;
flexDirection = 'row';
} else {
// ordinary palette (one or two colums)
// ordinary palette (one or two columns)
spanSize = 24;
paletteCols = (windowHeight < 801) ? 2 : 1;
flexDirection = 'column';

View File

@ -6,9 +6,23 @@ import React from 'react';
import { useSelector } from 'react-redux';
function Style() {
const style = useSelector((state) => state.gui.style);
let style = useSelector((state) => state.gui.style);
if (!window.ssv.availableStyles) {
return null;
}
// style for special occasions
const curDate = new Date();
const month = curDate.getMonth() + 1;
const day = curDate.getDate();
if ((day === 31 && month === 10) || (day === 1 && month === 11)) {
// halloween
style = 'dark-spooky';
}
const cssUri = window.ssv.availableStyles[style];
return (style === 'default') ? null
return (style === 'default' || !cssUri) ? null
: (<link rel="stylesheet" type="text/css" href={cssUri} />);
}

View File

@ -5,7 +5,7 @@
import React, { useMemo } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { selectWindowType, selectWIndowArgs } from '../store/selectors/popup';
import { selectWindowType, selectWindowArgs } from '../store/selectors/popup';
import {
setWindowArgs,
setWindowTitle,
@ -16,7 +16,7 @@ import COMPONENTS from './windows';
const UIPopUp = () => {
const windowType = useSelector(selectWindowType);
const args = useSelector(selectWIndowArgs);
const args = useSelector(selectWindowArgs);
const [Content] = COMPONENTS[windowType];
@ -27,7 +27,7 @@ const UIPopUp = () => {
setArgs: (newArgs) => dispatch(setWindowArgs(newArgs)),
setTitle: (title) => dispatch(setWindowTitle(title)),
// eslint-disable-next-line max-len
changeType: (newType, newTitel, newArgs) => dispatch(changeWindowType(newType, newTitel, newArgs)),
changeType: (newType, newTitle, newArgs) => dispatch(changeWindowType(newType, newTitle, newArgs)),
}), [args]);
return (

View File

@ -59,7 +59,7 @@ const UserAreaContent = () => {
<div className="content">
<UserMessages />
<Stat
text={t`Todays Placed Pixels`}
text={t`Today Placed Pixels`}
value={stats.dailyTotalPixels}
/>
<Stat

View File

@ -40,10 +40,10 @@ const Window = ({ id }) => {
const resizeRef = useRef();
const selectWindowById = useMemo(() => makeSelectWindowById(id), []);
const selectWIndowPosById = useMemo(() => makeSelectWindowPosById(id), []);
const selectWindowPosById = useMemo(() => makeSelectWindowPosById(id), []);
const selectWindowArgs = useMemo(() => makeSelectWindowArgs(id), []);
const win = useSelector(selectWindowById);
const position = useSelector(selectWIndowPosById);
const position = useSelector(selectWindowPosById);
const showWindows = useSelector(selectShowWindows);
const args = useSelector(selectWindowArgs);
@ -54,7 +54,7 @@ const Window = ({ id }) => {
setArgs: (newArgs) => dispatch(setWindowArgs(id, newArgs)),
setTitle: (title) => dispatch(setWindowTitle(id, title)),
// eslint-disable-next-line max-len
changeType: (newType, newTitel, newArgs) => dispatch(changeWindowType(id, newType, newTitel, newArgs)),
changeType: (newType, newTitle, newArgs) => dispatch(changeWindowType(id, newType, newTitle, newArgs)),
}), [id, args]);
const {

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