Compare commits
216 Commits
Author | SHA1 | Date | |
---|---|---|---|
46a953a9d8 | |||
46ef86e478 | |||
fa1a85f682 | |||
e477de6dd0 | |||
d5f92eed8c | |||
7cdb790f4e | |||
20bb851c4e | |||
728dd446b3 | |||
f8abc8193b | |||
e7d1b6ec00 | |||
83c819a130 | |||
d29459fa37 | |||
100557e975 | |||
102aaeb390 | |||
67b3461c24 | |||
5e4a0fd4ec | |||
f840d491e5 | |||
8f175186bc | |||
ddb413ca52 | |||
5415b67baa | |||
19f6af475a | |||
65a3bac543 | |||
f91a53d893 | |||
f848e3f226 | |||
bc94878225 | |||
bcf52bb2c3 | |||
2c25188f70 | |||
567aeacff5 | |||
4b9168e596 | |||
8b79b28916 | |||
45706cc0ef | |||
c1e3f4e68e | |||
6cbbc97893 | |||
fa09523821 | |||
7cb527d9ba | |||
5320f29fb0 | |||
7527af4656 | |||
6adb92b074 | |||
6dc3844682 | |||
bfb16c27ee | |||
ed1cc0b81c | |||
c66c1c9d2a | |||
1748fcf909 | |||
bdac8d58ae | |||
4e21801163 | |||
4929687956 | |||
4ba7ad8a4b | |||
800fdaeaef | |||
08a89a924d | |||
5b057d2275 | |||
bdc9bd1345 | |||
d8dc677906 | |||
9c312b0e26 | |||
8d28f68e0b | |||
317c9308cc | |||
01cd3de5b3 | |||
bc2774093a | |||
afb999187f | |||
54d0598d92 | |||
163e60e32e | |||
ccbcc2a738 | |||
07e1882401 | |||
e56589d19e | |||
bfb5367d27 | |||
712c0ef27d | |||
94b2ddef45 | |||
b84a83adf4 | |||
c8514f58c6 | |||
841ddb036b | |||
982a37a413 | |||
741af7cce5 | |||
9954080672 | |||
f47f4b4a5c | |||
1a3fab9cd9 | |||
b683bf6f18 | |||
976ae1bf44 | |||
ffc63383dc | |||
c6ea6de5c2 | |||
fe812530d8 | |||
75d07175ae | |||
544580bd8b | |||
d30d307f80 | |||
5ccdfe258c | |||
8f8b550608 | |||
7836d0b059 | |||
4b9cbe9ca7 | |||
034b223f8f | |||
f87326620b | |||
b4a526ed18 | |||
410cc171c6 | |||
558b897700 | |||
e804757d83 | |||
bd434ed02d | |||
df89f5c8b8 | |||
3aebd8311f | |||
f025296331 | |||
1a58a962bb | |||
079d6b0de8 | |||
321841101b | |||
8071ca0d66 | |||
c1141c5267 | |||
f1fdd4524d | |||
02dd2c7f1a | |||
fc3a323a21 | |||
d92f501b50 | |||
be408ba6ea | |||
c81a204e0c | |||
fce1d619e8 | |||
3e146d5f94 | |||
cb5c0ac2f5 | |||
4798657b70 | |||
f565e60bcf | |||
89461c598f | |||
b320d08a5e | |||
a930d4fc7b | |||
d42197fc2e | |||
2d3138af76 | |||
4ee4b6f332 | |||
fc6c048fad | |||
dae9c4288d | |||
9f37149369 | |||
e476647ab8 | |||
eb23be979c | |||
6d9d6a6779 | |||
1c0cb1ae71 | |||
0ba5dc3900 | |||
872717feeb | |||
85b51f06a4 | |||
94df60d054 | |||
7395284480 | |||
b537fa5467 | |||
dca58c20d2 | |||
0a3030f7d0 | |||
81cc6f3104 | |||
cc0b9c6933 | |||
5671f1c6a4 | |||
89dee86f39 | |||
b414068ada | |||
3be7952e9f | |||
137b5da4aa | |||
2ee1639acb | |||
a05b184595 | |||
f3bacae1dc | |||
af5fb99fe6 | |||
0ebe4ad7a3 | |||
0cf99037c8 | |||
b913debc57 | |||
abe3f1f5e9 | |||
d30b88364c | |||
4840b7acf7 | |||
f5bac11fae | |||
68a70a94fc | |||
bf7436ddf8 | |||
b99155a084 | |||
027e62a6ea | |||
c6b6c8afbd | |||
1236a09247 | |||
6a4d38045e | |||
281aed2797 | |||
3e47f9943a | |||
f6d27dd17d | |||
073704c7af | |||
809db02ca2 | |||
2e45ff6a32 | |||
02d6974be9 | |||
e530afb2fe | |||
dba15f0e8b | |||
8f771c60c5 | |||
d9b1ca8c48 | |||
9e247c119a | |||
08b5e21e96 | |||
2101d3aa5b | |||
aa80fb5d4a | |||
63727f6514 | |||
ade35cbb2d | |||
6ec9059ccc | |||
c93d1711cf | |||
e734ad0413 | |||
047dee3a70 | |||
8c76089caf | |||
ab6cf2dba3 | |||
65a309e605 | |||
f37e713640 | |||
bc1e9245bd | |||
2fa82bde16 | |||
140249172c | |||
9677d1288a | |||
133ae7d171 | |||
5b92a43361 | |||
b839bf6918 | |||
7ea4ba1d5a | |||
f000dbd657 | |||
36e4a24527 | |||
861cc83014 | |||
d2b273dc3b | |||
e49ad120f3 | |||
6f441f35ec | |||
14a5c429bb | |||
100125ad5a | |||
f8c414aafc | |||
14aedb07aa | |||
40b01e0ad3 | |||
f9f6718174 | |||
c41723b09f | |||
1b6effd369 | |||
1bbf7a45a8 | |||
0a5e021128 | |||
52ebde60fc | |||
c77cf79f5d | |||
1233abe5b0 | |||
f2f2b09ff1 | |||
5bf87b7efe | |||
526321adb6 | |||
f816daa59e | |||
5d6f75ec05 | |||
28994d001c |
@ -22,6 +22,7 @@
|
|||||||
"globals": {
|
"globals": {
|
||||||
"ENV": true,
|
"ENV": true,
|
||||||
"VERSION": true,
|
"VERSION": true,
|
||||||
"API": true
|
"API": true,
|
||||||
|
"LANGS": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
.gitignore
vendored
@ -5,6 +5,7 @@
|
|||||||
/build
|
/build
|
||||||
/built
|
/built
|
||||||
/data
|
/data
|
||||||
|
/.cache-loader
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
*.pem
|
*.pem
|
||||||
run.bat
|
run.bat
|
||||||
|
@ -4,6 +4,10 @@
|
|||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
|
||||||
|
branches:
|
||||||
|
except:
|
||||||
|
- l10n_master
|
||||||
|
|
||||||
language: node_js
|
language: node_js
|
||||||
|
|
||||||
node_js:
|
node_js:
|
||||||
|
@ -25,7 +25,7 @@ ultimately sophisticated new type of mini-blog based SNS.
|
|||||||
* Real time contents
|
* Real time contents
|
||||||
* ActivityPub compatible
|
* ActivityPub compatible
|
||||||
|
|
||||||
and more! You can touch with your own eyes at [misskey.xyz](https://misskey.xyz).
|
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz).
|
||||||
|
|
||||||
:package: Create your instance
|
:package: Create your instance
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
Before Width: | Height: | Size: 352 KiB After Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 2.3 KiB |
@ -1,161 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<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"
|
|
||||||
width="896"
|
|
||||||
height="896"
|
|
||||||
viewBox="0 0 237.06667 237.06667"
|
|
||||||
version="1.1"
|
|
||||||
id="svg8"
|
|
||||||
inkscape:version="0.92.1 r15371"
|
|
||||||
sodipodi:docname="128.svg"
|
|
||||||
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\128.png"
|
|
||||||
inkscape:export-xdpi="13.714286"
|
|
||||||
inkscape:export-ydpi="13.714286">
|
|
||||||
<defs
|
|
||||||
id="defs2">
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5115"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5111"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5104"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="0.7071068"
|
|
||||||
inkscape:cx="908.16505"
|
|
||||||
inkscape:cy="468.2779"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="g4502"
|
|
||||||
showgrid="true"
|
|
||||||
units="px"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
inkscape:bbox-nodes="true"
|
|
||||||
inkscape:snap-bbox-edge-midpoints="true"
|
|
||||||
inkscape:snap-smooth-nodes="true"
|
|
||||||
inkscape:snap-center="true"
|
|
||||||
inkscape:snap-page="true"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1017"
|
|
||||||
inkscape:window-x="-8"
|
|
||||||
inkscape:window-y="1072"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:snap-object-midpoints="true"
|
|
||||||
inkscape:snap-midpoints="true"
|
|
||||||
inkscape:object-paths="true"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
objecttolerance="1"
|
|
||||||
guidetolerance="1"
|
|
||||||
inkscape:snap-nodes="true"
|
|
||||||
inkscape:snap-others="false"
|
|
||||||
inkscape:bbox-paths="true"
|
|
||||||
inkscape:snap-bbox-midpoints="true">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid4504"
|
|
||||||
spacingx="4.2333334"
|
|
||||||
spacingy="4.2333334"
|
|
||||||
empcolor="#ff3fff"
|
|
||||||
empopacity="0.25098039"
|
|
||||||
empspacing="4" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata5">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="レイヤー 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-30.809093,-10.18601)">
|
|
||||||
<g
|
|
||||||
id="g4502"
|
|
||||||
transform="matrix(1.096096,0,0,1.096096,47.839369,-94.823577)"
|
|
||||||
inkscape:export-xdpi="6"
|
|
||||||
inkscape:export-ydpi="6">
|
|
||||||
<rect
|
|
||||||
style="opacity:1;fill:#2fa1bb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.96554804;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
|
|
||||||
id="rect4506"
|
|
||||||
width="216.28276"
|
|
||||||
height="216.28278"
|
|
||||||
x="-15.537212"
|
|
||||||
y="95.803268" />
|
|
||||||
<g
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
transform="translate(-1.3333333e-6,-1.3439941e-6)"
|
|
||||||
id="g5125">
|
|
||||||
<g
|
|
||||||
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)"
|
|
||||||
id="text4489"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
aria-label="Mi">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5210"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#ffffff;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5212"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#ffffff;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 518 B |
Before Width: | Height: | Size: 4.7 KiB |
@ -1,161 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<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"
|
|
||||||
width="896"
|
|
||||||
height="896"
|
|
||||||
viewBox="0 0 237.06667 237.06667"
|
|
||||||
version="1.1"
|
|
||||||
id="svg8"
|
|
||||||
inkscape:version="0.92.1 r15371"
|
|
||||||
sodipodi:docname="256.svg"
|
|
||||||
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\256.png"
|
|
||||||
inkscape:export-xdpi="27.428572"
|
|
||||||
inkscape:export-ydpi="27.428572">
|
|
||||||
<defs
|
|
||||||
id="defs2">
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5115"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5111"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5104"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="0.7071068"
|
|
||||||
inkscape:cx="908.16505"
|
|
||||||
inkscape:cy="468.2779"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="g4502"
|
|
||||||
showgrid="true"
|
|
||||||
units="px"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
inkscape:bbox-nodes="true"
|
|
||||||
inkscape:snap-bbox-edge-midpoints="true"
|
|
||||||
inkscape:snap-smooth-nodes="true"
|
|
||||||
inkscape:snap-center="true"
|
|
||||||
inkscape:snap-page="true"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1017"
|
|
||||||
inkscape:window-x="-8"
|
|
||||||
inkscape:window-y="1072"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:snap-object-midpoints="true"
|
|
||||||
inkscape:snap-midpoints="true"
|
|
||||||
inkscape:object-paths="true"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
objecttolerance="1"
|
|
||||||
guidetolerance="1"
|
|
||||||
inkscape:snap-nodes="true"
|
|
||||||
inkscape:snap-others="false"
|
|
||||||
inkscape:bbox-paths="true"
|
|
||||||
inkscape:snap-bbox-midpoints="true">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid4504"
|
|
||||||
spacingx="4.2333334"
|
|
||||||
spacingy="4.2333334"
|
|
||||||
empcolor="#ff3fff"
|
|
||||||
empopacity="0.25098039"
|
|
||||||
empspacing="4" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata5">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="レイヤー 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-30.809093,-10.18601)">
|
|
||||||
<g
|
|
||||||
id="g4502"
|
|
||||||
transform="matrix(1.096096,0,0,1.096096,47.839369,-94.823577)"
|
|
||||||
inkscape:export-xdpi="6"
|
|
||||||
inkscape:export-ydpi="6">
|
|
||||||
<rect
|
|
||||||
style="opacity:1;fill:#2fa1bb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.96554804;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
|
|
||||||
id="rect4506"
|
|
||||||
width="216.28276"
|
|
||||||
height="216.28278"
|
|
||||||
x="-15.537212"
|
|
||||||
y="95.803268" />
|
|
||||||
<g
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
transform="translate(-1.3333333e-6,-1.3439941e-6)"
|
|
||||||
id="g5125">
|
|
||||||
<g
|
|
||||||
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)"
|
|
||||||
id="text4489"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
aria-label="Mi">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5210"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#ffffff;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5212"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#ffffff;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 761 B |
@ -1,152 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<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"
|
|
||||||
width="640"
|
|
||||||
height="640"
|
|
||||||
viewBox="0 0 169.33333 169.33333"
|
|
||||||
version="1.1"
|
|
||||||
id="svg8"
|
|
||||||
inkscape:version="0.92.1 r15371"
|
|
||||||
sodipodi:docname="32.svg"
|
|
||||||
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\32.png"
|
|
||||||
inkscape:export-xdpi="4.8000002"
|
|
||||||
inkscape:export-ydpi="4.8000002">
|
|
||||||
<defs
|
|
||||||
id="defs2">
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5115"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5111"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5104"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="0.7071068"
|
|
||||||
inkscape:cx="16.781901"
|
|
||||||
inkscape:cy="343.6089"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="g4502"
|
|
||||||
showgrid="true"
|
|
||||||
units="px"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
inkscape:bbox-nodes="true"
|
|
||||||
inkscape:snap-bbox-edge-midpoints="false"
|
|
||||||
inkscape:snap-smooth-nodes="true"
|
|
||||||
inkscape:snap-center="true"
|
|
||||||
inkscape:snap-page="true"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1017"
|
|
||||||
inkscape:window-x="-8"
|
|
||||||
inkscape:window-y="1072"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:snap-object-midpoints="true"
|
|
||||||
inkscape:snap-midpoints="true"
|
|
||||||
inkscape:object-paths="true"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
objecttolerance="1"
|
|
||||||
guidetolerance="1"
|
|
||||||
inkscape:snap-nodes="false"
|
|
||||||
inkscape:snap-others="false">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid4504"
|
|
||||||
spacingx="4.2333334"
|
|
||||||
spacingy="4.2333334"
|
|
||||||
empcolor="#ff3fff"
|
|
||||||
empopacity="0.25098039"
|
|
||||||
empspacing="4" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata5">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="レイヤー 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-30.809093,-77.919343)">
|
|
||||||
<g
|
|
||||||
id="g4502"
|
|
||||||
transform="matrix(1.096096,0,0,1.096096,13.972699,-60.956914)"
|
|
||||||
inkscape:export-xdpi="6"
|
|
||||||
inkscape:export-ydpi="6">
|
|
||||||
<g
|
|
||||||
style="fill:#2fa1bb;fill-opacity:1"
|
|
||||||
transform="translate(-1.7127735e-6,-1.5982974e-6)"
|
|
||||||
id="g5125">
|
|
||||||
<g
|
|
||||||
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)"
|
|
||||||
id="text4489"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#2fa1bb;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
aria-label="Mi">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5210"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5212"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
@ -1,152 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<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"
|
|
||||||
width="768"
|
|
||||||
height="768"
|
|
||||||
viewBox="0 0 203.2 203.2"
|
|
||||||
version="1.1"
|
|
||||||
id="svg8"
|
|
||||||
inkscape:version="0.92.1 r15371"
|
|
||||||
sodipodi:docname="64.svg"
|
|
||||||
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\64.png"
|
|
||||||
inkscape:export-xdpi="8"
|
|
||||||
inkscape:export-ydpi="8">
|
|
||||||
<defs
|
|
||||||
id="defs2">
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5115"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5111"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="simplify"
|
|
||||||
id="path-effect5104"
|
|
||||||
is_visible="true"
|
|
||||||
steps="1"
|
|
||||||
threshold="0.000408163"
|
|
||||||
smooth_angles="360"
|
|
||||||
helper_size="0"
|
|
||||||
simplify_individual_paths="false"
|
|
||||||
simplify_just_coalesce="false"
|
|
||||||
simplifyindividualpaths="false"
|
|
||||||
simplifyJustCoalesce="false" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="0.7071068"
|
|
||||||
inkscape:cx="16.781901"
|
|
||||||
inkscape:cy="343.6089"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="g5125"
|
|
||||||
showgrid="true"
|
|
||||||
units="px"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
inkscape:bbox-nodes="true"
|
|
||||||
inkscape:snap-bbox-edge-midpoints="false"
|
|
||||||
inkscape:snap-smooth-nodes="true"
|
|
||||||
inkscape:snap-center="true"
|
|
||||||
inkscape:snap-page="true"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1017"
|
|
||||||
inkscape:window-x="-8"
|
|
||||||
inkscape:window-y="1072"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:snap-object-midpoints="true"
|
|
||||||
inkscape:snap-midpoints="true"
|
|
||||||
inkscape:object-paths="true"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
objecttolerance="1"
|
|
||||||
guidetolerance="1"
|
|
||||||
inkscape:snap-nodes="false"
|
|
||||||
inkscape:snap-others="false">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid4504"
|
|
||||||
spacingx="4.2333334"
|
|
||||||
spacingy="4.2333334"
|
|
||||||
empcolor="#ff3fff"
|
|
||||||
empopacity="0.25098039"
|
|
||||||
empspacing="4" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata5">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="レイヤー 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-30.809093,-44.052677)">
|
|
||||||
<g
|
|
||||||
id="g4502"
|
|
||||||
transform="matrix(1.096096,0,0,1.096096,30.906034,-77.890245)"
|
|
||||||
inkscape:export-xdpi="6"
|
|
||||||
inkscape:export-ydpi="6">
|
|
||||||
<g
|
|
||||||
style="fill:#2fa1bb;fill-opacity:0.94117647"
|
|
||||||
transform="translate(-1.3333333e-6,-1.3439941e-6)"
|
|
||||||
id="g5125">
|
|
||||||
<g
|
|
||||||
transform="matrix(0.91391326,0,0,0.91391326,7.9719903,17.595761)"
|
|
||||||
id="text4489"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#2fa1bb;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
aria-label="Mi">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5210"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5212"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px"
|
|
||||||
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.0 KiB |
BIN
assets/favicon/favicon.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
@ -15,7 +15,7 @@
|
|||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg8"
|
id="svg8"
|
||||||
inkscape:version="0.92.1 r15371"
|
inkscape:version="0.92.1 r15371"
|
||||||
sodipodi:docname="16.svg"
|
sodipodi:docname="favicon.svg"
|
||||||
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\16.png"
|
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\16.png"
|
||||||
inkscape:export-xdpi="3"
|
inkscape:export-xdpi="3"
|
||||||
inkscape:export-ydpi="3">
|
inkscape:export-ydpi="3">
|
||||||
@ -66,7 +66,7 @@
|
|||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="1.4142136"
|
inkscape:zoom="1.4142136"
|
||||||
inkscape:cx="110.21885"
|
inkscape:cx="15.466544"
|
||||||
inkscape:cy="235.92965"
|
inkscape:cy="235.92965"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="g4502"
|
inkscape:current-layer="g4502"
|
||||||
@ -79,7 +79,7 @@
|
|||||||
inkscape:snap-center="true"
|
inkscape:snap-center="true"
|
||||||
inkscape:snap-page="true"
|
inkscape:snap-page="true"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="1017"
|
inkscape:window-height="1027"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="-8"
|
||||||
inkscape:window-y="1072"
|
inkscape:window-y="1072"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
@ -111,7 +111,7 @@
|
|||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title />
|
<dc:title></dc:title>
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
140
assets/title-dark.svg
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<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"
|
||||||
|
width="614.71039"
|
||||||
|
height="205.08009"
|
||||||
|
viewBox="0 0 162.64213 54.260776"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.1 r15371"
|
||||||
|
sodipodi:docname="misskey.svg"
|
||||||
|
inkscape:export-filename="C:\Users\Takumiya_Cho\Desktop\misskey.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="simplify"
|
||||||
|
id="path-effect5115"
|
||||||
|
is_visible="true"
|
||||||
|
steps="1"
|
||||||
|
threshold="0.000408163"
|
||||||
|
smooth_angles="360"
|
||||||
|
helper_size="0"
|
||||||
|
simplify_individual_paths="false"
|
||||||
|
simplify_just_coalesce="false"
|
||||||
|
simplifyindividualpaths="false"
|
||||||
|
simplifyJustCoalesce="false" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="simplify"
|
||||||
|
id="path-effect5104"
|
||||||
|
is_visible="true"
|
||||||
|
steps="1"
|
||||||
|
threshold="0.000408163"
|
||||||
|
smooth_angles="360"
|
||||||
|
helper_size="0"
|
||||||
|
simplify_individual_paths="false"
|
||||||
|
simplify_just_coalesce="false"
|
||||||
|
simplifyindividualpaths="false"
|
||||||
|
simplifyJustCoalesce="false" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.9899495"
|
||||||
|
inkscape:cx="370.82839"
|
||||||
|
inkscape:cy="79.043895"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
units="px"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="false"
|
||||||
|
inkscape:snap-smooth-nodes="true"
|
||||||
|
inkscape:snap-center="true"
|
||||||
|
inkscape:snap-page="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="1072"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
fit-margin-top="50"
|
||||||
|
fit-margin-left="50"
|
||||||
|
fit-margin-bottom="20"
|
||||||
|
fit-margin-right="50" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="レイヤー 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-11.097531,-173.29664)">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.28612302,0,0,0.28612302,17.176981,141.74334)"
|
||||||
|
id="text4489-6"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.92471898px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
aria-label="Mi">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5210"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#fff;fill-opacity:1;stroke-width:0.92471898px"
|
||||||
|
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5212"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#fff;fill-opacity:1;stroke-width:0.92471898px"
|
||||||
|
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5199"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 72.022691,200.53715 q 0.968125,0.24203 2.420312,0.5244 2.420313,0.40339 3.791824,1.29083 2.581666,1.69422 2.581666,5.08266 0,2.74302 -1.815234,4.47758 -2.097604,2.01693 -5.849089,2.01693 -2.743021,0 -6.131458,-0.76644 -1.089141,-0.24203 -1.774896,-1.08914 -0.645417,-0.84711 -0.645417,-1.89591 0,-1.29083 0.887448,-2.17828 0.927786,-0.92779 2.178281,-0.92779 0.363047,0 0.685756,0.0807 1.169817,0.24203 4.477578,0.60508 0.443724,0 0.968125,-0.0403 0.201693,0 0.201693,-0.24203 0.04034,-0.20169 -0.242032,-0.28237 -1.37151,-0.24203 -2.541328,-0.5244 -1.331172,-0.28237 -1.895911,-0.48406 -1.12948,-0.32271 -1.895912,-0.84711 -2.581667,-1.69422 -2.622005,-5.08266 0,-2.70268 1.855573,-4.47758 2.258958,-2.17828 6.413828,-1.97659 2.783359,0.12102 5.566719,0.7261 1.048802,0.24203 1.734557,1.08914 0.685756,0.84711 0.685756,1.93625 0,1.25049 -0.927787,2.17828 -0.887448,0.88745 -2.178281,0.88745 -0.322709,0 -0.645417,-0.0807 -1.169818,-0.24203 -4.517917,-0.56474 -0.403385,-0.0403 -0.766432,0 -0.322708,0.0403 -0.322708,0.24203 0.04034,0.24203 0.322708,0.32271 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5201"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 89.577027,200.53715 q 0.968125,0.24203 2.420312,0.5244 2.420313,0.40339 3.791823,1.29083 2.581667,1.69422 2.581667,5.08266 0,2.74302 -1.815234,4.47758 -2.097604,2.01693 -5.849089,2.01693 -2.743021,0 -6.131458,-0.76644 -1.089141,-0.24203 -1.774896,-1.08914 -0.645417,-0.84711 -0.645417,-1.89591 0,-1.29083 0.887448,-2.17828 0.927786,-0.92779 2.178281,-0.92779 0.363047,0 0.685755,0.0807 1.169818,0.24203 4.477579,0.60508 0.443724,0 0.968125,-0.0403 0.201692,0 0.201692,-0.24203 0.04034,-0.20169 -0.242031,-0.28237 -1.37151,-0.24203 -2.541328,-0.5244 -1.331172,-0.28237 -1.895912,-0.48406 -1.129479,-0.32271 -1.895911,-0.84711 -2.581667,-1.69422 -2.622005,-5.08266 0,-2.70268 1.855573,-4.47758 2.258958,-2.17828 6.413828,-1.97659 2.783359,0.12102 5.566719,0.7261 1.048802,0.24203 1.734557,1.08914 0.685755,0.84711 0.685755,1.93625 0,1.25049 -0.927786,2.17828 -0.887448,0.88745 -2.178281,0.88745 -0.322709,0 -0.645417,-0.0807 -1.169818,-0.24203 -4.517917,-0.56474 -0.403385,-0.0403 -0.766432,0 -0.322708,0.0403 -0.322708,0.24203 0.04034,0.24203 0.322708,0.32271 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5203"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 115.65209,203.87137 q 0.12101,0.0807 2.86404,2.78336 1.25049,1.21016 1.25049,2.94471 0,1.61354 -1.16982,2.86404 -1.16982,1.21016 -2.90437,1.21016 -1.65388,0 -2.86404,-1.16982 l -4.03385,-3.91284 q -0.16136,-0.12102 -0.32271,-0.12102 -0.32271,0 -0.32271,1.21016 0,1.69422 -1.21016,2.90438 -1.21015,1.16981 -2.90437,1.16981 -1.69422,0 -2.90438,-1.16981 -1.169807,-1.21016 -1.169807,-2.90438 v -18.79776 q 0,-1.69422 1.169807,-2.86404 1.21016,-1.21015 2.90438,-1.21015 1.69422,0 2.90437,1.21015 1.21016,1.16982 1.21016,2.86404 v 6.29281 q 0,0.40339 0.28237,0.5244 0.24203,0.12102 0.5244,-0.0807 0.16135,-0.0807 4.84063,-3.18675 1.0488,-0.64542 2.25895,-0.64542 2.21862,0 3.42878,1.81524 0.64542,1.0488 0.64542,2.25896 0,2.21862 -1.81524,3.42877 l -2.54133,1.61354 v 0.0403 l -0.0807,0.0403 q -0.56474,0.36305 -0.0403,0.88745 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5205"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 131.25181,213.92955 q -4.19521,0 -7.18026,-2.94472 -2.94472,-2.98505 -2.94472,-7.18026 0,-4.15487 2.94472,-7.09958 2.98505,-2.98505 7.18026,-2.98505 4.15487,0 6.97857,2.78335 0.92778,0.92779 0.92778,2.25896 0,1.33118 -0.92778,2.25896 l -4.67928,4.63893 q -1.00846,1.00847 -2.01692,1.00847 -1.45219,0 -2.25896,-0.80677 -0.80677,-0.80677 -0.80677,-2.13795 0,-1.29083 0.92778,-2.21862 l 0.80678,-0.84711 q 0.16135,-0.12101 0.0807,-0.24203 -0.12101,-0.0807 -0.32271,-0.0403 -0.80677,0.20169 -1.37151,0.80677 -1.12948,1.08914 -1.12948,2.622 0,1.5732 1.08915,2.70268 1.12947,1.08914 2.70268,1.08914 1.53286,0 2.622,-1.12947 0.92779,-0.92779 2.25896,-0.92779 1.33117,0 2.25896,0.92779 0.92779,0.92778 0.92779,2.25895 0,1.33118 -0.92779,2.25896 -2.98505,2.94472 -7.13992,2.94472 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5207"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 160.51049,198.1433 v 5.60705 q 0,0.56474 -0.0807,1.21016 v 7.38195 q 0,4.51792 -2.74302,7.2206 -2.70268,2.70269 -7.30128,2.70269 -2.66234,0 -4.80028,-1.00847 -2.13795,-0.96812 -2.13795,-3.3481 0,-0.80677 0.36305,-1.53286 0.96812,-2.17828 3.3481,-2.17828 0.56474,0 1.5732,0.32271 1.00847,0.3227 1.65388,0.3227 1.69422,0 2.21862,-0.72609 0.20169,-0.28237 0.0807,-0.44372 -0.16136,-0.24204 -0.56474,-0.16136 -0.68576,0.12102 -1.49253,0.12102 -4.07419,0 -6.97856,-2.90438 -2.90438,-2.90437 -2.90438,-6.97857 v -5.60705 q 0,-1.69422 1.16982,-2.86404 1.21015,-1.21016 2.90437,-1.21016 1.69422,0 2.90438,1.21016 1.21015,1.16982 1.21015,2.86404 v 5.60705 q 0,0.68576 0.48407,1.21016 0.5244,0.48406 1.21015,0.48406 0.7261,0 1.21016,-0.48406 0.48406,-0.5244 0.48406,-1.21016 v -5.60705 q 0,-1.69422 1.21016,-2.86404 1.21015,-1.21016 2.90437,-1.21016 1.69422,0 2.86404,1.21016 1.21016,1.16982 1.21016,2.86404 z" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 13 KiB |
@ -8,7 +8,8 @@ const { default: User } = require('../built/models/user');
|
|||||||
const q = {
|
const q = {
|
||||||
'metadata._user.host': {
|
'metadata._user.host': {
|
||||||
$ne: null
|
$ne: null
|
||||||
}
|
},
|
||||||
|
'metadata.isMetaOnly': false
|
||||||
};
|
};
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
@ -56,8 +57,7 @@ async function main() {
|
|||||||
|
|
||||||
DriveFile.update({ _id: file._id }, {
|
DriveFile.update({ _id: file._id }, {
|
||||||
$set: {
|
$set: {
|
||||||
'metadata.deletedAt': new Date(),
|
'metadata.isMetaOnly': true
|
||||||
'metadata.isExpired': true
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
]).then(async () => {
|
]).then(async () => {
|
||||||
|
@ -43,13 +43,7 @@ Please install and setup these softwares:
|
|||||||
|
|
||||||
*4.* Prepare configuration
|
*4.* Prepare configuration
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. Copy `example.yml` of `.config` directory
|
You need to generate config file via `npm run config` command.
|
||||||
2. Rename it to `default.yml`
|
|
||||||
3. Edit it
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Or you can generate config file via `npm run config` command.
|
|
||||||
|
|
||||||
*5.* Build Misskey
|
*5.* Build Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
@ -43,18 +43,14 @@ web-push generate-vapid-keys
|
|||||||
|
|
||||||
*4.* 設定ファイルを用意する
|
*4.* 設定ファイルを用意する
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `.config`ディレクトリ内の`example.yml`をコピー
|
`npm run config`コマンドを利用して、ガイドに従って情報を入力してください。
|
||||||
2. `default.yml`にリネーム
|
|
||||||
3. 編集する
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
または、`npm run config`コマンドを利用して、ガイドに従って情報を
|
|
||||||
入力して設定ファイルを生成することもできます。
|
|
||||||
|
|
||||||
*5.* Misskeyのビルド
|
*5.* Misskeyのビルド
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `npm run build`
|
1. `npm install -g node-gyp`
|
||||||
|
2. `node-gyp configure`
|
||||||
|
3. `node-gyp build`
|
||||||
|
4. `npm run build`
|
||||||
|
|
||||||
*6.* 以上です!
|
*6.* 以上です!
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
@ -78,4 +74,4 @@ VPSなどでビルドする時は、もしかしたらメモリが足りなく
|
|||||||
3. npm run webpack
|
3. npm run webpack
|
||||||
4. built/client をサーバーにアップロードする
|
4. built/client をサーバーにアップロードする
|
||||||
5. サーバー上で、npm run gulp
|
5. サーバー上で、npm run gulp
|
||||||
6. 完了
|
6. 完了
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "Deutsch"
|
lang: "Deutsch"
|
||||||
divider: ""
|
divider: " "
|
||||||
common:
|
common:
|
||||||
misskey: "Teile alles mit anderen mithilfe von Misskey"
|
misskey: "Teile alles mit anderen mithilfe von Misskey"
|
||||||
time:
|
time:
|
||||||
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "Trennen"
|
disconnect: "Trennen"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Warten"
|
waiting: "Warten"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Laden"
|
fetching: "Laden"
|
||||||
no-broadcasts: "Keine Broadcasts"
|
no-broadcasts: "Keine Broadcasts"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Serverinformationen"
|
title: "Serverinformationen"
|
||||||
toggle: "Sicht umschalten"
|
toggle: "Sicht umschalten"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "Öffentlich"
|
|
||||||
home: "Home"
|
|
||||||
home-desc: "Nur an dieser Stelle sichtbar"
|
|
||||||
followers: "Follower"
|
|
||||||
followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
|
|
||||||
specified: "Direkt"
|
|
||||||
specified-desc: "Nur für bestimmte Benutzer"
|
|
||||||
private: "Privat"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Schwarz ... komplett"
|
total: "Schwarz ... komplett"
|
||||||
notes: "Blau ... Hinweise"
|
notes: "Blau ... Hinweise"
|
||||||
@ -304,7 +304,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Lade weitere Konversationen"
|
more: "Lade weitere Konversationen"
|
||||||
private: "(Dieser Post ist privat)"
|
private: "(Dieser Post ist privat)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "Ort"
|
location: "Ort"
|
||||||
renote: "Anmerkung"
|
renote: "Anmerkung"
|
||||||
add-reaction: "Reaktion hinzufügen"
|
add-reaction: "Reaktion hinzufügen"
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Weitersagen fehlgeschlagen"
|
failure: "Weitersagen fehlgeschlagen"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "Profil aktualisieren"
|
save: "Profil aktualisieren"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "タイムライン"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
@ -56,9 +56,9 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
no-network-desc: "Please make sure you are connected to the Network."
|
no-network-desc: "Please make sure you are connected to the Network."
|
||||||
no-internet: "There is no Internet connection"
|
no-internet: "There is no Internet connection"
|
||||||
no-internet-desc: "Please make sure you are connected to the Internet."
|
no-internet-desc: "Please make sure you are connected to the Internet."
|
||||||
no-server: "Unable to connect to the server"
|
no-server: "Unable to connect to the Misskey server"
|
||||||
no-server-desc: "The network connection of your PC is normal, but you could not connect to Misskey's server. There is a possibility that the server is either down or under maintenance, please try again later."
|
no-server-desc: "The network connection of your PC is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down or under maintenance, please try again later."
|
||||||
success: "Successfully connected to Misskey's server"
|
success: "Successfully connected to the Misskey server"
|
||||||
success-desc: "It seems to be able to connect. Please reload the page."
|
success-desc: "It seems to be able to connect. Please reload the page."
|
||||||
flush: "Clean cache"
|
flush: "Clean cache"
|
||||||
set-version: "Specify version"
|
set-version: "Specify version"
|
||||||
@ -121,7 +121,7 @@ common/views/components/signup.vue:
|
|||||||
unavailable: "Unavailable"
|
unavailable: "Unavailable"
|
||||||
error: "Network error"
|
error: "Network error"
|
||||||
invalid-format: "Only use letters, numbers and -."
|
invalid-format: "Only use letters, numbers and -."
|
||||||
too-short: "Please enter at least 1 character!"
|
too-short: "Please enter at least 1 character!"
|
||||||
too-long: "Please enter up to 20 characters."
|
too-long: "Please enter up to 20 characters."
|
||||||
password: "Password"
|
password: "Password"
|
||||||
password-placeholder: "We recommend more than 8 characters."
|
password-placeholder: "We recommend more than 8 characters."
|
||||||
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "Disconnect"
|
disconnect: "Disconnect"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Waiting"
|
waiting: "Waiting"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "Public"
|
||||||
|
home: "Home"
|
||||||
|
home-desc: "Post to the home timeline only"
|
||||||
|
followers: "Followers"
|
||||||
|
followers-desc: "Post to followers only"
|
||||||
|
specified: "Direct"
|
||||||
|
specified-desc: "Post to specified users only"
|
||||||
|
private: "Private"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Fetching"
|
fetching: "Fetching"
|
||||||
no-broadcasts: "No broadcasts"
|
no-broadcasts: "No broadcasts"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Server info"
|
title: "Server info"
|
||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "Public"
|
|
||||||
home: "Home"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "Followers"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "Direct"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "Private"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -188,7 +188,7 @@ desktop/views/components/calendar.vue:
|
|||||||
next: "Next month"
|
next: "Next month"
|
||||||
go: "Click to naviguate"
|
go: "Click to naviguate"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "Choosing files"
|
||||||
upload: "Upload files from your PC"
|
upload: "Upload files from your PC"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
@ -264,7 +264,7 @@ desktop/views/components/following-window.vue:
|
|||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "You don’t follow anyone."
|
empty: "You don’t follow anyone."
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "気になるユーザーをフォロー:"
|
title: "Recommended users:"
|
||||||
empty: "Similar users weren’t found."
|
empty: "Similar users weren’t found."
|
||||||
fetching: "Loading…"
|
fetching: "Loading…"
|
||||||
refresh: "More"
|
refresh: "More"
|
||||||
@ -304,10 +304,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Load more conversations"
|
more: "Load more conversations"
|
||||||
private: "(this post is private)"
|
private: "(this post is private)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "Renoted by {}"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "Add a reaction"
|
||||||
desktop/views/components/note-detail.sub.vue:
|
desktop/views/components/note-detail.sub.vue:
|
||||||
private: "(this post is private)"
|
private: "(this post is private)"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/notes.note.vue:
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Failed to Renote"
|
failure: "Failed to Renote"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Are you sure you want to renote this note?"
|
title: "Are you sure you want to renote this note?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "Settings"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "Profile"
|
profile: "Profile"
|
||||||
notification: "Notification"
|
notification: "Notification"
|
||||||
@ -417,8 +419,8 @@ desktop/views/components/settings.vue:
|
|||||||
update-checking: "Checking for updates"
|
update-checking: "Checking for updates"
|
||||||
do-update: "Check for update"
|
do-update: "Check for update"
|
||||||
update-settings: "Advanced settings"
|
update-settings: "Advanced settings"
|
||||||
prevent-update: "アップデートを延期する(非推奨)"
|
prevent-update: "Postpone updates (not recommended)"
|
||||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
prevent-update-desc: "You may reflect updates even if you select this setting. This setting is valid only this device."
|
||||||
no-updates: "No updates available"
|
no-updates: "No updates available"
|
||||||
no-updates-desc: "Your Misskey is up to date."
|
no-updates-desc: "Your Misskey is up to date."
|
||||||
update-available: "New version is available!"
|
update-available: "New version is available!"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
|
is-bot: "This account is a Bot"
|
||||||
|
is-cat: "This account is a Cat"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(this post is private)"
|
hidden: "(this post is private)"
|
||||||
media: " media"
|
media: " media"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Popout"
|
popout: "Popout"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "Log In"
|
||||||
|
signup: "Sign up"
|
||||||
|
signin-button: "Log in"
|
||||||
|
signup-button: "Sign up"
|
||||||
|
timeline: "Timeline"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "Following of {}"
|
following-of: "Following of {}"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "Timeline"
|
home: "Home"
|
||||||
|
local: "Local"
|
||||||
|
global: "Global"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Messaging"
|
messaging: "Messaging"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "Are you sure you want to mark all unread notifications as read?"
|
read-all: "Are you sure you want to mark all unread notifications as read?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "Profile"
|
title: "Profile"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "Name"
|
name: "Name"
|
||||||
account: "Account"
|
account: "Account"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
is-bot: "This account is a Bot"
|
is-cat: "This account is a Cat"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
saved: "Profile updated successfully"
|
saved: "Profile updated successfully"
|
||||||
uploading: "Uploading"
|
uploading: "Uploading"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "Behavior"
|
behavior: "Behavior"
|
||||||
fetch-on-scroll: "Fetch on scroll"
|
fetch-on-scroll: "Fetch on scroll"
|
||||||
disable-via-mobile: "Without the \"mobile posts\" flag"
|
disable-via-mobile: "Without the \"mobile posts\" flag"
|
||||||
|
load-raw-images: "Show attached pictures in high-quality"
|
||||||
|
load-remote-media: "Show media on a remote server"
|
||||||
twitter: "Twitter integration"
|
twitter: "Twitter integration"
|
||||||
twitter-connect: "Connect to your Twitter account"
|
twitter-connect: "Connect to your Twitter account"
|
||||||
twitter-reconnect: "Reconnect"
|
twitter-reconnect: "Reconnect"
|
||||||
|
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "公開"
|
|
||||||
home: "ホーム"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "フォロワー"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "ダイレクト"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "非公開"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -304,7 +304,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "会話をもっと読み込む"
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "タイムライン"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "Français"
|
||||||
divider: ""
|
divider: " "
|
||||||
common:
|
common:
|
||||||
misskey: "Partagez avec les autres en utilisant Misskey"
|
misskey: "Partagez avec les autres en utilisant Misskey"
|
||||||
time:
|
time:
|
||||||
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "Deconnecter"
|
disconnect: "Deconnecter"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "En attente"
|
waiting: "En attente"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Récuperation"
|
fetching: "Récuperation"
|
||||||
no-broadcasts: "No broadcasts"
|
no-broadcasts: "No broadcasts"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Info sur le serveur"
|
title: "Info sur le serveur"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "公開"
|
|
||||||
home: "ホーム"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "フォロワー"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "ダイレクト"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "非公開"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -304,7 +304,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "会話をもっと読み込む"
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "La renote a échoué"
|
failure: "La renote a échoué"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Êtes vous sûr de vouloir renote cette note?"
|
title: "Êtes vous sûr de vouloir renote cette note?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
notification: "Notification"
|
notification: "Notification"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Date de naissance"
|
birthday: "Date de naissance"
|
||||||
save: "Mettre à jour le profil"
|
save: "Mettre à jour le profil"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "Abonnements de {}"
|
following-of: "Abonnements de {}"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "Fil d'actualité"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Messagerie"
|
messaging: "Messagerie"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "公開"
|
|
||||||
home: "ホーム"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "フォロワー"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "ダイレクト"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "非公開"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -304,7 +304,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "会話をもっと読み込む"
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "タイムライン"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
@ -173,6 +173,16 @@ common/views/components/twitter-setting.vue:
|
|||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
|
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -191,16 +201,6 @@ common/views/widgets/server.vue:
|
|||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
|
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "公開"
|
|
||||||
home: "ホーム"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "フォロワー"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "ダイレクト"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "非公開"
|
|
||||||
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -353,7 +353,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "会話をもっと読み込む"
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@ -417,6 +417,9 @@ desktop/views/components/renote-form.vue:
|
|||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
|
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
@ -550,6 +553,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
@ -610,6 +615,13 @@ desktop/views/components/window.vue:
|
|||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
|
|
||||||
@ -786,7 +798,9 @@ mobile/views/pages/following.vue:
|
|||||||
following-of: "{}のフォロー"
|
following-of: "{}のフォロー"
|
||||||
|
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "タイムライン"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
|
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
@ -805,7 +819,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
|
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -813,7 +826,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -847,6 +860,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "公開"
|
|
||||||
home: "ホーム"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "フォロワー"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "ダイレクト"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "非公開"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -304,7 +304,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "会話をもっと読み込む"
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "タイムライン"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
139
locales/pl.yml
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "japoński"
|
lang: "język polski"
|
||||||
divider: ""
|
divider: " "
|
||||||
common:
|
common:
|
||||||
misskey: "Dziel się zawartością z innymi korzystając z Misskey."
|
misskey: "Dziel się zawartością z innymi korzystając z Misskey."
|
||||||
time:
|
time:
|
||||||
@ -92,7 +92,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
favorite: "Dodaj do ulubionych"
|
favorite: "Dodaj do ulubionych"
|
||||||
pin: "Przypnij do profilu"
|
pin: "Przypnij do profilu"
|
||||||
remote: "投稿元で見る"
|
remote: "Pokaż oryginał"
|
||||||
common/views/components/poll.vue:
|
common/views/components/poll.vue:
|
||||||
vote-to: "Zagłosuj na '{}'"
|
vote-to: "Zagłosuj na '{}'"
|
||||||
vote-count: "{} głosów"
|
vote-count: "{} głosów"
|
||||||
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "Rozłącz"
|
disconnect: "Rozłącz"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Oczekiwanie"
|
waiting: "Oczekiwanie"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "Publiczny"
|
||||||
|
home: "Lokalny"
|
||||||
|
home-desc: "Widoczny tylko na tej instancji"
|
||||||
|
followers: "Dla śledzących"
|
||||||
|
followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
|
||||||
|
specified: "Bezpośredni"
|
||||||
|
specified-desc: "Tylko dla określonych użytkowników"
|
||||||
|
private: "Prywatny"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Sprawdzanie"
|
fetching: "Sprawdzanie"
|
||||||
no-broadcasts: "Brak transmisji"
|
no-broadcasts: "Brak transmisji"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Informacje o serwerze"
|
title: "Informacje o serwerze"
|
||||||
toggle: "Przełącz widok"
|
toggle: "Przełącz widok"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "Publiczny"
|
|
||||||
home: "Lokalny"
|
|
||||||
home-desc: "Widoczny tylko na tej instancji"
|
|
||||||
followers: "Dla śledzących"
|
|
||||||
followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
|
|
||||||
specified: "Bezpośredni"
|
|
||||||
specified-desc: "Tylko dla określonych użytkowników"
|
|
||||||
private: "Prywatny"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Czarny … Łącznie"
|
total: "Czarny … Łącznie"
|
||||||
notes: "Niebieski … Wpisy"
|
notes: "Niebieski … Wpisy"
|
||||||
@ -235,7 +235,7 @@ desktop/views/components/drive.nav-folder.vue:
|
|||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
load-more: "Załaduj więcej"
|
load-more: "Załaduj więcej"
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "Przeciągnij tutaj!"
|
||||||
empty-drive: "Twój dysk jest pusty"
|
empty-drive: "Twój dysk jest pusty"
|
||||||
empty-drive-description: "Możesz wysłać plik klikając prawym przyciskiem myszy i wybierając \"Wyślij plik\" lub przeciągnąć plik i upuścić w tym oknie."
|
empty-drive-description: "Możesz wysłać plik klikając prawym przyciskiem myszy i wybierając \"Wyślij plik\" lub przeciągnąć plik i upuścić w tym oknie."
|
||||||
empty-folder: "Ten katalog jest posty"
|
empty-folder: "Ten katalog jest posty"
|
||||||
@ -304,16 +304,16 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Załaduj więcej konwersacji"
|
more: "Załaduj więcej konwersacji"
|
||||||
private: "(ten wpis jest prywatny)"
|
private: "(ten wpis jest prywatny)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "Udostępniono przez {}"
|
||||||
location: "Informacje o lokalizacji"
|
location: "Informacje o lokalizacji"
|
||||||
renote: "Przeredaguj"
|
renote: "Udostępnienie"
|
||||||
add-reaction: "Dodaj reakcję"
|
add-reaction: "Dodaj reakcję"
|
||||||
desktop/views/components/note-detail.sub.vue:
|
desktop/views/components/note-detail.sub.vue:
|
||||||
private: "(ten wpis jest prywatny)"
|
private: "(ten wpis jest prywatny)"
|
||||||
desktop/views/components/notes.note.vue:
|
desktop/views/components/notes.note.vue:
|
||||||
reposted-by: "Udostępniono przez {}"
|
reposted-by: "Udostępniono przez {}"
|
||||||
reply: "Odpowiedz"
|
reply: "Odpowiedz"
|
||||||
renote: "Przeredaguj"
|
renote: "Udostępnij"
|
||||||
add-reaction: "Dodaj reakcję"
|
add-reaction: "Dodaj reakcję"
|
||||||
detail: "Pokaż szczegóły"
|
detail: "Pokaż szczegóły"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
@ -328,13 +328,13 @@ desktop/views/components/post-form.vue:
|
|||||||
quote-placeholder: "Zacytuj ten wpis…"
|
quote-placeholder: "Zacytuj ten wpis…"
|
||||||
note: "Wyślij"
|
note: "Wyślij"
|
||||||
reply: "Odpowiedz"
|
reply: "Odpowiedz"
|
||||||
renote: "Przeredaguj"
|
renote: "Udostępnienie"
|
||||||
posted: "Opublikowano!"
|
posted: "Opublikowano!"
|
||||||
replied: "Odpowiedziano!"
|
replied: "Odpowiedziano!"
|
||||||
reposted: "Udostępniono!"
|
reposted: "Udostępniono!"
|
||||||
note-failed: "Nie udało się wysłać"
|
note-failed: "Nie udało się wysłać"
|
||||||
reply-failed: "Nie udało się odpowiedzieć"
|
reply-failed: "Nie udało się odpowiedzieć"
|
||||||
renote-failed: "Nie udało się przeredagować"
|
renote-failed: "Nie udało się udostępnić"
|
||||||
posting: "Wysyłanie"
|
posting: "Wysyłanie"
|
||||||
attach-media-from-local: "Załącz zawartość multimedialną z komputera"
|
attach-media-from-local: "Załącz zawartość multimedialną z komputera"
|
||||||
attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
|
attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
|
||||||
@ -352,12 +352,14 @@ desktop/views/components/progress-dialog.vue:
|
|||||||
desktop/views/components/renote-form.vue:
|
desktop/views/components/renote-form.vue:
|
||||||
quote: "Cytuj…"
|
quote: "Cytuj…"
|
||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
renote: "Przeredaguj"
|
renote: "Udostępnij"
|
||||||
reposting: "Udostępnianie…"
|
reposting: "Udostępnianie…"
|
||||||
success: "Udostępniono!"
|
success: "Udostępniono!"
|
||||||
failure: "Nie udało się przeredagować"
|
failure: "Nie udało się udostępnić"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Czy na pewno chcesz przeredagować ten wpis?"
|
title: "Czy na pewno chcesz udostępnić ten wpis?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
notification: "Powiadomienia"
|
notification: "Powiadomienia"
|
||||||
@ -385,8 +387,8 @@ desktop/views/components/settings.vue:
|
|||||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów na osi czasu"
|
||||||
show-maps: "Automatycznie pokazuj mapę"
|
show-maps: "Automatycznie pokazuj mapę"
|
||||||
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
||||||
sound: "Dźwięk"
|
sound: "Dźwięk"
|
||||||
@ -404,11 +406,11 @@ desktop/views/components/settings.vue:
|
|||||||
language-desc: "Aby zmiany zostały uwzględnione, odśwież stronę."
|
language-desc: "Aby zmiany zostały uwzględnione, odśwież stronę."
|
||||||
cache: "Pamięć podręczna"
|
cache: "Pamięć podręczna"
|
||||||
clean-cache: "Wyczyść"
|
clean-cache: "Wyczyść"
|
||||||
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
cache-warn: "Pamięć podręczna informacji o koncie/wpisów/odpowiedzi/wiadomości/ustawień przechowywanych w przeglądarce zostanie usunięta. Będziesz musiał odświeżyć stronę po wyczyszczeniu."
|
||||||
cache-cleared: "Wyczyszczono pamięć podręczną"
|
cache-cleared: "Wyczyszczono pamięć podręczną"
|
||||||
cache-cleared-desc: "Proszę odświeżyć stronę."
|
cache-cleared-desc: "Proszę odświeżyć stronę."
|
||||||
auto-watch: "投稿の自動ウォッチ"
|
auto-watch: "投稿の自動ウォッチ"
|
||||||
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
auto-watch-desc: "Otrzymuj natychmiastowo informacje o wpisach/odpowiedziach/reakcjach."
|
||||||
about: "O Misskey"
|
about: "O Misskey"
|
||||||
operator: "Administrator instancji"
|
operator: "Administrator instancji"
|
||||||
update: "Aktualizacja Misskey"
|
update: "Aktualizacja Misskey"
|
||||||
@ -475,10 +477,12 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Opis"
|
description: "Opis"
|
||||||
birthday: "Data urodzenia"
|
birthday: "Data urodzenia"
|
||||||
save: "Aktualizuj profil"
|
save: "Aktualizuj profil"
|
||||||
|
is-bot: "To konto jest prowadzone przez bota"
|
||||||
|
is-cat: "To konto jest prowadzone przez kota"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(ten wpis jest prywatny)"
|
||||||
media: "つのメディア"
|
media: "zawartość multimedialna"
|
||||||
poll: "投票"
|
poll: "Ankiety"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "Menedżer zadań"
|
title: "Menedżer zadań"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -517,16 +521,22 @@ desktop/views/components/users-list.vue:
|
|||||||
load-more: "Więcej"
|
load-more: "Więcej"
|
||||||
fetching: "Ładowanie…"
|
fetching: "Ładowanie…"
|
||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "フォローされています"
|
followed: "Obserwuje Cię"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "Zamknij"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "Zaloguj się"
|
||||||
|
signup: "Zarejestruj się"
|
||||||
|
signin-button: "Zaloguj się"
|
||||||
|
signup-button: "Zarejestruj się"
|
||||||
|
timeline: "Oś czasu"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Dysk Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
more: "さらに読み込む"
|
more: "Załaduj więcej"
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "Dostosuj stronę główną"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
prev: "Poprzedni wpis"
|
prev: "Poprzedni wpis"
|
||||||
next: "Następny wpis"
|
next: "Następny wpis"
|
||||||
@ -536,9 +546,9 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
upload: "Wyślij pliki z Twojego komputera"
|
upload: "Wyślij pliki z Twojego komputera"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "Użytkownicy"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "Dodaj użytkownika"
|
||||||
username: "ユーザー名"
|
username: "Nazwa użytkownika"
|
||||||
desktop/views/pages/user/user.followers-you-know.vue:
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
title: "Śledzący których znasz"
|
title: "Śledzący których znasz"
|
||||||
loading: "Ładowanie"
|
loading: "Ładowanie"
|
||||||
@ -566,10 +576,10 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
muted: "Wyciszyłeś"
|
muted: "Wyciszyłeś"
|
||||||
unmute: "Cofnij wyciszenie"
|
unmute: "Cofnij wyciszenie"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "Wpisy"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "Wpisy i odpowiedzi"
|
||||||
with-media: "メディア"
|
with-media: "Zawartość multimedialna"
|
||||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
empty: "Ten użytkownik nie umieścił jeszcze niczego."
|
||||||
desktop/views/widgets/messaging.vue:
|
desktop/views/widgets/messaging.vue:
|
||||||
title: "Wiadomości"
|
title: "Wiadomości"
|
||||||
desktop/views/widgets/notifications.vue:
|
desktop/views/widgets/notifications.vue:
|
||||||
@ -584,8 +594,8 @@ desktop/views/widgets/post-form.vue:
|
|||||||
note: "Wpis"
|
note: "Wpis"
|
||||||
placeholder: "Co się dzieje?"
|
placeholder: "Co się dzieje?"
|
||||||
desktop/views/widgets/profile.vue:
|
desktop/views/widgets/profile.vue:
|
||||||
update-banner: "クリックでバナー編集"
|
update-banner: "Naciśnij, aby zmienić baner"
|
||||||
update-avatar: "クリックでアバター編集"
|
update-avatar: "Naciśnij, aby zmienić awatar"
|
||||||
desktop/views/widgets/trends.vue:
|
desktop/views/widgets/trends.vue:
|
||||||
title: "Na czasie"
|
title: "Na czasie"
|
||||||
refresh: "Pokaż inne"
|
refresh: "Pokaż inne"
|
||||||
@ -627,7 +637,7 @@ mobile/views/components/notifications.vue:
|
|||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
submit: "Wyślij"
|
submit: "Wyślij"
|
||||||
reply: "Odpowiedz"
|
reply: "Odpowiedz"
|
||||||
renote: "Przeredaguj"
|
renote: "Udostępnij"
|
||||||
renote-placeholder: "Zacytuj wpis… (nieobowiązkowe)"
|
renote-placeholder: "Zacytuj wpis… (nieobowiązkowe)"
|
||||||
reply-placeholder: "Odpowiedź na ten wpis…"
|
reply-placeholder: "Odpowiedź na ten wpis…"
|
||||||
note-placeholder: "Co się dzieje?"
|
note-placeholder: "Co się dzieje?"
|
||||||
@ -660,33 +670,34 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "Śledzeni przez {}"
|
following-of: "Śledzeni przez {}"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "Oś czasu"
|
home: "Strona główna"
|
||||||
|
local: "Lokalne"
|
||||||
|
global: "Globalne"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "Wiadomości"
|
messaging: "Wiadomości"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
messaging: "Wiadomości"
|
messaging: "Wiadomości"
|
||||||
mobile/views/pages/note.vue:
|
mobile/views/pages/note.vue:
|
||||||
title: "Wyślij"
|
title: "Wpis"
|
||||||
prev: "Poprzedni wpis"
|
prev: "Poprzedni wpis"
|
||||||
next: "Następny wpis"
|
next: "Następny wpis"
|
||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "Profil"
|
||||||
will-be-published: "※公開されます"
|
name: "Nazwa"
|
||||||
name: "名前"
|
account: "Konto"
|
||||||
account: "アカウント"
|
location: "Lokalizacja"
|
||||||
location: "場所"
|
description: "Opis"
|
||||||
description: "自己紹介"
|
birthday: "Data urodzenia"
|
||||||
birthday: "誕生日"
|
avatar: "Awatar"
|
||||||
avatar: "アイコン"
|
banner: "Baner"
|
||||||
banner: "バナー"
|
is-cat: "To konto jest prowadzone przez kota"
|
||||||
is-bot: "このアカウントはBotです"
|
save: "Aktualizuj profil"
|
||||||
save: "保存"
|
saved: "Pomyślnie zaktualizowano profil"
|
||||||
saved: "プロフィールを保存しました"
|
uploading: "Wysyłanie"
|
||||||
uploading: "アップロード中"
|
upload-failed: "Wysyłanie nie powiodło się"
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||||
@ -705,14 +716,16 @@ mobile/views/pages/settings.vue:
|
|||||||
circle-icons: "Używaj okrągłych ikon"
|
circle-icons: "Używaj okrągłych ikon"
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "Styl wpisów"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "Standardowy"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
behavior: "Zachowanie"
|
behavior: "Zachowanie"
|
||||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||||
|
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
|
||||||
|
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
|
||||||
twitter: "Połączenie z Twitterem"
|
twitter: "Połączenie z Twitterem"
|
||||||
twitter-connect: "Połącz z Twitterem"
|
twitter-connect: "Połącz z Twitterem"
|
||||||
twitter-reconnect: "Połącz ponownie"
|
twitter-reconnect: "Połącz ponownie"
|
||||||
|
791
locales/pt.yml
Normal file
@ -0,0 +1,791 @@
|
|||||||
|
---
|
||||||
|
meta:
|
||||||
|
lang: "Português"
|
||||||
|
divider: ""
|
||||||
|
common:
|
||||||
|
misskey: "Misskeyで皆と共有しよう。"
|
||||||
|
time:
|
||||||
|
unknown: "なぞのじかん"
|
||||||
|
future: "未来"
|
||||||
|
just_now: "たった今"
|
||||||
|
seconds_ago: "{}秒前"
|
||||||
|
minutes_ago: "{}分前"
|
||||||
|
hours_ago: "{}時間前"
|
||||||
|
days_ago: "{}日前"
|
||||||
|
weeks_ago: "{}週間前"
|
||||||
|
months_ago: "{}ヶ月前"
|
||||||
|
years_ago: "{}年前"
|
||||||
|
weekday-short:
|
||||||
|
sunday: "日"
|
||||||
|
monday: "月"
|
||||||
|
tuesday: "火"
|
||||||
|
wednesday: "水"
|
||||||
|
thursday: "木"
|
||||||
|
friday: "金"
|
||||||
|
saturday: "土"
|
||||||
|
reactions:
|
||||||
|
like: "いいね"
|
||||||
|
love: "しゅき"
|
||||||
|
laugh: "笑"
|
||||||
|
hmm: "ふぅ~む"
|
||||||
|
surprise: "わお"
|
||||||
|
congrats: "おめでとう"
|
||||||
|
angry: "おこ"
|
||||||
|
confused: "こまこまのこまり"
|
||||||
|
pudding: "Pudding"
|
||||||
|
delete: "削除"
|
||||||
|
loading: "読み込み中"
|
||||||
|
ok: "わかった"
|
||||||
|
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
||||||
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
|
common/views/components/connect-failed.vue:
|
||||||
|
title: "サーバーに接続できません"
|
||||||
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
|
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
|
||||||
|
troubleshoot: "トラブルシュート"
|
||||||
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
|
title: "トラブルシューティング"
|
||||||
|
network: "ネットワーク接続"
|
||||||
|
checking-network: "ネットワーク接続を確認中"
|
||||||
|
internet: "インターネット接続"
|
||||||
|
checking-internet: "インターネット接続を確認中"
|
||||||
|
server: "サーバー接続"
|
||||||
|
checking-server: "サーバー接続を確認中"
|
||||||
|
finding: "問題を調べています"
|
||||||
|
no-network: "ネットワークに接続されていません"
|
||||||
|
no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。"
|
||||||
|
no-internet: "インターネットに接続されていません"
|
||||||
|
no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。"
|
||||||
|
no-server: "Misskeyのサーバーに接続できません"
|
||||||
|
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
||||||
|
success: "Misskeyのサーバーに接続できました"
|
||||||
|
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||||
|
flush: "キャッシュの削除"
|
||||||
|
set-version: "バージョン指定"
|
||||||
|
common/views/components/messaging.vue:
|
||||||
|
search-user: "ユーザーを探す"
|
||||||
|
you: "あなた"
|
||||||
|
no-history: "履歴はありません"
|
||||||
|
common/views/components/messaging-room.vue:
|
||||||
|
empty: "このユーザーと話したことはありません"
|
||||||
|
more: "もっと読む"
|
||||||
|
no-history: "これより過去の履歴はありません"
|
||||||
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
|
new-message: "新しいメッセージがあります"
|
||||||
|
common/views/components/messaging-room.form.vue:
|
||||||
|
input-message-here: "ここにメッセージを入力"
|
||||||
|
send: "送信"
|
||||||
|
attach-from-local: "PCからファイルを添付する"
|
||||||
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
common/views/components/messaging-room.message.vue:
|
||||||
|
is-read: "既読"
|
||||||
|
deleted: "このメッセージは削除されました"
|
||||||
|
common/views/components/nav.vue:
|
||||||
|
about: "Misskeyについて"
|
||||||
|
stats: "統計"
|
||||||
|
status: "ステータス"
|
||||||
|
wiki: "Wiki"
|
||||||
|
donors: "ドナー"
|
||||||
|
repository: "リポジトリ"
|
||||||
|
develop: "開発者"
|
||||||
|
feedback: "フィードバック"
|
||||||
|
common/views/components/note-menu.vue:
|
||||||
|
favorite: "お気に入り"
|
||||||
|
pin: "ピン留め"
|
||||||
|
remote: "投稿元で見る"
|
||||||
|
common/views/components/poll.vue:
|
||||||
|
vote-to: "「{}」に投票する"
|
||||||
|
vote-count: "{}票"
|
||||||
|
total-users: "{}人が投票"
|
||||||
|
vote: "投票する"
|
||||||
|
show-result: "結果を見る"
|
||||||
|
voted: "投票済み"
|
||||||
|
common/views/components/poll-editor.vue:
|
||||||
|
no-only-one-choice: "投票には、選択肢が最低2つ必要です"
|
||||||
|
choice-n: "選択肢{}"
|
||||||
|
remove: "この選択肢を削除"
|
||||||
|
add: "+選択肢を追加"
|
||||||
|
destroy: "投票を破棄"
|
||||||
|
common/views/components/reaction-picker.vue:
|
||||||
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/signin.vue:
|
||||||
|
username: "ユーザー名"
|
||||||
|
password: "パスワード"
|
||||||
|
token: "トークン"
|
||||||
|
signing-in: "やってます..."
|
||||||
|
signin: "サインイン"
|
||||||
|
common/views/components/signup.vue:
|
||||||
|
username: "ユーザー名"
|
||||||
|
checking: "確認しています..."
|
||||||
|
available: "利用できます"
|
||||||
|
unavailable: "既に利用されています"
|
||||||
|
error: "通信エラー"
|
||||||
|
invalid-format: "a~z、A~Z、0~9、_が使えます"
|
||||||
|
too-short: "1文字以上でお願いします!"
|
||||||
|
too-long: "20文字以内でお願いします"
|
||||||
|
password: "パスワード"
|
||||||
|
password-placeholder: "8文字以上を推奨します"
|
||||||
|
weak-password: "弱いパスワード"
|
||||||
|
normal-password: "まあまあのパスワード"
|
||||||
|
strong-password: "強いパスワード"
|
||||||
|
retype: "再入力"
|
||||||
|
retype-placeholder: "確認のため再入力してください"
|
||||||
|
password-matched: "確認されました"
|
||||||
|
password-not-matched: "一致していません"
|
||||||
|
recaptcha: "認証"
|
||||||
|
create: "アカウント作成"
|
||||||
|
some-error: "何らかの原因によりアカウントの作成に失敗しました。再度お試しください。"
|
||||||
|
common/views/components/special-message.vue:
|
||||||
|
new-year: "Happy New Year!"
|
||||||
|
christmas: "Merry Christmas!"
|
||||||
|
common/views/components/stream-indicator.vue:
|
||||||
|
connecting: "接続中"
|
||||||
|
reconnecting: "再接続中"
|
||||||
|
connected: "接続完了"
|
||||||
|
common/views/components/twitter-setting.vue:
|
||||||
|
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のTwitterアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Twitterと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
common/views/components/uploader.vue:
|
||||||
|
waiting: "待機中"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
|
common/views/widgets/broadcast.vue:
|
||||||
|
fetching: "確認中"
|
||||||
|
no-broadcasts: "お知らせはありません"
|
||||||
|
have-a-nice-day: "良い一日を!"
|
||||||
|
next: "次"
|
||||||
|
common/views/widgets/donation.vue:
|
||||||
|
title: "寄付のお願い"
|
||||||
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||||
|
common/views/widgets/photo-stream.vue:
|
||||||
|
title: "フォトストリーム"
|
||||||
|
no-photos: "写真はありません"
|
||||||
|
common/views/widgets/server.vue:
|
||||||
|
title: "サーバー情報"
|
||||||
|
toggle: "表示を切り替え"
|
||||||
|
desktop/views/components/activity.chart.vue:
|
||||||
|
total: "Black ... Total"
|
||||||
|
notes: "Blue ... Notes"
|
||||||
|
replies: "Red ... Replies"
|
||||||
|
renotes: "Green ... Renotes"
|
||||||
|
desktop/views/components/activity.vue:
|
||||||
|
title: "アクティビティ"
|
||||||
|
toggle: "表示を切り替え"
|
||||||
|
desktop/views/components/calendar.vue:
|
||||||
|
title: "{1}年 {2}月"
|
||||||
|
prev: "前の月"
|
||||||
|
next: "次の月"
|
||||||
|
go: "クリックして時間遡行"
|
||||||
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
|
choose-file: "ファイル選択中"
|
||||||
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
choose-prompt: "ファイルを選択"
|
||||||
|
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
choose-prompt: "フォルダを選択"
|
||||||
|
desktop/views/components/crop-window.vue:
|
||||||
|
skip: "クロップをスキップ"
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
desktop/views/components/drive-window.vue:
|
||||||
|
used: "使用中"
|
||||||
|
drive: "ドライブ"
|
||||||
|
desktop/views/components/drive.file.vue:
|
||||||
|
avatar: "アイコン"
|
||||||
|
banner: "バナー"
|
||||||
|
contextmenu:
|
||||||
|
rename: "名前を変更"
|
||||||
|
copy-url: "URLをコピー"
|
||||||
|
download: "ダウンロード"
|
||||||
|
else-files: "その他..."
|
||||||
|
set-as-avatar: "アイコンに設定"
|
||||||
|
set-as-banner: "バナーに設定"
|
||||||
|
open-in-app: "アプリで開く"
|
||||||
|
add-app: "アプリを追加"
|
||||||
|
rename-file: "ファイル名の変更"
|
||||||
|
input-new-file-name: "新しいファイル名を入力してください"
|
||||||
|
copied: "コピー完了"
|
||||||
|
copied-url-to-clipboard: "URLをクリップボードにコピーしました"
|
||||||
|
desktop/views/components/drive.folder.vue:
|
||||||
|
unable-to-process: "操作を完了できません"
|
||||||
|
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
||||||
|
unhandled-error: "不明なエラー"
|
||||||
|
contextmenu:
|
||||||
|
move-to-this-folder: "このフォルダへ移動"
|
||||||
|
show-in-new-window: "新しいウィンドウで表示"
|
||||||
|
rename: "名前を変更"
|
||||||
|
rename-folder: "フォルダ名の変更"
|
||||||
|
input-new-folder-name: "新しいフォルダ名を入力してください"
|
||||||
|
desktop/views/components/drive.nav-folder.vue:
|
||||||
|
drive: "ドライブ"
|
||||||
|
desktop/views/components/drive.vue:
|
||||||
|
search: "検索"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
|
empty-drive: "ドライブには何もありません。"
|
||||||
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
|
empty-folder: "このフォルダーは空です"
|
||||||
|
unable-to-process: "操作を完了できません"
|
||||||
|
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
||||||
|
unhandled-error: "不明なエラー"
|
||||||
|
url-upload: "URLアップロード"
|
||||||
|
url-of-file: "アップロードしたいファイルのURL"
|
||||||
|
url-upload-requested: "アップロードをリクエストしました"
|
||||||
|
may-take-time: "アップロードが完了するまで時間がかかる場合があります。"
|
||||||
|
create-folder: "フォルダー作成"
|
||||||
|
folder-name: "フォルダー名"
|
||||||
|
contextmenu:
|
||||||
|
create-folder: "フォルダーを作成"
|
||||||
|
upload: "ファイルをアップロード"
|
||||||
|
url-upload: "URLからアップロード"
|
||||||
|
desktop/views/components/follow-button.vue:
|
||||||
|
unfollow: "フォロー解除"
|
||||||
|
follow: "フォローする"
|
||||||
|
desktop/views/components/followers-window.vue:
|
||||||
|
followers: "{} のフォロワー"
|
||||||
|
desktop/views/components/followers.vue:
|
||||||
|
empty: "フォロワーはいないようです。"
|
||||||
|
desktop/views/components/following-window.vue:
|
||||||
|
following: "{} のフォロー"
|
||||||
|
desktop/views/components/following.vue:
|
||||||
|
empty: "フォロー中のユーザーはいないようです。"
|
||||||
|
desktop/views/components/friends-maker.vue:
|
||||||
|
title: "気になるユーザーをフォロー:"
|
||||||
|
empty: "おすすめのユーザーは見つかりませんでした。"
|
||||||
|
fetching: "読み込んでいます"
|
||||||
|
refresh: "もっと見る"
|
||||||
|
close: "閉じる"
|
||||||
|
desktop/views/components/game-window.vue:
|
||||||
|
game: "オセロ"
|
||||||
|
desktop/views/components/home.vue:
|
||||||
|
done: "完了"
|
||||||
|
add-widget: "ウィジェットを追加:"
|
||||||
|
profile: "プロフィール"
|
||||||
|
calendar: "カレンダー"
|
||||||
|
timemachine: "カレンダー(タイムマシン)"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
rss: "RSSリーダー"
|
||||||
|
trends: "トレンド"
|
||||||
|
photostream: "フォトストリーム"
|
||||||
|
slideshow: "スライドショー"
|
||||||
|
version: "バージョン"
|
||||||
|
broadcast: "ブロードキャスト"
|
||||||
|
notifications: "通知"
|
||||||
|
users: "おすすめユーザー"
|
||||||
|
polls: "投票"
|
||||||
|
post-form: "投稿フォーム"
|
||||||
|
messaging: "メッセージ"
|
||||||
|
server: "サーバー情報"
|
||||||
|
donation: "寄付のお願い"
|
||||||
|
nav: "ナビゲーション"
|
||||||
|
tips: "ヒント"
|
||||||
|
add: "追加"
|
||||||
|
desktop/views/input-dialog.vue:
|
||||||
|
cancel: "キャンセル"
|
||||||
|
ok: "決定"
|
||||||
|
desktop/views/components/messaging-room-window.vue:
|
||||||
|
title: "メッセージ:"
|
||||||
|
desktop/views/components/messaging-window.vue:
|
||||||
|
title: "メッセージ"
|
||||||
|
desktop/views/components/note-detail.vue:
|
||||||
|
more: "会話をもっと読み込む"
|
||||||
|
private: "(この投稿は非公開です)"
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
location: "位置情報"
|
||||||
|
renote: "Renote"
|
||||||
|
add-reaction: "リアクション"
|
||||||
|
desktop/views/components/note-detail.sub.vue:
|
||||||
|
private: "(この投稿は非公開です)"
|
||||||
|
desktop/views/components/notes.note.vue:
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
reply: "返信"
|
||||||
|
renote: "Renote"
|
||||||
|
add-reaction: "リアクション"
|
||||||
|
detail: "詳細"
|
||||||
|
desktop/views/components/notes.vue:
|
||||||
|
error: "読み込みに失敗しました。"
|
||||||
|
retry: "リトライ"
|
||||||
|
desktop/views/components/notifications.vue:
|
||||||
|
more: "もっと見る"
|
||||||
|
empty: "ありません!"
|
||||||
|
desktop/views/components/post-form.vue:
|
||||||
|
note-placeholder: "いまどうしてる?"
|
||||||
|
reply-placeholder: "この投稿への返信..."
|
||||||
|
quote-placeholder: "この投稿を引用..."
|
||||||
|
note: "投稿"
|
||||||
|
reply: "返信"
|
||||||
|
renote: "Renote"
|
||||||
|
posted: "投稿しました!"
|
||||||
|
replied: "返信しました!"
|
||||||
|
reposted: "Renoteしました!"
|
||||||
|
note-failed: "投稿に失敗しました"
|
||||||
|
reply-failed: "返信に失敗しました"
|
||||||
|
renote-failed: "Renoteに失敗しました"
|
||||||
|
posting: "投稿中"
|
||||||
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
|
attach-cancel: "添付取り消し"
|
||||||
|
insert-a-kao: "v(‘ω’)v"
|
||||||
|
create-poll: "投票を作成"
|
||||||
|
text-remain: "残り{}文字"
|
||||||
|
desktop/views/components/post-form-window.vue:
|
||||||
|
note: "新規投稿"
|
||||||
|
reply: "返信"
|
||||||
|
attaches: "添付: {}メディア"
|
||||||
|
uploading-media: "{}個のメディアをアップロード中"
|
||||||
|
desktop/views/components/progress-dialog.vue:
|
||||||
|
waiting: "待機中"
|
||||||
|
desktop/views/components/renote-form.vue:
|
||||||
|
quote: "引用する..."
|
||||||
|
cancel: "キャンセル"
|
||||||
|
renote: "Renote"
|
||||||
|
reposting: "しています..."
|
||||||
|
success: "Renoteしました!"
|
||||||
|
failure: "Renoteに失敗しました"
|
||||||
|
desktop/views/components/renote-form-window.vue:
|
||||||
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
|
desktop/views/components/settings.vue:
|
||||||
|
profile: "プロフィール"
|
||||||
|
notification: "通知"
|
||||||
|
apps: "アプリ"
|
||||||
|
mute: "ミュート"
|
||||||
|
drive: "ドライブ"
|
||||||
|
security: "セキュリティ"
|
||||||
|
signin: "サインイン履歴"
|
||||||
|
password: "パスワード"
|
||||||
|
2fa: "二段階認証"
|
||||||
|
other: "その他"
|
||||||
|
license: "ライセンス"
|
||||||
|
behaviour: "動作"
|
||||||
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
|
advanced: "詳細設定"
|
||||||
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
|
display: "デザインと表示"
|
||||||
|
customize: "ホームをカスタマイズ"
|
||||||
|
dark-mode: "ダークモード"
|
||||||
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
|
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||||
|
show-maps: "マップの自動展開"
|
||||||
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
|
volume: "ボリューム"
|
||||||
|
test: "テスト"
|
||||||
|
mobile: "モバイル"
|
||||||
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
language: "言語"
|
||||||
|
pick-language: "言語を選択"
|
||||||
|
recommended: "推奨"
|
||||||
|
auto: "自動"
|
||||||
|
specify-language: "言語を指定"
|
||||||
|
language-desc: "変更はページの再度読み込み後に反映されます。"
|
||||||
|
cache: "キャッシュ"
|
||||||
|
clean-cache: "クリーンアップ"
|
||||||
|
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
||||||
|
cache-cleared: "キャッシュを削除しました"
|
||||||
|
cache-cleared-desc: "ページを再度読み込みしてください。"
|
||||||
|
auto-watch: "投稿の自動ウォッチ"
|
||||||
|
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
||||||
|
about: "Misskeyについて"
|
||||||
|
operator: "このサーバーの運営者"
|
||||||
|
update: "Misskey Update"
|
||||||
|
version: "バージョン:"
|
||||||
|
latest-version: "最新のバージョン:"
|
||||||
|
update-checking: "アップデートを確認中"
|
||||||
|
do-update: "アップデートを確認"
|
||||||
|
update-settings: "詳細設定"
|
||||||
|
prevent-update: "アップデートを延期する(非推奨)"
|
||||||
|
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||||
|
no-updates: "利用可能な更新はありません"
|
||||||
|
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||||
|
update-available: "新しいバージョンが利用可能です"
|
||||||
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
|
advanced-settings: "高度な設定"
|
||||||
|
debug-mode: "デバッグモードを有効にする"
|
||||||
|
debug-mode-desc: "この設定はブラウザに記憶されます。"
|
||||||
|
experimental: "実験的機能を有効にする"
|
||||||
|
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||||
|
tools: "ツール"
|
||||||
|
task-manager: "タスクマネージャ"
|
||||||
|
third-parties: "サードパーティ"
|
||||||
|
desktop/views/components/settings.2fa.vue:
|
||||||
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
|
detail: "詳細..."
|
||||||
|
url: "https://www.google.co.jp/intl/ja/landing/2step/"
|
||||||
|
caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
|
||||||
|
register: "デバイスを登録する"
|
||||||
|
already-registered: "既に設定は完了しています。"
|
||||||
|
unregister: "設定を解除"
|
||||||
|
unregistered: "二段階認証が無効になりました。"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
|
submit: "完了"
|
||||||
|
success: "設定が完了しました!"
|
||||||
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
|
desktop/views/components/settings.api.vue:
|
||||||
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
|
regenerate-token: "トークンを再生成"
|
||||||
|
token: "Token:"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
|
desktop/views/components/settings.app.vue:
|
||||||
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
desktop/views/components/settings.mute.vue:
|
||||||
|
no-users: "ミュートしているユーザーはいません"
|
||||||
|
desktop/views/components/settings.password.vue:
|
||||||
|
reset: "パスワードを変更する"
|
||||||
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
|
not-match: "新しいパスワードが一致しません"
|
||||||
|
changed: "パスワードを変更しました"
|
||||||
|
desktop/views/components/settings.profile.vue:
|
||||||
|
avatar: "アイコン"
|
||||||
|
choice-avatar: "画像を選択"
|
||||||
|
name: "名前"
|
||||||
|
location: "場所"
|
||||||
|
description: "自己紹介"
|
||||||
|
birthday: "誕生日"
|
||||||
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
|
desktop/views/components/sub-note-content.vue:
|
||||||
|
hidden: "(この投稿は非公開です)"
|
||||||
|
media: "つのメディア"
|
||||||
|
poll: "投票"
|
||||||
|
desktop/views/components/taskmanager.vue:
|
||||||
|
title: "タスクマネージャ"
|
||||||
|
desktop/views/components/timeline.vue:
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
|
list: "リスト"
|
||||||
|
desktop/views/components/ui.header.account.vue:
|
||||||
|
profile: "プロフィール"
|
||||||
|
drive: "ドライブ"
|
||||||
|
favorites: "お気に入り"
|
||||||
|
lists: "リスト"
|
||||||
|
customize: "カスタマイズ"
|
||||||
|
settings: "設定"
|
||||||
|
signout: "サインアウト"
|
||||||
|
dark: "闇に飲まれる"
|
||||||
|
desktop/views/components/ui.header.nav.vue:
|
||||||
|
home: "ホーム"
|
||||||
|
messaging: "メッセージ"
|
||||||
|
game: "ゲーム"
|
||||||
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
|
title: "通知"
|
||||||
|
desktop/views/components/ui.header.post.vue:
|
||||||
|
post: "新規投稿"
|
||||||
|
desktop/views/components/ui.header.search.vue:
|
||||||
|
placeholder: "検索"
|
||||||
|
desktop/views/components/user-lists-window.vue:
|
||||||
|
create-list: "リストを作成"
|
||||||
|
desktop/views/components/user-preview.vue:
|
||||||
|
notes: "投稿"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
desktop/views/components/users-list.vue:
|
||||||
|
all: "すべて"
|
||||||
|
iknow: "知り合い"
|
||||||
|
load-more: "もっと"
|
||||||
|
fetching: "読み込んでいます"
|
||||||
|
desktop/views/components/users-list-item.vue:
|
||||||
|
followed: "フォローされています"
|
||||||
|
desktop/views/components/window.vue:
|
||||||
|
popout: "ポップアウト"
|
||||||
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
desktop/views/pages/drive.vue:
|
||||||
|
title: "Misskey Drive"
|
||||||
|
desktop/views/pages/favorites.vue:
|
||||||
|
more: "さらに読み込む"
|
||||||
|
desktop/views/pages/home-customize.vue:
|
||||||
|
title: "ホームのカスタマイズ"
|
||||||
|
desktop/views/pages/note.vue:
|
||||||
|
prev: "前の投稿"
|
||||||
|
next: "次の投稿"
|
||||||
|
desktop/views/pages/selectdrive.vue:
|
||||||
|
title: "ファイルを選択してください"
|
||||||
|
ok: "決定"
|
||||||
|
cancel: "キャンセル"
|
||||||
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
|
desktop/views/pages/user-list.users.vue:
|
||||||
|
users: "ユーザー"
|
||||||
|
add-user: "ユーザーを追加"
|
||||||
|
username: "ユーザー名"
|
||||||
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
|
title: "知り合いのフォロワー"
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "知り合いのフォロワーはいません"
|
||||||
|
desktop/views/pages/user/user.friends.vue:
|
||||||
|
title: "よく話すユーザー"
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "よく話すユーザーはいません"
|
||||||
|
desktop/views/pages/user/user.header.vue:
|
||||||
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
|
view-remote: "正確な情報を見る"
|
||||||
|
desktop/views/pages/user/user.home.vue:
|
||||||
|
last-used-at: "最終アクセス"
|
||||||
|
desktop/views/pages/user/user.photos.vue:
|
||||||
|
title: "フォト"
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-photos: "写真はありません"
|
||||||
|
desktop/views/pages/user/user.profile.vue:
|
||||||
|
follows-you: "フォローされています"
|
||||||
|
stalk: "ストークする"
|
||||||
|
stalking: "ストーキングしています"
|
||||||
|
unstalk: "ストーク解除"
|
||||||
|
mute: "ミュートする"
|
||||||
|
muted: "ミュートしています"
|
||||||
|
unmute: "ミュート解除"
|
||||||
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
|
default: "投稿"
|
||||||
|
with-replies: "投稿と返信"
|
||||||
|
with-media: "メディア"
|
||||||
|
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||||
|
desktop/views/widgets/messaging.vue:
|
||||||
|
title: "メッセージ"
|
||||||
|
desktop/views/widgets/notifications.vue:
|
||||||
|
title: "通知"
|
||||||
|
settings: "通知の設定"
|
||||||
|
desktop/views/widgets/polls.vue:
|
||||||
|
title: "投票"
|
||||||
|
refresh: "他を見る"
|
||||||
|
nothing: "ありません!"
|
||||||
|
desktop/views/widgets/post-form.vue:
|
||||||
|
title: "投稿"
|
||||||
|
note: "投稿"
|
||||||
|
placeholder: "いまどうしてる?"
|
||||||
|
desktop/views/widgets/profile.vue:
|
||||||
|
update-banner: "クリックでバナー編集"
|
||||||
|
update-avatar: "クリックでアバター編集"
|
||||||
|
desktop/views/widgets/trends.vue:
|
||||||
|
title: "トレンド"
|
||||||
|
refresh: "他を見る"
|
||||||
|
nothing: "ありません!"
|
||||||
|
desktop/views/widgets/users.vue:
|
||||||
|
title: "おすすめユーザー"
|
||||||
|
refresh: "他を見る"
|
||||||
|
no-one: "いません!"
|
||||||
|
mobile/views/components/drive.vue:
|
||||||
|
drive: "ドライブ"
|
||||||
|
used: "使用中"
|
||||||
|
folder-count: "フォルダ"
|
||||||
|
count-separator: "、"
|
||||||
|
file-count: "ファイル"
|
||||||
|
load-more: "もっと読み込む"
|
||||||
|
nothing-in-drive: "ドライブには何もありません"
|
||||||
|
folder-is-empty: "このフォルダは空です"
|
||||||
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
|
select-file: "ファイルを選択"
|
||||||
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
|
select-folder: "フォルダーを選択"
|
||||||
|
mobile/views/components/drive.file-detail.vue:
|
||||||
|
download: "ダウンロード"
|
||||||
|
rename: "名前を変更"
|
||||||
|
move: "移動"
|
||||||
|
hash: "ハッシュ (md5)"
|
||||||
|
exif: "EXIF"
|
||||||
|
mobile/views/components/follow-button.vue:
|
||||||
|
follow: "フォロー"
|
||||||
|
unfollow: "フォロー解除"
|
||||||
|
mobile/views/components/note.vue:
|
||||||
|
reposted-by: "{}がRenote"
|
||||||
|
mobile/views/components/note-detail.vue:
|
||||||
|
reply: "返信"
|
||||||
|
reaction: "リアクション"
|
||||||
|
mobile/views/components/notifications.vue:
|
||||||
|
more: "もっと見る"
|
||||||
|
empty: "ありません!"
|
||||||
|
mobile/views/components/post-form.vue:
|
||||||
|
submit: "投稿"
|
||||||
|
reply: "返信"
|
||||||
|
renote: "Renote"
|
||||||
|
renote-placeholder: "この投稿を引用... (オプション)"
|
||||||
|
reply-placeholder: "この投稿への返信..."
|
||||||
|
note-placeholder: "いまどうしてる?"
|
||||||
|
mobile/views/components/sub-note-content.vue:
|
||||||
|
media-count: "{}個のメディア"
|
||||||
|
poll: "投票"
|
||||||
|
mobile/views/components/timeline.vue:
|
||||||
|
empty: "投稿がありません"
|
||||||
|
load-more: "もっと"
|
||||||
|
mobile/views/components/ui.nav.vue:
|
||||||
|
home: "ホーム"
|
||||||
|
notifications: "通知"
|
||||||
|
messaging: "メッセージ"
|
||||||
|
search: "検索"
|
||||||
|
drive: "ドライブ"
|
||||||
|
settings: "設定"
|
||||||
|
about: "Misskeyについて"
|
||||||
|
mobile/views/components/user-timeline.vue:
|
||||||
|
no-notes: "このユーザーは投稿していないようです。"
|
||||||
|
no-notes-with-media: "メディア付き投稿はありません。"
|
||||||
|
load-more: "もっと"
|
||||||
|
mobile/views/components/users-list.vue:
|
||||||
|
all: "すべて"
|
||||||
|
known: "知り合い"
|
||||||
|
load-more: "もっと"
|
||||||
|
mobile/views/pages/drive.vue:
|
||||||
|
drive: "ドライブ"
|
||||||
|
mobile/views/pages/followers.vue:
|
||||||
|
followers-of: "{}のフォロワー"
|
||||||
|
mobile/views/pages/following.vue:
|
||||||
|
following-of: "{}のフォロー"
|
||||||
|
mobile/views/pages/home.vue:
|
||||||
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
|
mobile/views/pages/messaging.vue:
|
||||||
|
messaging: "メッセージ"
|
||||||
|
mobile/views/pages/messaging-room.vue:
|
||||||
|
messaging: "メッセージ"
|
||||||
|
mobile/views/pages/note.vue:
|
||||||
|
title: "投稿"
|
||||||
|
prev: "前の投稿"
|
||||||
|
next: "次の投稿"
|
||||||
|
mobile/views/pages/notifications.vue:
|
||||||
|
notifications: "通知"
|
||||||
|
read-all: "すべての通知を既読にしますか?"
|
||||||
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
|
title: "プロフィール"
|
||||||
|
name: "名前"
|
||||||
|
account: "アカウント"
|
||||||
|
location: "場所"
|
||||||
|
description: "自己紹介"
|
||||||
|
birthday: "誕生日"
|
||||||
|
avatar: "アイコン"
|
||||||
|
banner: "バナー"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
|
save: "保存"
|
||||||
|
saved: "プロフィールを保存しました"
|
||||||
|
uploading: "アップロード中"
|
||||||
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
mobile/views/pages/search.vue:
|
||||||
|
search: "検索"
|
||||||
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
mobile/views/pages/selectdrive.vue:
|
||||||
|
select-file: "ファイルを選択"
|
||||||
|
mobile/views/pages/settings.vue:
|
||||||
|
signed-in-as: "{}としてサインイン中"
|
||||||
|
lang: "言語"
|
||||||
|
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||||
|
recommended: "推奨"
|
||||||
|
auto: "自動"
|
||||||
|
specify-language: "言語を指定"
|
||||||
|
design: "デザインと表示"
|
||||||
|
dark-mode: "ダークモード"
|
||||||
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
show-reply-target: "リプライ先を表示する"
|
||||||
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
|
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||||
|
post-style: "投稿の表示スタイル"
|
||||||
|
post-style-standard: "標準"
|
||||||
|
post-style-smart: "スマート"
|
||||||
|
behavior: "動作"
|
||||||
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
|
twitter: "Twitter連携"
|
||||||
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
|
twitter-reconnect: "再接続する"
|
||||||
|
twitter-disconnect: "切断する"
|
||||||
|
update: "Misskey Update"
|
||||||
|
version: "バージョン:"
|
||||||
|
latest-version: "最新のバージョン:"
|
||||||
|
update-checking: "アップデートを確認中"
|
||||||
|
check-for-updates: "アップデートを確認"
|
||||||
|
no-updates: "利用可能な更新はありません"
|
||||||
|
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||||
|
update-available: "新しいバージョンが利用可能です"
|
||||||
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
|
settings: "設定"
|
||||||
|
signout: "サインアウト"
|
||||||
|
mobile/views/pages/user.vue:
|
||||||
|
follows-you: "フォローされています"
|
||||||
|
following: "フォロー"
|
||||||
|
followers: "フォロワー"
|
||||||
|
notes: "投稿"
|
||||||
|
overview: "概要"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
media: "メディア"
|
||||||
|
is-suspended: "このユーザーは凍結されています。"
|
||||||
|
is-remote: "このユーザーはリモートユーザーです。"
|
||||||
|
view-remote: "正確な情報を見る"
|
||||||
|
mobile/views/pages/user/home.vue:
|
||||||
|
recent-notes: "最近の投稿"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
keywords: "キーワード"
|
||||||
|
domains: "頻出ドメイン"
|
||||||
|
frequently-replied-users: "よく会話するユーザー"
|
||||||
|
followers-you-know: "知り合いのフォロワー"
|
||||||
|
last-used-at: "最終ログイン"
|
||||||
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "知り合いのユーザーはいません"
|
||||||
|
mobile/views/pages/user/home.friends.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-users: "よく会話するユーザーはいません"
|
||||||
|
mobile/views/pages/user/home.notes.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-notes: "投稿はありません"
|
||||||
|
mobile/views/pages/user/home.photos.vue:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-photos: "写真はありません"
|
||||||
|
docs:
|
||||||
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
|
api:
|
||||||
|
entities:
|
||||||
|
properties: "プロパティ"
|
||||||
|
endpoints:
|
||||||
|
params: "パラメータ"
|
||||||
|
res: "レスポンス"
|
||||||
|
props:
|
||||||
|
name: "名前"
|
||||||
|
type: "型"
|
||||||
|
optional: "オプション"
|
||||||
|
description: "説明"
|
||||||
|
yes: "はい"
|
||||||
|
no: "いいえ"
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "Русский язык"
|
||||||
divider: ""
|
divider: " "
|
||||||
common:
|
common:
|
||||||
misskey: "Misskeyで皆と共有しよう。"
|
misskey: "Misskeyで皆と共有しよう。"
|
||||||
time:
|
time:
|
||||||
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "公開"
|
|
||||||
home: "ホーム"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "フォロワー"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "ダイレクト"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "非公開"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -304,7 +304,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "会話をもっと読み込む"
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "タイムライン"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "中文(简体)"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "Misskeyで皆と共有しよう。"
|
misskey: "Misskeyで皆と共有しよう。"
|
||||||
@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
|||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
common/views/components/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
|
||||||
public: "公開"
|
|
||||||
home: "ホーム"
|
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
|
||||||
followers: "フォロワー"
|
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
|
||||||
specified: "ダイレクト"
|
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
|
||||||
private: "非公開"
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -304,7 +304,7 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "会話をもっと読み込む"
|
more: "会話をもっと読み込む"
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
is-renote: "がRenote"
|
reposted-by: "{}がRenote"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
|||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "この投稿をRenoteしますか?"
|
title: "この投稿をRenoteしますか?"
|
||||||
|
desktop/views/components/settings-window.vue:
|
||||||
|
settings: "設定"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
@ -475,6 +477,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +525,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -660,7 +670,9 @@ mobile/views/pages/followers.vue:
|
|||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
following-of: "{}のフォロー"
|
following-of: "{}のフォロー"
|
||||||
mobile/views/pages/home.vue:
|
mobile/views/pages/home.vue:
|
||||||
timeline: "タイムライン"
|
home: "ホーム"
|
||||||
|
local: "ローカル"
|
||||||
|
global: "グローバル"
|
||||||
mobile/views/pages/messaging.vue:
|
mobile/views/pages/messaging.vue:
|
||||||
messaging: "メッセージ"
|
messaging: "メッセージ"
|
||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
@ -674,7 +686,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
@ -713,6 +724,8 @@ mobile/views/pages/settings.vue:
|
|||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
twitter: "Twitter連携"
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
twitter-connect: "Twitterアカウントに接続する"
|
||||||
twitter-reconnect: "再接続する"
|
twitter-reconnect: "再接続する"
|
||||||
|
30
package.json
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "2.13.0",
|
"version": "2.18.2",
|
||||||
"clientVersion": "1.0.5576",
|
"clientVersion": "1.0.5793",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@ -114,7 +114,7 @@
|
|||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
"gulp-htmlmin": "4.0.0",
|
"gulp-htmlmin": "4.0.0",
|
||||||
"gulp-imagemin": "4.1.0",
|
"gulp-imagemin": "4.1.0",
|
||||||
"gulp-mocha": "5.0.0",
|
"gulp-mocha": "6.0.0",
|
||||||
"gulp-pug": "4.0.1",
|
"gulp-pug": "4.0.1",
|
||||||
"gulp-rename": "1.2.3",
|
"gulp-rename": "1.2.3",
|
||||||
"gulp-replace": "1.0.0",
|
"gulp-replace": "1.0.0",
|
||||||
@ -124,17 +124,17 @@
|
|||||||
"gulp-typescript": "4.0.2",
|
"gulp-typescript": "4.0.2",
|
||||||
"gulp-uglify": "3.0.0",
|
"gulp-uglify": "3.0.0",
|
||||||
"gulp-util": "3.0.8",
|
"gulp-util": "3.0.8",
|
||||||
"hard-source-webpack-plugin": "0.6.9",
|
"hard-source-webpack-plugin": "0.6.10",
|
||||||
"highlight.js": "9.12.0",
|
"highlight.js": "9.12.0",
|
||||||
"html-minifier": "3.5.15",
|
"html-minifier": "3.5.16",
|
||||||
"http-signature": "1.2.0",
|
"http-signature": "1.2.0",
|
||||||
"inquirer": "5.2.0",
|
"inquirer": "5.2.0",
|
||||||
"is-root": "2.0.0",
|
"is-root": "2.0.0",
|
||||||
"is-url": "1.2.4",
|
"is-url": "1.2.4",
|
||||||
"js-yaml": "3.11.0",
|
"js-yaml": "3.11.0",
|
||||||
"jsdom": "11.10.0",
|
"jsdom": "11.11.0",
|
||||||
"koa": "2.5.1",
|
"koa": "2.5.1",
|
||||||
"koa-bodyparser": "4.2.0",
|
"koa-bodyparser": "4.2.1",
|
||||||
"koa-compress": "3.0.0",
|
"koa-compress": "3.0.0",
|
||||||
"koa-favicon": "2.0.1",
|
"koa-favicon": "2.0.1",
|
||||||
"koa-json-body": "5.3.0",
|
"koa-json-body": "5.3.0",
|
||||||
@ -163,18 +163,18 @@
|
|||||||
"object-assign-deep": "0.4.0",
|
"object-assign-deep": "0.4.0",
|
||||||
"on-build-webpack": "0.1.0",
|
"on-build-webpack": "0.1.0",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"parse5": "4.0.0",
|
"parse5": "5.0.0",
|
||||||
"progress-bar-webpack-plugin": "1.11.0",
|
"progress-bar-webpack-plugin": "1.11.0",
|
||||||
"prominence": "0.2.0",
|
"prominence": "0.2.0",
|
||||||
"promise-sequential": "1.1.1",
|
"promise-sequential": "1.1.1",
|
||||||
"pug": "2.0.3",
|
"pug": "2.0.3",
|
||||||
"punycode": "2.1.0",
|
"punycode": "2.1.1",
|
||||||
"qrcode": "1.2.0",
|
"qrcode": "1.2.0",
|
||||||
"ratelimiter": "3.0.3",
|
"ratelimiter": "3.0.3",
|
||||||
"recaptcha-promise": "0.1.3",
|
"recaptcha-promise": "0.1.3",
|
||||||
"reconnecting-websocket": "3.2.2",
|
"reconnecting-websocket": "3.2.2",
|
||||||
"redis": "2.8.0",
|
"redis": "2.8.0",
|
||||||
"request": "2.86.0",
|
"request": "2.87.0",
|
||||||
"request-promise-native": "1.0.5",
|
"request-promise-native": "1.0.5",
|
||||||
"rimraf": "2.6.2",
|
"rimraf": "2.6.2",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
@ -193,7 +193,7 @@
|
|||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"tmp": "0.0.33",
|
"tmp": "0.0.33",
|
||||||
"ts-loader": "4.3.0",
|
"ts-loader": "4.3.0",
|
||||||
"ts-node": "6.0.3",
|
"ts-node": "6.0.4",
|
||||||
"tslint": "5.10.0",
|
"tslint": "5.10.0",
|
||||||
"typescript": "2.8.3",
|
"typescript": "2.8.3",
|
||||||
"typescript-eslint-parser": "15.0.0",
|
"typescript-eslint-parser": "15.0.0",
|
||||||
@ -205,7 +205,7 @@
|
|||||||
"vue-cropperjs": "2.2.0",
|
"vue-cropperjs": "2.2.0",
|
||||||
"vue-js-modal": "1.3.13",
|
"vue-js-modal": "1.3.13",
|
||||||
"vue-json-tree-view": "2.1.4",
|
"vue-json-tree-view": "2.1.4",
|
||||||
"vue-loader": "15.1.0",
|
"vue-loader": "15.2.1",
|
||||||
"vue-material": "^1.0.0-beta-10.2",
|
"vue-material": "^1.0.0-beta-10.2",
|
||||||
"vue-router": "3.0.1",
|
"vue-router": "3.0.1",
|
||||||
"vue-template-compiler": "2.5.16",
|
"vue-template-compiler": "2.5.16",
|
||||||
@ -214,10 +214,10 @@
|
|||||||
"vuex-persistedstate": "^2.5.4",
|
"vuex-persistedstate": "^2.5.4",
|
||||||
"web-push": "3.3.1",
|
"web-push": "3.3.1",
|
||||||
"webfinger.js": "2.6.6",
|
"webfinger.js": "2.6.6",
|
||||||
"webpack": "4.8.3",
|
"webpack": "4.9.1",
|
||||||
"webpack-cli": "2.1.3",
|
"webpack-cli": "2.1.4",
|
||||||
"websocket": "1.0.26",
|
"websocket": "1.0.26",
|
||||||
"ws": "5.1.1",
|
"ws": "5.2.0",
|
||||||
"xev": "2.0.0"
|
"xev": "2.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="index">
|
<div class="index">
|
||||||
<main v-if="os.isSignedIn">
|
<main v-if="$store.getters.isSignedIn">
|
||||||
<p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p>
|
||||||
<x-form
|
<x-form
|
||||||
ref="form"
|
ref="form"
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<p>セッションが存在しません。</p>
|
<p>セッションが存在しません。</p>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<main class="signin" v-if="!os.isSignedIn">
|
<main class="signin" v-if="!$store.getters.isSignedIn">
|
||||||
<h1>サインインしてください</h1>
|
<h1>サインインしてください</h1>
|
||||||
<mk-signin/>
|
<mk-signin/>
|
||||||
</main>
|
</main>
|
||||||
@ -51,7 +51,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if (!this.$root.$data.os.isSignedIn) return;
|
if (!this.$root.$data.$store.getters.isSignedIn) return;
|
||||||
|
|
||||||
// Fetch session
|
// Fetch session
|
||||||
(this as any).api('auth/session/show', {
|
(this as any).api('auth/session/show', {
|
||||||
|
@ -18,6 +18,14 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#region Load settings
|
||||||
|
let settings = null;
|
||||||
|
const vuex = localStorage.getItem('vuex');
|
||||||
|
if (vuex) {
|
||||||
|
settings = JSON.parse(vuex);
|
||||||
|
}
|
||||||
|
//#endregion
|
||||||
|
|
||||||
// Get the current url information
|
// Get the current url information
|
||||||
const url = new URL(location.href);
|
const url = new URL(location.href);
|
||||||
|
|
||||||
@ -35,14 +43,9 @@
|
|||||||
// The default language is English
|
// The default language is English
|
||||||
if (!LANGS.includes(lang)) lang = 'en';
|
if (!LANGS.includes(lang)) lang = 'en';
|
||||||
|
|
||||||
const vuex = localStorage.getItem('vuex');
|
if (settings) {
|
||||||
if (vuex) {
|
if (settings.device.lang) lang = settings.device.lang;
|
||||||
const data = JSON.parse(vuex);
|
|
||||||
if (data.device.lang) lang = data.device.lang;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const storedLang = localStorage.getItem('lang');
|
|
||||||
if (storedLang) lang = storedLang;
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
// Detect the user agent
|
// Detect the user agent
|
||||||
@ -71,8 +74,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Dark/Light
|
// Dark/Light
|
||||||
if (localStorage.getItem('darkmode') == 'true') {
|
if (settings) {
|
||||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
if (settings.device.darkmode) {
|
||||||
|
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Script version
|
// Script version
|
||||||
|
@ -24,10 +24,8 @@ export class HomeStream extends Stream {
|
|||||||
if (os.debug) {
|
if (os.debug) {
|
||||||
console.log('I updated:', i);
|
console.log('I updated:', i);
|
||||||
}
|
}
|
||||||
merge(me, i);
|
|
||||||
|
|
||||||
// キャッシュ更新
|
os.store.dispatch('mergeMe', i);
|
||||||
os.bakeMe();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.on('clientSettingUpdated', x => {
|
this.on('clientSettingUpdated', x => {
|
||||||
|
@ -26,9 +26,13 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
style(): any {
|
style(): any {
|
||||||
return {
|
return {
|
||||||
backgroundColor: this.user.avatarColor && this.user.avatarColor.length == 3 ? `rgb(${ this.user.avatarColor.join(',') })` : null,
|
backgroundColor: this.lightmode
|
||||||
|
? `rgb(${ this.user.avatarColor.slice(0, 3).join(',') })`
|
||||||
|
: this.user.avatarColor && this.user.avatarColor.length == 3
|
||||||
|
? `rgb(${ this.user.avatarColor.join(',') })`
|
||||||
|
: null,
|
||||||
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl }?thumbnail)`,
|
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl }?thumbnail)`,
|
||||||
borderRadius: (this as any).clientSettings.circleIcons ? '100%' : null
|
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Oops!';
|
document.title = 'Oops!';
|
||||||
document.documentElement.style.background = '#f8f8f8';
|
document.documentElement.style.setProperty('background', '#f8f8f8', 'important');
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
reload() {
|
reload() {
|
||||||
|
@ -197,7 +197,7 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.mk-messaging-form
|
root(isDark)
|
||||||
> textarea
|
> textarea
|
||||||
cursor auto
|
cursor auto
|
||||||
display block
|
display block
|
||||||
@ -209,10 +209,10 @@ export default Vue.extend({
|
|||||||
padding 8px
|
padding 8px
|
||||||
resize none
|
resize none
|
||||||
font-size 1em
|
font-size 1em
|
||||||
color #000
|
color isDark ? #fff : #000
|
||||||
outline none
|
outline none
|
||||||
border none
|
border none
|
||||||
border-top solid 1px #eee
|
border-top solid 1px isDark ? #4b5056 : #eee
|
||||||
border-radius 0
|
border-radius 0
|
||||||
box-shadow none
|
box-shadow none
|
||||||
background transparent
|
background transparent
|
||||||
@ -302,4 +302,10 @@ export default Vue.extend({
|
|||||||
input[type=file]
|
input[type=file]
|
||||||
display none
|
display none
|
||||||
|
|
||||||
|
.mk-messaging-form[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-messaging-form:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
|
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
|
||||||
</button>
|
</button>
|
||||||
<div class="content" v-if="!message.isDeleted">
|
<div class="content" v-if="!message.isDeleted">
|
||||||
<mk-note-html class="text" v-if="message.text" ref="text" :text="message.text" :i="os.i"/>
|
<mk-note-html class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
||||||
<div class="file" v-if="message.file">
|
<div class="file" v-if="message.file">
|
||||||
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
||||||
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/>
|
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/>
|
||||||
@ -42,7 +42,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
isMe(): boolean {
|
isMe(): boolean {
|
||||||
return this.message.userId == (this as any).os.i.id;
|
return this.message.userId == this.$store.state.i.id;
|
||||||
},
|
},
|
||||||
urls(): string[] {
|
urls(): string[] {
|
||||||
if (this.message.text) {
|
if (this.message.text) {
|
||||||
@ -59,8 +59,10 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.message
|
@import '~const.styl'
|
||||||
$me-balloon-color = #23A7B6
|
|
||||||
|
root(isDark)
|
||||||
|
$me-balloon-color = $theme-color
|
||||||
|
|
||||||
padding 10px 12px 10px 12px
|
padding 10px 12px 10px 12px
|
||||||
background-color transparent
|
background-color transparent
|
||||||
@ -126,7 +128,7 @@ export default Vue.extend({
|
|||||||
bottom -4px
|
bottom -4px
|
||||||
left -12px
|
left -12px
|
||||||
margin 0
|
margin 0
|
||||||
color rgba(#000, 0.5)
|
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
|
||||||
font-size 11px
|
font-size 11px
|
||||||
|
|
||||||
> .content
|
> .content
|
||||||
@ -187,7 +189,7 @@ export default Vue.extend({
|
|||||||
display block
|
display block
|
||||||
margin 2px 0 0 0
|
margin 2px 0 0 0
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color rgba(#000, 0.4)
|
color isDark ? rgba(#fff, 0.4) : rgba(#000, 0.4)
|
||||||
|
|
||||||
> [data-fa]
|
> [data-fa]
|
||||||
margin-left 4px
|
margin-left 4px
|
||||||
@ -200,8 +202,9 @@ export default Vue.extend({
|
|||||||
padding-left 66px
|
padding-left 66px
|
||||||
|
|
||||||
> .balloon
|
> .balloon
|
||||||
|
$color = isDark ? #2d3338 : #eee
|
||||||
float left
|
float left
|
||||||
background #eee
|
background $color
|
||||||
|
|
||||||
&[data-no-text]
|
&[data-no-text]
|
||||||
background transparent
|
background transparent
|
||||||
@ -209,10 +212,15 @@ export default Vue.extend({
|
|||||||
&:not([data-no-text]):before
|
&:not([data-no-text]):before
|
||||||
left -14px
|
left -14px
|
||||||
border-top solid 8px transparent
|
border-top solid 8px transparent
|
||||||
border-right solid 8px #eee
|
border-right solid 8px $color
|
||||||
border-bottom solid 8px transparent
|
border-bottom solid 8px transparent
|
||||||
border-left solid 8px transparent
|
border-left solid 8px transparent
|
||||||
|
|
||||||
|
> .content
|
||||||
|
> .text
|
||||||
|
if isDark
|
||||||
|
color #fff
|
||||||
|
|
||||||
> footer
|
> footer
|
||||||
text-align left
|
text-align left
|
||||||
|
|
||||||
@ -241,7 +249,7 @@ export default Vue.extend({
|
|||||||
> .content
|
> .content
|
||||||
|
|
||||||
> p.is-deleted
|
> p.is-deleted
|
||||||
color rgba(255, 255, 255, 0.5)
|
color rgba(#fff, 0.5)
|
||||||
|
|
||||||
> .text >>>
|
> .text >>>
|
||||||
&, *
|
&, *
|
||||||
@ -254,4 +262,10 @@ export default Vue.extend({
|
|||||||
> .baloon
|
> .baloon
|
||||||
opacity 0.5
|
opacity 0.5
|
||||||
|
|
||||||
|
.message[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.message:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -18,7 +18,11 @@
|
|||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<div ref="notifications" class="notifications"></div>
|
<transition name="fade">
|
||||||
|
<div class="new-message" v-show="showIndicator">
|
||||||
|
<button @click="onIndicatorClick">%fa:arrow-circle-down%%i18n:@new-message%</button>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
<x-form :user="user" ref="form"/>
|
<x-form :user="user" ref="form"/>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
@ -45,7 +49,9 @@ export default Vue.extend({
|
|||||||
fetchingMoreMessages: false,
|
fetchingMoreMessages: false,
|
||||||
messages: [],
|
messages: [],
|
||||||
existMoreMessages: false,
|
existMoreMessages: false,
|
||||||
connection: null
|
connection: null,
|
||||||
|
showIndicator: false,
|
||||||
|
timer: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -66,7 +72,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.connection = new MessagingStream((this as any).os, (this as any).os.i, this.user.id);
|
this.connection = new MessagingStream((this as any).os, this.$store.state.i, this.user.id);
|
||||||
|
|
||||||
this.connection.on('message', this.onMessage);
|
this.connection.on('message', this.onMessage);
|
||||||
this.connection.on('read', this.onRead);
|
this.connection.on('read', this.onRead);
|
||||||
@ -158,7 +164,7 @@ export default Vue.extend({
|
|||||||
const isBottom = this.isBottom();
|
const isBottom = this.isBottom();
|
||||||
|
|
||||||
this.messages.push(message);
|
this.messages.push(message);
|
||||||
if (message.userId != (this as any).os.i.id && !document.hidden) {
|
if (message.userId != this.$store.state.i.id && !document.hidden) {
|
||||||
this.connection.send({
|
this.connection.send({
|
||||||
type: 'read',
|
type: 'read',
|
||||||
id: message.id
|
id: message.id
|
||||||
@ -170,9 +176,9 @@ export default Vue.extend({
|
|||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.scrollToBottom();
|
this.scrollToBottom();
|
||||||
});
|
});
|
||||||
} else if (message.userId != (this as any).os.i.id) {
|
} else if (message.userId != this.$store.state.i.id) {
|
||||||
// Notify
|
// Notify
|
||||||
this.notify('%i18n:@new-message%');
|
this.notifyNewMessage();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -205,25 +211,25 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
notify(message) {
|
onIndicatorClick() {
|
||||||
const n = document.createElement('p') as any;
|
this.showIndicator = false;
|
||||||
n.innerHTML = '%fa:arrow-circle-down%' + message;
|
this.scrollToBottom();
|
||||||
n.onclick = () => {
|
},
|
||||||
this.scrollToBottom();
|
|
||||||
n.parentNode.removeChild(n);
|
|
||||||
};
|
|
||||||
(this.$refs.notifications as any).appendChild(n);
|
|
||||||
|
|
||||||
setTimeout(() => {
|
notifyNewMessage() {
|
||||||
n.style.opacity = 0;
|
this.showIndicator = true;
|
||||||
setTimeout(() => n.parentNode.removeChild(n), 1000);
|
|
||||||
|
if (this.timer) clearTimeout(this.timer);
|
||||||
|
|
||||||
|
this.timer = setTimeout(() => {
|
||||||
|
this.showIndicator = false;
|
||||||
}, 4000);
|
}, 4000);
|
||||||
},
|
},
|
||||||
|
|
||||||
onVisibilitychange() {
|
onVisibilitychange() {
|
||||||
if (document.hidden) return;
|
if (document.hidden) return;
|
||||||
this.messages.forEach(message => {
|
this.messages.forEach(message => {
|
||||||
if (message.userId !== (this as any).os.i.id && !message.isRead) {
|
if (message.userId !== this.$store.state.i.id && !message.isRead) {
|
||||||
this.connection.send({
|
this.connection.send({
|
||||||
type: 'read',
|
type: 'read',
|
||||||
id: message.id
|
id: message.id
|
||||||
@ -238,11 +244,12 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.mk-messaging-room
|
root(isDark)
|
||||||
display flex
|
display flex
|
||||||
flex 1
|
flex 1
|
||||||
flex-direction column
|
flex-direction column
|
||||||
height 100%
|
height 100%
|
||||||
|
background isDark ? #191b22 : #fff
|
||||||
|
|
||||||
> .stream
|
> .stream
|
||||||
width 100%
|
width 100%
|
||||||
@ -256,7 +263,7 @@ export default Vue.extend({
|
|||||||
padding 16px 8px 8px 8px
|
padding 16px 8px 8px 8px
|
||||||
text-align center
|
text-align center
|
||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
color rgba(#000, 0.4)
|
color rgba(isDark ? #fff : #000, 0.4)
|
||||||
|
|
||||||
[data-fa]
|
[data-fa]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
@ -267,7 +274,7 @@ export default Vue.extend({
|
|||||||
padding 16px 8px 8px 8px
|
padding 16px 8px 8px 8px
|
||||||
text-align center
|
text-align center
|
||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
color rgba(#000, 0.4)
|
color rgba(isDark ? #fff : #000, 0.4)
|
||||||
|
|
||||||
[data-fa]
|
[data-fa]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
@ -278,7 +285,7 @@ export default Vue.extend({
|
|||||||
padding 16px
|
padding 16px
|
||||||
text-align center
|
text-align center
|
||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
color rgba(#000, 0.4)
|
color rgba(isDark ? #fff : #000, 0.4)
|
||||||
|
|
||||||
[data-fa]
|
[data-fa]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
@ -322,7 +329,7 @@ export default Vue.extend({
|
|||||||
left 0
|
left 0
|
||||||
right 0
|
right 0
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
background rgba(#000, 0.1)
|
background rgba(isDark ? #fff : #000, 0.1)
|
||||||
|
|
||||||
> span
|
> span
|
||||||
display inline-block
|
display inline-block
|
||||||
@ -330,8 +337,8 @@ export default Vue.extend({
|
|||||||
padding 0 16px
|
padding 0 16px
|
||||||
//font-weight bold
|
//font-weight bold
|
||||||
line-height 32px
|
line-height 32px
|
||||||
color rgba(#000, 0.3)
|
color rgba(isDark ? #fff : #000, 0.3)
|
||||||
background #fff
|
background isDark ? #191b22 : #fff
|
||||||
|
|
||||||
> footer
|
> footer
|
||||||
position -webkit-sticky
|
position -webkit-sticky
|
||||||
@ -342,30 +349,32 @@ export default Vue.extend({
|
|||||||
max-width 600px
|
max-width 600px
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
padding 0
|
padding 0
|
||||||
background rgba(255, 255, 255, 0.95)
|
background rgba(isDark ? #282c37 : #fff, 0.95)
|
||||||
background-clip content-box
|
background-clip content-box
|
||||||
|
|
||||||
> .notifications
|
> .new-message
|
||||||
position absolute
|
position absolute
|
||||||
top -48px
|
top -48px
|
||||||
width 100%
|
width 100%
|
||||||
padding 8px 0
|
padding 8px 0
|
||||||
text-align center
|
text-align center
|
||||||
|
|
||||||
&:empty
|
> button
|
||||||
display none
|
|
||||||
|
|
||||||
> p
|
|
||||||
display inline-block
|
display inline-block
|
||||||
margin 0
|
margin 0
|
||||||
padding 0 12px 0 28px
|
padding 0 12px 0 30px
|
||||||
cursor pointer
|
cursor pointer
|
||||||
line-height 32px
|
line-height 32px
|
||||||
font-size 12px
|
font-size 12px
|
||||||
color $theme-color-foreground
|
color $theme-color-foreground
|
||||||
background $theme-color
|
background $theme-color
|
||||||
border-radius 16px
|
border-radius 16px
|
||||||
transition opacity 1s ease
|
|
||||||
|
&:hover
|
||||||
|
background lighten($theme-color, 10%)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background darken($theme-color, 10%)
|
||||||
|
|
||||||
> [data-fa]
|
> [data-fa]
|
||||||
position absolute
|
position absolute
|
||||||
@ -374,4 +383,17 @@ export default Vue.extend({
|
|||||||
line-height 32px
|
line-height 32px
|
||||||
font-size 16px
|
font-size 16px
|
||||||
|
|
||||||
|
.fade-enter-active, .fade-leave-active
|
||||||
|
transition opacity 0.1s
|
||||||
|
|
||||||
|
.fade-enter, .fade-leave-to
|
||||||
|
transition opacity 0.5s
|
||||||
|
opacity 0
|
||||||
|
|
||||||
|
.mk-messaging-room[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-messaging-room:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -95,7 +95,7 @@ export default Vue.extend({
|
|||||||
methods: {
|
methods: {
|
||||||
getAcct,
|
getAcct,
|
||||||
isMe(message) {
|
isMe(message) {
|
||||||
return message.userId == (this as any).os.i.id;
|
return message.userId == this.$store.state.i.id;
|
||||||
},
|
},
|
||||||
onMessage(message) {
|
onMessage(message) {
|
||||||
this.messages = this.messages.filter(m => !(
|
this.messages = this.messages.filter(m => !(
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||||
<div class="popover" :class="{ compact }" ref="popover">
|
<div class="popover" :class="{ compact }" ref="popover">
|
||||||
<button @click="favorite">%i18n:@favorite%</button>
|
<button @click="favorite">%i18n:@favorite%</button>
|
||||||
<button v-if="note.userId == os.i.id" @click="pin">%i18n:@pin%</button>
|
<button v-if="note.userId == $store.state.i.id" @click="pin">%i18n:@pin%</button>
|
||||||
<a v-if="note.uri" :href="note.uri" target="_blank">%i18n:@remote%</a>
|
<a v-if="note.uri" :href="note.uri" target="_blank">%i18n:@remote%</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -61,13 +61,13 @@ export default Vue.extend({
|
|||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
iAmPlayer(): boolean {
|
iAmPlayer(): boolean {
|
||||||
if (!(this as any).os.isSignedIn) return false;
|
if (!this.$store.getters.isSignedIn) return false;
|
||||||
return this.game.user1Id == (this as any).os.i.id || this.game.user2Id == (this as any).os.i.id;
|
return this.game.user1Id == this.$store.state.i.id || this.game.user2Id == this.$store.state.i.id;
|
||||||
},
|
},
|
||||||
myColor(): Color {
|
myColor(): Color {
|
||||||
if (!this.iAmPlayer) return null;
|
if (!this.iAmPlayer) return null;
|
||||||
if (this.game.user1Id == (this as any).os.i.id && this.game.black == 1) return true;
|
if (this.game.user1Id == this.$store.state.i.id && this.game.black == 1) return true;
|
||||||
if (this.game.user2Id == (this as any).os.i.id && this.game.black == 2) return true;
|
if (this.game.user2Id == this.$store.state.i.id && this.game.black == 2) return true;
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
opColor(): Color {
|
opColor(): Color {
|
||||||
@ -91,7 +91,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
isMyTurn(): boolean {
|
isMyTurn(): boolean {
|
||||||
if (this.turnUser == null) return null;
|
if (this.turnUser == null) return null;
|
||||||
return this.turnUser.id == (this as any).os.i.id;
|
return this.turnUser.id == this.$store.state.i.id;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.g = this.game;
|
this.g = this.game;
|
||||||
this.connection = new OthelloGameStream((this as any).os, (this as any).os.i, this.game);
|
this.connection = new OthelloGameStream((this as any).os, this.$store.state.i, this.game);
|
||||||
this.connection.on('started', this.onStarted);
|
this.connection.on('started', this.onStarted);
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
|
@ -116,13 +116,13 @@ export default Vue.extend({
|
|||||||
return categories.filter((item, pos) => categories.indexOf(item) == pos);
|
return categories.filter((item, pos) => categories.indexOf(item) == pos);
|
||||||
},
|
},
|
||||||
isAccepted(): boolean {
|
isAccepted(): boolean {
|
||||||
if (this.game.user1Id == (this as any).os.i.id && this.game.user1Accepted) return true;
|
if (this.game.user1Id == this.$store.state.i.id && this.game.user1Accepted) return true;
|
||||||
if (this.game.user2Id == (this as any).os.i.id && this.game.user2Accepted) return true;
|
if (this.game.user2Id == this.$store.state.i.id && this.game.user2Accepted) return true;
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
isOpAccepted(): boolean {
|
isOpAccepted(): boolean {
|
||||||
if (this.game.user1Id != (this as any).os.i.id && this.game.user1Accepted) return true;
|
if (this.game.user1Id != this.$store.state.i.id && this.game.user1Accepted) return true;
|
||||||
if (this.game.user2Id != (this as any).os.i.id && this.game.user2Accepted) return true;
|
if (this.game.user2Id != this.$store.state.i.id && this.game.user2Accepted) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -133,8 +133,8 @@ export default Vue.extend({
|
|||||||
this.connection.on('init-form', this.onInitForm);
|
this.connection.on('init-form', this.onInitForm);
|
||||||
this.connection.on('message', this.onMessage);
|
this.connection.on('message', this.onMessage);
|
||||||
|
|
||||||
if (this.game.user1Id != (this as any).os.i.id && this.game.settings.form1) this.form = this.game.settings.form1;
|
if (this.game.user1Id != this.$store.state.i.id && this.game.settings.form1) this.form = this.game.settings.form1;
|
||||||
if (this.game.user2Id != (this as any).os.i.id && this.game.settings.form2) this.form = this.game.settings.form2;
|
if (this.game.user2Id != this.$store.state.i.id && this.game.settings.form2) this.form = this.game.settings.form2;
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
@ -185,12 +185,12 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onInitForm(x) {
|
onInitForm(x) {
|
||||||
if (x.userId == (this as any).os.i.id) return;
|
if (x.userId == this.$store.state.i.id) return;
|
||||||
this.form = x.form;
|
this.form = x.form;
|
||||||
},
|
},
|
||||||
|
|
||||||
onMessage(x) {
|
onMessage(x) {
|
||||||
if (x.userId == (this as any).os.i.id) return;
|
if (x.userId == this.$store.state.i.id) return;
|
||||||
this.messages.unshift(x.message);
|
this.messages.unshift(x.message);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-twitter-setting">
|
<div class="mk-twitter-setting">
|
||||||
<p>%i18n:@description%<a :href="`${docsUrl}/link-to-twitter`" target="_blank">%i18n:@detail%</a></p>
|
<p>%i18n:@description%<a :href="`${docsUrl}/link-to-twitter`" target="_blank">%i18n:@detail%</a></p>
|
||||||
<p class="account" v-if="os.i.twitter" :title="`Twitter ID: ${os.i.twitter.userId}`">%i18n:@connected-to%: <a :href="`https://twitter.com/${os.i.twitter.screenName}`" target="_blank">@{{ os.i.twitter.screenName }}</a></p>
|
<p class="account" v-if="$store.state.i.twitter" :title="`Twitter ID: ${$store.state.i.twitter.userId}`">%i18n:@connected-to%: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
|
||||||
<p>
|
<p>
|
||||||
<a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ os.i.twitter ? '%i18n:@reconnect%' : '%i18n:@connect%' }}</a>
|
<a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ $store.state.i.twitter ? '%i18n:@reconnect%' : '%i18n:@connect%' }}</a>
|
||||||
<span v-if="os.i.twitter"> or </span>
|
<span v-if="$store.state.i.twitter"> or </span>
|
||||||
<a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="os.i.twitter" @click.prevent="disconnect">%i18n:@disconnect%</a>
|
<a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="$store.state.i.twitter" @click.prevent="disconnect">%i18n:@disconnect%</a>
|
||||||
</p>
|
</p>
|
||||||
<p class="id" v-if="os.i.twitter">Twitter ID: {{ os.i.twitter.userId }}</p>
|
<p class="id" v-if="$store.state.i.twitter">Twitter ID: {{ $store.state.i.twitter.userId }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -24,8 +24,8 @@ export default Vue.extend({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$watch('os.i', () => {
|
this.$watch('$store.state.i', () => {
|
||||||
if ((this as any).os.i.twitter) {
|
if (this.$store.state.i.twitter) {
|
||||||
if (this.form) this.form.close();
|
if (this.form) this.form.close();
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
@ -50,7 +50,7 @@ export default Vue.extend({
|
|||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(file);
|
||||||
|
|
||||||
const data = new FormData();
|
const data = new FormData();
|
||||||
data.append('i', (this as any).os.i.token);
|
data.append('i', this.$store.state.i.token);
|
||||||
data.append('file', file);
|
data.append('file', file);
|
||||||
|
|
||||||
if (folder) data.append('folderId', folder);
|
if (folder) data.append('folderId', folder);
|
||||||
|
@ -37,6 +37,7 @@ export default Vue.extend({
|
|||||||
fetch(cb?) {
|
fetch(cb?) {
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
(this as any).api('notes', {
|
(this as any).api('notes', {
|
||||||
|
local: true,
|
||||||
reply: false,
|
reply: false,
|
||||||
renote: false,
|
renote: false,
|
||||||
media: false,
|
media: false,
|
||||||
@ -52,15 +53,15 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mk-welcome-timeline
|
root(isDark)
|
||||||
background #fff
|
background isDark ? #282C37 : #fff
|
||||||
|
|
||||||
> div
|
> div
|
||||||
padding 16px
|
padding 16px
|
||||||
overflow-wrap break-word
|
overflow-wrap break-word
|
||||||
font-size .9em
|
font-size .9em
|
||||||
color #4C4C4C
|
color isDark ? #fff : #4C4C4C
|
||||||
border-bottom 1px solid rgba(#000, 0.05)
|
border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05)
|
||||||
|
|
||||||
&:after
|
&:after
|
||||||
content ""
|
content ""
|
||||||
@ -95,17 +96,23 @@ export default Vue.extend({
|
|||||||
overflow hidden
|
overflow hidden
|
||||||
font-weight bold
|
font-weight bold
|
||||||
text-overflow ellipsis
|
text-overflow ellipsis
|
||||||
color #627079
|
color isDark ? #fff : #627079
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
color #ccc
|
color isDark ? #606984 : #ccc
|
||||||
|
|
||||||
> .info
|
> .info
|
||||||
margin-left auto
|
margin-left auto
|
||||||
font-size 0.9em
|
font-size 0.9em
|
||||||
|
|
||||||
> .created-at
|
> .created-at
|
||||||
color #c0c0c0
|
color isDark ? #606984 : #c0c0c0
|
||||||
|
|
||||||
|
.mk-welcome-timeline[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-welcome-timeline:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
|
import OS from '../../mios';
|
||||||
import { url } from '../../config';
|
import { url } from '../../config';
|
||||||
import MkChooseFileFromDriveWindow from '../views/components/choose-file-from-drive-window.vue';
|
import MkChooseFileFromDriveWindow from '../views/components/choose-file-from-drive-window.vue';
|
||||||
|
|
||||||
export default function(opts) {
|
export default (os: OS) => opts => {
|
||||||
return new Promise((res, rej) => {
|
return new Promise((res, rej) => {
|
||||||
const o = opts || {};
|
const o = opts || {};
|
||||||
|
|
||||||
if (document.body.clientWidth > 800) {
|
if (document.body.clientWidth > 800) {
|
||||||
const w = new MkChooseFileFromDriveWindow({
|
const w = os.new(MkChooseFileFromDriveWindow, {
|
||||||
propsData: {
|
title: o.title,
|
||||||
title: o.title,
|
multiple: o.multiple,
|
||||||
multiple: o.multiple,
|
initFolder: o.currentFolder
|
||||||
initFolder: o.currentFolder
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
w.$once('selected', file => {
|
w.$once('selected', file => {
|
||||||
res(file);
|
res(file);
|
||||||
});
|
});
|
||||||
@ -27,4 +26,4 @@ export default function(opts) {
|
|||||||
'height=500, width=800');
|
'height=500, width=800');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
|
import OS from '../../mios';
|
||||||
import MkChooseFolderFromDriveWindow from '../views/components/choose-folder-from-drive-window.vue';
|
import MkChooseFolderFromDriveWindow from '../views/components/choose-folder-from-drive-window.vue';
|
||||||
|
|
||||||
export default function(opts) {
|
export default (os: OS) => opts => {
|
||||||
return new Promise((res, rej) => {
|
return new Promise((res, rej) => {
|
||||||
const o = opts || {};
|
const o = opts || {};
|
||||||
const w = new MkChooseFolderFromDriveWindow({
|
const w = os.new(MkChooseFolderFromDriveWindow, {
|
||||||
propsData: {
|
title: o.title,
|
||||||
title: o.title,
|
initFolder: o.currentFolder
|
||||||
initFolder: o.currentFolder
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
w.$once('selected', folder => {
|
w.$once('selected', folder => {
|
||||||
res(folder);
|
res(folder);
|
||||||
});
|
});
|
||||||
document.body.appendChild(w.$el);
|
document.body.appendChild(w.$el);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
|
import OS from '../../mios';
|
||||||
import Ctx from '../views/components/context-menu.vue';
|
import Ctx from '../views/components/context-menu.vue';
|
||||||
|
|
||||||
export default function(e, menu, opts?) {
|
export default (os: OS) => (e, menu, opts?) => {
|
||||||
const o = opts || {};
|
const o = opts || {};
|
||||||
const vm = new Ctx({
|
const vm = os.new(Ctx, {
|
||||||
propsData: {
|
menu,
|
||||||
menu,
|
x: e.pageX - window.pageXOffset,
|
||||||
x: e.pageX - window.pageXOffset,
|
y: e.pageY - window.pageYOffset,
|
||||||
y: e.pageY - window.pageYOffset,
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
vm.$once('closed', () => {
|
vm.$once('closed', () => {
|
||||||
if (o.closed) o.closed();
|
if (o.closed) o.closed();
|
||||||
});
|
});
|
||||||
document.body.appendChild(vm.$el);
|
document.body.appendChild(vm.$el);
|
||||||
}
|
};
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
|
import OS from '../../mios';
|
||||||
import Dialog from '../views/components/dialog.vue';
|
import Dialog from '../views/components/dialog.vue';
|
||||||
|
|
||||||
export default function(opts) {
|
export default (os: OS) => opts => {
|
||||||
return new Promise<string>((res, rej) => {
|
return new Promise<string>((res, rej) => {
|
||||||
const o = opts || {};
|
const o = opts || {};
|
||||||
const d = new Dialog({
|
const d = os.new(Dialog, {
|
||||||
propsData: {
|
title: o.title,
|
||||||
title: o.title,
|
text: o.text,
|
||||||
text: o.text,
|
modal: o.modal,
|
||||||
modal: o.modal,
|
buttons: o.actions
|
||||||
buttons: o.actions
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
d.$once('clicked', id => {
|
d.$once('clicked', id => {
|
||||||
res(id);
|
res(id);
|
||||||
});
|
});
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
|
import OS from '../../mios';
|
||||||
import InputDialog from '../views/components/input-dialog.vue';
|
import InputDialog from '../views/components/input-dialog.vue';
|
||||||
|
|
||||||
export default function(opts) {
|
export default (os: OS) => opts => {
|
||||||
return new Promise<string>((res, rej) => {
|
return new Promise<string>((res, rej) => {
|
||||||
const o = opts || {};
|
const o = opts || {};
|
||||||
const d = new InputDialog({
|
const d = os.new(InputDialog, {
|
||||||
propsData: {
|
title: o.title,
|
||||||
title: o.title,
|
placeholder: o.placeholder,
|
||||||
placeholder: o.placeholder,
|
default: o.default,
|
||||||
default: o.default,
|
type: o.type || 'text',
|
||||||
type: o.type || 'text',
|
allowEmpty: o.allowEmpty
|
||||||
allowEmpty: o.allowEmpty
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
d.$once('done', text => {
|
d.$once('done', text => {
|
||||||
res(text);
|
res(text);
|
||||||
});
|
});
|
||||||
document.body.appendChild(d.$el);
|
document.body.appendChild(d.$el);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
|
import OS from '../../mios';
|
||||||
import Notification from '../views/components/ui-notification.vue';
|
import Notification from '../views/components/ui-notification.vue';
|
||||||
|
|
||||||
export default function(message) {
|
export default (os: OS) => message => {
|
||||||
const vm = new Notification({
|
const vm = os.new(Notification, {
|
||||||
propsData: {
|
message
|
||||||
message
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
document.body.appendChild(vm.$el);
|
document.body.appendChild(vm.$el);
|
||||||
}
|
};
|
||||||
|
@ -1,21 +1,18 @@
|
|||||||
|
import OS from '../../mios';
|
||||||
import PostFormWindow from '../views/components/post-form-window.vue';
|
import PostFormWindow from '../views/components/post-form-window.vue';
|
||||||
import RenoteFormWindow from '../views/components/renote-form-window.vue';
|
import RenoteFormWindow from '../views/components/renote-form-window.vue';
|
||||||
|
|
||||||
export default function(opts) {
|
export default (os: OS) => opts => {
|
||||||
const o = opts || {};
|
const o = opts || {};
|
||||||
if (o.renote) {
|
if (o.renote) {
|
||||||
const vm = new RenoteFormWindow({
|
const vm = os.new(RenoteFormWindow, {
|
||||||
propsData: {
|
renote: o.renote
|
||||||
renote: o.renote
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
document.body.appendChild(vm.$el);
|
document.body.appendChild(vm.$el);
|
||||||
} else {
|
} else {
|
||||||
const vm = new PostFormWindow({
|
const vm = os.new(PostFormWindow, {
|
||||||
propsData: {
|
reply: o.reply
|
||||||
reply: o.reply
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
document.body.appendChild(vm.$el);
|
document.body.appendChild(vm.$el);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
@ -6,17 +6,15 @@ import ProgressDialog from '../views/components/progress-dialog.vue';
|
|||||||
export default (os: OS) => (cb, file = null) => {
|
export default (os: OS) => (cb, file = null) => {
|
||||||
const fileSelected = file => {
|
const fileSelected = file => {
|
||||||
|
|
||||||
const w = new CropWindow({
|
const w = os.new(CropWindow, {
|
||||||
propsData: {
|
image: file,
|
||||||
image: file,
|
title: 'アバターとして表示する部分を選択',
|
||||||
title: 'アバターとして表示する部分を選択',
|
aspectRatio: 1 / 1
|
||||||
aspectRatio: 1 / 1
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
|
|
||||||
w.$once('cropped', blob => {
|
w.$once('cropped', blob => {
|
||||||
const data = new FormData();
|
const data = new FormData();
|
||||||
data.append('i', os.i.token);
|
data.append('i', os.store.state.i.token);
|
||||||
data.append('file', blob, file.name + '.cropped.png');
|
data.append('file', blob, file.name + '.cropped.png');
|
||||||
|
|
||||||
os.api('drive/folders/find', {
|
os.api('drive/folders/find', {
|
||||||
@ -42,11 +40,9 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const upload = (data, folder) => {
|
const upload = (data, folder) => {
|
||||||
const dialog = new ProgressDialog({
|
const dialog = os.new(ProgressDialog, {
|
||||||
propsData: {
|
title: '新しいアバターをアップロードしています'
|
||||||
title: '新しいアバターをアップロードしています'
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
document.body.appendChild(dialog.$el);
|
document.body.appendChild(dialog.$el);
|
||||||
|
|
||||||
if (folder) data.append('folderId', folder.id);
|
if (folder) data.append('folderId', folder.id);
|
||||||
@ -70,8 +66,14 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
os.api('i/update', {
|
os.api('i/update', {
|
||||||
avatarId: file.id
|
avatarId: file.id
|
||||||
}).then(i => {
|
}).then(i => {
|
||||||
os.i.avatarId = i.avatarId;
|
os.store.commit('updateIKeyValue', {
|
||||||
os.i.avatarUrl = i.avatarUrl;
|
key: 'avatarId',
|
||||||
|
value: i.avatarId
|
||||||
|
});
|
||||||
|
os.store.commit('updateIKeyValue', {
|
||||||
|
key: 'avatarUrl',
|
||||||
|
value: i.avatarUrl
|
||||||
|
});
|
||||||
|
|
||||||
os.apis.dialog({
|
os.apis.dialog({
|
||||||
title: '%fa:info-circle%アバターを更新しました',
|
title: '%fa:info-circle%アバターを更新しました',
|
||||||
|
@ -6,17 +6,15 @@ import ProgressDialog from '../views/components/progress-dialog.vue';
|
|||||||
export default (os: OS) => {
|
export default (os: OS) => {
|
||||||
|
|
||||||
const cropImage = file => new Promise((resolve, reject) => {
|
const cropImage = file => new Promise((resolve, reject) => {
|
||||||
const w = new CropWindow({
|
const w = os.new(CropWindow, {
|
||||||
propsData: {
|
image: file,
|
||||||
image: file,
|
title: 'バナーとして表示する部分を選択',
|
||||||
title: 'バナーとして表示する部分を選択',
|
aspectRatio: 16 / 9
|
||||||
aspectRatio: 16 / 9
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
|
|
||||||
w.$once('cropped', blob => {
|
w.$once('cropped', blob => {
|
||||||
const data = new FormData();
|
const data = new FormData();
|
||||||
data.append('i', os.i.token);
|
data.append('i', os.store.state.i.token);
|
||||||
data.append('file', blob, file.name + '.cropped.png');
|
data.append('file', blob, file.name + '.cropped.png');
|
||||||
|
|
||||||
os.api('drive/folders/find', {
|
os.api('drive/folders/find', {
|
||||||
@ -44,11 +42,9 @@ export default (os: OS) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const upload = (data, folder) => new Promise((resolve, reject) => {
|
const upload = (data, folder) => new Promise((resolve, reject) => {
|
||||||
const dialog = new ProgressDialog({
|
const dialog = os.new(ProgressDialog, {
|
||||||
propsData: {
|
title: '新しいバナーをアップロードしています'
|
||||||
title: '新しいバナーをアップロードしています'
|
});
|
||||||
}
|
|
||||||
}).$mount();
|
|
||||||
document.body.appendChild(dialog.$el);
|
document.body.appendChild(dialog.$el);
|
||||||
|
|
||||||
if (folder) data.append('folderId', folder.id);
|
if (folder) data.append('folderId', folder.id);
|
||||||
@ -73,8 +69,14 @@ export default (os: OS) => {
|
|||||||
return os.api('i/update', {
|
return os.api('i/update', {
|
||||||
bannerId: file.id
|
bannerId: file.id
|
||||||
}).then(i => {
|
}).then(i => {
|
||||||
os.i.bannerId = i.bannerId;
|
os.store.commit('updateIKeyValue', {
|
||||||
os.i.bannerUrl = i.bannerUrl;
|
key: 'bannerId',
|
||||||
|
value: i.bannerId
|
||||||
|
});
|
||||||
|
os.store.commit('updateIKeyValue', {
|
||||||
|
key: 'bannerUrl',
|
||||||
|
value: i.bannerUrl
|
||||||
|
});
|
||||||
|
|
||||||
os.apis.dialog({
|
os.apis.dialog({
|
||||||
title: '%fa:info-circle%バナーを更新しました',
|
title: '%fa:info-circle%バナーを更新しました',
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
* Desktop Client
|
* Desktop Client
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import Vue from 'vue';
|
|
||||||
import VueRouter from 'vue-router';
|
import VueRouter from 'vue-router';
|
||||||
|
|
||||||
// Style
|
// Style
|
||||||
@ -68,12 +67,12 @@ init(async (launch) => {
|
|||||||
|
|
||||||
// Launch the app
|
// Launch the app
|
||||||
const [, os] = launch(router, os => ({
|
const [, os] = launch(router, os => ({
|
||||||
chooseDriveFolder,
|
chooseDriveFolder: chooseDriveFolder(os),
|
||||||
chooseDriveFile,
|
chooseDriveFile: chooseDriveFile(os),
|
||||||
dialog,
|
dialog: dialog(os),
|
||||||
input,
|
input: input(os),
|
||||||
post,
|
post: post(os),
|
||||||
notify,
|
notify: notify(os),
|
||||||
updateAvatar: updateAvatar(os),
|
updateAvatar: updateAvatar(os),
|
||||||
updateBanner: updateBanner(os)
|
updateBanner: updateBanner(os)
|
||||||
}));
|
}));
|
||||||
|
@ -138,6 +138,7 @@ root(isDark)
|
|||||||
background isDark ? #282C37 : #fff
|
background isDark ? #282C37 : #fff
|
||||||
border solid 1px rgba(#000, 0.075)
|
border solid 1px rgba(#000, 0.075)
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
|
overflow hidden
|
||||||
|
|
||||||
&[data-melt]
|
&[data-melt]
|
||||||
background transparent !important
|
background transparent !important
|
||||||
@ -151,9 +152,12 @@ root(isDark)
|
|||||||
line-height 42px
|
line-height 42px
|
||||||
font-size 0.9em
|
font-size 0.9em
|
||||||
font-weight bold
|
font-weight bold
|
||||||
color #888
|
color isDark ? #c5ced6 : #888
|
||||||
box-shadow 0 1px rgba(#000, 0.07)
|
box-shadow 0 1px rgba(#000, 0.07)
|
||||||
|
|
||||||
|
if isDark
|
||||||
|
background #313543
|
||||||
|
|
||||||
> [data-fa]
|
> [data-fa]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
|
|
||||||
@ -165,13 +169,13 @@ root(isDark)
|
|||||||
width 42px
|
width 42px
|
||||||
font-size 0.9em
|
font-size 0.9em
|
||||||
line-height 42px
|
line-height 42px
|
||||||
color #ccc
|
color isDark ? #9baec8 : #ccc
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color #aaa
|
color isDark ? #b2c1d5 : #aaa
|
||||||
|
|
||||||
&:active
|
&:active
|
||||||
color #999
|
color isDark ? #b2c1d5 : #999
|
||||||
|
|
||||||
&:first-of-type
|
&:first-of-type
|
||||||
left 0
|
left 0
|
||||||
@ -194,49 +198,49 @@ root(isDark)
|
|||||||
font-size 14px
|
font-size 14px
|
||||||
|
|
||||||
&.weekday
|
&.weekday
|
||||||
color #19a2a9
|
color isDark ? #43d5dc : #19a2a9
|
||||||
|
|
||||||
&[data-is-donichi]
|
&[data-is-donichi]
|
||||||
color #ef95a0
|
color isDark ? #ff6679 : #ef95a0
|
||||||
|
|
||||||
&[data-today]
|
&[data-today]
|
||||||
box-shadow 0 0 0 1px #19a2a9 inset
|
box-shadow 0 0 0 1px isDark ? #43d5dc : #19a2a9 inset
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
|
|
||||||
&[data-is-donichi]
|
&[data-is-donichi]
|
||||||
box-shadow 0 0 0 1px #ef95a0 inset
|
box-shadow 0 0 0 1px isDark ? #ff6679 : #ef95a0 inset
|
||||||
|
|
||||||
&.day
|
&.day
|
||||||
cursor pointer
|
cursor pointer
|
||||||
color #777
|
color isDark ? #c5ced6 : #777
|
||||||
|
|
||||||
> div
|
> div
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
|
|
||||||
&:hover > div
|
&:hover > div
|
||||||
background rgba(#000, 0.025)
|
background rgba(#000, isDark ? 0.1 : 0.025)
|
||||||
|
|
||||||
&:active > div
|
&:active > div
|
||||||
background rgba(#000, 0.05)
|
background rgba(#000, isDark ? 0.2 : 0.05)
|
||||||
|
|
||||||
&[data-is-donichi]
|
&[data-is-donichi]
|
||||||
color #ef95a0
|
color isDark ? #ff6679 : #ef95a0
|
||||||
|
|
||||||
&[data-is-out-of-range]
|
&[data-is-out-of-range]
|
||||||
cursor default
|
cursor default
|
||||||
color rgba(#777, 0.5)
|
color rgba(isDark ? #c5ced6 : #777, 0.5)
|
||||||
|
|
||||||
&[data-is-donichi]
|
&[data-is-donichi]
|
||||||
color rgba(#ef95a0, 0.5)
|
color rgba(isDark ? #ff6679 : #ef95a0, 0.5)
|
||||||
|
|
||||||
&[data-selected]
|
&[data-selected]
|
||||||
font-weight bold
|
font-weight bold
|
||||||
|
|
||||||
> div
|
> div
|
||||||
background rgba(#000, 0.025)
|
background rgba(#000, isDark ? 0.1 : 0.025)
|
||||||
|
|
||||||
&:active > div
|
&:active > div
|
||||||
background rgba(#000, 0.05)
|
background rgba(#000, isDark ? 0.2 : 0.05)
|
||||||
|
|
||||||
&[data-today]
|
&[data-today]
|
||||||
> div
|
> div
|
||||||
|
@ -9,10 +9,10 @@
|
|||||||
@contextmenu.prevent.stop="onContextmenu"
|
@contextmenu.prevent.stop="onContextmenu"
|
||||||
:title="title"
|
:title="title"
|
||||||
>
|
>
|
||||||
<div class="label" v-if="os.i.avatarId == file.id"><img src="/assets/label.svg"/>
|
<div class="label" v-if="$store.state.i.avatarId == file.id"><img src="/assets/label.svg"/>
|
||||||
<p>%i18n:@avatar%</p>
|
<p>%i18n:@avatar%</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="label" v-if="os.i.bannerId == file.id"><img src="/assets/label.svg"/>
|
<div class="label" v-if="$store.state.i.bannerId == file.id"><img src="/assets/label.svg"/>
|
||||||
<p>%i18n:@banner%</p>
|
<p>%i18n:@banner%</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`">
|
<div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`">
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">
|
<span slot="header" :class="$style.header">
|
||||||
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>%i18n:@followers%.replace('{}', {{ user | userName }})
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ '%i18n:@followers%'.replace('{}', name) }}
|
||||||
</span>
|
</span>
|
||||||
<mk-followers :user="user"/>
|
<mk-followers :user="user"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
@ -11,7 +11,12 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user']
|
props: ['user'],
|
||||||
|
computed: {
|
||||||
|
name(): string {
|
||||||
|
return Vue.filter('userName')(this.user);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">
|
<span slot="header" :class="$style.header">
|
||||||
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>%i18n:@following%.replace('{}', {{ user | userName }})
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ '%i18n:@following%'.replace('{}', name) }}
|
||||||
</span>
|
</span>
|
||||||
<mk-following :user="user"/>
|
<mk-following :user="user"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
@ -11,7 +11,12 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user']
|
props: ['user'],
|
||||||
|
computed: {
|
||||||
|
name(): string {
|
||||||
|
return Vue.filter('userName')(this.user);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<a @click="hint">カスタマイズのヒント</a>
|
<a @click="hint">カスタマイズのヒント</a>
|
||||||
<div>
|
<div>
|
||||||
<mk-post-form v-if="clientSettings.showPostFormOnTopOfTl"/>
|
<mk-post-form v-if="$store.state.settings.showPostFormOnTopOfTl"/>
|
||||||
<mk-timeline ref="tl" @loaded="onTlLoaded"/>
|
<mk-timeline ref="tl" @loaded="onTlLoaded"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
<component v-for="widget in widgets[place]" :is="`mkw-${widget.name}`" :key="widget.id" :ref="widget.id" :widget="widget" @chosen="warp"/>
|
<component v-for="widget in widgets[place]" :is="`mkw-${widget.name}`" :key="widget.id" :ref="widget.id" :widget="widget" @chosen="warp"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<mk-post-form v-if="clientSettings.showPostFormOnTopOfTl"/>
|
<mk-post-form v-if="$store.state.settings.showPostFormOnTopOfTl"/>
|
||||||
<mk-timeline ref="tl" @loaded="onTlLoaded" v-if="mode == 'timeline'"/>
|
<mk-timeline ref="tl" @loaded="onTlLoaded" v-if="mode == 'timeline'"/>
|
||||||
<mk-mentions @loaded="onTlLoaded" v-if="mode == 'mentions'"/>
|
<mk-mentions @loaded="onTlLoaded" v-if="mode == 'mentions'"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<div class="body">
|
<div class="body">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
||||||
<mk-note-html v-if="note.text" :text="note.text" :i="os.i"/>
|
<mk-note-html v-if="note.text" :text="note.text" :i="$store.state.i"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="note.mediaIds.length > 0">
|
<div class="media" v-if="note.mediaIds.length > 0">
|
||||||
<mk-media-list :media-list="note.media"/>
|
<mk-media-list :media-list="note.media"/>
|
||||||
|
@ -2,16 +2,16 @@
|
|||||||
<div class="mk-note-detail" :title="title">
|
<div class="mk-note-detail" :title="title">
|
||||||
<button
|
<button
|
||||||
class="read-more"
|
class="read-more"
|
||||||
v-if="p.reply && p.reply.replyId && context.length == 0"
|
v-if="p.reply && p.reply.replyId && conversation.length == 0"
|
||||||
title="%i18n:@more%"
|
title="%i18n:@more%"
|
||||||
@click="fetchContext"
|
@click="fetchConversation"
|
||||||
:disabled="contextFetching"
|
:disabled="conversationFetching"
|
||||||
>
|
>
|
||||||
<template v-if="!contextFetching">%fa:ellipsis-v%</template>
|
<template v-if="!conversationFetching">%fa:ellipsis-v%</template>
|
||||||
<template v-if="contextFetching">%fa:spinner .pulse%</template>
|
<template v-if="conversationFetching">%fa:spinner .pulse%</template>
|
||||||
</button>
|
</button>
|
||||||
<div class="context">
|
<div class="conversation">
|
||||||
<x-sub v-for="note in context" :key="note.id" :note="note"/>
|
<x-sub v-for="note in conversation" :key="note.id" :note="note"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="reply-to" v-if="p.reply">
|
<div class="reply-to" v-if="p.reply">
|
||||||
<x-sub :note="p.reply"/>
|
<x-sub :note="p.reply"/>
|
||||||
@ -21,7 +21,10 @@
|
|||||||
<mk-avatar class="avatar" :user="note.user"/>
|
<mk-avatar class="avatar" :user="note.user"/>
|
||||||
%fa:retweet%
|
%fa:retweet%
|
||||||
<router-link class="name" :href="note.user | userPage">{{ note.user | userName }}</router-link>
|
<router-link class="name" :href="note.user | userPage">{{ note.user | userName }}</router-link>
|
||||||
%i18n:@is-renote%
|
<span>{{ '%i18n:@reposted-by%'.substr(0, '%i18n:@reposted-by%'.indexOf('{')) }}</span>
|
||||||
|
<a class="name" :href="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</a>
|
||||||
|
<span>{{ '%i18n:@reposted-by%'.substr('%i18n:@reposted-by%'.indexOf('}') + 1) }}</span>
|
||||||
|
<mk-time :time="note.createdAt"/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<article>
|
<article>
|
||||||
@ -36,7 +39,7 @@
|
|||||||
<div class="body">
|
<div class="body">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
||||||
<mk-note-html v-if="p.text" :text="p.text" :i="os.i"/>
|
<mk-note-html v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="media" v-if="p.media.length > 0">
|
||||||
<mk-media-list :media-list="p.media" :raw="true"/>
|
<mk-media-list :media-list="p.media" :raw="true"/>
|
||||||
@ -104,8 +107,8 @@ export default Vue.extend({
|
|||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
context: [],
|
conversation: [],
|
||||||
contextFetching: false,
|
conversationFetching: false,
|
||||||
replies: []
|
replies: []
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -155,7 +158,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
// Draw map
|
// Draw map
|
||||||
if (this.p.geo) {
|
if (this.p.geo) {
|
||||||
const shouldShowMap = (this as any).os.isSignedIn ? (this as any).clientSettings.showMaps : true;
|
const shouldShowMap = this.$store.getters.isSignedIn ? this.$store.state.settings.showMaps : true;
|
||||||
if (shouldShowMap) {
|
if (shouldShowMap) {
|
||||||
(this as any).os.getGoogleMaps().then(maps => {
|
(this as any).os.getGoogleMaps().then(maps => {
|
||||||
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
|
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
|
||||||
@ -173,15 +176,15 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
fetchContext() {
|
fetchConversation() {
|
||||||
this.contextFetching = true;
|
this.conversationFetching = true;
|
||||||
|
|
||||||
// Fetch context
|
// Fetch conversation
|
||||||
(this as any).api('notes/context', {
|
(this as any).api('notes/conversation', {
|
||||||
noteId: this.p.replyId
|
noteId: this.p.replyId
|
||||||
}).then(context => {
|
}).then(conversation => {
|
||||||
this.contextFetching = false;
|
this.conversationFetching = false;
|
||||||
this.context = context.reverse();
|
this.conversation = conversation.reverse();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
reply() {
|
reply() {
|
||||||
@ -246,7 +249,7 @@ root(isDark)
|
|||||||
&:disabled
|
&:disabled
|
||||||
color isDark ? #21242b : #ccc
|
color isDark ? #21242b : #ccc
|
||||||
|
|
||||||
> .context
|
> .conversation
|
||||||
> *
|
> *
|
||||||
border-bottom 1px solid isDark ? #1c2023 : #eef0f2
|
border-bottom 1px solid isDark ? #1c2023 : #eef0f2
|
||||||
|
|
||||||
|
@ -4,6 +4,9 @@
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
|
||||||
|
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
||||||
|
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
||||||
|
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
||||||
<span class="username"><mk-acct :user="note.user"/></span>
|
<span class="username"><mk-acct :user="note.user"/></span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
||||||
@ -68,7 +71,6 @@ root(isDark)
|
|||||||
align-items baseline
|
align-items baseline
|
||||||
margin-bottom 2px
|
margin-bottom 2px
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
line-height 21px
|
|
||||||
|
|
||||||
> .name
|
> .name
|
||||||
display block
|
display block
|
||||||
@ -84,6 +86,20 @@ root(isDark)
|
|||||||
&:hover
|
&:hover
|
||||||
text-decoration underline
|
text-decoration underline
|
||||||
|
|
||||||
|
> .is-admin
|
||||||
|
> .is-bot
|
||||||
|
> .is-cat
|
||||||
|
margin 0 0.5em 0 0
|
||||||
|
padding 1px 5px
|
||||||
|
font-size 10px
|
||||||
|
color isDark ? #758188 : #aaa
|
||||||
|
border solid 1px isDark ? #57616f : #ddd
|
||||||
|
border-radius 3px
|
||||||
|
|
||||||
|
&.is-admin
|
||||||
|
border-color isDark ? #d42c41 : #f56a7b
|
||||||
|
color isDark ? #d42c41 : #f56a7b
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
color isDark ? #606984 : #d1d8da
|
color isDark ? #606984 : #d1d8da
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="note" tabindex="-1" :title="title" @keydown="onKeydown">
|
<div class="note" tabindex="-1" :title="title" @keydown="onKeydown">
|
||||||
<div class="reply-to" v-if="p.reply && (!os.isSignedIn || clientSettings.showReplyTarget)">
|
<div class="reply-to" v-if="p.reply && (!$store.getters.isSignedIn || $store.state.settings.showReplyTarget)">
|
||||||
<x-sub :note="p.reply"/>
|
<x-sub :note="p.reply"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="renote" v-if="isRenote">
|
<div class="renote" v-if="isRenote">
|
||||||
@ -16,7 +16,9 @@
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
<router-link class="name" :to="p.user | userPage" v-user-preview="p.user.id">{{ p.user | userName }}</router-link>
|
<router-link class="name" :to="p.user | userPage" v-user-preview="p.user.id">{{ p.user | userName }}</router-link>
|
||||||
<span class="is-bot" v-if="p.user.host === null && p.user.isBot">bot</span>
|
<span class="is-admin" v-if="p.user.isAdmin">admin</span>
|
||||||
|
<span class="is-bot" v-if="p.user.isBot">bot</span>
|
||||||
|
<span class="is-cat" v-if="p.user.isCat">cat</span>
|
||||||
<span class="username"><mk-acct :user="p.user"/></span>
|
<span class="username"><mk-acct :user="p.user"/></span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
||||||
@ -41,7 +43,7 @@
|
|||||||
<div class="text">
|
<div class="text">
|
||||||
<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
|
<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
|
||||||
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
||||||
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="os.i" :class="$style.text"/>
|
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="$store.state.i" :class="$style.text"/>
|
||||||
<a class="rp" v-if="p.renote">RP:</a>
|
<a class="rp" v-if="p.renote">RP:</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="media" v-if="p.media.length > 0">
|
||||||
@ -164,7 +166,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection = (this as any).os.stream.getConnection();
|
this.connection = (this as any).os.stream.getConnection();
|
||||||
this.connectionId = (this as any).os.stream.use();
|
this.connectionId = (this as any).os.stream.use();
|
||||||
}
|
}
|
||||||
@ -173,13 +175,13 @@ export default Vue.extend({
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.capture(true);
|
this.capture(true);
|
||||||
|
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.on('_connected_', this.onStreamConnected);
|
this.connection.on('_connected_', this.onStreamConnected);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw map
|
// Draw map
|
||||||
if (this.p.geo) {
|
if (this.p.geo) {
|
||||||
const shouldShowMap = (this as any).os.isSignedIn ? (this as any).clientSettings.showMaps : true;
|
const shouldShowMap = this.$store.getters.isSignedIn ? this.$store.state.settings.showMaps : true;
|
||||||
if (shouldShowMap) {
|
if (shouldShowMap) {
|
||||||
(this as any).os.getGoogleMaps().then(maps => {
|
(this as any).os.getGoogleMaps().then(maps => {
|
||||||
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
|
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
|
||||||
@ -199,7 +201,7 @@ export default Vue.extend({
|
|||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.decapture(true);
|
this.decapture(true);
|
||||||
|
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.off('_connected_', this.onStreamConnected);
|
this.connection.off('_connected_', this.onStreamConnected);
|
||||||
(this as any).os.stream.dispose(this.connectionId);
|
(this as any).os.stream.dispose(this.connectionId);
|
||||||
}
|
}
|
||||||
@ -209,7 +211,7 @@ export default Vue.extend({
|
|||||||
canHideText,
|
canHideText,
|
||||||
|
|
||||||
capture(withHandler = false) {
|
capture(withHandler = false) {
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.send({
|
this.connection.send({
|
||||||
type: 'capture',
|
type: 'capture',
|
||||||
id: this.p.id
|
id: this.p.id
|
||||||
@ -219,7 +221,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
decapture(withHandler = false) {
|
decapture(withHandler = false) {
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.send({
|
this.connection.send({
|
||||||
type: 'decapture',
|
type: 'decapture',
|
||||||
id: this.p.id
|
id: this.p.id
|
||||||
@ -430,7 +432,9 @@ root(isDark)
|
|||||||
&:hover
|
&:hover
|
||||||
text-decoration underline
|
text-decoration underline
|
||||||
|
|
||||||
|
> .is-admin
|
||||||
> .is-bot
|
> .is-bot
|
||||||
|
> .is-cat
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
padding 1px 6px
|
padding 1px 6px
|
||||||
font-size 12px
|
font-size 12px
|
||||||
@ -438,6 +442,10 @@ root(isDark)
|
|||||||
border solid 1px isDark ? #57616f : #ddd
|
border solid 1px isDark ? #57616f : #ddd
|
||||||
border-radius 3px
|
border-radius 3px
|
||||||
|
|
||||||
|
&.is-admin
|
||||||
|
border-color isDark ? #d42c41 : #f56a7b
|
||||||
|
color isDark ? #d42c41 : #f56a7b
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
overflow hidden
|
overflow hidden
|
||||||
|
@ -118,24 +118,24 @@ export default Vue.extend({
|
|||||||
|
|
||||||
prepend(note, silent = false) {
|
prepend(note, silent = false) {
|
||||||
//#region 弾く
|
//#region 弾く
|
||||||
const isMyNote = note.userId == (this as any).os.i.id;
|
const isMyNote = note.userId == this.$store.state.i.id;
|
||||||
const isPureRenote = note.renoteId != null && note.text == null && note.mediaIds.length == 0 && note.poll == null;
|
const isPureRenote = note.renoteId != null && note.text == null && note.mediaIds.length == 0 && note.poll == null;
|
||||||
|
|
||||||
if ((this as any).clientSettings.showMyRenotes === false) {
|
if (this.$store.state.settings.showMyRenotes === false) {
|
||||||
if (isMyNote && isPureRenote) {
|
if (isMyNote && isPureRenote) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((this as any).clientSettings.showRenotedMyNotes === false) {
|
if (this.$store.state.settings.showRenotedMyNotes === false) {
|
||||||
if (isPureRenote && (note.renote.userId == (this as any).os.i.id)) {
|
if (isPureRenote && (note.renote.userId == this.$store.state.i.id)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
// 投稿が自分のものではないかつ、タブが非表示またはスクロール位置が最上部ではないならタイトルで通知
|
// 投稿が自分のものではないかつ、タブが非表示またはスクロール位置が最上部ではないならタイトルで通知
|
||||||
if ((document.hidden || !this.isScrollTop()) && note.userId !== (this as any).os.i.id) {
|
if ((document.hidden || !this.isScrollTop()) && note.userId !== this.$store.state.i.id) {
|
||||||
this.unreadCount++;
|
this.unreadCount++;
|
||||||
document.title = `(${this.unreadCount}) ${getNoteSummary(note)}`;
|
document.title = `(${this.unreadCount}) ${getNoteSummary(note)}`;
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ export default Vue.extend({
|
|||||||
this.clearNotification();
|
this.clearNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((this as any).clientSettings.fetchOnScroll !== false) {
|
if (this.$store.state.settings.fetchOnScroll !== false) {
|
||||||
const current = window.scrollY + window.innerHeight;
|
const current = window.scrollY + window.innerHeight;
|
||||||
if (current > document.body.offsetHeight - 8) this.loadMore();
|
if (current > document.body.offsetHeight - 8) this.loadMore();
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,7 @@ import Vue from 'vue';
|
|||||||
import * as XDraggable from 'vuedraggable';
|
import * as XDraggable from 'vuedraggable';
|
||||||
import getKao from '../../../common/scripts/get-kao';
|
import getKao from '../../../common/scripts/get-kao';
|
||||||
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
||||||
|
import parse from '../../../../../text/parse';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
@ -110,6 +111,22 @@ export default Vue.extend({
|
|||||||
this.text = `@${this.reply.user.username}@${this.reply.user.host} `;
|
this.text = `@${this.reply.user.username}@${this.reply.user.host} `;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.reply && this.reply.text != null) {
|
||||||
|
const ast = parse(this.reply.text);
|
||||||
|
|
||||||
|
ast.filter(t => t.type == 'mention').forEach(x => {
|
||||||
|
const mention = x.host ? `@${x.username}@${x.host}` : `@${x.username}`;
|
||||||
|
|
||||||
|
// 自分は除外
|
||||||
|
if (this.$store.state.i.username == x.username && x.host == null) return;
|
||||||
|
|
||||||
|
// 重複は除外
|
||||||
|
if (this.text.indexOf(`${mention} `) != -1) return;
|
||||||
|
|
||||||
|
this.text += `${mention} `;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// 書きかけの投稿を復元
|
// 書きかけの投稿を復元
|
||||||
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftId];
|
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftId];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-window ref="window" is-modal width="700px" height="550px" @closed="$destroy">
|
<mk-window ref="window" is-modal width="700px" height="550px" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">%fa:cog%設定</span>
|
<span slot="header" :class="$style.header">%fa:cog%%i18n:@settings%</span>
|
||||||
<mk-settings @done="close"/>
|
<mk-settings @done="close"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
</template>
|
</template>
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
<div class="2fa">
|
<div class="2fa">
|
||||||
<p>%i18n:@intro%<a href="%i18n:@url%" target="_blank">%i18n:@detail%</a></p>
|
<p>%i18n:@intro%<a href="%i18n:@url%" target="_blank">%i18n:@detail%</a></p>
|
||||||
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
||||||
<p v-if="!data && !os.i.twoFactorEnabled"><button @click="register" class="ui primary">%i18n:@register%</button></p>
|
<p v-if="!data && !$store.state.i.twoFactorEnabled"><button @click="register" class="ui primary">%i18n:@register%</button></p>
|
||||||
<template v-if="os.i.twoFactorEnabled">
|
<template v-if="$store.state.i.twoFactorEnabled">
|
||||||
<p>%i18n:@already-registered%</p>
|
<p>%i18n:@already-registered%</p>
|
||||||
<button @click="unregister" class="ui">%i18n:@unregister%</button>
|
<button @click="unregister" class="ui">%i18n:@unregister%</button>
|
||||||
</template>
|
</template>
|
||||||
@ -54,7 +54,7 @@ export default Vue.extend({
|
|||||||
password: password
|
password: password
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
(this as any).apis.notify('%i18n:@unregistered%');
|
(this as any).apis.notify('%i18n:@unregistered%');
|
||||||
(this as any).os.i.twoFactorEnabled = false;
|
this.$store.state.i.twoFactorEnabled = false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -64,7 +64,7 @@ export default Vue.extend({
|
|||||||
token: this.token
|
token: this.token
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
(this as any).apis.notify('%i18n:@success%');
|
(this as any).apis.notify('%i18n:@success%');
|
||||||
(this as any).os.i.twoFactorEnabled = true;
|
this.$store.state.i.twoFactorEnabled = true;
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
(this as any).apis.notify('%i18n:@failed%');
|
(this as any).apis.notify('%i18n:@failed%');
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="root api">
|
<div class="root api">
|
||||||
<p>%i18n:@token% <code>{{ os.i.token }}</code></p>
|
<p>%i18n:@token% <code>{{ $store.state.i.token }}</code></p>
|
||||||
<p>%i18n:@intro%</p>
|
<p>%i18n:@intro%</p>
|
||||||
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
||||||
<p>%i18n:@regeneration-of-token%</p>
|
<p>%i18n:@regeneration-of-token%</p>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="profile">
|
<div class="profile">
|
||||||
<label class="avatar ui from group">
|
<label class="avatar ui from group">
|
||||||
<p>%i18n:@avatar%</p>
|
<p>%i18n:@avatar%</p>
|
||||||
<img class="avatar" :src="`${os.i.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${$store.state.i.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<button class="ui" @click="updateAvatar">%i18n:@choice-avatar%</button>
|
<button class="ui" @click="updateAvatar">%i18n:@choice-avatar%</button>
|
||||||
</label>
|
</label>
|
||||||
<label class="ui from group">
|
<label class="ui from group">
|
||||||
@ -24,7 +24,8 @@
|
|||||||
<button class="ui primary" @click="save">%i18n:@save%</button>
|
<button class="ui primary" @click="save">%i18n:@save%</button>
|
||||||
<section>
|
<section>
|
||||||
<h2>その他</h2>
|
<h2>その他</h2>
|
||||||
<mk-switch v-model="os.i.isBot" @change="onChangeIsBot" text="このアカウントはbotです"/>
|
<mk-switch v-model="$store.state.i.isBot" @change="onChangeIsBot" text="%i18n:@is-bot%"/>
|
||||||
|
<mk-switch v-model="$store.state.i.isCat" @change="onChangeIsCat" text="%i18n:@is-cat%"/>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -42,10 +43,10 @@ export default Vue.extend({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.name = (this as any).os.i.name || '';
|
this.name = this.$store.state.i.name || '';
|
||||||
this.location = (this as any).os.i.profile.location;
|
this.location = this.$store.state.i.profile.location;
|
||||||
this.description = (this as any).os.i.description;
|
this.description = this.$store.state.i.description;
|
||||||
this.birthday = (this as any).os.i.profile.birthday;
|
this.birthday = this.$store.state.i.profile.birthday;
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateAvatar() {
|
updateAvatar() {
|
||||||
@ -63,7 +64,12 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
onChangeIsBot() {
|
onChangeIsBot() {
|
||||||
(this as any).api('i/update', {
|
(this as any).api('i/update', {
|
||||||
isBot: (this as any).os.i.isBot
|
isBot: this.$store.state.i.isBot
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onChangeIsCat() {
|
||||||
|
(this as any).api('i/update', {
|
||||||
|
isCat: this.$store.state.i.isCat
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
<section class="web" v-show="page == 'web'">
|
<section class="web" v-show="page == 'web'">
|
||||||
<h1>%i18n:@behaviour%</h1>
|
<h1>%i18n:@behaviour%</h1>
|
||||||
<mk-switch v-model="clientSettings.fetchOnScroll" @change="onChangeFetchOnScroll" text="%i18n:@fetch-on-scroll%">
|
<mk-switch v-model="$store.state.settings.fetchOnScroll" @change="onChangeFetchOnScroll" text="%i18n:@fetch-on-scroll%">
|
||||||
<span>%i18n:@fetch-on-scroll-desc%</span>
|
<span>%i18n:@fetch-on-scroll-desc%</span>
|
||||||
</mk-switch>
|
</mk-switch>
|
||||||
<mk-switch v-model="autoPopout" text="%i18n:@auto-popout%">
|
<mk-switch v-model="autoPopout" text="%i18n:@auto-popout%">
|
||||||
@ -41,14 +41,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="div">
|
<div class="div">
|
||||||
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
|
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
|
||||||
<mk-switch v-model="clientSettings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
|
<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
|
||||||
<mk-switch v-model="clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
|
<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-switch v-model="clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
||||||
<mk-switch v-model="clientSettings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
||||||
<mk-switch v-model="clientSettings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
|
<mk-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
|
||||||
<mk-switch v-model="clientSettings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
|
<mk-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
|
||||||
<mk-switch v-model="clientSettings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
|
<mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
|
||||||
<span>%i18n:@show-maps-desc%</span>
|
<span>%i18n:@show-maps-desc%</span>
|
||||||
</mk-switch>
|
</mk-switch>
|
||||||
</section>
|
</section>
|
||||||
@ -72,7 +72,7 @@
|
|||||||
|
|
||||||
<section class="web" v-show="page == 'web'">
|
<section class="web" v-show="page == 'web'">
|
||||||
<h1>%i18n:@mobile%</h1>
|
<h1>%i18n:@mobile%</h1>
|
||||||
<mk-switch v-model="clientSettings.disableViaMobile" @change="onChangeDisableViaMobile" text="%i18n:@disable-via-mobile%"/>
|
<mk-switch v-model="$store.state.settings.disableViaMobile" @change="onChangeDisableViaMobile" text="%i18n:@disable-via-mobile%"/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="web" v-show="page == 'web'">
|
<section class="web" v-show="page == 'web'">
|
||||||
@ -100,7 +100,7 @@
|
|||||||
|
|
||||||
<section class="notification" v-show="page == 'notification'">
|
<section class="notification" v-show="page == 'notification'">
|
||||||
<h1>%i18n:@notification%</h1>
|
<h1>%i18n:@notification%</h1>
|
||||||
<mk-switch v-model="os.i.settings.autoWatch" @change="onChangeAutoWatch" text="%i18n:@auto-watch%">
|
<mk-switch v-model="$store.state.i.settings.autoWatch" @change="onChangeAutoWatch" text="%i18n:@auto-watch%">
|
||||||
<span>%i18n:@auto-watch-desc%</span>
|
<span>%i18n:@auto-watch-desc%</span>
|
||||||
</mk-switch>
|
</mk-switch>
|
||||||
</section>
|
</section>
|
||||||
@ -227,8 +227,7 @@ export default Vue.extend({
|
|||||||
version,
|
version,
|
||||||
langs,
|
langs,
|
||||||
latestVersion: undefined,
|
latestVersion: undefined,
|
||||||
checkingForUpdate: false,
|
checkingForUpdate: false
|
||||||
darkmode: localStorage.getItem('darkmode') == 'true'
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -246,6 +245,11 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
darkmode: {
|
||||||
|
get() { return this.$store.state.device.darkmode; },
|
||||||
|
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
|
||||||
|
},
|
||||||
|
|
||||||
enableSounds: {
|
enableSounds: {
|
||||||
get() { return this.$store.state.device.enableSounds; },
|
get() { return this.$store.state.device.enableSounds; },
|
||||||
set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
|
||||||
@ -276,11 +280,6 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.commit('device/set', { key: 'enableExperimentalFeatures', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'enableExperimentalFeatures', value }); }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
|
||||||
darkmode() {
|
|
||||||
(this as any)._updateDarkmode_(this.darkmode);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
created() {
|
||||||
(this as any).os.getMeta().then(meta => {
|
(this as any).os.getMeta().then(meta => {
|
||||||
this.meta = meta;
|
this.meta = meta;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="body">
|
<div class="body">
|
||||||
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@hidden%</span>
|
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@hidden%</span>
|
||||||
<a class="reply" v-if="note.replyId">%fa:reply%</a>
|
<a class="reply" v-if="note.replyId">%fa:reply%</a>
|
||||||
<mk-note-html :text="note.text" :i="os.i"/>
|
<mk-note-html :text="note.text" :i="$store.state.i"/>
|
||||||
<a class="rp" v-if="note.renoteId" :href="`/note:${note.renoteId}`">RP: ...</a>
|
<a class="rp" v-if="note.renoteId" :href="`/note:${note.renoteId}`">RP: ...</a>
|
||||||
</div>
|
</div>
|
||||||
<details v-if="note.media.length > 0">
|
<details v-if="note.media.length > 0">
|
||||||
|
@ -34,14 +34,13 @@ export default Vue.extend({
|
|||||||
existMore: false,
|
existMore: false,
|
||||||
connection: null,
|
connection: null,
|
||||||
connectionId: null,
|
connectionId: null,
|
||||||
unreadCount: 0,
|
|
||||||
date: null
|
date: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
alone(): boolean {
|
alone(): boolean {
|
||||||
return (this as any).os.i.followingCount == 0;
|
return this.$store.state.i.followingCount == 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
stream(): any {
|
stream(): any {
|
||||||
@ -76,7 +75,6 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('keydown', this.onKeydown);
|
document.addEventListener('keydown', this.onKeydown);
|
||||||
document.addEventListener('visibilitychange', this.onVisibilitychange, false);
|
|
||||||
|
|
||||||
this.fetch();
|
this.fetch();
|
||||||
},
|
},
|
||||||
@ -90,7 +88,6 @@ export default Vue.extend({
|
|||||||
this.stream.dispose(this.connectionId);
|
this.stream.dispose(this.connectionId);
|
||||||
|
|
||||||
document.removeEventListener('keydown', this.onKeydown);
|
document.removeEventListener('keydown', this.onKeydown);
|
||||||
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
@ -101,8 +98,8 @@ export default Vue.extend({
|
|||||||
(this as any).api(this.endpoint, {
|
(this as any).api(this.endpoint, {
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilDate: this.date ? this.date.getTime() : undefined,
|
untilDate: this.date ? this.date.getTime() : undefined,
|
||||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
@ -120,12 +117,14 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.moreFetching = true;
|
this.moreFetching = true;
|
||||||
|
|
||||||
(this as any).api(this.endpoint, {
|
const promise = (this as any).api(this.endpoint, {
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
||||||
}).then(notes => {
|
});
|
||||||
|
|
||||||
|
promise.then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
} else {
|
} else {
|
||||||
@ -134,14 +133,11 @@ export default Vue.extend({
|
|||||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||||
this.moreFetching = false;
|
this.moreFetching = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return promise;
|
||||||
},
|
},
|
||||||
|
|
||||||
onNote(note) {
|
onNote(note) {
|
||||||
if (document.hidden && note.userId !== (this as any).os.i.id) {
|
|
||||||
this.unreadCount++;
|
|
||||||
document.title = `(${this.unreadCount}) ${getNoteSummary(note)}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prepend a note
|
// Prepend a note
|
||||||
(this.$refs.timeline as any).prepend(note);
|
(this.$refs.timeline as any).prepend(note);
|
||||||
},
|
},
|
||||||
@ -159,13 +155,6 @@ export default Vue.extend({
|
|||||||
this.fetch();
|
this.fetch();
|
||||||
},
|
},
|
||||||
|
|
||||||
onVisibilitychange() {
|
|
||||||
if (!document.hidden) {
|
|
||||||
this.unreadCount = 0;
|
|
||||||
document.title = 'Misskey';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onKeydown(e) {
|
onKeydown(e) {
|
||||||
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
|
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
|
||||||
if (e.which == 84) { // t
|
if (e.which == 84) { // t
|
||||||
|
@ -31,8 +31,23 @@ export default Vue.extend({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
src() {
|
||||||
|
this.saveSrc();
|
||||||
|
},
|
||||||
|
|
||||||
|
list() {
|
||||||
|
this.saveSrc();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
if ((this as any).os.i.followingCount == 0) {
|
if (this.$store.state.device.tl) {
|
||||||
|
this.src = this.$store.state.device.tl.src;
|
||||||
|
if (this.src == 'list') {
|
||||||
|
this.list = this.$store.state.device.tl.arg;
|
||||||
|
}
|
||||||
|
} else if (this.$store.state.i.followingCount == 0) {
|
||||||
this.src = 'local';
|
this.src = 'local';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -44,6 +59,13 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
saveSrc() {
|
||||||
|
this.$store.commit('device/setTl', {
|
||||||
|
src: this.src,
|
||||||
|
arg: this.list
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
warp(date) {
|
warp(date) {
|
||||||
(this.$refs.tl as any).warp(date);
|
(this.$refs.tl as any).warp(date);
|
||||||
},
|
},
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="account">
|
<div class="account">
|
||||||
<button class="header" :data-active="isOpen" @click="toggle">
|
<button class="header" :data-active="isOpen" @click="toggle">
|
||||||
<span class="username">{{ os.i.username }}<template v-if="!isOpen">%fa:angle-down%</template><template v-if="isOpen">%fa:angle-up%</template></span>
|
<span class="username">{{ $store.state.i.username }}<template v-if="!isOpen">%fa:angle-down%</template><template v-if="isOpen">%fa:angle-up%</template></span>
|
||||||
<mk-avatar class="avatar" :user="os.i"/>
|
<mk-avatar class="avatar" :user="$store.state.i"/>
|
||||||
</button>
|
</button>
|
||||||
<transition name="zoom-in-top">
|
<transition name="zoom-in-top">
|
||||||
<div class="menu" v-if="isOpen">
|
<div class="menu" v-if="isOpen">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<router-link :to="`/@${ os.i.username }`">%fa:user%<span>%i18n:@profile%</span>%fa:angle-right%</router-link>
|
<router-link :to="`/@${ $store.state.i.username }`">%fa:user%<span>%i18n:@profile%</span>%fa:angle-right%</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li @click="drive">
|
<li @click="drive">
|
||||||
<p>%fa:cloud%<span>%i18n:@drive%</span>%fa:angle-right%</p>
|
<p>%fa:cloud%<span>%i18n:@drive%</span>%fa:angle-right%</p>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li @click="dark">
|
<li @click="dark">
|
||||||
<p><span>%i18n:@dark%</span><template v-if="_darkmode_">%fa:moon%</template><template v-else>%fa:R moon%</template></p>
|
<p><span>%i18n:@dark%</span><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template></p>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -99,7 +99,10 @@ export default Vue.extend({
|
|||||||
(this as any).os.signout();
|
(this as any).os.signout();
|
||||||
},
|
},
|
||||||
dark() {
|
dark() {
|
||||||
(this as any)._updateDarkmode_(!(this as any)._darkmode_);
|
this.$store.commit('device/set', {
|
||||||
|
key: 'darkmode',
|
||||||
|
value: !this.$store.state.device.darkmode
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="nav">
|
<div class="nav">
|
||||||
<ul>
|
<ul>
|
||||||
<template v-if="os.isSignedIn">
|
<template v-if="$store.getters.isSignedIn">
|
||||||
<li class="home" :class="{ active: $route.name == 'index' }">
|
<li class="home" :class="{ active: $route.name == 'index' }">
|
||||||
<router-link to="/">
|
<router-link to="/">
|
||||||
%fa:home%
|
%fa:home%
|
||||||
@ -42,7 +42,7 @@ export default Vue.extend({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection = (this as any).os.stream.getConnection();
|
this.connection = (this as any).os.stream.getConnection();
|
||||||
this.connectionId = (this as any).os.stream.use();
|
this.connectionId = (this as any).os.stream.use();
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.off('read_all_messaging_messages', this.onReadAllMessagingMessages);
|
this.connection.off('read_all_messaging_messages', this.onReadAllMessagingMessages);
|
||||||
this.connection.off('unread_messaging_message', this.onUnreadMessagingMessage);
|
this.connection.off('unread_messaging_message', this.onUnreadMessagingMessage);
|
||||||
this.connection.off('othello_invited', this.onOthelloInvited);
|
this.connection.off('othello_invited', this.onOthelloInvited);
|
||||||
|
@ -23,7 +23,7 @@ export default Vue.extend({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection = (this as any).os.stream.getConnection();
|
this.connection = (this as any).os.stream.getConnection();
|
||||||
this.connectionId = (this as any).os.stream.use();
|
this.connectionId = (this as any).os.stream.use();
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
this.connection.off('read_all_notifications', this.onReadAllNotifications);
|
this.connection.off('read_all_notifications', this.onReadAllNotifications);
|
||||||
this.connection.off('unread_notification', this.onUnreadNotification);
|
this.connection.off('unread_notification', this.onUnreadNotification);
|
||||||
(this as any).os.stream.dispose(this.connectionId);
|
(this as any).os.stream.dispose(this.connectionId);
|
||||||
|
@ -4,16 +4,16 @@
|
|||||||
<div class="main" ref="main">
|
<div class="main" ref="main">
|
||||||
<div class="backdrop"></div>
|
<div class="backdrop"></div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<p ref="welcomeback" v-if="os.isSignedIn">おかえりなさい、<b>{{ os.i | userName }}</b>さん</p>
|
<p ref="welcomeback" v-if="$store.getters.isSignedIn">おかえりなさい、<b>{{ $store.state.i | userName }}</b>さん</p>
|
||||||
<div class="container" ref="mainContainer">
|
<div class="container" ref="mainContainer">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<x-nav/>
|
<x-nav/>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<x-search/>
|
<x-search/>
|
||||||
<x-account v-if="os.isSignedIn"/>
|
<x-account v-if="$store.getters.isSignedIn"/>
|
||||||
<x-notifications v-if="os.isSignedIn"/>
|
<x-notifications v-if="$store.getters.isSignedIn"/>
|
||||||
<x-post v-if="os.isSignedIn"/>
|
<x-post v-if="$store.getters.isSignedIn"/>
|
||||||
<x-clock/>
|
<x-clock/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -45,11 +45,11 @@ export default Vue.extend({
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.$store.commit('setUiHeaderHeight', 48);
|
this.$store.commit('setUiHeaderHeight', 48);
|
||||||
|
|
||||||
if ((this as any).os.isSignedIn) {
|
if (this.$store.getters.isSignedIn) {
|
||||||
const ago = (new Date().getTime() - new Date((this as any).os.i.lastUsedAt).getTime()) / 1000;
|
const ago = (new Date().getTime() - new Date(this.$store.state.i.lastUsedAt).getTime()) / 1000;
|
||||||
const isHisasiburi = ago >= 3600;
|
const isHisasiburi = ago >= 3600;
|
||||||
(this as any).os.i.lastUsedAt = new Date();
|
this.$store.state.i.lastUsedAt = new Date();
|
||||||
(this as any).os.bakeMe();
|
|
||||||
if (isHisasiburi) {
|
if (isHisasiburi) {
|
||||||
(this.$refs.welcomeback as any).style.display = 'block';
|
(this.$refs.welcomeback as any).style.display = 'block';
|
||||||
(this.$refs.main as any).style.overflow = 'hidden';
|
(this.$refs.main as any).style.overflow = 'hidden';
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</div>
|
</div>
|
||||||
<mk-stream-indicator v-if="os.isSignedIn"/>
|
<mk-stream-indicator v-if="$store.getters.isSignedIn"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ export default Vue.extend({
|
|||||||
methods: {
|
methods: {
|
||||||
init() {
|
init() {
|
||||||
if (this.connection) this.connection.close();
|
if (this.connection) this.connection.close();
|
||||||
this.connection = new UserListStream((this as any).os, (this as any).os.i, this.list.id);
|
this.connection = new UserListStream((this as any).os, this.$store.state.i, this.list.id);
|
||||||
this.connection.on('note', this.onNote);
|
this.connection.on('note', this.onNote);
|
||||||
this.connection.on('userAdded', this.onUserAdded);
|
this.connection.on('userAdded', this.onUserAdded);
|
||||||
this.connection.on('userRemoved', this.onUserRemoved);
|
this.connection.on('userRemoved', this.onUserRemoved);
|
||||||
@ -46,8 +46,8 @@ export default Vue.extend({
|
|||||||
(this as any).api('notes/user-list-timeline', {
|
(this as any).api('notes/user-list-timeline', {
|
||||||
listId: this.list.id,
|
listId: this.list.id,
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
@ -62,13 +62,15 @@ export default Vue.extend({
|
|||||||
more() {
|
more() {
|
||||||
this.moreFetching = true;
|
this.moreFetching = true;
|
||||||
|
|
||||||
(this as any).api('notes/user-list-timeline', {
|
const promise = (this as any).api('notes/user-list-timeline', {
|
||||||
listId: this.list.id,
|
listId: this.list.id,
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
||||||
}).then(notes => {
|
});
|
||||||
|
|
||||||
|
promise.then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
} else {
|
} else {
|
||||||
@ -77,6 +79,8 @@ export default Vue.extend({
|
|||||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||||
this.moreFetching = false;
|
this.moreFetching = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return promise;
|
||||||
},
|
},
|
||||||
onNote(note) {
|
onNote(note) {
|
||||||
// Prepend a note
|
// Prepend a note
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<mk-window ref="window" is-modal width="450px" height="500px" @closed="$destroy">
|
<mk-window ref="window" is-modal width="450px" height="500px" @closed="$destroy">
|
||||||
<span slot="header">%fa:list% リスト</span>
|
<span slot="header">%fa:list% リスト</span>
|
||||||
|
|
||||||
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="_darkmode_">
|
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="$store.state.device.darkmode">
|
||||||
<button class="ui" @click="add">%i18n:@create-list%</button>
|
<button class="ui" @click="add">%i18n:@create-list%</button>
|
||||||
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<p>%i18n:@followers%</p><a>{{ u.followersCount }}</a>
|
<p>%i18n:@followers%</p><a>{{ u.followersCount }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<mk-follow-button v-if="os.isSignedIn && user.id != os.i.id" :user="u"/>
|
<mk-follow-button v-if="$store.getters.isSignedIn && user.id != $store.state.i.id" :user="u"/>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<nav>
|
<nav>
|
||||||
<div>
|
<div>
|
||||||
<span :data-active="mode == 'all'" @click="mode = 'all'">%i18n:@all%<span>{{ count }}</span></span>
|
<span :data-active="mode == 'all'" @click="mode = 'all'">%i18n:@all%<span>{{ count }}</span></span>
|
||||||
<span v-if="os.isSignedIn && youKnowCount" :data-active="mode == 'iknow'" @click="mode = 'iknow'">%i18n:@iknow%<span>{{ youKnowCount }}</span></span>
|
<span v-if="$store.getters.isSignedIn && youKnowCount" :data-active="mode == 'iknow'" @click="mode = 'iknow'">%i18n:@iknow%<span>{{ youKnowCount }}</span></span>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="users" v-if="!fetching && users.length != 0">
|
<div class="users" v-if="!fetching && users.length != 0">
|
||||||
|
@ -23,9 +23,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
withGradient(): boolean {
|
withGradient(): boolean {
|
||||||
return (this as any).os.isSignedIn
|
return this.$store.getters.isSignedIn
|
||||||
? (this as any).clientSettings.gradientWindowHeader != null
|
? this.$store.state.settings.gradientWindowHeader != null
|
||||||
? (this as any).clientSettings.gradientWindowHeader
|
? this.$store.state.settings.gradientWindowHeader
|
||||||
: false
|
: false
|
||||||
: false;
|
: false;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="main" ref="main" tabindex="-1" :data-is-modal="isModal" @mousedown="onBodyMousedown" @keydown="onKeydown" :style="{ width, height }">
|
<div class="main" ref="main" tabindex="-1" :data-is-modal="isModal" @mousedown="onBodyMousedown" @keydown="onKeydown" :style="{ width, height }">
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<header ref="header"
|
<header ref="header"
|
||||||
:class="{ withGradient: clientSettings.gradientWindowHeader }"
|
:class="{ withGradient: $store.state.settings.gradientWindowHeader }"
|
||||||
@contextmenu.prevent="() => {}" @mousedown.prevent="onHeaderMousedown"
|
@contextmenu.prevent="() => {}" @mousedown.prevent="onHeaderMousedown"
|
||||||
>
|
>
|
||||||
<h1><slot name="header"></slot></h1>
|
<h1><slot name="header"></slot></h1>
|
||||||
@ -488,7 +488,10 @@ root(isDark)
|
|||||||
&:focus
|
&:focus
|
||||||
&:not([data-is-modal])
|
&:not([data-is-modal])
|
||||||
> .body
|
> .body
|
||||||
box-shadow 0 0 0px 1px rgba($theme-color, 0.5), 0 2px 6px 0 rgba(#000, 0.2)
|
if isDark
|
||||||
|
box-shadow 0 0 0px 1px rgba($theme-color, 0.5), 0 2px 12px 0 rgba(#000, 0.5)
|
||||||
|
else
|
||||||
|
box-shadow 0 0 0px 1px rgba($theme-color, 0.5), 0 2px 6px 0 rgba(#000, 0.2)
|
||||||
|
|
||||||
> .handle
|
> .handle
|
||||||
$size = 8px
|
$size = 8px
|
||||||
@ -556,7 +559,11 @@ root(isDark)
|
|||||||
overflow hidden
|
overflow hidden
|
||||||
background isDark ? #282C37 : #fff
|
background isDark ? #282C37 : #fff
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
box-shadow 0 2px 6px 0 rgba(#000, 0.2)
|
|
||||||
|
if isDark
|
||||||
|
box-shadow 0 2px 12px 0 rgba(#000, 0.5)
|
||||||
|
else
|
||||||
|
box-shadow 0 2px 6px 0 rgba(#000, 0.2)
|
||||||
|
|
||||||
> header
|
> header
|
||||||
$header-height = 40px
|
$header-height = 40px
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import Progress from '../../../common/scripts/loading';
|
import Progress from '../../../common/scripts/loading';
|
||||||
import getNoteSummary from '../../../../../renderers/get-note-summary';
|
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
@ -16,46 +15,14 @@ export default Vue.extend({
|
|||||||
default: 'timeline'
|
default: 'timeline'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
connection: null,
|
|
||||||
connectionId: null,
|
|
||||||
unreadCount: 0
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Misskey';
|
document.title = 'Misskey';
|
||||||
|
|
||||||
this.connection = (this as any).os.stream.getConnection();
|
|
||||||
this.connectionId = (this as any).os.stream.use();
|
|
||||||
|
|
||||||
this.connection.on('note', this.onStreamNote);
|
|
||||||
document.addEventListener('visibilitychange', this.onVisibilitychange, false);
|
|
||||||
|
|
||||||
Progress.start();
|
Progress.start();
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
|
||||||
this.connection.off('note', this.onStreamNote);
|
|
||||||
(this as any).os.stream.dispose(this.connectionId);
|
|
||||||
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
loaded() {
|
loaded() {
|
||||||
Progress.done();
|
Progress.done();
|
||||||
},
|
|
||||||
|
|
||||||
onStreamNote(note) {
|
|
||||||
if (document.hidden && note.userId != (this as any).os.i.id) {
|
|
||||||
this.unreadCount++;
|
|
||||||
document.title = `(${this.unreadCount}) ${getNoteSummary(note)}`;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onVisibilitychange() {
|
|
||||||
if (!document.hidden) {
|
|
||||||
this.unreadCount = 0;
|
|
||||||
document.title = 'Misskey';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<component :is="os.isSignedIn ? 'home' : 'welcome'"></component>
|
<component :is="$store.getters.isSignedIn ? 'home' : 'welcome'"></component>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -21,10 +21,21 @@ export default Vue.extend({
|
|||||||
$route: 'fetch'
|
$route: 'fetch'
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
const applyBg = v =>
|
||||||
|
document.documentElement.style.setProperty('background', v ? '#191b22' : '#fff', 'important');
|
||||||
|
|
||||||
|
applyBg(this.$store.state.device.darkmode);
|
||||||
|
|
||||||
|
this.unwatchDarkmode = this.$store.watch(s => {
|
||||||
|
return s.device.darkmode;
|
||||||
|
}, applyBg);
|
||||||
|
|
||||||
this.fetch();
|
this.fetch();
|
||||||
},
|
},
|
||||||
mounted() {
|
beforeDestroy() {
|
||||||
document.documentElement.style.background = '#fff';
|
document.documentElement.style.removeProperty('background');
|
||||||
|
document.documentElement.style.removeProperty('background-color'); // for safari's bug
|
||||||
|
this.unwatchDarkmode();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
fetch() {
|
fetch() {
|
||||||
@ -50,6 +61,5 @@ export default Vue.extend({
|
|||||||
flex 1
|
flex 1
|
||||||
flex-direction column
|
flex-direction column
|
||||||
min-height 100%
|
min-height 100%
|
||||||
background #fff
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -63,7 +63,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onBannerClick() {
|
onBannerClick() {
|
||||||
if (!(this as any).os.isSignedIn || (this as any).os.i.id != this.user.id) return;
|
if (!this.$store.getters.isSignedIn || this.$store.state.i.id != this.user.id) return;
|
||||||
|
|
||||||
(this as any).apis.updateBanner().then(i => {
|
(this as any).apis.updateBanner().then(i => {
|
||||||
this.user.bannerUrl = i.bannerUrl;
|
this.user.bannerUrl = i.bannerUrl;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div ref="left">
|
<div ref="left">
|
||||||
<x-profile :user="user"/>
|
<x-profile :user="user"/>
|
||||||
<x-photos :user="user"/>
|
<x-photos :user="user"/>
|
||||||
<x-followers-you-know v-if="os.isSignedIn && os.i.id != user.id" :user="user"/>
|
<x-followers-you-know v-if="$store.getters.isSignedIn && $store.state.i.id != user.id" :user="user"/>
|
||||||
<p v-if="user.host === null">%i18n:@last-used-at%: <b><mk-time :time="user.lastUsedAt"/></b></p>
|
<p v-if="user.host === null">%i18n:@last-used-at%: <b><mk-time :time="user.lastUsedAt"/></b></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<div class="friend-form" v-if="os.isSignedIn && os.i.id != user.id">
|
<div class="friend-form" v-if="$store.getters.isSignedIn && $store.state.i.id != user.id">
|
||||||
<mk-follow-button :user="user" size="big"/>
|
<mk-follow-button :user="user" size="big"/>
|
||||||
<p class="followed" v-if="user.isFollowed">%i18n:@follows-you%</p>
|
<p class="followed" v-if="user.isFollowed">%i18n:@follows-you%</p>
|
||||||
<p class="stalk" v-if="user.isFollowing">
|
<p class="stalk" v-if="user.isFollowing">
|
||||||
|
@ -21,6 +21,7 @@ const fetchLimit = 10;
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user'],
|
props: ['user'],
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
fetching: true,
|
fetching: true,
|
||||||
@ -31,19 +32,23 @@ export default Vue.extend({
|
|||||||
date: null
|
date: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
mode() {
|
mode() {
|
||||||
this.fetch();
|
this.fetch();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
document.addEventListener('keydown', this.onDocumentKeydown);
|
document.addEventListener('keydown', this.onDocumentKeydown);
|
||||||
|
|
||||||
this.fetch(() => this.$emit('loaded'));
|
this.fetch(() => this.$emit('loaded'));
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
document.removeEventListener('keydown', this.onDocumentKeydown);
|
document.removeEventListener('keydown', this.onDocumentKeydown);
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onDocumentKeydown(e) {
|
onDocumentKeydown(e) {
|
||||||
if (e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA') {
|
if (e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA') {
|
||||||
@ -52,6 +57,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
fetch(cb?) {
|
fetch(cb?) {
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
(this.$refs.timeline as any).init(() => new Promise((res, rej) => {
|
(this.$refs.timeline as any).init(() => new Promise((res, rej) => {
|
||||||
@ -72,15 +78,19 @@ export default Vue.extend({
|
|||||||
}, rej);
|
}, rej);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
more() {
|
more() {
|
||||||
this.moreFetching = true;
|
this.moreFetching = true;
|
||||||
(this as any).api('users/notes', {
|
|
||||||
|
const promise = (this as any).api('users/notes', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
includeReplies: this.mode == 'with-replies',
|
includeReplies: this.mode == 'with-replies',
|
||||||
withMedia: this.mode == 'with-media',
|
withMedia: this.mode == 'with-media',
|
||||||
untilId: (this.$refs.timeline as any).tail().id
|
untilId: (this.$refs.timeline as any).tail().id
|
||||||
}).then(notes => {
|
});
|
||||||
|
|
||||||
|
promise.then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
} else {
|
} else {
|
||||||
@ -89,7 +99,10 @@ export default Vue.extend({
|
|||||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||||
this.moreFetching = false;
|
this.moreFetching = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return promise;
|
||||||
},
|
},
|
||||||
|
|
||||||
warp(date) {
|
warp(date) {
|
||||||
this.date = date;
|
this.date = date;
|
||||||
this.fetch();
|
this.fetch();
|
||||||
|
@ -1,23 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-welcome">
|
<div class="mk-welcome">
|
||||||
|
<button @click="dark">
|
||||||
|
<template v-if="$store.state.device.darkmode">%fa:moon%</template>
|
||||||
|
<template v-else>%fa:R moon%</template>
|
||||||
|
</button>
|
||||||
<main>
|
<main>
|
||||||
<div class="top">
|
<img :src="$store.state.device.darkmode ? 'assets/title-dark.svg' : 'assets/title.svg'" alt="Misskey">
|
||||||
<div>
|
<p><button class="signup" @click="signup">%i18n:@signup-button%</button><button class="signin" @click="signin">%i18n:@signin-button%</button></p>
|
||||||
<div>
|
|
||||||
<h1>Share<br><span ref="share">Everything!</span><span class="cursor">_</span></h1>
|
<div class="tl">
|
||||||
<p>ようこそ! <b>Misskey</b>はTwitter風ミニブログSNSです。思ったことや皆と共有したいことを投稿しましょう。タイムラインを見れば、皆の関心事をすぐにチェックすることもできます。<a :href="aboutUrl">詳しく...</a></p>
|
<header>%fa:comments R% %i18n:@timeline%<div><span></span><span></span><span></span></div></header>
|
||||||
<p><button class="signup" @click="signup">はじめる</button><button class="signin" @click="signin">ログイン</button></p>
|
<mk-welcome-timeline/>
|
||||||
<div class="users">
|
|
||||||
<mk-avatar class="avatar" v-for="user in users" :key="user.id" :user="user"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<header>%fa:comments R% タイムライン<div><span></span><span></span><span></span></div></header>
|
|
||||||
<mk-welcome-timeline/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<mk-forkit/>
|
<mk-forkit/>
|
||||||
@ -28,11 +21,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<modal name="signup" width="500px" height="auto" scrollable>
|
<modal name="signup" width="500px" height="auto" scrollable>
|
||||||
<header :class="$style.signupFormHeader">新規登録</header>
|
<header :class="$style.signupFormHeader">%i18n:@signup%</header>
|
||||||
<mk-signup :class="$style.signupForm"/>
|
<mk-signup :class="$style.signupForm"/>
|
||||||
</modal>
|
</modal>
|
||||||
<modal name="signin" width="500px" height="auto" scrollable>
|
<modal name="signin" width="500px" height="auto" scrollable>
|
||||||
<header :class="$style.signinFormHeader">ログイン</header>
|
<header :class="$style.signinFormHeader">%i18n:@signin%</header>
|
||||||
<mk-signin :class="$style.signinForm"/>
|
<mk-signin :class="$style.signinForm"/>
|
||||||
</modal>
|
</modal>
|
||||||
</div>
|
</div>
|
||||||
@ -42,64 +35,25 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { docsUrl, copyright, lang } from '../../../config';
|
import { docsUrl, copyright, lang } from '../../../config';
|
||||||
|
|
||||||
const shares = [
|
|
||||||
'Everything!',
|
|
||||||
'Webpages',
|
|
||||||
'Photos',
|
|
||||||
'Interests',
|
|
||||||
'Favorites'
|
|
||||||
];
|
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
aboutUrl: `${docsUrl}/${lang}/about`,
|
aboutUrl: `${docsUrl}/${lang}/about`,
|
||||||
copyright,
|
copyright
|
||||||
users: [],
|
|
||||||
clock: null,
|
|
||||||
i: 0
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
|
||||||
(this as any).api('users', {
|
|
||||||
sort: '+follower',
|
|
||||||
limit: 20
|
|
||||||
}).then(users => {
|
|
||||||
this.users = users;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.clock = setInterval(() => {
|
|
||||||
if (++this.i == shares.length) this.i = 0;
|
|
||||||
const speed = 70;
|
|
||||||
const text = (this.$refs.share as any).innerText;
|
|
||||||
for (let i = 0; i < text.length; i++) {
|
|
||||||
setTimeout(() => {
|
|
||||||
if (this.$refs.share) {
|
|
||||||
(this.$refs.share as any).innerText = text.substr(0, text.length - i);
|
|
||||||
}
|
|
||||||
}, i * speed)
|
|
||||||
}
|
|
||||||
setTimeout(() => {
|
|
||||||
const newText = shares[this.i];
|
|
||||||
for (let i = 0; i <= newText.length; i++) {
|
|
||||||
setTimeout(() => {
|
|
||||||
if (this.$refs.share) {
|
|
||||||
(this.$refs.share as any).innerText = newText.substr(0, i);
|
|
||||||
}
|
|
||||||
}, i * speed)
|
|
||||||
}
|
|
||||||
}, text.length * speed);
|
|
||||||
}, 4000);
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
clearInterval(this.clock);
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
signup() {
|
signup() {
|
||||||
this.$modal.show('signup');
|
this.$modal.show('signup');
|
||||||
},
|
},
|
||||||
signin() {
|
signin() {
|
||||||
this.$modal.show('signin');
|
this.$modal.show('signin');
|
||||||
|
},
|
||||||
|
dark() {
|
||||||
|
this.$store.commit('device/set', {
|
||||||
|
key: 'darkmode',
|
||||||
|
value: !this.$store.state.device.darkmode
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -115,161 +69,107 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
@import url('https://fonts.googleapis.com/css?family=Sarpanch:700')
|
root(isDark)
|
||||||
|
|
||||||
.mk-welcome
|
|
||||||
display flex
|
display flex
|
||||||
flex-direction column
|
flex-direction column
|
||||||
flex 1
|
flex 1
|
||||||
$width = 1000px
|
|
||||||
|
|
||||||
background linear-gradient(to bottom, #1e1d65, #bd6659)
|
> button
|
||||||
//background-image url('/assets/welcome-bg.svg')
|
position absolute
|
||||||
background-size cover
|
z-index 1
|
||||||
background-position top center
|
top 0
|
||||||
|
|
||||||
&:before
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position fixed
|
|
||||||
bottom 0
|
|
||||||
left 0
|
left 0
|
||||||
width 100%
|
padding 16px
|
||||||
height 100%
|
font-size 18px
|
||||||
background-image url('/assets/welcome-fg.svg')
|
color isDark ? #fff : #555
|
||||||
background-size cover
|
|
||||||
background-position bottom center
|
|
||||||
|
|
||||||
> main
|
> main
|
||||||
display flex
|
|
||||||
flex 1
|
flex 1
|
||||||
|
padding 64px 0 0 0
|
||||||
|
text-align center
|
||||||
|
color isDark ? #9aa4b3 : #555
|
||||||
|
|
||||||
> .top
|
> img
|
||||||
display flex
|
width 350px
|
||||||
width 100%
|
|
||||||
|
|
||||||
> div
|
> p
|
||||||
display flex
|
margin 8px 0
|
||||||
max-width $width + 64px
|
line-height 2em
|
||||||
margin 0 auto
|
|
||||||
padding 80px 32px 0 32px
|
|
||||||
|
|
||||||
> *
|
button
|
||||||
margin-bottom 48px
|
padding 8px 16px
|
||||||
|
font-size inherit
|
||||||
|
|
||||||
> div:first-child
|
.signup
|
||||||
margin-right 48px
|
color $theme-color
|
||||||
color #fff
|
border solid 2px $theme-color
|
||||||
text-shadow 0 0 12px #172062
|
border-radius 4px
|
||||||
|
|
||||||
> h1
|
&:focus
|
||||||
margin 0
|
box-shadow 0 0 0 3px rgba($theme-color, 0.2)
|
||||||
font-weight bold
|
|
||||||
//font-variant small-caps
|
|
||||||
letter-spacing 12px
|
|
||||||
font-family 'Sarpanch', sans-serif
|
|
||||||
font-size 42px
|
|
||||||
line-height 48px
|
|
||||||
|
|
||||||
> .cursor
|
&:hover
|
||||||
animation cursor 1s infinite linear both
|
color $theme-color-foreground
|
||||||
|
background $theme-color
|
||||||
|
|
||||||
@keyframes cursor
|
&:active
|
||||||
0%
|
color $theme-color-foreground
|
||||||
opacity 1
|
background darken($theme-color, 10%)
|
||||||
50%
|
border-color darken($theme-color, 10%)
|
||||||
opacity 0
|
|
||||||
|
|
||||||
> p
|
.signin
|
||||||
margin 1em 0
|
&:hover
|
||||||
line-height 2em
|
color isDark ? #fff : #000
|
||||||
|
|
||||||
button
|
> .tl
|
||||||
padding 8px 16px
|
margin 32px auto 0 auto
|
||||||
font-size inherit
|
width 410px
|
||||||
|
text-align left
|
||||||
|
background isDark ? #313543 : #fff
|
||||||
|
border-radius 8px
|
||||||
|
box-shadow 0 8px 32px rgba(#000, 0.15)
|
||||||
|
overflow hidden
|
||||||
|
|
||||||
.signup
|
> header
|
||||||
color $theme-color
|
z-index 1
|
||||||
border solid 2px $theme-color
|
padding 12px 16px
|
||||||
border-radius 4px
|
color isDark ? #e3e5e8 : #888d94
|
||||||
|
box-shadow 0 1px 0px rgba(#000, 0.1)
|
||||||
|
|
||||||
&:focus
|
> div
|
||||||
box-shadow 0 0 0 3px rgba($theme-color, 0.2)
|
position absolute
|
||||||
|
top 0
|
||||||
|
right 0
|
||||||
|
padding inherit
|
||||||
|
|
||||||
&:hover
|
> span
|
||||||
color $theme-color-foreground
|
display inline-block
|
||||||
background $theme-color
|
height 11px
|
||||||
|
width 11px
|
||||||
|
margin-left 6px
|
||||||
|
border-radius 100%
|
||||||
|
vertical-align middle
|
||||||
|
|
||||||
&:active
|
&:nth-child(1)
|
||||||
color $theme-color-foreground
|
background #5BCC8B
|
||||||
background darken($theme-color, 10%)
|
|
||||||
border-color darken($theme-color, 10%)
|
|
||||||
|
|
||||||
.signin
|
&:nth-child(2)
|
||||||
&:hover
|
background #E6BB46
|
||||||
color #fff
|
|
||||||
|
|
||||||
> .users
|
&:nth-child(3)
|
||||||
margin 16px 0 0 0
|
background #DF7065
|
||||||
|
|
||||||
> *
|
> .mk-welcome-timeline
|
||||||
display inline-block
|
max-height 350px
|
||||||
margin 4px
|
overflow auto
|
||||||
width 38px
|
|
||||||
height 38px
|
|
||||||
border-radius 6px
|
|
||||||
|
|
||||||
> div:last-child
|
|
||||||
|
|
||||||
> div
|
|
||||||
width 410px
|
|
||||||
background #fff
|
|
||||||
border-radius 8px
|
|
||||||
box-shadow 0 0 0 12px rgba(#000, 0.1)
|
|
||||||
overflow hidden
|
|
||||||
|
|
||||||
> header
|
|
||||||
z-index 1
|
|
||||||
padding 12px 16px
|
|
||||||
color #888d94
|
|
||||||
box-shadow 0 1px 0px rgba(#000, 0.1)
|
|
||||||
|
|
||||||
> div
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
right 0
|
|
||||||
padding inherit
|
|
||||||
|
|
||||||
> span
|
|
||||||
display inline-block
|
|
||||||
height 11px
|
|
||||||
width 11px
|
|
||||||
margin-left 6px
|
|
||||||
background #ccc
|
|
||||||
border-radius 100%
|
|
||||||
vertical-align middle
|
|
||||||
|
|
||||||
&:nth-child(1)
|
|
||||||
background #5BCC8B
|
|
||||||
|
|
||||||
&:nth-child(2)
|
|
||||||
background #E6BB46
|
|
||||||
|
|
||||||
&:nth-child(3)
|
|
||||||
background #DF7065
|
|
||||||
|
|
||||||
> .mk-welcome-timeline
|
|
||||||
max-height 350px
|
|
||||||
overflow auto
|
|
||||||
|
|
||||||
> footer
|
> footer
|
||||||
font-size 12px
|
font-size 12px
|
||||||
color #949ea5
|
color isDark ? #949ea5 : #737c82
|
||||||
|
|
||||||
> div
|
> div
|
||||||
max-width $width
|
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
padding 0 0 42px 0
|
padding 64px
|
||||||
text-align center
|
text-align center
|
||||||
|
|
||||||
> .c
|
> .c
|
||||||
@ -277,6 +177,12 @@ export default Vue.extend({
|
|||||||
font-size 10px
|
font-size 10px
|
||||||
opacity 0.7
|
opacity 0.7
|
||||||
|
|
||||||
|
.mk-welcome[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-welcome:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="stylus" module>
|
<style lang="stylus" module>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<mk-activity
|
<mk-activity
|
||||||
:design="props.design"
|
:design="props.design"
|
||||||
:init-view="props.view"
|
:init-view="props.view"
|
||||||
:user="os.i"
|
:user="$store.state.i"
|
||||||
@view-changed="viewChanged"/>
|
@view-changed="viewChanged"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<template slot="header">%fa:chart-pie%%i18n:@title%</template>
|
<template slot="header">%fa:chart-pie%%i18n:@title%</template>
|
||||||
<button slot="func" title="%i18n:@refresh%" @click="fetch">%fa:sync%</button>
|
<button slot="func" title="%i18n:@refresh%" @click="fetch">%fa:sync%</button>
|
||||||
|
|
||||||
<div class="mkw-polls--body" :data-darkmode="_darkmode_">
|
<div class="mkw-polls--body" :data-darkmode="$store.state.device.darkmode">
|
||||||
<div class="poll" v-if="!fetching && poll != null">
|
<div class="poll" v-if="!fetching && poll != null">
|
||||||
<p v-if="poll.text"><router-link to="poll | notePage">{{ poll.text }}</router-link></p>
|
<p v-if="poll.text"><router-link to="poll | notePage">{{ poll.text }}</router-link></p>
|
||||||
<p v-if="!poll.text"><router-link to="poll | notePage">%fa:link%</router-link></p>
|
<p v-if="!poll.text"><router-link to="poll | notePage">%fa:link%</router-link></p>
|
||||||
|
@ -4,16 +4,16 @@
|
|||||||
:data-melt="props.design == 2"
|
:data-melt="props.design == 2"
|
||||||
>
|
>
|
||||||
<div class="banner"
|
<div class="banner"
|
||||||
:style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=256)` : ''"
|
:style="$store.state.i.bannerUrl ? `background-image: url(${$store.state.i.bannerUrl}?thumbnail&size=256)` : ''"
|
||||||
title="%i18n:@update-banner%"
|
title="%i18n:@update-banner%"
|
||||||
@click="os.apis.updateBanner"
|
@click="os.apis.updateBanner"
|
||||||
></div>
|
></div>
|
||||||
<mk-avatar class="avatar" :user="os.i"
|
<mk-avatar class="avatar" :user="$store.state.i"
|
||||||
@click="os.apis.updateAvatar"
|
@click="os.apis.updateAvatar"
|
||||||
title="%i18n:@update-avatar%"
|
title="%i18n:@update-avatar%"
|
||||||
/>
|
/>
|
||||||
<router-link class="name" :to="os.i | userPage">{{ os.i | userName }}</router-link>
|
<router-link class="name" :to="$store.state.i | userPage">{{ $store.state.i | userName }}</router-link>
|
||||||
<p class="username">@{{ os.i | acct }}</p>
|
<p class="username">@{{ $store.state.i | acct }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -49,48 +49,6 @@ Vue.mixin({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dark/Light
|
|
||||||
const bus = new Vue();
|
|
||||||
Vue.mixin({
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
_darkmode_: localStorage.getItem('darkmode') == 'true'
|
|
||||||
};
|
|
||||||
},
|
|
||||||
beforeCreate() {
|
|
||||||
// なぜか警告が出るので
|
|
||||||
this._darkmode_ = localStorage.getItem('darkmode') == 'true';
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
bus.$off('updated', this._onDarkmodeUpdated_);
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this._onDarkmodeUpdated_(this._darkmode_);
|
|
||||||
bus.$on('updated', this._onDarkmodeUpdated_);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
_updateDarkmode_(v) {
|
|
||||||
localStorage.setItem('darkmode', v.toString());
|
|
||||||
if (v) {
|
|
||||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
|
||||||
} else {
|
|
||||||
document.documentElement.removeAttribute('data-darkmode');
|
|
||||||
}
|
|
||||||
bus.$emit('updated', v);
|
|
||||||
},
|
|
||||||
_onDarkmodeUpdated_(v) {
|
|
||||||
if (!this.$el || !this.$el.setAttribute) return;
|
|
||||||
if (v) {
|
|
||||||
this.$el.setAttribute('data-darkmode', 'true');
|
|
||||||
} else {
|
|
||||||
this.$el.removeAttribute('data-darkmode');
|
|
||||||
}
|
|
||||||
this._darkmode_ = v;
|
|
||||||
this.$forceUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APP ENTRY POINT!
|
* APP ENTRY POINT!
|
||||||
*/
|
*/
|
||||||
@ -141,13 +99,51 @@ export default (callback: (launch: (router: VueRouter, api?: (os: MiOS) => API)
|
|||||||
const launch = (router: VueRouter, api?: (os: MiOS) => API) => {
|
const launch = (router: VueRouter, api?: (os: MiOS) => API) => {
|
||||||
os.apis = api ? api(os) : null;
|
os.apis = api ? api(os) : null;
|
||||||
|
|
||||||
|
//#region Dark/Light
|
||||||
|
Vue.mixin({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
_unwatchDarkmode_: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const apply = v => {
|
||||||
|
if (this.$el.setAttribute == null) return;
|
||||||
|
if (v) {
|
||||||
|
this.$el.setAttribute('data-darkmode', 'true');
|
||||||
|
} else {
|
||||||
|
this.$el.removeAttribute('data-darkmode');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
apply(os.store.state.device.darkmode);
|
||||||
|
|
||||||
|
this._unwatchDarkmode_ = os.store.watch(s => {
|
||||||
|
return s.device.darkmode;
|
||||||
|
}, apply);
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
this._unwatchDarkmode_();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
os.store.watch(s => {
|
||||||
|
return s.device.darkmode;
|
||||||
|
}, v => {
|
||||||
|
if (v) {
|
||||||
|
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||||
|
} else {
|
||||||
|
document.documentElement.removeAttribute('data-darkmode');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//#endregion
|
||||||
|
|
||||||
Vue.mixin({
|
Vue.mixin({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
os,
|
os,
|
||||||
api: os.api,
|
api: os.api,
|
||||||
apis: os.apis,
|
apis: os.apis
|
||||||
clientSettings: os.store.state.settings
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|