Compare commits
2279 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2cf2c4396 | ||
|
|
79a9ab995d | ||
|
|
f6aabb7c5d | ||
|
|
b2782daece | ||
|
|
e7fdf05b00 | ||
|
|
02c532234c | ||
|
|
6eb6241044 | ||
|
|
af205b4877 | ||
|
|
a04eaaa779 | ||
|
|
d09e04e483 | ||
|
|
f421136f75 | ||
| f78f76a679 | |||
|
|
cd3bf1b97a | ||
|
|
e4ac46eb19 | ||
|
|
0d825f5c72 | ||
|
|
84e87cc2cd | ||
|
|
096cb08e98 | ||
|
|
1728fc31ed | ||
|
|
162428d8cb | ||
|
|
24408b9440 | ||
|
|
641a402daa | ||
|
|
026f486b3e | ||
|
|
7bb3fc581b | ||
|
|
88618b4c29 | ||
|
|
70d74e675f | ||
|
|
b80b4b2534 | ||
|
|
de8b7c1ac0 | ||
|
|
ed69456064 | ||
|
|
370843c296 | ||
|
|
02edf04117 | ||
|
|
6b4a495b87 | ||
|
|
3738f7fd51 | ||
|
|
e28e5cb052 | ||
|
|
762831931b | ||
|
|
29b7e4da37 | ||
|
|
037f1bee08 | ||
|
|
b5c8a014b7 | ||
|
|
f6fa696eb4 | ||
|
|
558ac0ae0c | ||
|
|
3355b5edbe | ||
|
|
b8f14bfb5d | ||
|
|
34caa41963 | ||
|
|
12bfc634c3 | ||
|
|
6b162eb3f2 | ||
|
|
767d6c5a1d | ||
|
|
5ae0292e0b | ||
|
|
fd4333c0e4 | ||
|
|
9843084b03 | ||
|
|
824a175ec7 | ||
|
|
6d931dc89b | ||
|
|
8a89fb604b | ||
|
|
e677e99b02 | ||
|
|
76da76f3bf | ||
|
|
41ce067d43 | ||
|
|
eddb12c5fb | ||
|
|
c124bcb7c6 | ||
|
|
0120f09bb7 | ||
|
|
8430ac1e6c | ||
|
|
f5ca209c2b | ||
|
|
b529a8f40e | ||
|
|
62201a0169 | ||
|
|
1d5011e186 | ||
|
|
6ddb8e3c37 | ||
|
|
50c0d44477 | ||
|
|
b731a0cd48 | ||
|
|
7e8fbb27a3 | ||
|
|
3bfdc1d154 | ||
|
|
1136b9ecda | ||
|
|
24acf5c827 | ||
|
|
734828918b | ||
|
|
471ba7d4e1 | ||
|
|
01fc02be9a | ||
|
|
1b33496d42 | ||
|
|
0963a6475d | ||
|
|
47be9d5d02 | ||
|
|
8c3fc3f412 | ||
|
|
28c59e902c | ||
|
|
bd027e590e | ||
|
|
af8d6dbc7c | ||
|
|
9dd6d7c55f | ||
|
|
1b1e723bdf | ||
|
|
1f81dabef4 | ||
|
|
67fbd16be6 | ||
|
|
a25880462f | ||
|
|
fe6737d546 | ||
|
|
2ccbd6952e | ||
|
|
68cafd991b | ||
|
|
8c6a24dc81 | ||
|
|
d13e88e134 | ||
|
|
7a365be88a | ||
|
|
bce48181e0 | ||
|
|
5a856a00c5 | ||
|
|
f610d41661 | ||
|
|
c69bfcb8bf | ||
|
|
db4c1c730c | ||
|
|
a4a896eae2 | ||
|
|
523c760594 | ||
|
|
aa3e42735f | ||
|
|
a85e8fd11e | ||
|
|
3e4f7b40eb | ||
|
|
c21f5c28a8 | ||
|
|
b48d880933 | ||
|
|
5c8310da64 | ||
|
|
e599b99223 | ||
|
|
105b8c461c | ||
|
|
f890672849 | ||
|
|
cd93cae133 | ||
|
|
36ab573966 | ||
|
|
96f8809bd8 | ||
|
|
deb04a8e82 | ||
|
|
784793f0f5 | ||
|
|
521dc36895 | ||
|
|
97922263b7 | ||
|
|
ebd168071b | ||
|
|
c0a0fa5e2c | ||
|
|
21672a8cfb | ||
|
|
f20c31f4dd | ||
|
|
a1426b0e35 | ||
|
|
2f327fb711 | ||
|
|
c875c9abb5 | ||
|
|
0f96ae6e8c | ||
|
|
6404af1b2a | ||
|
|
a38bfa1449 | ||
|
|
52187c02ac | ||
|
|
cd6c22d461 | ||
|
|
ee590e964b | ||
|
|
abdaf9b2c8 | ||
|
|
5f54211928 | ||
|
|
9c9a294ba4 | ||
|
|
eca6ea64c1 | ||
|
|
f51e59c2e5 | ||
|
|
ff35e42a35 | ||
|
|
b77d2a217f | ||
|
|
5e0886bb85 | ||
|
|
539b84f491 | ||
|
|
535fcdbb8e | ||
|
|
688a216ad0 | ||
|
|
97a43ff02e | ||
|
|
e13241d6a8 | ||
|
|
4c3db8bb6c | ||
|
|
dd40e6d916 | ||
|
|
e9d858a815 | ||
|
|
784967f0d1 | ||
|
|
6a07d224b8 | ||
|
|
0c9f711afc | ||
|
|
4e7f7f61ab | ||
|
|
b876f253d3 | ||
|
|
b9df42d1fb | ||
|
|
6b323ecdae | ||
|
|
6649c0c06d | ||
|
|
4c11f2618c | ||
|
|
4f792d7d5f | ||
|
|
bf3366f272 | ||
|
|
2ad12d281d | ||
|
|
960eb4e867 | ||
|
|
b95b27f0d6 | ||
|
|
9531dc37d1 | ||
|
|
6706113188 | ||
|
|
4587b9b093 | ||
|
|
14e9ec64f1 | ||
|
|
ca86464716 | ||
|
|
fd162b694b | ||
|
|
6be0340161 | ||
|
|
b9e7a0ff95 | ||
|
|
693c33e83a | ||
|
|
703d449b0b | ||
|
|
b4369f4068 | ||
|
|
0ae1716a3c | ||
|
|
30943280a8 | ||
|
|
227515d750 | ||
|
|
ebc6ee4247 | ||
|
|
905b87bd57 | ||
|
|
0ccc819452 | ||
|
|
99003ce148 | ||
|
|
fd929f7c67 | ||
|
|
f4e9a62600 | ||
|
|
7e21b8ae67 | ||
|
|
de5a453ba2 | ||
|
|
e1acc7d6b0 | ||
|
|
d955f5745d | ||
|
|
a39fcb708c | ||
|
|
ac84d75e37 | ||
|
|
380e29c389 | ||
|
|
beee6a5e6a | ||
|
|
a319b6774b | ||
|
|
7443433cf5 | ||
|
|
1d2f3edf28 | ||
|
|
fc7d58f426 | ||
|
|
bff4d12865 | ||
|
|
e55b5064b0 | ||
|
|
b08f82c941 | ||
|
|
9a7204565e | ||
|
|
e72c4739c5 | ||
|
|
6b595c9443 | ||
|
|
9ce4fd42fa | ||
|
|
65adc01085 | ||
|
|
2f0e5e2579 | ||
|
|
4a229ba08d | ||
|
|
6cc2a3f484 | ||
|
|
bb22a59188 | ||
|
|
0cff3bc752 | ||
|
|
3be7f829c1 | ||
|
|
1fdc329fbc | ||
|
|
49d3118018 | ||
|
|
fa0eca6723 | ||
|
|
c375aab44e | ||
|
|
c0e6dc17e8 | ||
|
|
53241eba0a | ||
|
|
78acbff013 | ||
|
|
48a0b115f2 | ||
|
|
ababebbe3d | ||
|
|
9fe60b7249 | ||
|
|
8aa6cb2c91 | ||
|
|
9e5c0534aa | ||
|
|
b329123426 | ||
|
|
1c6787bdc3 | ||
|
|
1b4695771c | ||
|
|
29090455de | ||
|
|
bffb01401f | ||
|
|
c99584fc41 | ||
|
|
3697c190e5 | ||
|
|
8197edf722 | ||
|
|
d23795ef6c | ||
|
|
bb400cde9f | ||
|
|
b871981c8d | ||
|
|
ec99fba2fc | ||
|
|
7f977b9f4d | ||
|
|
7c4f1a8d02 | ||
|
|
a0df20e97d | ||
|
|
3ceacc3b32 | ||
|
|
dda1b3b118 | ||
|
|
ff379da2dd | ||
|
|
655253d0d7 | ||
|
|
690afc7cfb | ||
|
|
62c530a4d0 | ||
|
|
f5cd9ce15c | ||
|
|
ef0faf698e | ||
|
|
2fadf1f9c3 | ||
|
|
b44b34b982 | ||
|
|
93cfff70ba | ||
|
|
97bc544bf9 | ||
|
|
ee62544c54 | ||
|
|
a9848f47fc | ||
|
|
9107e8b335 | ||
|
|
583c806cea | ||
|
|
cd4a14f5c3 | ||
|
|
6fa8e110bc | ||
|
|
3ea0240bcc | ||
|
|
216c259770 | ||
|
|
820bfdb062 | ||
|
|
b74176b685 | ||
|
|
510e7dc0b4 | ||
|
|
562539afe5 | ||
|
|
1875336e75 | ||
|
|
6755047587 | ||
|
|
170dfda478 | ||
|
|
6f2432b5b8 | ||
|
|
63ee310f34 | ||
|
|
1215ba1be6 | ||
|
|
1230478701 | ||
|
|
97c97ba702 | ||
|
|
5e3ffaa9e0 | ||
|
|
724a8b4220 | ||
|
|
b1789baa36 | ||
|
|
9d248c1494 | ||
|
|
8f31927d01 | ||
|
|
1febb9c10d | ||
|
|
6d54677ef4 | ||
|
|
535e9b605a | ||
|
|
79482c6dde | ||
|
|
5c71649be5 | ||
|
|
23113d8053 | ||
|
|
260b45afbe | ||
|
|
20f2d8519f | ||
|
|
7be695a2f6 | ||
|
|
671def88af | ||
|
|
b63241658e | ||
|
|
4a3e01d2cb | ||
|
|
7203eebde7 | ||
|
|
3662b61406 | ||
|
|
89b11bd248 | ||
|
|
f6a90db92a | ||
|
|
00632be1fb | ||
|
|
e208af2939 | ||
|
|
9987f226bf | ||
|
|
e296d74ee0 | ||
|
|
90c9653e01 | ||
|
|
f239d2a0e3 | ||
|
|
ba3a8cae6a | ||
|
|
daee5c8727 | ||
|
|
d5fc3f5432 | ||
|
|
6f5995abdb | ||
|
|
6fad351a7a | ||
|
|
f0d1971977 | ||
|
|
29cb152be2 | ||
|
|
e8849e8682 | ||
|
|
449ca153a2 | ||
|
|
961c09100c | ||
|
|
7aeadf74ce | ||
|
|
47af31d856 | ||
|
|
8759b2332d | ||
|
|
291d85f81a | ||
|
|
110f571475 | ||
|
|
06644352dc | ||
|
|
8975d1c727 | ||
|
|
bbc89f7403 | ||
|
|
5e19c09d88 | ||
|
|
77b76d91ed | ||
|
|
2c84a6df5a | ||
|
|
b43d3f903a | ||
|
|
3a2ceeadda | ||
|
|
c14136b32a | ||
|
|
26e73056c2 | ||
|
|
a2bc170a12 | ||
|
|
2beca51c5a | ||
|
|
54505d3102 | ||
|
|
dfe2fabc69 | ||
|
|
0e101ecc8a | ||
|
|
9dad8b9e09 | ||
|
|
ca469c8c7d | ||
|
|
7a7180ad79 | ||
|
|
09e8f79519 | ||
|
|
87f242e363 | ||
|
|
504ddb532d | ||
|
|
8ef76514e2 | ||
|
|
9bd2a53f69 | ||
|
|
d8c218addd | ||
|
|
e6f4b071af | ||
|
|
7c5deeacdd | ||
|
|
b07c388fc0 | ||
|
|
35ebd43fd7 | ||
|
|
b1eb74225d | ||
|
|
04d469e884 | ||
|
|
45291c8832 | ||
|
|
a6f74184b2 | ||
|
|
56551bc84e | ||
|
|
34dcae52f2 | ||
|
|
99b7396f23 | ||
|
|
64ce8bac74 | ||
|
|
d41f3c6d76 | ||
|
|
1b4c1583b2 | ||
|
|
010a496f46 | ||
|
|
ff20a467c6 | ||
|
|
0ecfd70af9 | ||
|
|
51a5e19936 | ||
|
|
8c992955cb | ||
|
|
a23c05cc31 | ||
|
|
1984f89fad | ||
|
|
ce88a96620 | ||
|
|
3c860c34f1 | ||
|
|
514ad9aa7a | ||
|
|
d5973740f2 | ||
|
|
b9db4d3a0c | ||
|
|
adb799780e | ||
|
|
e4194105ed | ||
|
|
789337c9ed | ||
|
|
a8cb1eb2a1 | ||
|
|
68e1ec0578 | ||
|
|
3b48d79db3 | ||
|
|
8a607d7e05 | ||
|
|
1bfac93a81 | ||
|
|
d84100cef1 | ||
|
|
4d3f7158de | ||
|
|
78901cd620 | ||
|
|
fed15e5059 | ||
|
|
a083d258fa | ||
|
|
b72a1cd126 | ||
|
|
a7045e4621 | ||
|
|
75eaaf6ff0 | ||
|
|
4e3ed839c7 | ||
|
|
956f586d60 | ||
|
|
327336dcde | ||
|
|
dffc46c083 | ||
|
|
cb87b9eeb6 | ||
|
|
99b0f48d92 | ||
|
|
406f3835b1 | ||
|
|
420f123697 | ||
|
|
7a10ff55a9 | ||
|
|
b40ca7446e | ||
|
|
d1c1ae22b0 | ||
|
|
8d8ff08e3a | ||
|
|
ce5d1db1d2 | ||
|
|
2ea513c4d6 | ||
|
|
a9bde454c1 | ||
|
|
3e6d7ea615 | ||
|
|
c78a0faf69 | ||
|
|
be29d2a97c | ||
|
|
a98b445de8 | ||
|
|
cedcd48b13 | ||
|
|
acb338bc64 | ||
|
|
69f8925199 | ||
|
|
98e64c0abc | ||
|
|
a70084e671 | ||
|
|
9fe4ee1fcb | ||
|
|
12ed469007 | ||
|
|
fe78582e65 | ||
|
|
16c349548e | ||
|
|
d1867ee15a | ||
|
|
4e8a904477 | ||
|
|
779dd2ddc5 | ||
|
|
6a0244cf20 | ||
|
|
f093486734 | ||
|
|
aa99cfd5dd | ||
|
|
921c5885bf | ||
|
|
996f25d1fd | ||
|
|
d0c694b46e | ||
|
|
66d6704a08 | ||
|
|
360ce67af8 | ||
|
|
7fed72810c | ||
|
|
a1a5e75143 | ||
|
|
c8d9276926 | ||
|
|
5eff4ef959 | ||
|
|
7bb292f439 | ||
|
|
f744d860b3 | ||
|
|
0bfb8b4eed | ||
|
|
ccf09cca75 | ||
|
|
8d594ab62d | ||
|
|
334cb94c08 | ||
|
|
485a0ea202 | ||
|
|
367d28c909 | ||
|
|
b9d9436a94 | ||
|
|
ae0f629fa7 | ||
|
|
c6669df375 | ||
|
|
1f2584e093 | ||
|
|
eddb935907 | ||
|
|
fb123d2080 | ||
|
|
b55097eeca | ||
|
|
82a947201b | ||
|
|
c8421b7870 | ||
|
|
dd907871c5 | ||
|
|
07a72c3eae | ||
|
|
1ab517f8a0 | ||
|
|
8b4fcd14d8 | ||
|
|
ec77153a75 | ||
|
|
2a34485411 | ||
|
|
eae88d1cee | ||
|
|
4b40f3af0d | ||
|
|
34011b5d01 | ||
|
|
575c226a98 | ||
|
|
6b52d32ac1 | ||
|
|
b268277d9b | ||
|
|
65ebdcdd8a | ||
|
|
93122e6032 | ||
|
|
25616ee8ce | ||
|
|
c5596ba0ad | ||
|
|
348e6347c1 | ||
|
|
866cf8c704 | ||
|
|
823fdf3177 | ||
|
|
9af579f9fd | ||
|
|
a7c4f92e9a | ||
|
|
0de9223c4f | ||
|
|
0d1c73d1df | ||
|
|
f626cf0837 | ||
|
|
197903f611 | ||
|
|
d7b5cba088 | ||
|
|
6b711cebe9 | ||
|
|
b244b611b3 | ||
|
|
6bc7db501d | ||
|
|
cfedf5cd44 | ||
|
|
25f416b1fa | ||
|
|
67518be5ca | ||
|
|
1e91472b12 | ||
|
|
176a54d5be | ||
|
|
004a059504 | ||
|
|
90c5062fc7 | ||
|
|
1167c7883e | ||
|
|
8e80cb0afc | ||
|
|
fbba6c320b | ||
|
|
bba37676ad | ||
|
|
ef8c8d83b0 | ||
|
|
7c348b899a | ||
|
|
4687e8ba9d | ||
|
|
3eca53d1dc | ||
|
|
b142cd7fd4 | ||
|
|
f4d7795f1c | ||
|
|
386796a413 | ||
|
|
ed840c0c16 | ||
|
|
4aa23a9603 | ||
|
|
00ba707114 | ||
|
|
a672bbf04f | ||
|
|
eff118d1db | ||
|
|
2e5cb614a1 | ||
|
|
acc0912509 | ||
|
|
4d68042c07 | ||
|
|
8b99e9fd89 | ||
|
|
45c4aa03fb | ||
|
|
54173d51ff | ||
|
|
82f56e95e4 | ||
|
|
f7747f2865 | ||
|
|
549c827a4b | ||
|
|
367d58a632 | ||
|
|
915f72a753 | ||
|
|
7d707b7471 | ||
|
|
faaf56c93b | ||
|
|
37e6cd12ff | ||
|
|
648e687c9f | ||
|
|
4bdd69b35e | ||
|
|
6ce041ba33 | ||
|
|
1094072e9a | ||
|
|
3f22fcabc8 | ||
|
|
cfed3acd66 | ||
|
|
e2cff94a62 | ||
|
|
82d0661e37 | ||
|
|
5504d40c8f | ||
|
|
60fd1aa17b | ||
|
|
4d6ff675d0 | ||
|
|
014ae4eb03 | ||
|
|
72c395c25b | ||
|
|
abd85d2b53 | ||
|
|
66bbb8c4f8 | ||
|
|
4343425ce2 | ||
|
|
39fe6b59a1 | ||
|
|
d11e07c812 | ||
|
|
e6e57c8062 | ||
|
|
4f47ba19d6 | ||
|
|
e035e85018 | ||
|
|
42e8b2dd0c | ||
|
|
b60789c85e | ||
|
|
cb21f5acbf | ||
|
|
566e84bf25 | ||
|
|
ae487b925e | ||
|
|
d9631099cf | ||
|
|
48b58b1f30 | ||
|
|
77b7b28403 | ||
|
|
9640a57dc8 | ||
|
|
9b49734e53 | ||
|
|
739146e0fb | ||
|
|
34451a62e8 | ||
|
|
89be8c9d9c | ||
|
|
e6dcf2ef82 | ||
|
|
a16581f608 | ||
|
|
f9e6df8f92 | ||
|
|
416078506b | ||
|
|
d5be1e328c | ||
|
|
4beb064fe9 | ||
|
|
2d6dce6351 | ||
|
|
d5e0ba8013 | ||
|
|
320ce4a62d | ||
|
|
0edba02ead | ||
|
|
0a19bcbd06 | ||
|
|
38cdcc5379 | ||
|
|
1ea593b2a3 | ||
|
|
0c2bc8ad38 | ||
|
|
ba90793830 | ||
|
|
2fc97006d9 | ||
|
|
103186d088 | ||
|
|
fce340fd33 | ||
|
|
b97313914f | ||
|
|
5635c67251 | ||
|
|
2971a8473b | ||
|
|
fb59410818 | ||
|
|
eebe58ca2e | ||
|
|
397b177462 | ||
|
|
79d0e80b1c | ||
|
|
6b7bcd0314 | ||
|
|
2b811911d3 | ||
|
|
e218943c42 | ||
|
|
9d97c93ece | ||
|
|
c5c6897ee3 | ||
|
|
2fc9a59695 | ||
|
|
9a9a05cd7e | ||
|
|
dba2f9485d | ||
|
|
9ce3662681 | ||
|
|
a35258a133 | ||
|
|
ae47aaeacd | ||
|
|
dc4e96ebf2 | ||
|
|
392c3ea07c | ||
|
|
e4b5cbd0bf | ||
|
|
faa097ac37 | ||
|
|
5e5cf93699 | ||
|
|
796148f410 | ||
|
|
990c5f497c | ||
|
|
ee739884e4 | ||
|
|
31d97bb939 | ||
|
|
4a7c06e6f0 | ||
|
|
84a79686d4 | ||
|
|
9b3bb24cda | ||
|
|
1cfe00697a | ||
|
|
a57910bda7 | ||
|
|
bd04109f55 | ||
|
|
11906bab53 | ||
|
|
e51bb95fa6 | ||
|
|
f63e429c2a | ||
|
|
2b0da9beb6 | ||
|
|
8e7b8ae078 | ||
|
|
bc568a69fd | ||
|
|
163e8a75dc | ||
|
|
50ec9b42ed | ||
|
|
98b9aaab28 | ||
|
|
f8cd1d0d92 | ||
|
|
ee4555b3c6 | ||
|
|
e37801fe6d | ||
|
|
5ba6a02113 | ||
|
|
7e0428112a | ||
|
|
058d51e80e | ||
|
|
87fdf9acca | ||
|
|
4d3fa458eb | ||
|
|
9aa6f2d36b | ||
|
|
46eeeb107e | ||
|
|
a1a63d474c | ||
|
|
af15669fa6 | ||
|
|
67cebd9ca6 | ||
|
|
4a20de77f9 | ||
|
|
fee724f2d9 | ||
|
|
0044a2f731 | ||
|
|
e700176924 | ||
|
|
b2820e908f | ||
|
|
d3fc1a6582 | ||
|
|
68a376f3ae | ||
|
|
74b1640214 | ||
|
|
62b80c229b | ||
|
|
eb4dc9e66c | ||
|
|
0926d6fa37 | ||
|
|
62901ae91b | ||
|
|
e78c894fb8 | ||
|
|
f6e2051355 | ||
|
|
24ca9a3a04 | ||
|
|
f54ae5ce15 | ||
|
|
a6903612e4 | ||
|
|
3df616ef02 | ||
|
|
11f45a465c | ||
|
|
8db7b1561d | ||
|
|
5d6285e260 | ||
|
|
ec2d73bc4c | ||
|
|
797485272c | ||
|
|
fc5c079118 | ||
|
|
712c660aee | ||
|
|
b0b61b5ca7 | ||
|
|
b96d86ac82 | ||
|
|
bac5fdf824 | ||
|
|
07a9cb6256 | ||
|
|
b01f5d473a | ||
|
|
7eb105c5ed | ||
|
|
0d7d172aae | ||
|
|
233ef00989 | ||
|
|
10ffb371dc | ||
|
|
d37cbf4545 | ||
|
|
9153388c06 | ||
|
|
7a89dc7fef | ||
|
|
2391fce076 | ||
|
|
3a67535206 | ||
|
|
2f94e63381 | ||
|
|
bf2217e0b0 | ||
|
|
c31f3defaa | ||
|
|
f3fc6ae757 | ||
|
|
daaeba1bbb | ||
|
|
bd27f55d32 | ||
|
|
c1913ffde2 | ||
|
|
060ee9679a | ||
|
|
3115070aea | ||
|
|
aea9eba50b | ||
|
|
1da0265a7c | ||
|
|
186cb5e81b | ||
|
|
20e42186fb | ||
|
|
02f785dd97 | ||
|
|
7e6b98cb73 | ||
|
|
de5a9d18ba | ||
|
|
d9ea86441d | ||
|
|
0a037aaef6 | ||
|
|
c760eafd86 | ||
|
|
9f0c7ecb24 | ||
|
|
1fb952c8dc | ||
|
|
86b4bd65b8 | ||
|
|
5270379632 | ||
|
|
380ccacddf | ||
|
|
9e78e0f046 | ||
|
|
8db4bd1e5f | ||
|
|
ba64945d2d | ||
|
|
5fd4ce231f | ||
|
|
654ba50e49 | ||
|
|
dc074a07e4 | ||
|
|
38eb05efb7 | ||
|
|
1eba971031 | ||
|
|
5fa696c18a | ||
|
|
7b9a2d4b2e | ||
|
|
bad6766532 | ||
|
|
3a42cd73cb | ||
|
|
36e19acf88 | ||
|
|
c458dcc620 | ||
|
|
c24bd47163 | ||
|
|
9e1b4ba1f4 | ||
|
|
bce93a0856 | ||
|
|
ed6666e65a | ||
|
|
e3b9f7cf24 | ||
|
|
b0b32b43d8 | ||
|
|
347d7f2593 | ||
|
|
e673f36288 | ||
|
|
933c53c87b | ||
|
|
c99686d727 | ||
|
|
a1410302ce | ||
|
|
8941488682 | ||
|
|
ec8e0a7feb | ||
|
|
cb0d2e59b8 | ||
|
|
2166fa0396 | ||
|
|
bb8146e9c3 | ||
|
|
8698bf1d45 | ||
|
|
33f0fb9413 | ||
|
|
f05e726ca4 | ||
|
|
8791ca5800 | ||
|
|
8d6c8d9f61 | ||
|
|
6b0f73d41a | ||
|
|
bc7befd4a8 | ||
|
|
fc865fd5bc | ||
|
|
e4a9446e2b | ||
|
|
8abcd226e5 | ||
|
|
cd26a19c1a | ||
|
|
2cda8efec0 | ||
|
|
72e0250317 | ||
|
|
42c66426e6 | ||
|
|
e77f32d2f6 | ||
|
|
80f398c39e | ||
|
|
5570ede2a3 | ||
|
|
06122aa295 | ||
|
|
e7123b4af3 | ||
|
|
a7be4266bc | ||
|
|
d62adc4a97 | ||
|
|
4b4db26721 | ||
|
|
ca752d6edb | ||
|
|
8a6a224fda | ||
|
|
be639522fe | ||
|
|
184654c67f | ||
|
|
3dabf07a60 | ||
|
|
8ec867c2d2 | ||
|
|
75a8983c97 | ||
|
|
dac075f570 | ||
|
|
0152590bda | ||
|
|
8e06ebbda0 | ||
|
|
ee85a19b53 | ||
|
|
6a22bdf206 | ||
|
|
7e0d0e91d6 | ||
|
|
0c71605e1b | ||
|
|
5a5a0e3521 | ||
|
|
6fb18b5674 | ||
|
|
3188b9ed69 | ||
|
|
98591f74dd | ||
|
|
168a8fea72 | ||
|
|
74c9aa5a2b | ||
|
|
6c010665c1 | ||
|
|
d69c497824 | ||
|
|
f6707a2488 | ||
|
|
44cef5ec83 | ||
|
|
1390f13600 | ||
|
|
95b6b47802 | ||
|
|
aab3531a42 | ||
|
|
442264b3ab | ||
|
|
7fcc68e567 | ||
|
|
09f7fdb8df | ||
|
|
71dd9410d8 | ||
|
|
09af70d338 | ||
|
|
60444de60e | ||
|
|
c5d4d61108 | ||
|
|
3b60f6b063 | ||
|
|
f9780f08c8 | ||
|
|
d2e58deec5 | ||
|
|
4e61c3cba6 | ||
|
|
aa26e2b2c8 | ||
|
|
56c7db6e87 | ||
|
|
50675b87a8 | ||
|
|
d5ee36b65e | ||
|
|
f53cee3ca4 | ||
|
|
9a4048574c | ||
|
|
b9d427af3e | ||
|
|
3a70cfa8de | ||
|
|
f761a5a6ba | ||
|
|
16c8ccb9da | ||
|
|
f540f010c0 | ||
|
|
9b15f7269c | ||
|
|
759b30adc5 | ||
|
|
67a58e654f | ||
|
|
64dd79e8c2 | ||
|
|
74c1686418 | ||
|
|
c53ad98c0f | ||
|
|
c6b28e4385 | ||
|
|
9409c60613 | ||
|
|
6b2223c697 | ||
|
|
f6e4d27272 | ||
|
|
6d180adca9 | ||
|
|
9356a2a5dc | ||
|
|
a2bdbf6d85 | ||
|
|
d88be00fd3 | ||
|
|
c294af97a8 | ||
|
|
f7ad47e359 | ||
|
|
865919a3af | ||
|
|
9388b42001 | ||
|
|
98d0ee0dc7 | ||
|
|
f09603f2bf | ||
|
|
af131abe91 | ||
|
|
74ef69cee1 | ||
|
|
47c064046e | ||
|
|
bcdc03dd72 | ||
|
|
b8e1f9c2ee | ||
|
|
2587956fcf | ||
|
|
55c7872ed8 | ||
|
|
283a5537de | ||
|
|
d688e2dd0d | ||
|
|
a5eee6b37b | ||
|
|
b6ade82dd0 | ||
|
|
4a39a1e408 | ||
|
|
270932e40b | ||
|
|
caa6dcd053 | ||
|
|
8fb67541c1 | ||
|
|
7745a0738a | ||
|
|
3baa4dc1df | ||
|
|
032fef1092 | ||
|
|
df3e51629b | ||
|
|
fecf6233d9 | ||
|
|
fe64931f67 | ||
|
|
699a1f32f4 | ||
|
|
a551c89f3f | ||
|
|
ff9948768a | ||
|
|
baf34452fa | ||
|
|
9219209032 | ||
|
|
4251069718 | ||
|
|
f034557f17 | ||
|
|
f67d73de3e | ||
|
|
080dc05e16 | ||
|
|
0c66ba28ee | ||
|
|
f90370d01a | ||
|
|
6c22acf0e5 | ||
|
|
26a4af2a10 | ||
|
|
32a441cda9 | ||
|
|
70f2d8f3b4 | ||
|
|
7530eea63a | ||
|
|
d50bd6e777 | ||
|
|
64c3c71e08 | ||
|
|
6ed031238b | ||
|
|
0ff2ebfd2a | ||
|
|
41055f2292 | ||
|
|
bbc30d6cb9 | ||
|
|
d138e59110 | ||
|
|
eae404e3e7 | ||
|
|
bb2a2869f1 | ||
|
|
abbc413671 | ||
|
|
691f0492eb | ||
|
|
df8efe60de | ||
|
|
10304adf34 | ||
|
|
588c69102a | ||
|
|
ac3cef77ac | ||
|
|
d6c5b875d3 | ||
|
|
a43a0bf527 | ||
|
|
4fdafdd86a | ||
|
|
171631c025 | ||
|
|
34b2f6dde3 | ||
|
|
0f20459b69 | ||
|
|
0c51e1c409 | ||
|
|
be85bf5fa3 | ||
|
|
acd3bc97a0 | ||
|
|
a65aa4d828 | ||
|
|
9861ea7ddd | ||
|
|
3c58988c34 | ||
|
|
140a8da62d | ||
|
|
102a4d7af6 | ||
|
|
ce4047261c | ||
|
|
818106b0eb | ||
|
|
ddf5a0639b | ||
|
|
a2272fd4ed | ||
|
|
f834ccc653 | ||
|
|
b7e8f8a052 | ||
|
|
7d4f8a6f9f | ||
|
|
cc8badfee4 | ||
|
|
7406381094 | ||
|
|
85de937667 | ||
|
|
1a8301380c | ||
|
|
eea2c89a16 | ||
|
|
24c05e4d8f | ||
|
|
2f221b972c | ||
|
|
16b89699a0 | ||
|
|
424572375f | ||
|
|
fb77d69128 | ||
|
|
794207f6e7 | ||
|
|
f11ff0726c | ||
|
|
aeed9be8db | ||
|
|
946897527e | ||
|
|
21e924273d | ||
|
|
532b863674 | ||
|
|
133d945758 | ||
|
|
92446d1b3c | ||
|
|
7643de9ce1 | ||
|
|
1dedae4f8f | ||
|
|
050b9afd44 | ||
|
|
607098ffd7 | ||
|
|
5f07c1ee48 | ||
|
|
934ad9f298 | ||
|
|
7244367cf7 | ||
|
|
2801724f1c | ||
|
|
fe1c79e80d | ||
|
|
7b151e046f | ||
|
|
8c6e8be2e8 | ||
|
|
e6dbb9dd7c | ||
|
|
81bcd8179d | ||
|
|
41a4922088 | ||
|
|
42d701730c | ||
|
|
e39151c9d6 | ||
|
|
378c483748 | ||
|
|
ac04a61562 | ||
|
|
1abbc80c70 | ||
|
|
c456ae2e4a | ||
|
|
78407ceb87 | ||
|
|
81f6062a44 | ||
|
|
2ea7a49321 | ||
|
|
45e09c7dd3 | ||
|
|
668f6fe2f6 | ||
|
|
0b1b3ad244 | ||
|
|
cef491f96c | ||
|
|
9bca71468f | ||
|
|
c3ee1efb56 | ||
|
|
7f28b16eae | ||
|
|
f5db958f53 | ||
|
|
cad40cd369 | ||
|
|
952d92df18 | ||
|
|
4cb9c58ae6 | ||
|
|
9e80c77050 | ||
|
|
837d9bec90 | ||
|
|
ddc064e86b | ||
|
|
49f62494d6 | ||
|
|
4ff55ca4a7 | ||
|
|
9ebee3d917 | ||
|
|
d246071348 | ||
|
|
a4b6b42b56 | ||
|
|
888f22ffde | ||
|
|
05c35149a5 | ||
|
|
85b2e2db18 | ||
|
|
22803752d1 | ||
|
|
1fc8fb84a8 | ||
|
|
e4b669e8c1 | ||
|
|
a1c99ae713 | ||
|
|
caf51ea53d | ||
|
|
eead5afa67 | ||
|
|
903d886aee | ||
|
|
c7ae38df7e | ||
|
|
9175a3c553 | ||
|
|
2bff7f974b | ||
|
|
e99a9d3325 | ||
|
|
7228e2872c | ||
|
|
e02a7d5ab5 | ||
|
|
c8e729bbe4 | ||
|
|
475a9dd45d | ||
|
|
38639932d9 | ||
|
|
1c8661f8c4 | ||
|
|
fb9ab8a346 | ||
|
|
cc9b7ae58b | ||
|
|
92a9c7476b | ||
|
|
e34676ae57 | ||
|
|
4bc9aae1aa | ||
|
|
98b4248a3c | ||
|
|
37cea519e0 | ||
|
|
0587524c6c | ||
|
|
c28e1a0ba4 | ||
|
|
5e46735bb2 | ||
|
|
d9f70bdbac | ||
|
|
2dddd1c2ad | ||
|
|
8775416064 | ||
|
|
ae8d790b55 | ||
|
|
a067c4d932 | ||
|
|
5668a56e2d | ||
|
|
713b8252fe | ||
|
|
10e1b9d4d9 | ||
|
|
51ea95e79d | ||
|
|
41622806c2 | ||
|
|
b0d083bd2f | ||
|
|
2a4d44ff78 | ||
|
|
c34e525fb2 | ||
|
|
3da463382d | ||
|
|
50d65e2d7d | ||
|
|
93c1de8a3d | ||
|
|
6d56020110 | ||
|
|
2448f2cd38 | ||
|
|
cc27826a48 | ||
|
|
ad11b458f5 | ||
|
|
8c53a67e06 | ||
|
|
db1841bbf3 | ||
|
|
ff9afd0485 | ||
|
|
33470486ea | ||
|
|
6e6113b887 | ||
|
|
fd4bdd04e9 | ||
|
|
2296fe166b | ||
|
|
c7f2248eaf | ||
|
|
833f92dded | ||
|
|
89478c8dd3 | ||
|
|
ba4cd217c0 | ||
|
|
409ce4f2e9 | ||
|
|
a8690808c2 | ||
|
|
a9f4cab48b | ||
|
|
3a8a3680c5 | ||
|
|
0956b528cb | ||
|
|
3944a8c9a2 | ||
|
|
8c75e36115 | ||
|
|
e7fabab051 | ||
|
|
77f112fcb9 | ||
|
|
bc41619497 | ||
|
|
104c8b0d01 | ||
|
|
6e7e5f7840 | ||
|
|
f558f53a95 | ||
|
|
a13bafa2c0 | ||
|
|
187f53b837 | ||
|
|
5391edebc1 | ||
|
|
5d2f70a45d | ||
|
|
f28e3d1225 | ||
|
|
16c0592523 | ||
|
|
2e03a29de9 | ||
|
|
70cc564582 | ||
|
|
55f8b58c9a | ||
|
|
4c75bacca0 | ||
|
|
2bb5b677ef | ||
|
|
64bfe5a935 | ||
|
|
41f3dcd0fc | ||
|
|
8243e07448 | ||
|
|
31cf39aa91 | ||
|
|
8cedbc7469 | ||
|
|
f967b812cb | ||
|
|
21d2b5b133 | ||
|
|
fbdefac538 | ||
|
|
8deb2ff7ed | ||
|
|
bf5ce29d04 | ||
|
|
0bc2d95f15 | ||
|
|
54e23f38cd | ||
|
|
1fd23ae721 | ||
|
|
e966ffad6d | ||
|
|
4bd1a6f11b | ||
|
|
b2502ce0e8 | ||
|
|
ad649ad4f7 | ||
|
|
6e23fa7efd | ||
|
|
074357a238 | ||
|
|
d01b1c868f | ||
|
|
466d310c25 | ||
|
|
33343f64ef | ||
|
|
40daa9596f | ||
|
|
12d1b2a112 | ||
|
|
0b93d7e6c6 | ||
|
|
6d8f4f79b1 | ||
|
|
ad9d04a24e | ||
|
|
f1c6e44c5c | ||
|
|
87245f09ad | ||
|
|
f6e5202a99 | ||
|
|
a0bfd9d83f | ||
|
|
2b5ad3e4c4 | ||
|
|
0899b4f6b1 | ||
|
|
960f62d94b | ||
|
|
1dfa425889 | ||
|
|
7a347afb40 | ||
|
|
230e91b60d | ||
|
|
3092278d63 | ||
|
|
e83873bbea | ||
|
|
2bec8e4aff | ||
|
|
42ead5886d | ||
|
|
3d85401ab1 | ||
|
|
ddef31ae21 | ||
|
|
3c630657b1 | ||
|
|
61a95e781a | ||
|
|
49b363494a | ||
|
|
e234e2340d | ||
|
|
c7f8008355 | ||
|
|
caad6871ca | ||
|
|
9aadd42471 | ||
|
|
df5e135834 | ||
|
|
84fd163ca8 | ||
|
|
187190b229 | ||
|
|
92e02634e8 | ||
|
|
134b72f219 | ||
|
|
970b962208 | ||
|
|
7da4e4de59 | ||
|
|
0f72d9504a | ||
|
|
9103a95315 | ||
|
|
ffc5bd1654 | ||
|
|
ef916607d8 | ||
|
|
2b4f8f8d38 | ||
|
|
f3d0538207 | ||
|
|
b9d63340b8 | ||
|
|
ec99e41614 | ||
|
|
8101f59fc5 | ||
|
|
93c3ea2d9f | ||
|
|
3dcbecf04a | ||
|
|
a0e2e03616 | ||
|
|
aad07535fb | ||
|
|
1334aad4f6 | ||
|
|
af4239b957 | ||
|
|
8267af24c7 | ||
|
|
06e4eb5f79 | ||
|
|
5010e54b53 | ||
|
|
e53d17495e | ||
|
|
729ec29b37 | ||
|
|
26c3d53e55 | ||
|
|
b88132620d | ||
|
|
cd10bb3092 | ||
|
|
40f73dc4ef | ||
|
|
a73cf4f787 | ||
|
|
b17afcf40c | ||
|
|
05875b94b7 | ||
|
|
f7bf92885e | ||
|
|
c5f26f3e94 | ||
|
|
f6b060c0f9 | ||
|
|
4741ff1289 | ||
|
|
1337fe9816 | ||
|
|
e19308cba4 | ||
|
|
a5acdfa3da | ||
|
|
f57a6b512a | ||
|
|
5afcbfe8c6 | ||
|
|
507f1e7a92 | ||
|
|
fa5653ce16 | ||
|
|
1283a0f4b2 | ||
|
|
a27aeb6613 | ||
|
|
0e4fed94b1 | ||
|
|
df2e255129 | ||
|
|
b1fde3ff37 | ||
|
|
3d83f9a452 | ||
|
|
ccdf963847 | ||
|
|
8405411263 | ||
|
|
a343778b64 | ||
|
|
6db22271d9 | ||
|
|
f0f017aa0d | ||
|
|
0afec0b94d | ||
|
|
f3cb4d05e1 | ||
|
|
8dd2778119 | ||
|
|
970f432739 | ||
|
|
92377fdc1d | ||
|
|
e6dde015a6 | ||
|
|
5993ca4193 | ||
|
|
168ad781dc | ||
|
|
a0f36ea4ea | ||
|
|
7340da7c07 | ||
|
|
d9c7423b34 | ||
|
|
fe42c529ca | ||
|
|
815026976b | ||
|
|
fc6e9d8213 | ||
|
|
e0f53d86d3 | ||
|
|
6611b495d0 | ||
|
|
9741d083ae | ||
|
|
083abbc73b | ||
|
|
ab9be4efd4 | ||
|
|
9a8b89afa7 | ||
|
|
e20b82f802 | ||
|
|
1218b25127 | ||
|
|
d58bc8373e | ||
|
|
b6e7c9444e | ||
|
|
32e004e11a | ||
|
|
81babd8a07 | ||
|
|
9d7c0c3a29 | ||
|
|
dabcf769fb | ||
|
|
0a4269a405 | ||
|
|
9fad61bca1 | ||
|
|
10ff56bba7 | ||
|
|
36a0b024b1 | ||
|
|
7f0e5cce08 | ||
|
|
1b9ac40e38 | ||
|
|
7b078103a2 | ||
|
|
ff89d27a93 | ||
|
|
9c672ffd7b | ||
|
|
097015228b | ||
|
|
b7d87a24cc | ||
|
|
628d012c82 | ||
|
|
67c151e23e | ||
|
|
64fb934096 | ||
|
|
b9e9709f18 | ||
|
|
490527abdf | ||
|
|
a78213052a | ||
|
|
de5553647d | ||
|
|
755b63bbf6 | ||
|
|
7666dcae2b | ||
|
|
db210b1da7 | ||
|
|
dd0c71c9d6 | ||
|
|
e47dee1fac | ||
|
|
5eb45cc3ec | ||
|
|
259cc7f00c | ||
|
|
eb1ede7747 | ||
|
|
b3147b125c | ||
|
|
58fefe3182 | ||
|
|
3397319b9f | ||
|
|
3bdb5ed594 | ||
|
|
05c5915f2b | ||
|
|
07572a1e94 | ||
|
|
cd9244f0dd | ||
|
|
4347021572 | ||
|
|
98520c1816 | ||
|
|
8df5f519d2 | ||
|
|
5e5d18fc64 | ||
|
|
86b436be98 | ||
|
|
15e73a1d43 | ||
|
|
8eb5442037 | ||
|
|
56053686fb | ||
|
|
65cb006f33 | ||
|
|
d942373528 | ||
|
|
d87b1beff5 | ||
|
|
ce4a86b077 | ||
|
|
0eb33394b9 | ||
|
|
11a01eed96 | ||
|
|
347e7913b4 | ||
|
|
5d9f159a58 | ||
|
|
5a7f129822 | ||
|
|
329274876f | ||
|
|
a073665fe6 | ||
|
|
3d646474be | ||
|
|
ebca4f9c85 | ||
|
|
678b80ea27 | ||
|
|
a71a409426 | ||
|
|
bee617afaf | ||
|
|
fbf603bc58 | ||
|
|
c037b575cb | ||
|
|
0cf81d02e7 | ||
|
|
b0b9eba129 | ||
|
|
a845e9d76a | ||
|
|
8475a29441 | ||
|
|
cc2620434b | ||
|
|
0b3b73f47d | ||
|
|
e4d07783e7 | ||
|
|
0a3b4c33ec | ||
|
|
c124a19d82 | ||
|
|
435abd693a | ||
|
|
fd29539b92 | ||
|
|
31cffb153b | ||
|
|
e31cd291a7 | ||
|
|
198cbae6b4 | ||
|
|
76d7faf5ba | ||
|
|
6bf950df84 | ||
|
|
0a4521fa27 | ||
|
|
e74b232489 | ||
|
|
41828edb63 | ||
|
|
5e9e9c6ead | ||
|
|
7669dea354 | ||
|
|
4992fa73cf | ||
|
|
496da77057 | ||
|
|
1c48f6352b | ||
|
|
85f8583061 | ||
|
|
950bf4b111 | ||
|
|
e44fa78354 | ||
|
|
fda6831075 | ||
|
|
6166bab780 | ||
|
|
66023ecf65 | ||
|
|
c0bee55d82 | ||
|
|
3d715d17dc | ||
|
|
00a6a39eb3 | ||
|
|
84864c68ec | ||
|
|
da04fe3d83 | ||
|
|
b75bbaafa1 | ||
|
|
6f12fb3c5a | ||
|
|
1d37707628 | ||
|
|
207648b7ee | ||
|
|
0e7859ea89 | ||
|
|
f23c067ccd | ||
|
|
0d160f4beb | ||
|
|
c17cd2d1d3 | ||
|
|
e14bb09139 | ||
|
|
68d8002ea5 | ||
|
|
08bed0c597 | ||
|
|
16fff7431c | ||
|
|
1f0d6a123d | ||
|
|
255368cc47 | ||
|
|
64ce1c026a | ||
|
|
f053510cd5 | ||
|
|
8cf0bebe29 | ||
|
|
223bc6b12d | ||
|
|
7ede82c57d | ||
|
|
d8a71615f9 | ||
|
|
b7df56759c | ||
|
|
89103b7562 | ||
|
|
574d98da28 | ||
|
|
84d51b3cb7 | ||
|
|
f36cdaeeed | ||
|
|
64d5713041 | ||
|
|
1a0b127407 | ||
|
|
4f3dbcae88 | ||
|
|
e6d25d2204 | ||
|
|
dffd248343 | ||
|
|
44be221621 | ||
|
|
836b5a16ca | ||
|
|
4e7813aeb6 | ||
|
|
ddd9918881 | ||
|
|
095a18798c | ||
|
|
7ddeed9955 | ||
|
|
6034133565 | ||
|
|
fd8324a1f4 | ||
|
|
e0c9ae7598 | ||
|
|
879d51dff7 | ||
|
|
24987a63a8 | ||
|
|
3caa699d1a | ||
|
|
24f950e3b3 | ||
|
|
4dff137c26 | ||
|
|
fcd5d04a40 | ||
|
|
c487e88a0b | ||
|
|
602adc2309 | ||
|
|
d42b37c29c | ||
|
|
63fdd3699f | ||
|
|
bde20ec991 | ||
|
|
84eaad0775 | ||
|
|
3204959c80 | ||
|
|
0cb677664e | ||
|
|
08563ade44 | ||
|
|
14f815d0ba | ||
|
|
d8489ba0fc | ||
|
|
d633f0ad04 | ||
|
|
3f89bfb273 | ||
|
|
550fc02ef8 | ||
|
|
60277fc11a | ||
|
|
f459025f39 | ||
|
|
3fa8c16164 | ||
|
|
f0aca3a965 | ||
|
|
47afb69acc | ||
|
|
217f1a9786 | ||
|
|
c0813f037b | ||
|
|
da3688bf2e | ||
|
|
5ba3b4ea9d | ||
|
|
3e6ec4a75b | ||
|
|
c9dbb1e240 | ||
|
|
5a66c19033 | ||
|
|
e256208eb4 | ||
|
|
c72b2d5bba | ||
|
|
d1194a37cd | ||
|
|
d4cfd6ef4f | ||
|
|
b27b3ad3f8 | ||
|
|
83b1c6969a | ||
|
|
865c556da3 | ||
|
|
4efd68446e | ||
|
|
115218c8aa | ||
|
|
0f58788e26 | ||
|
|
c72bb8c196 | ||
|
|
10c8a186e5 | ||
|
|
f125908e1e | ||
|
|
89c46e989d | ||
|
|
b3803ec424 | ||
|
|
1eea25c87b | ||
|
|
880b24a929 | ||
|
|
20ecbbafaa | ||
|
|
f6f7cc9cd1 | ||
|
|
36e4f34780 | ||
|
|
ed232b2199 | ||
|
|
571e3467fc | ||
|
|
b8508b7cd8 | ||
|
|
9725b2334c | ||
|
|
eab54ef98f | ||
|
|
afaf12e4b0 | ||
|
|
0e5cd73ef0 | ||
|
|
9c972b19e1 | ||
|
|
c6487f4837 | ||
|
|
0182107bc0 | ||
|
|
7497fc12fc | ||
|
|
3ce8d08439 | ||
|
|
111db6e2d1 | ||
|
|
a990429daa | ||
|
|
b618697998 | ||
|
|
6f96ca4a62 | ||
|
|
9626917362 | ||
|
|
d4705fe5be | ||
|
|
0a6cb656c8 | ||
|
|
72097a0fbb | ||
|
|
47a2a15b59 | ||
|
|
08082cf7e2 | ||
|
|
6f1a656a9a | ||
|
|
8fb4b02ef9 | ||
|
|
9ec26d4e87 | ||
|
|
12c0e9d452 | ||
|
|
338cfa3cef | ||
|
|
7f82bcdaf6 | ||
|
|
30672945d5 | ||
|
|
dabb6f0b74 | ||
|
|
8bf8950274 | ||
|
|
e4d9582a98 | ||
|
|
0a0e4fcd06 | ||
|
|
75bac0f6ea | ||
|
|
a670d0238f | ||
|
|
861e2a9439 | ||
|
|
c81f402ae2 | ||
|
|
cc3e2e2e40 | ||
|
|
808d7db163 | ||
|
|
95c7b64de4 | ||
|
|
5265d67b7f | ||
|
|
5d2df118de | ||
|
|
13641575c2 | ||
|
|
c71dd3f3a4 | ||
|
|
7fad383060 | ||
|
|
1bab57de01 | ||
|
|
db4c50a848 | ||
|
|
743bd8db5f | ||
|
|
cffe75a6a8 | ||
|
|
ccd0d5c235 | ||
|
|
1fd48b08cd | ||
|
|
cfdfd25320 | ||
|
|
7952bd1c18 | ||
|
|
ab68cc8ecd | ||
|
|
f65cb6fc6e | ||
|
|
25b741f04e | ||
|
|
3563144a8e | ||
|
|
3e11bea0d4 | ||
|
|
d23269fb7e | ||
|
|
4568e1cdb9 | ||
|
|
bc011b2230 | ||
|
|
770bad5e10 | ||
|
|
e079831f04 | ||
|
|
7c1ed99de2 | ||
|
|
7d07929b16 | ||
|
|
dcf6bad34e | ||
|
|
2a3dc8a522 | ||
|
|
b0690a7e42 | ||
|
|
3432974340 | ||
|
|
228983dfaf | ||
|
|
0ead2f10ce | ||
|
|
4797daca72 | ||
|
|
e801867d28 | ||
|
|
13e55d8ff2 | ||
|
|
c2d8884656 | ||
|
|
c9b1eeb740 | ||
|
|
b436961875 | ||
|
|
99e11e20b5 | ||
|
|
2a8b0efb66 | ||
|
|
83a40c238c | ||
|
|
60b7040241 | ||
|
|
577773793c | ||
|
|
7045b54e8f | ||
|
|
65c5cb599e | ||
|
|
c6859d2ead | ||
|
|
57bea6b5b6 | ||
|
|
551efc940d | ||
|
|
0590e4b13e | ||
|
|
14ca5688b5 | ||
|
|
f6698f5916 | ||
|
|
4196031cdc | ||
|
|
c4627ca108 | ||
|
|
3080270067 | ||
|
|
ad0cace563 | ||
|
|
208098bfaa | ||
|
|
7c2050b374 | ||
|
|
6068d00942 | ||
|
|
9196f327f6 | ||
|
|
d90ebfc880 | ||
|
|
38f48c0101 | ||
|
|
c3bf5d97eb | ||
|
|
fbc962102d | ||
|
|
6a82bf40fc | ||
|
|
726104ddbd | ||
|
|
1e288c98e3 | ||
|
|
2303bc1048 | ||
|
|
778664a294 | ||
|
|
0bb1f9c657 | ||
|
|
1e68708a05 | ||
|
|
255fe95fe7 | ||
|
|
a9dc27eaa6 | ||
|
|
52dbe040a8 | ||
|
|
1f143bee9b | ||
|
|
ebcfaa73d7 | ||
|
|
4de4bb777e | ||
|
|
9fb7d3373b | ||
|
|
66da3ac4ad | ||
|
|
b28620e929 | ||
|
|
fbc3115415 | ||
|
|
f3b3122cff | ||
|
|
3d196d17e9 | ||
|
|
0ff003890f | ||
|
|
b050cdec42 | ||
|
|
3788a3ebb3 | ||
|
|
dd4e32c90e | ||
|
|
10685a2a20 | ||
|
|
44ba48e00d | ||
|
|
89bd79217b | ||
|
|
de186645e0 | ||
|
|
72cfda5b16 | ||
|
|
475d22e7bf | ||
|
|
be5e9558b9 | ||
|
|
9bb3620747 | ||
|
|
733ee6e17d | ||
|
|
7dd3a1c62f | ||
|
|
713667b606 | ||
|
|
7135a1fd77 | ||
|
|
f0a03fc658 | ||
|
|
6252526985 | ||
|
|
baf2e617eb | ||
|
|
1bf096d93e | ||
|
|
84187b9239 | ||
|
|
4c4a21085e | ||
|
|
dafccd5b38 | ||
|
|
016073c6a9 | ||
|
|
7e85c70646 | ||
|
|
5934bc7c02 | ||
|
|
97f84eca42 | ||
|
|
c1c29012c2 | ||
|
|
d1aaee951b | ||
|
|
cafd33a187 | ||
|
|
d9d0d400c7 | ||
|
|
41807e1e3f | ||
|
|
c97e4dc96e | ||
|
|
baa4dd9a2f | ||
|
|
e110cb8633 | ||
|
|
3b7cad254b | ||
|
|
6f9be00428 | ||
|
|
6b019edaa7 | ||
|
|
9b5a7f96f6 | ||
|
|
d952b38a0f | ||
|
|
634d513e59 | ||
|
|
5d63dfec67 | ||
|
|
08d7328051 | ||
|
|
f53af56b57 | ||
|
|
b61ec6820b | ||
|
|
0181c1209c | ||
|
|
9d5c460696 | ||
|
|
b176f60290 | ||
|
|
a4e60f7d90 | ||
|
|
96f289a081 | ||
|
|
e6d186b6c3 | ||
|
|
5b104d47a8 | ||
|
|
a93888f0c4 | ||
|
|
eb38f77c47 | ||
|
|
fb4e4e8370 | ||
|
|
776e4dbb6c | ||
|
|
5762dd333e | ||
|
|
9ea9a72d1f | ||
|
|
ff5c046544 | ||
|
|
69ac66f00e | ||
|
|
80f9c69194 | ||
|
|
f882acb7cf | ||
|
|
d01ca0e515 | ||
|
|
faae153671 | ||
|
|
60d7bd301b | ||
|
|
266618dfd3 | ||
|
|
1ed4604cb4 | ||
|
|
e49336dffb | ||
|
|
391f9bcedb | ||
|
|
a636bd88ce | ||
|
|
e8dd93189a | ||
|
|
5d1bef6903 | ||
|
|
a4ee79e285 | ||
|
|
8c798099ef | ||
|
|
5104f99684 | ||
|
|
b1a3d40d05 | ||
|
|
1d9fdb7367 | ||
|
|
5cb154ce8b | ||
|
|
8a802aca90 | ||
|
|
85e1d0966f | ||
|
|
c04764d2cb | ||
|
|
e55abe7089 | ||
|
|
3d475a2e9d | ||
|
|
aa83b5f29f | ||
|
|
d210c48d21 | ||
|
|
9b934c3476 | ||
|
|
8883a293a1 | ||
|
|
911db66cf9 | ||
|
|
ced132b282 | ||
|
|
04b49fd886 | ||
|
|
7064d61ae5 | ||
|
|
6d6bc05f6a | ||
|
|
28962fa665 | ||
|
|
1509b34a31 | ||
|
|
2b2bd5e2ff | ||
|
|
d02f1dc283 | ||
|
|
275ce2a823 | ||
|
|
d06341cf12 | ||
|
|
8a234329d6 | ||
|
|
326caa5877 | ||
|
|
bfe42710e7 | ||
|
|
a5e2531d2c | ||
|
|
13e23593ba | ||
|
|
9a58f2677c | ||
|
|
29f49660f6 | ||
|
|
c2e6cb1f44 | ||
|
|
625be3ad11 | ||
|
|
609eed9068 | ||
|
|
ddceabee6a | ||
|
|
8f01bdef78 | ||
|
|
924d3d324d | ||
|
|
b31120b271 | ||
|
|
200a77bf45 | ||
|
|
6223bf212f | ||
|
|
b1f64114dd | ||
|
|
b2148e5440 | ||
|
|
8b86f901dc | ||
|
|
830a2d9c40 | ||
|
|
2045927e95 | ||
|
|
1b871fc645 | ||
|
|
b66f00846d | ||
|
|
cf795c8f26 | ||
|
|
d894375d35 | ||
|
|
d05ed6fe3d | ||
|
|
471f841218 | ||
|
|
72880efafb | ||
|
|
9ecac4679d | ||
|
|
896269228e | ||
|
|
c0a67341f8 | ||
|
|
5efca5e542 | ||
|
|
0f4370657a | ||
|
|
e492643cc7 | ||
|
|
c49cfdcece | ||
|
|
2cea001340 | ||
|
|
e7e80a9c3b | ||
|
|
e0081130af | ||
|
|
5ff9911cc0 | ||
|
|
bde1de5630 | ||
|
|
eb3e3e5094 | ||
|
|
1033a3b3b3 | ||
|
|
498116b66e | ||
|
|
5f68db7ab7 | ||
|
|
a487d6ac02 | ||
|
|
2f92da9753 | ||
|
|
e4d08cc117 | ||
|
|
746ebb7974 | ||
|
|
2d0cf16029 | ||
|
|
c3b15d7a8b | ||
|
|
9754a9e2e5 | ||
|
|
466ade8d72 | ||
|
|
ea9b4a9952 | ||
|
|
12cee5f791 | ||
|
|
8c2ede040f | ||
|
|
4864aa6c8e | ||
|
|
f448881423 | ||
|
|
5dc0e3889e | ||
|
|
ea7101d92b | ||
|
|
5e28f6f70f | ||
|
|
b0f6f340d6 | ||
|
|
fd8f300518 | ||
|
|
16653615f2 | ||
|
|
2b5c53640d | ||
|
|
c0f85022cf | ||
|
|
7adbb9c559 | ||
|
|
d9d269d601 | ||
|
|
06101cc31e | ||
|
|
ffc3953f91 | ||
|
|
af57b9af20 | ||
|
|
48e8772813 | ||
|
|
bae385ccb0 | ||
|
|
1d28fa52f9 | ||
|
|
69ddd35cad | ||
|
|
61cbbc1b55 | ||
|
|
1d4b57b5c6 | ||
|
|
30f62a80f3 | ||
|
|
a11dd760db | ||
|
|
8d896e8be8 | ||
|
|
be9270a0f7 | ||
|
|
b7ceb1776c | ||
|
|
eb0d29c780 | ||
|
|
006c0c88ce | ||
|
|
00439369a8 | ||
|
|
d2944d5d10 | ||
|
|
f069b4e85e | ||
|
|
e6d2b0c9b3 | ||
|
|
2a5da2c155 | ||
|
|
f9e297922d | ||
|
|
cffa7c6dd8 | ||
|
|
cd7c2baf8e | ||
|
|
f960cd9589 | ||
|
|
939c58f441 | ||
|
|
1775614fe2 | ||
|
|
8c24b80950 | ||
|
|
1a62ad2608 | ||
|
|
a8138ca579 | ||
|
|
863d888717 | ||
|
|
0bf72def78 | ||
|
|
b4e4cd9e9a | ||
|
|
df7fd37214 | ||
|
|
cb36ee03eb | ||
|
|
396b874a42 | ||
|
|
16c9ce995f | ||
|
|
35a1fdddf1 | ||
|
|
703c9ade71 | ||
|
|
81ac5a4231 | ||
|
|
9982cc042f | ||
|
|
09f1793d63 | ||
|
|
d8961c4093 | ||
|
|
d830315cfc | ||
|
|
ac7e31bdd9 | ||
|
|
72e274a4c3 | ||
|
|
1fdabe3a26 | ||
|
|
df2840bf9f | ||
|
|
2b00831465 | ||
|
|
ad34d45d0b | ||
|
|
df77fb67c6 | ||
|
|
e3168163c2 | ||
|
|
2f7b04534d | ||
|
|
9628712810 | ||
|
|
e7ee41fe4e | ||
|
|
8dc21fbb66 | ||
|
|
81a95aba28 | ||
|
|
0544599303 | ||
|
|
7381a4433c | ||
|
|
b60cbdf5f1 | ||
|
|
4e61c6c4dd | ||
|
|
d2582b0118 | ||
|
|
dc89935b7f | ||
|
|
23b2ca9af4 | ||
|
|
7bbd2042ae | ||
|
|
2d191c87a0 | ||
|
|
d9d8e54ed3 | ||
|
|
d3b0a48779 | ||
|
|
a8a6d199d1 | ||
|
|
cd8cc81b5f | ||
|
|
27771f3565 | ||
|
|
bae59c07db | ||
|
|
cc72d1018b | ||
|
|
7996108e62 | ||
|
|
53522ca5b4 | ||
|
|
55df8a5adf | ||
|
|
b31eb524c3 | ||
|
|
31437f3d3e | ||
|
|
34ecfba230 | ||
|
|
75859ec106 | ||
|
|
d6911ed39b | ||
|
|
073838af6e | ||
|
|
4a94ab86c9 | ||
|
|
f74b151c53 | ||
|
|
6db67e909d | ||
|
|
2c1c46b98d | ||
|
|
ba01a2a219 | ||
|
|
0a5261a68c | ||
|
|
61d591e86e | ||
|
|
e032ef5aa5 | ||
|
|
c4e9774ffa | ||
|
|
5a4930f860 | ||
|
|
66f445c341 | ||
|
|
f2c2833985 | ||
|
|
a703e0bb7d | ||
|
|
e0bd7d82fb | ||
|
|
8b02c95f51 | ||
|
|
e492c6575d | ||
|
|
9339c9ff62 | ||
|
|
a02254f5d5 | ||
|
|
af36a3b1bf | ||
|
|
5f34e924d1 | ||
|
|
ce939a4053 | ||
|
|
c9c2b35455 | ||
|
|
1b0c339845 | ||
|
|
2d67cb7dcc | ||
|
|
1938969a63 | ||
|
|
bb1d90213b | ||
|
|
096686457d | ||
|
|
ba5b2af394 | ||
|
|
f23ce71620 | ||
|
|
10f0f6440b | ||
|
|
20e1126a62 | ||
|
|
31b512e3c9 | ||
|
|
979d65e444 | ||
|
|
59035ae96b | ||
|
|
ede6a94665 | ||
|
|
3dd86a77e2 | ||
|
|
3ceaadd0c0 | ||
|
|
9640d95cef | ||
|
|
b3c18001e2 | ||
|
|
df2766d80e | ||
|
|
e676bdc322 | ||
|
|
2d7a42d918 | ||
|
|
06cb128876 | ||
|
|
0b79bcd4b4 | ||
|
|
687bcc2779 | ||
|
|
41c58a52e3 | ||
|
|
e21d944461 | ||
|
|
359d5f36b5 | ||
|
|
e66f19914e | ||
|
|
a6e29f0ded | ||
|
|
40363068e3 | ||
|
|
af86448385 | ||
|
|
177d39c2a3 | ||
|
|
7a9464c592 | ||
|
|
4aef01ef32 | ||
|
|
b4c9d7c76c | ||
|
|
08d37dd9e8 | ||
|
|
10193520a4 | ||
|
|
c1968ba4e3 | ||
|
|
47ecf2e886 | ||
|
|
8642086d34 | ||
|
|
b04dadaa45 | ||
|
|
a5513cc504 | ||
|
|
fc622c76a4 | ||
|
|
050e3b09ad | ||
|
|
850976335c | ||
|
|
0344701f1b | ||
|
|
04198f3ede | ||
|
|
1b671abc05 | ||
|
|
0b973d5135 | ||
|
|
b2324a8689 | ||
|
|
8be0c3c9b0 | ||
|
|
2bd104705a | ||
|
|
3d55b49ee6 | ||
|
|
42352e9500 | ||
|
|
100aad1256 | ||
|
|
703d37c3e2 | ||
|
|
160d15b9b7 | ||
|
|
b3a8fc92d0 | ||
|
|
fbee69a418 | ||
|
|
31d139aecf | ||
|
|
8be040a9b4 | ||
|
|
5cb47ac5b3 | ||
|
|
b7c54779ac | ||
|
|
49d23c06a4 | ||
|
|
d0efe8d8d9 | ||
|
|
84c6faa419 | ||
|
|
b23ffd3c19 | ||
|
|
eeefa85e69 | ||
|
|
cbf055bebc | ||
|
|
eee0cc5394 | ||
|
|
a858c8b43c | ||
|
|
b7497fd669 | ||
|
|
98cdd4eedf | ||
|
|
4d398f170d | ||
|
|
f4c56a1948 | ||
|
|
e72bfe1114 | ||
|
|
f019a3cd0c | ||
|
|
a37482aaad | ||
|
|
bb01d0e5ae | ||
|
|
b61aec9212 | ||
|
|
c1d1330350 | ||
|
|
25a1ecc99b | ||
|
|
6ed29cfde9 | ||
|
|
da6b9b0980 | ||
|
|
410d8bfe13 | ||
|
|
42f0d71ecf | ||
|
|
8a01ffa832 | ||
|
|
bad03c45a0 | ||
|
|
bb876b55fc | ||
|
|
a1da73adaa | ||
|
|
37516dda0e | ||
|
|
edd31bee8e | ||
|
|
5806b9f276 | ||
|
|
96841bd7b1 | ||
|
|
67bd25145d | ||
|
|
635145ea70 | ||
|
|
85c079db70 | ||
|
|
5944984efb | ||
|
|
4c319bd068 | ||
|
|
db80a2e0f6 | ||
|
|
c2fbb5cf22 | ||
|
|
3be8eb4f87 | ||
|
|
08d2a5fa95 | ||
|
|
d69d2234c4 | ||
|
|
33b3a71ecd | ||
|
|
b093446020 | ||
|
|
4db1cdd8e4 | ||
|
|
36a5710863 | ||
|
|
bd51ccd26a | ||
|
|
d60a109ecb | ||
|
|
a293da1360 | ||
|
|
745cfeb9e6 | ||
|
|
a7a08fe28d | ||
|
|
aa83c5c1bc | ||
|
|
5dcc989535 | ||
|
|
2afbe95a9c | ||
|
|
5bdbd7c195 | ||
|
|
44d117c91d | ||
|
|
c174f8f931 | ||
|
|
84ff1f4640 | ||
|
|
26e7e70c3f | ||
|
|
b2ad021230 | ||
|
|
151f047cff | ||
|
|
04bb8f1d1a | ||
|
|
38c0d33767 | ||
|
|
493947c830 | ||
|
|
beb1ade0b5 | ||
|
|
3885500e7c | ||
|
|
9e132d5ca8 | ||
|
|
de21d4755b | ||
|
|
d50e164e68 | ||
|
|
8380a2fa53 | ||
|
|
23a0df61cd | ||
|
|
b484dd6f71 | ||
|
|
c986b311fd | ||
|
|
d1c3584651 | ||
|
|
a9069389db | ||
|
|
2bf8ca8ab6 | ||
|
|
b095b0ae12 | ||
|
|
d5a6a05fc4 | ||
|
|
c84f6b63ff | ||
|
|
92062d4829 | ||
|
|
f742e8ac11 | ||
|
|
65d2a3b313 | ||
|
|
3c7510d74f | ||
|
|
be8ec6b4ae | ||
|
|
e06cd5eba6 | ||
|
|
13775fcb68 | ||
|
|
5641fbd83c | ||
|
|
3bdb108fdb | ||
|
|
19aadd93a0 | ||
|
|
ce9be475b5 | ||
|
|
b40cd351c3 | ||
|
|
3b6ad7b851 | ||
|
|
d8ac23e398 | ||
|
|
a627eab6f1 | ||
|
|
88ddb97d43 | ||
|
|
071654fa06 | ||
|
|
ea602b5f9c | ||
|
|
b39b990eda | ||
|
|
5d7e005f7d | ||
|
|
c2627654b9 | ||
|
|
21ce030463 | ||
|
|
c203dcbbb6 | ||
|
|
435a72c76b | ||
|
|
d4fc440725 | ||
|
|
e9407e0152 | ||
|
|
033d515784 | ||
|
|
4b4825582f | ||
|
|
9d7e8959e8 | ||
|
|
9aac9301b0 | ||
|
|
df6cf331ac | ||
|
|
3e66f47c13 | ||
|
|
bca87429a6 | ||
|
|
9870fe448b | ||
|
|
379ae8ccfb | ||
|
|
c77b67fdf8 | ||
|
|
a0cbb30874 | ||
|
|
aa46be08cf | ||
|
|
f7366cb2ff | ||
|
|
4bc4c1e204 | ||
|
|
e77b71bbbc | ||
|
|
1223e6da84 | ||
|
|
d027f218f8 | ||
|
|
eb659a64bb | ||
|
|
300edc036f | ||
|
|
ee370ec8bf | ||
|
|
ebdd0dbdc0 | ||
|
|
c816b24437 | ||
|
|
20709145c8 | ||
|
|
133d3c7151 | ||
|
|
25a577e32e | ||
|
|
3c01584615 | ||
|
|
bea80e7f71 | ||
|
|
d7a6c14fe7 | ||
|
|
30008bafe7 | ||
|
|
4f5d1847e0 | ||
|
|
e7e7d7d2c0 | ||
|
|
5114f0ac24 | ||
|
|
832bf158da | ||
|
|
af83cc58cb | ||
|
|
1318a3844e | ||
|
|
ae8d7ef99f | ||
|
|
0503b02d17 | ||
|
|
9a158d76b4 | ||
|
|
2017525b77 | ||
|
|
d0b09bce20 | ||
|
|
cfd9b63190 | ||
|
|
05e865e649 | ||
|
|
f25124fd8a | ||
|
|
b92157c292 | ||
|
|
c2dcb6a075 | ||
|
|
00f0c6ea3c | ||
|
|
e92cf6c761 | ||
|
|
d0092d5a5e | ||
|
|
4a0ed710a3 | ||
|
|
df89f183e0 | ||
|
|
06b6adbcde | ||
|
|
f2b94095c3 | ||
|
|
cd474f3152 | ||
|
|
c40507addb | ||
|
|
989d655c1f | ||
|
|
094353f64e | ||
|
|
e795b345c5 | ||
|
|
4a04c24b62 | ||
|
|
36ec721b1e | ||
|
|
f1dae3e62e | ||
|
|
90860dbbf1 | ||
|
|
7d2be7da77 | ||
|
|
551a7609f8 | ||
|
|
791da75ae9 | ||
|
|
aa1fd82f3a | ||
|
|
2e8ee9dadf | ||
|
|
0b8d613044 | ||
|
|
64b0896eaf | ||
|
|
cd5151be94 | ||
|
|
367bb2e5ed | ||
|
|
a748a69de3 | ||
|
|
ec9e478399 | ||
|
|
dadc7edbd9 | ||
|
|
e41f6a5fb3 | ||
|
|
3149e7ec0d | ||
|
|
d8d60faa6b | ||
|
|
58eda950f8 | ||
|
|
ad3760762f | ||
|
|
3c8a0ace60 | ||
|
|
7a90ef8bc4 | ||
|
|
c12a864e8a | ||
|
|
5aef93245b | ||
|
|
3352a24750 | ||
|
|
590f13203a | ||
|
|
c832b2d860 | ||
|
|
8067acdc1c | ||
|
|
b3ea6af2fd | ||
|
|
30530b1b8b | ||
|
|
57bed18ccf | ||
|
|
f8a333c4ea | ||
|
|
680fc32786 | ||
|
|
9af498d69a | ||
|
|
7e2b95d390 | ||
|
|
168bb0be88 | ||
|
|
849f6c7d05 | ||
|
|
d1c3643cff | ||
|
|
5ee362dcf4 | ||
|
|
453502e1c7 | ||
|
|
0b6e2bc260 | ||
|
|
5b24d8e61a | ||
|
|
23ff933d38 | ||
|
|
da3383a67c | ||
|
|
4dd2d63d9b | ||
|
|
b16783143f | ||
|
|
590c66d1eb | ||
|
|
b4db960e68 | ||
|
|
aaf4ede04d | ||
|
|
5ae385ec02 | ||
|
|
ad2288e2fc | ||
|
|
4b5f3c8af8 | ||
|
|
c1dd2ebb92 | ||
|
|
a210a665fb | ||
|
|
979a55d24a | ||
|
|
3c474987b2 | ||
|
|
91e83305e6 | ||
|
|
cf3f6caca8 | ||
|
|
ab1d55611f | ||
|
|
aff634a970 | ||
|
|
6ed572772f | ||
|
|
cc206d5542 | ||
|
|
8001b914b1 | ||
|
|
afc3e862b0 | ||
|
|
8ea6cc8bac | ||
|
|
cdc05320d9 | ||
|
|
b64c2f3597 | ||
|
|
e1b082d189 | ||
|
|
7fdf175329 | ||
|
|
e6580d4676 | ||
|
|
b6de4fe823 | ||
|
|
51da6fe1a8 | ||
|
|
aba179d2de | ||
|
|
80cabea362 | ||
|
|
fad4210c9c | ||
|
|
32091ffd94 | ||
|
|
8d2551e0b6 | ||
|
|
0d94a84724 | ||
|
|
efa82e1761 | ||
|
|
c4cd151f2c | ||
|
|
4874c02c44 | ||
|
|
ba4fdd1f92 | ||
|
|
c598fdd009 | ||
|
|
0bbe29bc2e | ||
|
|
e690243fc3 | ||
|
|
4eaac8dbe8 | ||
|
|
dbf0b5d3f7 | ||
|
|
17e2c30f6e | ||
|
|
36b757c224 | ||
|
|
1ae77b145b | ||
|
|
87f2f0eb24 | ||
|
|
b2d31022af | ||
|
|
110d8b8e59 | ||
|
|
5a177e500e | ||
|
|
03dcb63cf6 | ||
|
|
45a41b6109 | ||
|
|
74862969e1 | ||
|
|
92ef020342 | ||
|
|
2176dd2020 | ||
|
|
bc624dc079 | ||
|
|
0b13d40516 | ||
|
|
e82c161b11 | ||
|
|
307cd0966b | ||
|
|
2ec943d118 | ||
|
|
01733bdbaa | ||
|
|
5bc39d29eb | ||
|
|
c0da955fc6 | ||
|
|
148fc68590 | ||
|
|
1c150e0011 | ||
|
|
cbc79d7082 | ||
|
|
6d04c88d83 | ||
|
|
d5dc66a33c | ||
|
|
2947721727 | ||
|
|
f6408e74d2 | ||
|
|
7a95980d2f | ||
|
|
2589c43214 | ||
|
|
5032ffdfd4 | ||
|
|
1b977e866b | ||
|
|
307e80bac9 | ||
|
|
af6b35cc43 | ||
|
|
bae654f260 | ||
|
|
ff36d38f43 | ||
|
|
88a195b4e2 | ||
|
|
2bd298e673 | ||
|
|
ad89a043c9 | ||
|
|
03506c97b0 | ||
|
|
9384b8a6b9 | ||
|
|
e3eea2628a | ||
|
|
ff85c6688f | ||
|
|
2e0ee9b75f | ||
|
|
fe46a82e63 | ||
|
|
67d49a8f2b | ||
|
|
885b669c30 | ||
|
|
5ab3736f05 | ||
|
|
968bdbf12a | ||
|
|
1608f34677 | ||
|
|
98d9853c7e | ||
|
|
aeac9840f1 | ||
|
|
6a9e268eb7 | ||
|
|
186062926a | ||
|
|
f7691f6909 | ||
|
|
4e02c8a63a | ||
|
|
bd3e23da33 | ||
|
|
045b2619b2 | ||
|
|
8c38bece3a | ||
|
|
d61329a4f3 | ||
|
|
635493f1c1 | ||
|
|
364b7bcf99 | ||
|
|
7d53c4a06b | ||
|
|
e3981aad60 | ||
|
|
f08078bd08 | ||
|
|
5d1e781d20 | ||
|
|
d1d5116536 | ||
|
|
6379f031c2 | ||
|
|
d153d80595 | ||
|
|
28c45719e2 | ||
|
|
e6befda146 | ||
|
|
910723bbcd | ||
|
|
a534e30467 | ||
|
|
dd7c8162ac | ||
|
|
2bffa83d62 | ||
|
|
01514a94e1 | ||
|
|
53355dbcc6 | ||
|
|
bf1067a346 | ||
|
|
53784b310e | ||
|
|
e816cbc51b | ||
|
|
0a37981251 | ||
|
|
d280cb510d | ||
|
|
c08771dc56 | ||
|
|
1e58c47286 | ||
|
|
8c0f3b037a | ||
|
|
550cba2f43 | ||
|
|
33f4efc5b1 | ||
|
|
a92f9d7a6f | ||
|
|
57b6b92e04 | ||
|
|
0ab33e1843 | ||
|
|
8ce6c678aa | ||
|
|
c63336ade4 | ||
|
|
e276a5d825 | ||
|
|
d06731ff19 | ||
|
|
320578a61c | ||
|
|
92f68dfd58 | ||
|
|
d850d901e9 | ||
|
|
492294163c | ||
|
|
cd38e6a6ae | ||
|
|
334f946870 | ||
|
|
bd2353f7bc | ||
|
|
f6214ae36d | ||
|
|
5fee3ecdb8 | ||
|
|
638f93499b | ||
|
|
df7a721626 | ||
|
|
60b5f660e8 | ||
|
|
82188d156b | ||
|
|
b0ea1781e7 | ||
|
|
44528b6173 | ||
|
|
059085a21a | ||
|
|
89a7c3e5cb | ||
|
|
10475f32fb | ||
|
|
55e601cf9d | ||
|
|
d0f11a2595 | ||
|
|
eed5cd1877 | ||
|
|
3258b8806f | ||
|
|
072d0f0acd | ||
|
|
04526385d1 | ||
|
|
857327e9ef | ||
|
|
1fafa0dae7 | ||
|
|
e67ae4f3bf | ||
|
|
d12113b94c | ||
|
|
682804f703 | ||
|
|
7aea5eb5af | ||
|
|
007934e538 | ||
|
|
9cec3bf4ca | ||
|
|
41b9219d66 | ||
|
|
18180b87b9 | ||
|
|
f1580928eb | ||
|
|
b4a844ea0b | ||
|
|
5489f39c0f | ||
|
|
391b72e04b | ||
|
|
15934049db | ||
|
|
0bde8b0b3c | ||
|
|
a83376d810 | ||
|
|
f405e13521 | ||
|
|
b8143154c8 | ||
|
|
480d633b13 | ||
|
|
e6f47b1908 | ||
|
|
caa1a7653d | ||
|
|
acfef7b4cb | ||
|
|
77eb377cf3 | ||
|
|
b8b0879ef2 | ||
|
|
bc6b89f399 | ||
|
|
77662f9505 | ||
|
|
d3fa06dccc | ||
|
|
b7a8664cf9 | ||
|
|
d4b9cfd0cb | ||
|
|
0c2d392166 | ||
|
|
b2f30565b1 | ||
|
|
d0c838450d | ||
|
|
60973954ef | ||
|
|
8018edb183 | ||
|
|
ff5d8c2ba0 | ||
|
|
1496fdb482 | ||
|
|
c0521833d9 | ||
|
|
b59b6e1dad | ||
|
|
7fa7fdee3f | ||
|
|
f177f82417 | ||
|
|
6b4aac0235 | ||
|
|
e7e0d6bf2b | ||
|
|
84e5ef2dcf | ||
|
|
cdb8536e8d | ||
|
|
197c5ad2d0 | ||
|
|
d033a3b23e | ||
|
|
e901c19b5b | ||
|
|
5fb45f7647 | ||
|
|
70ae2bd595 | ||
|
|
47814e35cb | ||
|
|
ceadd52d1a | ||
|
|
f22f80dafd | ||
|
|
f2f2e6cb46 | ||
|
|
779026408e | ||
|
|
bbcd11531a | ||
|
|
c2059a8701 | ||
|
|
ab328d0764 | ||
|
|
28c70dfc2e | ||
|
|
916039b420 | ||
|
|
51c7fb2614 | ||
|
|
4c16e17d44 | ||
|
|
a1aba9bed4 | ||
|
|
ca17263640 | ||
|
|
6c20847cc9 | ||
|
|
c0ac50a501 | ||
|
|
44e901ab08 | ||
|
|
6818fdd00a | ||
|
|
705eee2739 | ||
|
|
d58a883ca5 | ||
|
|
be4151c979 | ||
|
|
da698b946b | ||
|
|
9b0890c9b7 | ||
|
|
4417e275fd | ||
|
|
4e98914a8b | ||
|
|
e200e6b900 | ||
|
|
746c6f79d2 | ||
|
|
c0d9f00adb | ||
|
|
26e67c5f18 | ||
|
|
6fdc6cfaa3 | ||
|
|
5ba6dfd538 | ||
|
|
08dda5d58b | ||
|
|
c909297504 | ||
|
|
699c27e3dc | ||
|
|
39c072050b | ||
|
|
c6e50d8b25 | ||
|
|
307965a464 | ||
|
|
7c15b76c8c | ||
|
|
607001f2dd | ||
|
|
6f38867972 | ||
|
|
68cc38e443 | ||
|
|
ae5e90be02 | ||
|
|
d6fcc89da3 | ||
|
|
6d2e9d8a04 | ||
|
|
53e60c7b59 | ||
|
|
67d0b486e9 | ||
|
|
bd4a658bd9 | ||
|
|
8de6fd25e2 | ||
|
|
ba7fdb314b | ||
|
|
da84d40cd5 | ||
|
|
ea4fb4e7ff | ||
|
|
047cc75051 | ||
|
|
1ec8754456 | ||
|
|
9c8030e588 | ||
|
|
dc6259133f | ||
|
|
40441c8451 | ||
|
|
d319051942 | ||
|
|
045808b69f | ||
|
|
99918cdc17 | ||
|
|
892c1b6aa8 | ||
|
|
a4bb049eac | ||
|
|
0bb7017cf8 | ||
|
|
58bbb2be38 | ||
|
|
02cb9e9090 | ||
|
|
dc3e801fd2 | ||
|
|
cfc587569a | ||
|
|
7e56174b2a | ||
|
|
6d82d10883 | ||
|
|
c1598bccf9 | ||
|
|
43d0e0a5fd | ||
|
|
08c4aea1b2 | ||
|
|
535012f8b0 | ||
|
|
89423208bb | ||
|
|
b82bead486 | ||
|
|
7233137ad3 | ||
|
|
14ca0deb00 | ||
|
|
575a046cac | ||
|
|
77246aad17 | ||
|
|
3303eb3043 | ||
|
|
04f82e5151 | ||
|
|
de9ebbf99d | ||
|
|
d6506b6430 | ||
|
|
ea7c72a509 | ||
|
|
a9314cc6d5 | ||
|
|
3da0510a8d | ||
|
|
20adf39d8b | ||
|
|
02f474504b | ||
|
|
427abafe43 |
9
.env.example
Normal file
@@ -0,0 +1,9 @@
|
||||
# Copy to .env and fill in for dev tooling
|
||||
|
||||
# Crowdin Personal Access Token scoped to at least `project.report` (Read only)
|
||||
# Needed for `qtlimport --credits-since`
|
||||
CROWDIN_REPORT_READ_TOKEN=
|
||||
|
||||
# Path for long-term cached files, like downloaded icon packs
|
||||
# Used by `icons` unless `--work-dir` is set
|
||||
CACHE_DIR=
|
||||
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* @vkbo @saga-soft-bot
|
||||
63
.github/ISSUE_TEMPLATE/01-bug-report.yml
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
name: Bug Report
|
||||
description: Report a bug or issue.
|
||||
title: "[Bug] "
|
||||
labels: ["bug", "triage"]
|
||||
type: bug
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
Thank you for taking the time to fill out this bug report.
|
||||
Note that issues without a description will not be considered.
|
||||
Please also check if an issue already exists on this problem.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Bug Description
|
||||
description: >
|
||||
Provide a clear and concise description of what happened.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what you see.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reproduce
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: >
|
||||
Explain what to do to reproduce the issue.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what to do.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of UmbraEdit are you running?
|
||||
placeholder: "e.g. 26.2"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: What operating system are you running?
|
||||
placeholder: "e.g. Windows 11, macOS 26, Ubuntu 26.04"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Log or Error Output
|
||||
description: >
|
||||
If the error dialog popped up, copy/paste the content here.
|
||||
Or provide relevant log output from the console.
|
||||
render: shell
|
||||
validations:
|
||||
required: false
|
||||
34
.github/ISSUE_TEMPLATE/02-improvement.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Suggest Improvement
|
||||
description: Suggest something that can be improved.
|
||||
title: "[Improve] "
|
||||
labels: ["enhancement", "triage"]
|
||||
type: feature
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
Thank you for taking the time to fill out this feature request.
|
||||
Note that feature requests without a description will not be considered.
|
||||
Please also check if a request already exists for this feature.
|
||||
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: The Problem
|
||||
description: >
|
||||
Explain the problem you're facing.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us about the issue.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Your Suggestion
|
||||
description: >
|
||||
Provide a clear and concise description of what you'd like to see.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what you need.
|
||||
validations:
|
||||
required: true
|
||||
23
.github/ISSUE_TEMPLATE/03-feature.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new feature you'd like added.
|
||||
title: "[Feat] "
|
||||
labels: ["enhancement", "triage"]
|
||||
type: feature
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
Thank you for taking the time to fill out this feature request.
|
||||
Note that feature requests without a description will not be considered.
|
||||
Please also check if a request already exists for this feature.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Your Suggestion
|
||||
description: >
|
||||
Provide a clear and concise description of what you'd like to see.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what you need.
|
||||
validations:
|
||||
required: true
|
||||
24
.github/ISSUE_TEMPLATE/bug-report.md
vendored
@@ -1,24 +0,0 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Create a report to help us improve
|
||||
title: ""
|
||||
labels: bug
|
||||
---
|
||||
|
||||
**Note**: Issues without a description will not be considered.
|
||||
Please also check if an issue already exists on this problem.
|
||||
Please provide a description covering the following points, if applicable:
|
||||
|
||||
* A clear and concise description of what the bug is.
|
||||
* Steps to reproduce the behaviour.
|
||||
* A clear and concise description of what you expected to happen.
|
||||
* If applicable, add screenshots to help explain your problem.
|
||||
* If the error dialog popped up, copy/paste the content here.
|
||||
|
||||
Please also *always* include the following information:
|
||||
|
||||
* The operating system you are using, and if Linux, also the distro.
|
||||
* The version of novelWriter you are using.
|
||||
* How and from where you installed novelWriter.
|
||||
|
||||
Issues without this required information will be closed.
|
||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: GitHub Community Support
|
||||
url: https://github.com/saga-soft/UmbraEdit/discussions
|
||||
about: Please ask and answer questions here.
|
||||
15
.github/ISSUE_TEMPLATE/feature-request.md
vendored
@@ -1,15 +0,0 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: Suggest an idea for this project
|
||||
title: ""
|
||||
labels: enhancement
|
||||
---
|
||||
|
||||
**Note**: Feature requests without a description will not be considered.
|
||||
Please also check if an issue already exists on this feature.
|
||||
Please provide a description covering the following points, if applicable:
|
||||
|
||||
* A clear and concise description of what the problem is. Ex. I'm always frustrated when ...
|
||||
* A clear and concise description of what you want to happen.
|
||||
* A clear and concise description of any alternative solutions or features you've considered.
|
||||
* If applicable, add screenshots to help explain your request.
|
||||
21
.github/pull_request_template.md
vendored
@@ -1,20 +1,15 @@
|
||||
<!--
|
||||
Please check the following before you make a pull request:
|
||||
### Summary
|
||||
|
||||
* The branch you are making the pull request from (in your own fork) has a unique and descriptive
|
||||
name. Do not make a pull request directly from your copy of `main`.
|
||||
* If you are submitting translation files, only submit the files that you have added translations
|
||||
to, not the other .ts files that may have been updated in the process.
|
||||
* Make sure your contribution follows the style guide and other requirements mentioned in the
|
||||
CONTRIBUTING.md file in the repository.
|
||||
* Fill in the Summary section below, and if relevant, mention the issue numbers related to the PR.
|
||||
-->
|
||||
### Related Issue(s)
|
||||
|
||||
**Summary:**
|
||||
<!-- i.e. Closes #1234 -->
|
||||
|
||||
**Related Issue(s):**
|
||||
### Submitter's Checklist
|
||||
|
||||
**Reviewer's Checklist:**
|
||||
* [ ] I am familiar with, and have followed, the [Contributing Guide](https://github.com/saga-soft/UmbraEdit/blob/main/CONTRIBUTING.md)
|
||||
* [ ] I am familiar with, and have followed, the [AI Policy](https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md)
|
||||
|
||||
### Reviewer's Checklist
|
||||
|
||||
* [ ] The header of all files contain a reference to the repository license
|
||||
* [ ] The overall test coverage is increased or remains the same as before
|
||||
|
||||
26
.github/workflows/auto_approve.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: Auto-Approve
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
|
||||
concurrency:
|
||||
group: auto-approve-${{ github.event.pull_request.number }}
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
approve:
|
||||
name: Approve Owner PRs
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.draft == false && github.event.pull_request.user.login == 'vkbo'
|
||||
steps:
|
||||
- name: Approve Pull Request
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.SAGA_SOFT_BOT_TOKEN }}
|
||||
PR_URL: ${{ github.event.pull_request.html_url }}
|
||||
run: gh pr review "$PR_URL" --approve
|
||||
30
.github/workflows/build_all.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: Build All
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-AppImage:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_appimage.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-Flatpak:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_flatpak.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildWin-X64:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_win_x64.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
39
.github/workflows/build_assets.yml
vendored
@@ -1,39 +0,0 @@
|
||||
name: BuildAssets
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
architecture: x64
|
||||
|
||||
- name: Install Packages (apt)
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install qttools5-dev-tools latexmk texlive texlive-latex-extra
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Packages (pip)
|
||||
run: pip install -U -r requirements.txt -r docs/requirements.txt
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
python pkgutils.py build-assets
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: nw-assets
|
||||
path: |
|
||||
novelwriter/assets/manual*.pdf
|
||||
novelwriter/assets/sample.zip
|
||||
novelwriter/assets/i18n/*.qm
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
46
.github/workflows/build_linux.yml
vendored
@@ -1,46 +0,0 @@
|
||||
name: BuildLinux
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/build_assets.yml
|
||||
|
||||
buildLinux-AppImage:
|
||||
needs: buildAssets
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
PYTHON_VERSION: "3.13"
|
||||
LINUX_TAG: "manylinux_2_28_x86_64"
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
architecture: x64
|
||||
|
||||
- name: Install Packages (pip)
|
||||
run: pip install python-appimage
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: nw-assets
|
||||
path: novelwriter/assets
|
||||
|
||||
- name: Build AppImage
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
python pkgutils.py build-appimage --linux-tag $LINUX_TAG --python-version $PYTHON_VERSION
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: novelWriter-${{ steps.build.outputs.BUILD_VERSION }}-Linux-AppImage
|
||||
path: dist_appimage/*.AppImage*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
23
.github/workflows/build_linux_images.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
name: Build Linux Images
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-AppImage:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_appimage.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-Flatpak:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_flatpak.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
147
.github/workflows/build_linux_native.yml
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
name: Build Linux Native
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
description: "Publish to Cloudsmith?"
|
||||
type: boolean
|
||||
default: false
|
||||
build_number:
|
||||
required: false
|
||||
description: "Build Number"
|
||||
type: string
|
||||
default: "0"
|
||||
debian12:
|
||||
required: false
|
||||
description: "Debian 12 (Bookworm)"
|
||||
type: boolean
|
||||
default: true
|
||||
debian13:
|
||||
required: false
|
||||
description: "Debian 13 (Trixie)"
|
||||
type: boolean
|
||||
default: true
|
||||
ubuntu2404:
|
||||
required: false
|
||||
description: "Ubuntu 24.04 (Noble)"
|
||||
type: boolean
|
||||
default: true
|
||||
ubuntu2604:
|
||||
required: false
|
||||
description: "Ubuntu 26.04 (Resolute)"
|
||||
type: boolean
|
||||
default: true
|
||||
ubuntu2610:
|
||||
required: false
|
||||
description: "Ubuntu 26.10 (Stonking)"
|
||||
type: boolean
|
||||
default: true
|
||||
mint22:
|
||||
required: false
|
||||
description: "Linux Mint 22 (Wilma)"
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Debian12:
|
||||
name: Debian 12 (Bookworm)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: bookworm
|
||||
family: debian
|
||||
image: debian:12
|
||||
secrets: inherit
|
||||
if: ${{ inputs.debian12 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Debian13:
|
||||
name: Debian 13 (Trixie)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: trixie
|
||||
family: debian
|
||||
image: debian:13
|
||||
secrets: inherit
|
||||
if: ${{ inputs.debian13 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Ubuntu2404:
|
||||
name: Ubuntu 24.04 (Noble)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: noble
|
||||
family: ubuntu
|
||||
image: ubuntu:24.04
|
||||
secrets: inherit
|
||||
if: ${{ inputs.ubuntu2404 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Ubuntu2604:
|
||||
name: Ubuntu 26.04 (Resolute)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: resolute
|
||||
family: ubuntu
|
||||
image: ubuntu:26.04
|
||||
secrets: inherit
|
||||
if: ${{ inputs.ubuntu2604 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Ubuntu2610:
|
||||
name: Ubuntu 26.10 (Stonking)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: stonking
|
||||
family: ubuntu
|
||||
image: ubuntu:26.10
|
||||
secrets: inherit
|
||||
if: ${{ inputs.ubuntu2610 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Mint22:
|
||||
name: Linux Mint 22 (Wilma)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: wilma
|
||||
family: linuxmint
|
||||
image: linuxmintd/mint22-amd64
|
||||
secrets: inherit
|
||||
if: ${{ inputs.mint22 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
70
.github/workflows/build_mac.yml
vendored
@@ -1,69 +1,23 @@
|
||||
name: BuildMacOS
|
||||
name: Build MacOS
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/build_assets.yml
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildMac-AMD64:
|
||||
needs: buildAssets
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
PYTHON_VERSION: "3.13"
|
||||
PACKAGE_ARCH: x86_64
|
||||
MINICONDA_ARCH: x86_64
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: nw-assets
|
||||
path: novelwriter/assets
|
||||
|
||||
- name: Build App Bundle
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
./setup/macos/build.sh $PYTHON_VERSION $PACKAGE_ARCH $MINICONDA_ARCH
|
||||
|
||||
- name: Upload DMG
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: novelWriter-${{ steps.build.outputs.BUILD_VERSION }}-MacOS-AMD64-DMG
|
||||
path: dist_macos/*.dmg*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
uses: ./.github/workflows/part_macos_amd64.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildMac-M1:
|
||||
needs: buildAssets
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
PYTHON_VERSION: "3.13"
|
||||
PACKAGE_ARCH: aarch64
|
||||
MINICONDA_ARCH: arm64
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: nw-assets
|
||||
path: novelwriter/assets
|
||||
|
||||
- name: Build App Bundle
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
./setup/macos/build.sh $PYTHON_VERSION $PACKAGE_ARCH $MINICONDA_ARCH
|
||||
|
||||
- name: Upload DMG
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: novelWriter-${{ steps.build.outputs.BUILD_VERSION }}-MacOS-M1-DMG
|
||||
path: dist_macos/*.dmg*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
uses: ./.github/workflows/part_macos_m1.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
26
.github/workflows/build_pypi.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: Build PyPI
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
description: "Publish to PyPI?"
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildAndPublish-PyPI:
|
||||
name: PyPI Package
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_pypi.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
64
.github/workflows/build_win.yml
vendored
@@ -1,62 +1,16 @@
|
||||
name: BuildWindows
|
||||
name: Build Windows
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/build_assets.yml
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildWin64:
|
||||
buildWin-X64:
|
||||
needs: buildAssets
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
architecture: x64
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download Assets
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: nw-assets
|
||||
path: novelwriter/assets
|
||||
|
||||
- name: Build Setup Installer
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $Env:GITHUB_OUTPUT
|
||||
python pkgutils.py build-win-exe
|
||||
|
||||
- name: Upload Unsigned Artifacts
|
||||
id: upload-unsigned-artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: novelWriter-${{ steps.build.outputs.BUILD_VERSION }}-Win-Setup
|
||||
path: dist/*.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
- name: Submit Signing Request
|
||||
uses: signpath/github-action-submit-signing-request@v1
|
||||
with:
|
||||
api-token: "${{ secrets.SIGNPATH_API_TOKEN }}"
|
||||
organization-id: "0471e52c-66fa-4e9a-bfb9-36167095ca3f"
|
||||
project-slug: "novelWriter"
|
||||
signing-policy-slug: "release-signing "
|
||||
github-artifact-id: "${{ steps.upload-unsigned-artifact.outputs.artifact-id }}"
|
||||
wait-for-completion: true
|
||||
output-artifact-directory: "dist/"
|
||||
parameters: |
|
||||
version: "${{ steps.build.outputs.BUILD_VERSION }}"
|
||||
|
||||
- name: Upload Signed Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: novelWriter-${{ steps.build.outputs.BUILD_VERSION }}-Win-Setup-Signed
|
||||
path: dist/*.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
uses: ./.github/workflows/part_win_x64.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
18
.github/workflows/build_win_launcher.yml
vendored
@@ -1,13 +1,15 @@
|
||||
name: BuildWindowsLauncher
|
||||
name: Build Windows Launcher
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildLauncherWin64:
|
||||
runs-on: windows-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Build Launcher
|
||||
id: build
|
||||
@@ -17,19 +19,19 @@ jobs:
|
||||
|
||||
- name: Upload Unsigned Artifacts
|
||||
id: upload-unsigned-artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: launcher
|
||||
path: setup/windows/novelWriter.exe
|
||||
path: setup/windows/UmbraEdit.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
- name: Submit Signing Request
|
||||
uses: signpath/github-action-submit-signing-request@v1
|
||||
uses: signpath/github-action-submit-signing-request@v2
|
||||
with:
|
||||
api-token: "${{ secrets.SIGNPATH_API_TOKEN }}"
|
||||
organization-id: "0471e52c-66fa-4e9a-bfb9-36167095ca3f"
|
||||
project-slug: "novelWriter"
|
||||
project-slug: "UmbraEdit"
|
||||
signing-policy-slug: "release-signing"
|
||||
artifact-configuration-slug: "launcher"
|
||||
github-artifact-id: "${{ steps.upload-unsigned-artifact.outputs.artifact-id }}"
|
||||
@@ -37,9 +39,9 @@ jobs:
|
||||
output-artifact-directory: "."
|
||||
|
||||
- name: Upload Signed Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: launcher-signed
|
||||
path: novelWriter.exe
|
||||
path: UmbraEdit.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
29
.github/workflows/i18n.yml
vendored
@@ -1,32 +1,41 @@
|
||||
name: i18n
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
branches:
|
||||
- i18n/*
|
||||
- main
|
||||
- release
|
||||
paths:
|
||||
- i18n/*.ts
|
||||
|
||||
jobs:
|
||||
buildI18n:
|
||||
name: Build i18n
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
architecture: x64
|
||||
- name: Install Packages (apt)
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install qttools5-dev-tools
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Build Assets
|
||||
run: python pkgutils.py qtlrelease
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-i18n
|
||||
path: |
|
||||
novelwriter/assets/i18n/*.qm
|
||||
path: umbraedit/assets/i18n/*.qm
|
||||
if-no-files-found: error
|
||||
retention-days: 7
|
||||
|
||||
141
.github/workflows/part_appimage.yml
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
name: Part AppImage
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildLinux-AppImage:
|
||||
# Needs to stay on 22.04 as long as we're using manylinux_2_28
|
||||
# as libxcb-cursor0 in 22.04 supports glibc >= 2.17
|
||||
name: Build AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
PYTHON_VERSION: "3.14"
|
||||
LINUX_TAG: "manylinux_2_28"
|
||||
LINUX_ARCH: "x86_64"
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.14"
|
||||
architecture: x64
|
||||
|
||||
- name: Install Packages (apt)
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install libxcb-cursor0
|
||||
|
||||
- name: Install Packages (pip)
|
||||
run: pip install python-appimage setuptools
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build AppImage
|
||||
id: build
|
||||
run: |
|
||||
wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-$LINUX_ARCH.AppImage
|
||||
chmod +x appimagetool-$LINUX_ARCH.AppImage
|
||||
export APPIMAGE_TOOL_EXEC="$(pwd)/appimagetool-$LINUX_ARCH.AppImage"
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
python pkgutils.py build-appimage $LINUX_TAG $LINUX_ARCH $PYTHON_VERSION
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Linux-AppImage
|
||||
path: dist_appimage/*.AppImage*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
smokeTest:
|
||||
name: Smoke Test AppImage (${{ matrix.distro }})
|
||||
needs: buildLinux-AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- distro: Ubuntu 22.04
|
||||
image: ubuntu:22.04
|
||||
- distro: Debian 12
|
||||
image: debian:12
|
||||
- distro: Fedora 40
|
||||
image: fedora:40
|
||||
- distro: Arch Linux
|
||||
image: archlinux:latest
|
||||
- distro: Manjaro
|
||||
image: manjarolinux/base:latest
|
||||
container:
|
||||
image: ${{ matrix.image }}
|
||||
steps:
|
||||
- name: Install Runtime Dependencies
|
||||
run: |
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
apt-get update
|
||||
apt-get install -y ca-certificates libgl1 libxkbcommon0 libegl1 libfontconfig1 libglib2.0-0 libdbus-1-3
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
dnf install -y ca-certificates coreutils mesa-libGL mesa-libEGL libxkbcommon fontconfig glib2 dbus-libs
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
pacman -Syu --noconfirm --needed ca-certificates coreutils mesa libxkbcommon fontconfig glib2 dbus
|
||||
fi
|
||||
|
||||
- name: Download AppImage Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: UmbraEdit-*-Linux-AppImage
|
||||
merge-multiple: true
|
||||
path: appimage-dist
|
||||
|
||||
- name: Run AppImage Smoke Test
|
||||
run: |
|
||||
set -eu
|
||||
APPIMAGE_FILE="$(find appimage-dist -maxdepth 1 -name '*.AppImage' | head -n1)"
|
||||
if [ -z "$APPIMAGE_FILE" ]; then
|
||||
echo "No AppImage artifact found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
chmod +x "$APPIMAGE_FILE"
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
export QT_NO_XDG_DESKTOP_PORTAL=1
|
||||
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||
|
||||
set +e
|
||||
timeout 25s "$APPIMAGE_FILE" > smoke.log 2>&1
|
||||
EXIT_CODE=$?
|
||||
set -e
|
||||
|
||||
if [ "$EXIT_CODE" -eq 139 ]; then
|
||||
echo "AppImage crashed with segmentation fault"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if grep -Eiq 'segmentation fault|core dumped' smoke.log; then
|
||||
echo "Crash signature found in smoke log"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$EXIT_CODE" -ne 0 ] && [ "$EXIT_CODE" -ne 124 ]; then
|
||||
echo "Unexpected exit code: $EXIT_CODE"
|
||||
cat smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Upload Smoke Logs
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: appimage-smoke-log-${{ matrix.distro }}
|
||||
path: smoke.log
|
||||
if-no-files-found: ignore
|
||||
retention-days: 14
|
||||
44
.github/workflows/part_assets.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: Part Assets
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
name: Build Assets
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y qttools5-dev-tools latexmk texlive texlive-latex-extra
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group docs
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py build-assets
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-assets
|
||||
path: |
|
||||
umbraedit/assets/manual*.pdf
|
||||
umbraedit/assets/sample.zip
|
||||
umbraedit/assets/i18n/*.qm
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
82
.github/workflows/part_debian.yml
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
name: Part Debian
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
build_number:
|
||||
required: false
|
||||
type: string
|
||||
default: "0"
|
||||
codename:
|
||||
required: true
|
||||
type: string
|
||||
family:
|
||||
required: true
|
||||
type: string
|
||||
image:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
CLOUDSMITH_API_KEY:
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
buildPackage:
|
||||
name: Build Debian Package
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
container:
|
||||
image: ${{ inputs.image }}
|
||||
steps:
|
||||
- name: Install Checkout Prerequisites
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y git ca-certificates python3
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Assets Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Install Native Packages
|
||||
run: apt-get install -y $(python3 pkgutils.py build-deb-depends ${{ inputs.codename }})
|
||||
|
||||
- name: Build Package
|
||||
run: python3 pkgutils.py build-deb ${{ inputs.codename }} --build ${{ inputs.build_number }} --install-source Cloudsmith
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-deb-${{ inputs.codename }}
|
||||
path: dist_upload/*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
- name: Set up Cloudsmith CLI with OIDC
|
||||
if: ${{ inputs.publish }}
|
||||
uses: cloudsmith-io/cloudsmith-cli-action@v3
|
||||
with:
|
||||
oidc-namespace: "saga-soft"
|
||||
oidc-service-slug: "github-actions-lcpr"
|
||||
verify-auth: true
|
||||
|
||||
- name: Publish to Cloudsmith
|
||||
if: ${{ inputs.publish }}
|
||||
run: |
|
||||
CHANNEL="$(python3 pkgutils.py channel)"
|
||||
REPO="stable"
|
||||
if [ "$CHANNEL" = "pre" ]; then
|
||||
REPO="testing"
|
||||
fi
|
||||
DEB_FILE="$(find dist_upload -name '*.deb')"
|
||||
cloudsmith push deb "saga-soft/$REPO/${{ inputs.family }}/${{ inputs.codename }}" "$DEB_FILE" --republish
|
||||
46
.github/workflows/part_flatpak.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
name: Part Flatpak
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildLinux-Flatpak:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install Packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y flatpak flatpak-builder
|
||||
flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group build
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build Flatpak
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(uv run pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
uv run --no-sync pkgutils.py build-flatpak
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Linux-Flatpak
|
||||
path: dist_flatpak/*.flatpak*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
37
.github/workflows/part_macos_amd64.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Part MacOS AMD64
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildMac-AMD64:
|
||||
name: Build on MACOS AMD64
|
||||
runs-on: macos-latest
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
PYTHON_VERSION: "3.13"
|
||||
PACKAGE_ARCH: x86_64
|
||||
MINICONDA_ARCH: x86_64
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build App Bundle
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
./setup/macos/build.sh $PYTHON_VERSION $PACKAGE_ARCH $MINICONDA_ARCH
|
||||
|
||||
- name: Upload DMG
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-MacOS-AMD64-DMG
|
||||
path: dist_macos/*.dmg*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
37
.github/workflows/part_macos_m1.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Part MacOS M1
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildMac-M1:
|
||||
name: Build on MacOS AARCH64
|
||||
runs-on: macos-latest
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
PYTHON_VERSION: "3.13"
|
||||
PACKAGE_ARCH: aarch64
|
||||
MINICONDA_ARCH: arm64
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build App Bundle
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
./setup/macos/build.sh $PYTHON_VERSION $PACKAGE_ARCH $MINICONDA_ARCH
|
||||
|
||||
- name: Upload DMG
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-MacOS-M1-DMG
|
||||
path: dist_macos/*.dmg*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
66
.github/workflows/part_pypi.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
name: Part PyPI
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
buildPackage:
|
||||
name: Build PyPI Package
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Assets Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Build Package
|
||||
run: uv run pkgutils.py build-pypi
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-pypi
|
||||
path: |
|
||||
dist_pypi/*.whl
|
||||
dist_pypi/*.tar.gz
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
publishPackage:
|
||||
name: Publish to PyPI
|
||||
needs: buildPackage
|
||||
if: ${{ inputs.publish }}
|
||||
runs-on: ubuntu-latest
|
||||
environment: pypi
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: Download Package Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-pypi
|
||||
path: dist_pypi
|
||||
|
||||
- name: Install UV
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
|
||||
- name: Publish Package
|
||||
run: uv publish dist_pypi/*
|
||||
64
.github/workflows/part_win_x64.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
name: Part Windows X64
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildWin-X64:
|
||||
name: Build on Windows
|
||||
runs-on: windows-2022
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.14"
|
||||
architecture: x64
|
||||
|
||||
- name: Install Packages (pip)
|
||||
run: pip install tzdata
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Assets
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build Setup Installer
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $Env:GITHUB_OUTPUT
|
||||
python pkgutils.py build-win-exe
|
||||
|
||||
- name: Upload Unsigned Artifacts
|
||||
id: upload-unsigned-artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Win-Setup
|
||||
path: dist/*.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
- name: Submit Signing Request
|
||||
uses: signpath/github-action-submit-signing-request@v1
|
||||
with:
|
||||
api-token: "${{ secrets.SIGNPATH_API_TOKEN }}"
|
||||
organization-id: "0471e52c-66fa-4e9a-bfb9-36167095ca3f"
|
||||
project-slug: "UmbraEdit"
|
||||
signing-policy-slug: "release-signing "
|
||||
github-artifact-id: "${{ steps.upload-unsigned-artifact.outputs.artifact-id }}"
|
||||
wait-for-completion: true
|
||||
output-artifact-directory: "dist/"
|
||||
parameters: |
|
||||
version: "${{ steps.build.outputs.BUILD_VERSION }}"
|
||||
|
||||
- name: Upload Signed Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Win-Setup-Signed
|
||||
path: dist/*.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
17
.github/workflows/policy.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
name: Policy Checks
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
commitPolicy:
|
||||
name: Commit Policy
|
||||
uses: saga-soft/automation/.github/workflows/saga-soft-policy.yml@main
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
with:
|
||||
policy-url: https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md
|
||||
36
.github/workflows/syntax.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: Linting
|
||||
name: Syntax
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -12,26 +12,30 @@ on:
|
||||
|
||||
jobs:
|
||||
checkSyntax:
|
||||
name: Linting and Type Checking
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: 3
|
||||
architecture: x64
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: pip install -r requirements.txt -r requirements-dev.txt
|
||||
run: |
|
||||
uv sync --no-dev --group lint --group test
|
||||
|
||||
- name: Ruff Check
|
||||
run: |
|
||||
ruff --version
|
||||
ruff check
|
||||
uv run --no-sync ruff --version
|
||||
uv run --no-sync ruff format --check
|
||||
uv run --no-sync ruff check --output-format github
|
||||
|
||||
- name: Pyright Check
|
||||
run: |
|
||||
pyright --version
|
||||
pyright
|
||||
- name: Isort Check
|
||||
run: |
|
||||
isort --version
|
||||
isort --check .
|
||||
uv run --no-sync pyright --version
|
||||
uv run --no-sync pyright
|
||||
|
||||
46
.github/workflows/test_linux.yml
vendored
@@ -1,46 +0,0 @@
|
||||
name: Linux
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
testLinux:
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
||||
fail-fast: false
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
architecture: x64
|
||||
- name: Install Packages (apt)
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install libenchant-2-dev qttools5-dev-tools
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Dependencies (pip)
|
||||
run: |
|
||||
pip install -U -r requirements.txt -r tests/requirements.txt
|
||||
- name: Run Build Commands
|
||||
run: |
|
||||
python pkgutils.py qtlrelease
|
||||
python pkgutils.py sample
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
python -m pytest -v --cov=novelwriter --timeout=60
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v5
|
||||
env:
|
||||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||
37
.github/workflows/test_mac.yml
vendored
@@ -1,37 +0,0 @@
|
||||
name: MacOS
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
testMac:
|
||||
runs-on: macos-13
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
architecture: x64
|
||||
- name: Install Packages (brew)
|
||||
run: |
|
||||
brew install enchant
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Dependencies (pip)
|
||||
run: |
|
||||
pip install -U pyobjc -r requirements.txt -r tests/requirements.txt
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
python -m pytest -v --cov=novelwriter --timeout=60
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v5
|
||||
env:
|
||||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||
33
.github/workflows/test_win.yml
vendored
@@ -1,33 +0,0 @@
|
||||
name: Windows
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
testWin:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
architecture: x64
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Dependencies (pip)
|
||||
run: |
|
||||
pip install -U -r requirements.txt -r tests/requirements.txt
|
||||
- name: Run Tests
|
||||
run: |
|
||||
python -m pytest -v --cov=novelwriter --timeout=60
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v5
|
||||
env:
|
||||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||
308
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,308 @@
|
||||
name: Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
testLinux:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
python-version:
|
||||
- "3.11"
|
||||
- "3.12"
|
||||
- "3.13"
|
||||
- "3.14"
|
||||
- "3.15"
|
||||
fail-fast: false
|
||||
name: Linux Python ${{ matrix.python-version }}
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
COVERAGE_FILE: .coverage.py${{ matrix.python-version }}
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install qttools5-dev-tools
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group test
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py qtlrelease
|
||||
uv run --no-sync pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
uv run --no-sync coverage run -m pytest -v --timeout=60
|
||||
uv run --no-sync coverage report --skip-covered --show-missing
|
||||
|
||||
- name: Upload Coverage Data
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: coverage-data-py${{ matrix.python-version }}
|
||||
path: ${{ env.COVERAGE_FILE }}
|
||||
include-hidden-files: true
|
||||
retention-days: 1
|
||||
|
||||
testMac:
|
||||
runs-on: macos-latest
|
||||
name: MacOS Python 3.14
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
COVERAGE_FILE: .coverage.mac
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
brew install enchant
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group test
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
uv run --no-sync coverage run -m pytest -v --timeout=60
|
||||
uv run --no-sync coverage report --skip-covered --show-missing
|
||||
|
||||
- name: Upload Coverage Data
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: coverage-data-mac
|
||||
path: ${{ env.COVERAGE_FILE }}
|
||||
include-hidden-files: true
|
||||
retention-days: 1
|
||||
|
||||
testWin:
|
||||
runs-on: windows-latest
|
||||
name: Windows Python 3.14
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
COVERAGE_FILE: .coverage.win
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group test
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
uv run --no-sync coverage run -m pytest -v --timeout=60
|
||||
uv run --no-sync coverage report --skip-covered --show-missing
|
||||
|
||||
- name: Upload Coverage Data
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: coverage-data-win
|
||||
path: ${{ env.COVERAGE_FILE }}
|
||||
include-hidden-files: true
|
||||
retention-days: 1
|
||||
|
||||
coverageReport:
|
||||
name: PR Coverage Report
|
||||
needs:
|
||||
- testLinux
|
||||
- testMac
|
||||
- testWin
|
||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Coverage Data
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: coverage-data-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Install UV
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
|
||||
- name: Combine Coverage Data
|
||||
run: |
|
||||
uvx coverage combine
|
||||
uvx coverage report --skip-covered
|
||||
|
||||
- name: Build Comment Body
|
||||
run: |
|
||||
{
|
||||
echo '<!-- coverage-report -->'
|
||||
echo '### Coverage Report (Linux, macOS, Windows)'
|
||||
echo
|
||||
uvx coverage report --skip-covered --show-missing --format=markdown --precision=3
|
||||
echo
|
||||
echo "**Total: $(uvx coverage report --format=total --precision=3)%**"
|
||||
} > coverage-comment.md
|
||||
|
||||
- name: Post PR Comment
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||
REPO: ${{ github.repository }}
|
||||
run: |
|
||||
comment_id=$(gh api "repos/$REPO/issues/$PR_NUMBER/comments" --paginate --jq '.[] | select(.body | startswith("<!-- coverage-report -->")) | .id' | head -n1)
|
||||
if [ -n "$comment_id" ]; then
|
||||
gh api --method PATCH "repos/$REPO/issues/comments/$comment_id" -F body=@coverage-comment.md
|
||||
else
|
||||
gh pr comment "$PR_NUMBER" --body-file coverage-comment.md
|
||||
fi
|
||||
|
||||
coverageSummary:
|
||||
name: Action Coverage Report
|
||||
needs:
|
||||
- testLinux
|
||||
- testMac
|
||||
- testWin
|
||||
if: github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Coverage Data
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: coverage-data-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Install UV
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
|
||||
- name: Combine Coverage Data
|
||||
run: |
|
||||
uvx coverage combine
|
||||
uvx coverage report --skip-covered
|
||||
|
||||
- name: Write Coverage Summary
|
||||
run: |
|
||||
{
|
||||
echo '### Coverage Report (Linux, macOS, Windows)'
|
||||
echo
|
||||
uvx coverage report --skip-covered --show-missing --format=markdown --precision=3
|
||||
echo
|
||||
echo "**Total: $(uvx coverage report --format=total --precision=3)%**"
|
||||
} >> "$GITHUB_STEP_SUMMARY"
|
||||
|
||||
testUbuntu24:
|
||||
name: Ubuntu 24.04 & Sys Packages
|
||||
runs-on: ubuntu-24.04
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
python3-pyqt6 \
|
||||
python3-pyqt6.qtsvg \
|
||||
python3-pytest \
|
||||
python3-pytestqt \
|
||||
python3-enchant \
|
||||
python3-pytest-timeout \
|
||||
qt6-image-formats-plugins
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
python3 pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
python3 -m pytest -v --timeout=60
|
||||
|
||||
testFedoraLatest:
|
||||
name: Fedora 44 & Sys Packages
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: fedora:44
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Install System Packages
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
dnf -y update
|
||||
dnf -y install \
|
||||
git \
|
||||
python3-enchant \
|
||||
python3-pyqt6 \
|
||||
python3-pytest \
|
||||
python3-pytest-qt \
|
||||
python3-pytest-timeout \
|
||||
qt6-linguist \
|
||||
qt6-qtimageformats
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Run Build Commands
|
||||
run: |
|
||||
python pkgutils.py qtlrelease
|
||||
python pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
python3 -m pytest -v --timeout=60
|
||||
58
.gitignore
vendored
@@ -8,14 +8,16 @@
|
||||
*.spec
|
||||
*.egg-info
|
||||
setup.iss
|
||||
/novelwriter.desktop
|
||||
/novelWriter.pyw
|
||||
/umbraedit.desktop
|
||||
/UmbraEdit.pyw
|
||||
/setup/macos/Info.plist
|
||||
/setup/windows/build
|
||||
.flatpak-builder
|
||||
.venv
|
||||
.env
|
||||
|
||||
# Translations
|
||||
/novelwriter/assets/i18n/*.qm
|
||||
/umbraedit/assets/i18n/*.qm
|
||||
.qmake.stash
|
||||
i18n/*.qm
|
||||
i18n/*.qph
|
||||
@@ -23,39 +25,63 @@ i18n/*.qph
|
||||
# Documentation
|
||||
/docs/build/
|
||||
/docs/source/locales/**/*.mo
|
||||
/novelwriter/assets/help/
|
||||
/novelwriter/assets/manual*.pdf
|
||||
*.qch
|
||||
*.qhc
|
||||
/umbraedit/assets/manual*.pdf
|
||||
.~lock.*
|
||||
|
||||
# Python Temp
|
||||
# Python
|
||||
/.python-version
|
||||
__pycache__
|
||||
*.pyc
|
||||
|
||||
# Sample Project
|
||||
/novelwriter/assets/sample.zip
|
||||
/sample/cache
|
||||
/umbraedit/assets/sample.zip
|
||||
/sample/meta
|
||||
*.bak
|
||||
*.lock
|
||||
ToC.txt
|
||||
/sample/**/*.bak
|
||||
/sample/*.lock
|
||||
/sample/ToC.txt
|
||||
/sample/manifest.json
|
||||
|
||||
# PyTest
|
||||
/prof/
|
||||
/htmlcov/
|
||||
/tests/temp
|
||||
/tests/lipsum/cache
|
||||
/tests/lipsum/meta
|
||||
/tests/_temp
|
||||
/.pytest_cache
|
||||
/pytestdebug.log
|
||||
|
||||
# Coverage
|
||||
/.coverage
|
||||
/.coveragerc
|
||||
/coverage.*
|
||||
|
||||
# Other
|
||||
/test.py
|
||||
.config
|
||||
.local
|
||||
*.patch
|
||||
|
||||
# IDE
|
||||
.vscode
|
||||
.ruff_cache
|
||||
.nvimlog
|
||||
|
||||
# No AI files
|
||||
AGENTS.md
|
||||
CLAUSE.md
|
||||
GEMINI.md
|
||||
.claude/
|
||||
.cursor*
|
||||
.codex/
|
||||
.gemini/
|
||||
|
||||
# Debug
|
||||
/debug/
|
||||
|
||||
# Clean up accidentally committed files
|
||||
# Added by B.D. Murphy 2026: exclude files accidentally committed during branding transition
|
||||
Splh.jpeg
|
||||
Oldwelcome.webp
|
||||
.DS_Store
|
||||
UmbraEdit_Projects/
|
||||
Inner_Demon_1.2a.docm
|
||||
requirements.txt
|
||||
UmbraEdit_deb_Build_Script.txt
|
||||
|
||||
59
AI_POLICY.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# AI Policy
|
||||
|
||||
This is the AI policy of UmbraEdit and associated projects.
|
||||
|
||||
|
||||
### Code Contributions
|
||||
|
||||
We consider code to be creative work, and we have a strong preference for feature contributions designed by actual
|
||||
humans over the average and mediocre output of agentic and generative AI.
|
||||
|
||||
While we do not have a strict No-AI policy, we want to limit its use in this project. In general, we expect any
|
||||
contributed code to hold up to maintainability and stability standards so that our users can rely on the software for
|
||||
their creative work. This implies careful review, thorough test coverage, and beta testing of all features before they
|
||||
reach live users. The requirements on code that isn't shipped to the user are less strict. This includes unit tests and
|
||||
build tooling.
|
||||
|
||||
We recognise that AI tools can be useful in a developer's toolbox, alongside other tools that can edit or add code. In
|
||||
addition to read-only operations, it is generally fine to use them for boilerplate, fixes, and otherwise editing and
|
||||
extending existing code. However, you must not contribute fully or predominantly AI-generated features or other
|
||||
bulk-generated code. This applies especially to core functionality.
|
||||
|
||||
In general, so-called vibe coding does not meet our code quality requirements, so this project is not suitable for such
|
||||
contributions in any case. The licensing implications around generated code are also unclear, as AI models are trained
|
||||
on material without consent or concern for original licensing.
|
||||
|
||||
No AI automation or agentic tools are used anywhere in this project on GitHub. Do not use your AI agents on your
|
||||
contributions on GitHub either. Commits listed in any way as authored by, signed off by, or assisted by, AI tools are
|
||||
explicitly not allowed. Pull requests containing such commits will be rejected. You should also not commit AI-specific
|
||||
files into the code repository. Most of the common ones are in the git ignore file.
|
||||
|
||||
|
||||
### Design Work
|
||||
|
||||
No design work generated by AI for UmbraEdit will be accepted. We do not control how third-party work like icon
|
||||
libraries are created, but any artwork added to the app must be made by actual people.
|
||||
|
||||
|
||||
### Translation Work
|
||||
|
||||
This project uses Crowdin to host the translation files for the user interface. Crowdin has a lot of AI integration and
|
||||
tooling, which we do not use. The Crowdin translation interface provides AI translated suggestions, which the
|
||||
translators may choose to use. All translations are proofread and approved by speakers of the respective languages.
|
||||
|
||||
|
||||
### Application Features
|
||||
|
||||
We do not believe creative writing and generative AI go together. Therefore, there will not be any tooling or features
|
||||
added to this project that will generate text for you. Language models have a real use case in text analysis that
|
||||
predates generative AI, and such supportive tools **may** be in scope depending on how intrusive they are.
|
||||
|
||||
|
||||
### Discussions and Comments
|
||||
|
||||
Please refrain from using AI to generate or respond to discussions, issues, and pull requests. Especially do not use AI
|
||||
tools to generate long and verbose issue reports. It is OK to use AI for translations of comments or for accessibility
|
||||
reasons. All text in the code or posted to this project must be in English.
|
||||
|
||||
|
||||
*Last updated on 2026-10-03.*
|
||||
146
BUILD_LINUX.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# UmbraEdit - Linux AMD64 Build Guide
|
||||
|
||||
UmbraEdit is developed on macOS but builds natively on Linux AMD64 and ARM64.
|
||||
This guide covers building Linux install packages from source.
|
||||
|
||||
## Source Distribution
|
||||
|
||||
The source tarball (`umbraedit-2026.11.1.tar.gz`) includes everything needed to
|
||||
build Linux packages:
|
||||
|
||||
```
|
||||
umbraedit-2026.11.1/
|
||||
├── pyproject.toml # Project metadata & dependencies
|
||||
├── UmbraEdit.py # Application entry point
|
||||
├── pkgutils.py # Packaging utility
|
||||
├── run_tests.py # Test runner
|
||||
├── setup/ # Packaging assets
|
||||
│ ├── data/ # .desktop file, MIME type XML
|
||||
│ ├── macos/ # macOS-specific packaging
|
||||
│ └── windows/ # Windows-specific packaging
|
||||
├── utils/ # Build scripts
|
||||
│ ├── build_debian.py # .deb package builder
|
||||
│ ├── build_appimage.py # AppImage builder
|
||||
│ ├── build_all.py # Multi-platform build orchestrator
|
||||
│ └── ...
|
||||
├── umbraedit/ # Application source code
|
||||
└── tests/ # Test suite
|
||||
```
|
||||
|
||||
## Prerequisites on Linux
|
||||
|
||||
### Debian/Ubuntu
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install \
|
||||
python3 python3-pip \
|
||||
python3-pyqt6 python3-pyqt6.qtsvg \
|
||||
python3-enchant \
|
||||
qt6-image-formats-plugins qt6-svg-plugins \
|
||||
dh-python debhelper python3-build python3-setuptools \
|
||||
python3-pytest python3-pytestqt python3-pytest-timeout \
|
||||
appimagetool
|
||||
```
|
||||
|
||||
### Fedora/RHEL
|
||||
|
||||
```bash
|
||||
sudo dnf install \
|
||||
python3 python3-pip \
|
||||
python3-pyqt6 python3-enchant \
|
||||
qt6-qtimageformats qt6-qtsvg \
|
||||
python3-build python3-setuptools \
|
||||
dpkg rpm-build appimagetool
|
||||
```
|
||||
|
||||
### Arch Linux
|
||||
|
||||
```bash
|
||||
sudo pacman -S \
|
||||
python python-pip \
|
||||
python-pyqt6 python-enchant \
|
||||
qt6-imageformats qt6-svg \
|
||||
python-build python-setuptools \
|
||||
dpkg appimagetool
|
||||
```
|
||||
|
||||
## Build Options
|
||||
|
||||
### Option 1: Install via Wheel (Simplest)
|
||||
|
||||
The pure Python wheel requires no compilation:
|
||||
|
||||
```bash
|
||||
pip install umbraedit-2026.11.1-py3-none-any.whl
|
||||
umbraedit
|
||||
```
|
||||
|
||||
### Option 2: Install from Source Tarball
|
||||
|
||||
```bash
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
pip install .
|
||||
umbraedit
|
||||
```
|
||||
|
||||
### Option 3: Build .deb Package
|
||||
|
||||
```bash
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
|
||||
# Build for Ubuntu Noble (24.04)
|
||||
python3 utils/build_debian.py --distro noble --build 1
|
||||
|
||||
# The .deb will be in dist_deb/
|
||||
sudo dpkg -i dist_deb/umbraedit_*_amd64.deb
|
||||
```
|
||||
|
||||
Available distro targets: `bookworm`, `trixie`, `noble`, `resolute`, `stonking`, `wilma`
|
||||
|
||||
### Option 4: Build AppImage
|
||||
|
||||
```bash
|
||||
pip install python-appimage
|
||||
sudo apt-get install appimagetool
|
||||
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
|
||||
python3 utils/build_appimage.py --linux ubuntu --arch amd64 --python 3.12
|
||||
|
||||
chmod +x dist_appimage/umbraedit-2026.11-amd64.AppImage
|
||||
./dist_appimage/umbraedit-2026.11-amd64.AppImage
|
||||
```
|
||||
|
||||
### Option 5: Build All Linux Packages
|
||||
|
||||
```bash
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
|
||||
python3 utils/build_all.py --platform linux --arch amd64
|
||||
```
|
||||
|
||||
## Project Storage
|
||||
|
||||
UmbraEdit projects are stored in plain folders with an `nwProject.nwx` file.
|
||||
The sample project included in the distribution can be used for testing:
|
||||
|
||||
```bash
|
||||
umbraedit # Opens the welcome dialog
|
||||
# Select "Sample Project" from the list, or browse to your .nwx file
|
||||
```
|
||||
|
||||
## Version
|
||||
|
||||
Current development version: **2026.11.0004**
|
||||
|
||||
## License
|
||||
|
||||
GPL-3.0-or-later AND Apache-2.0 AND ISC AND MIT
|
||||
|
||||
UmbraEdit is based on novelWrite 2026.02 by Veronica Berglyd Olsen
|
||||
(novelWriter.io), licenced under the same GPL v3.0 license.
|
||||
1588
CHANGELOG.md
@@ -1,132 +0,0 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||
identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall
|
||||
community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or advances of
|
||||
any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email address,
|
||||
without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at issues (at)
|
||||
novelwriter.io. All complaints will be reviewed and investigated promptly and
|
||||
fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of
|
||||
actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or permanent
|
||||
ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||
community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.1, available at
|
||||
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
||||
[https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
||||
246
CONTRIBUTING.md
@@ -1,131 +1,179 @@
|
||||
# Contributing Guide
|
||||
|
||||
See also our [Code of Conduct](https://github.com/saga-soft/UmbraEdit?tab=coc-ov-file#code-of-conduct)
|
||||
and our [AI Policy](https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md).
|
||||
|
||||
When contributing to this repository, please first discuss the change you wish to make with the
|
||||
owner. Either via the issue tracker or on the discussions page. Especially if it is regarding new
|
||||
features. If you just want to make a minor correction, like fix a typo or similar, feel free to
|
||||
just make a pull request directly.
|
||||
maintainers. For new and complex ideas, it is better to open a discussion before adding a new
|
||||
feature request. If you just want to make a minor correction, like fix a typo or similar, feel free
|
||||
to just make a pull request directly.
|
||||
|
||||
**The following contributions are welcome:**
|
||||
|
||||
* Bugfixes for new or existing bugs. Please also report new bugs in the issue tracker even if you
|
||||
also provide a fix. It makes it easier to keep track of what has been fixed and when.
|
||||
* Translations made via the [Crowdin project page](https://crowdin.com/project/novelwriter).
|
||||
also provide a fix. It makes it easier to keep track of what has been fixed and when and to
|
||||
populate our changelog.
|
||||
* Translations made via the [Crowdin project page](https://crowdin.com/project/umbraedit).
|
||||
* Translations of the documentation. These need to use Sphinx i18n tooling. Please start a
|
||||
discussion before beginning such work as it requires some coordination.
|
||||
* Improvements to the documentation. Particularly if the documentation is unclear. Please don't
|
||||
make any larger changes to the documentation without discussing them with the maintainer first.
|
||||
make any larger changes to the documentation without discussing them with a maintainer first.
|
||||
* Adaptations, installation or packaging features targeting specific operating systems.
|
||||
* Using AI as a coding assistant is fine as long as the code is of good quality and the scope of
|
||||
change is small, but do not generate large chunks of code. Generated code is not only hard to
|
||||
maintain, but also poses licensing issues.
|
||||
|
||||
**Please do not:**
|
||||
|
||||
* Make a pull request that restructures or reformats existing code. If you think some part of the
|
||||
code could be improved, please make an issue thread or start a discussion. The same applies to
|
||||
any text document in the repository.
|
||||
* Make pull requests with AI generated code. This is not a project suitable for vibe coding.
|
||||
Outright slop will result in the account being blocked.
|
||||
|
||||
|
||||
## Running from Source
|
||||
|
||||
This project uses [uv](https://docs.astral.sh/uv/) to maintain dependencies. In order to run
|
||||
UmbraEdit directly from checked out source, simply call from the root folder with:
|
||||
|
||||
```bash
|
||||
uv run umbraedit
|
||||
```
|
||||
|
||||
To set up a development environment with all needed dependencies, run:
|
||||
|
||||
```bash
|
||||
uv sync
|
||||
```
|
||||
|
||||
Many tasks, like building assets from source, are handled by the `pkgutils.py` helper tool.
|
||||
This tool requires no dependencies for most commands, so you can either run it directly with
|
||||
Python, or using `uv run`.
|
||||
|
||||
```bash
|
||||
python pkgutils.py --help
|
||||
```
|
||||
|
||||
The translation files needed at runtime can be built with:
|
||||
|
||||
```bash
|
||||
python pkgutils.py qtlrelease
|
||||
```
|
||||
|
||||
Default icon themes can be updated with:
|
||||
|
||||
```bash
|
||||
python pkgutils.py icons default
|
||||
```
|
||||
|
||||
|
||||
### Running Tests
|
||||
|
||||
* New code must not break any existing tests.
|
||||
* New code must come with tests that cover the code in full. This includes branch coverage. If the
|
||||
code has branches that only runs on some OSes, they only need to be covered when test are run on
|
||||
that OS. The test suite runs on Linux, Windows and MacOS.
|
||||
* It is ok to use `pragma` comments with `no cover` and `no branch` if the code is not expected to
|
||||
touch those areas or branches at runtime.
|
||||
|
||||
A helper script is provided for running tests. It simplifies coverage reporting and a few other
|
||||
things. Run the following to see all details:
|
||||
|
||||
```bash
|
||||
uv run run_tests.py --help
|
||||
```
|
||||
|
||||
For instance, this command will run all tests off screen (`-o`), generate a coverage XML report for
|
||||
your code editor (`-r`), and produce a terminal report with all missing lines and branches (`-l`).
|
||||
|
||||
```bash
|
||||
uv run run_tests.py -orl
|
||||
```
|
||||
|
||||
|
||||
## Picking the Correct Branch for a Pull Request
|
||||
|
||||
The `main` branch is the default branch. For general changes, please make a new branch in your own
|
||||
fork from the current `main` branch. Do not make pull requests from your copy of the `main` branch.
|
||||
Pre-releases are generally made from the `main` branch, and full releases are always made from the
|
||||
`release` branch. If you are submitting a fix to a current release you must do so from the
|
||||
`release` branch. If you make such a fix on the `main` branch, **it cannot be included in a patch
|
||||
release**. This also applies to the documentation for the latest release published on the main
|
||||
website.
|
||||
|
||||
As of April 2024, releases are made from the `release` branch. If you are submitting a fix to a
|
||||
current release you must do so from the `release` branch. If you make such a fix on the `main`
|
||||
branch, **it cannot be included in a patch release**. This also applies to the documentation for
|
||||
the latest release published on the main website.
|
||||
New features are only added in full releases, so a feature pull request must be made to the `main`
|
||||
branch. However, if the `main` branch is very close to a new full release, pull requests may not be
|
||||
merged until the release is completed.
|
||||
|
||||
**Also check the following:**
|
||||
This project uses GitHub milestones to plan releases, and only pull requests included in the
|
||||
current release cycle will be merged to `main`. Milestone tickets are not set in stone and are
|
||||
often moved to the next milestones.
|
||||
|
||||
* Make sure your code passes all tests and conforms to the style guide. You can check that the
|
||||
code generally conforms by running the Python linting tool `flake8` from the root of the project
|
||||
folder, although it doesn't check everything. The same check is also run on pull requests.
|
||||
|
||||
### Pull Request Check List
|
||||
|
||||
Make sure the pull request follows these rules:
|
||||
|
||||
* The `main` branch is the default branch. For general changes, please make a new branch in your
|
||||
own fork from the current `main` branch. Do not make pull requests from your copy of the `main`
|
||||
branch. The same applies to the `release` branch.
|
||||
* Please provide a description of the changes in the pull request under the summary section of the
|
||||
pull request template, and reference any related issues by providing the issue number.
|
||||
* Do not change the version number.
|
||||
* Do not submit files that were not actively changed but have otherwise been modified. This is
|
||||
mostly an issue with translation files. The language tool may update all files in the `i18n`
|
||||
folder.
|
||||
pull request template, and reference any related issues by providing the issue number. Do not
|
||||
post links to issue numbers as that breaks the integration. Stating the issue number on the form
|
||||
`Closes #1234` is enough.
|
||||
* Do not change the version number. This is done during the release process.
|
||||
* Make sure the formatting and linting tools have been run locally before the pull request is made.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
There is a code of conduct. Please follow it in all your interactions with the project.
|
||||
## Code Style
|
||||
|
||||
### Our Pledge
|
||||
This code base uses camelCase convention for function and variable names. This differs from the
|
||||
common convention of snake_case in Python. The reason for this is that UmbraEdit is built on the
|
||||
Qt framework, where everything is camelCase.
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers
|
||||
pledge to making participation in our project and our community a harassment-free experience for
|
||||
everyone, regardless of age, body size, disability, ethnicity, gender identity and expression,
|
||||
level of experience, nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
Pretty much everything else regarding formatting is handled by the linter and formatter. This
|
||||
project uses [ruff](https://docs.astral.sh/ruff/) for linting and formatting and
|
||||
[pyright](https://github.com/microsoft/pyright) for type checking. The settings for these tools
|
||||
are defined in `pyproject.toml`, and any submitted code must pass the following three commands:
|
||||
|
||||
Please see the [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) file for the full text.
|
||||
|
||||
## Code Style Guide
|
||||
|
||||
The source code of novelWriter broadly follows the [PEP8](https://www.python.org/dev/peps/pep-0008)
|
||||
style guide, but with a few exceptions. Some key points are listed below.
|
||||
|
||||
**Line Length:**
|
||||
|
||||
* Source code lines can extend to the upper limit of 99 characters allowed by PEP8. 79 characters
|
||||
is the recommended line length in PEP8, but this is often too restrictive. 99 characters are
|
||||
acceptable when that is more practical. Readability has priority. Generally, if a code statement
|
||||
requires multiple lines, the lines should wrap at 79 characters if possible. If wrapping can be
|
||||
avoided by going to 99, then that is generally preferable.
|
||||
* For text files, the text should be wrapped at 99 character. The exception is markdown image tags
|
||||
and urls which can run past that limit.
|
||||
|
||||
**Variable and Function Names**
|
||||
|
||||
* PEP8 allows for camelCase for consistency with existing code. The Qt library uses camelCase, so
|
||||
the novelWriter source code does too.
|
||||
* The exception to the above is for constants. They should always be in upper snake case, like PEP8
|
||||
states.
|
||||
|
||||
**Spaces, Indentation and Alignment**
|
||||
|
||||
* Only indentation by multiples of 4 spaces is allowed.
|
||||
* No trailing spaces should occur on any line in the source code, including empty lines.
|
||||
* All common line wrapping methods are allowed in the code, but avoid deep indentations.
|
||||
* Aligning operators and attributes in columns with multiple spaces is not allowed by PEP8. The
|
||||
rule is relaxed a bit here. Alignment is allowed when populating large dictionaries or setting
|
||||
many class attributes. It does improve readability in such cases, but should not be overused.
|
||||
|
||||
**Type Annotation**
|
||||
|
||||
* All functions must be properly type annotated, and a return type stated in all cases.
|
||||
* Do not use `List`, `Dict`, `Tuple`, etc, annotations that were deprecated in Python 3.9. You can
|
||||
install the `flake8-pep585` extension to make sure you don't forget. This is also checked by the
|
||||
syntax action run on pull requests.
|
||||
* If annotations require a more recent Python version than the minimum version stated in the
|
||||
project's `pyproject.toml`, hide it under an `if TYPE_CHECKING` condition so that the code can
|
||||
still run on older versions. It's OK to require a more recent version for development.
|
||||
|
||||
### Linting with `flake8`
|
||||
|
||||
A good tool for checking Python code for errors and code style is `flake8`. The documentation is
|
||||
available [here](https://flake8.pycqa.org/en/latest/).
|
||||
|
||||
The `.flake8` file in the root of this project has the following settings for that matches the
|
||||
required code style:
|
||||
|
||||
```conf
|
||||
[flake8]
|
||||
ignore = E133,E221,E226,E228,E241,W503
|
||||
max-line-length = 99
|
||||
exclude = docs/*
|
||||
```
|
||||
|
||||
The command line equivalent, with reporting, is:
|
||||
```bash
|
||||
flake8 . --count --ignore E133,E221,E226,E228,E241,W503 --max-line-length=99 --show-source --statistics
|
||||
uv run ruff check
|
||||
uv run ruff format
|
||||
uv run pyright
|
||||
```
|
||||
|
||||
Passing this check is required before contributions are merged. This is checked automatically when
|
||||
you make a pull request. You can run the `flake8` command locally to check beforehand. The full
|
||||
command will give you a detailed description of the code lines that do not conform to the standard.
|
||||
### Line Length
|
||||
|
||||
Two of the ignored errors are due to the relaxed restriction on column alignment, these are the
|
||||
E221 and E241 error codes.
|
||||
* The line length of the source code is enforced by the formatter, and is set to 120 characters.
|
||||
Docstrings should be wrapped manually at 79 characters for better readability.
|
||||
* For text files, the text should be wrapped 120 character or less. The exception is Markdown image
|
||||
tags and URLs which can run past that limit.
|
||||
|
||||
The code E226 is ignored because it doesn't actually follow the
|
||||
[PEP8 recommendation](https://www.python.org/dev/peps/pep-0008/#other-recommendations)
|
||||
of grouping longer equations by operator precedence like `2*a + 3*b` instead of `a * a + 3 * b`.
|
||||
Generally, don't use spaces around `*`, `/` and `**`, but _do_ use spaces around `+` and `-`.
|
||||
The same applies to the modulo operator `%`, hence E228 is also ignored.
|
||||
|
||||
### Internationalisation
|
||||
|
||||
* All comments and docstrings in the code must be in English.
|
||||
* All text presented to the user must be wrapped in calls to Qt's translation framework, and the
|
||||
spelling of this text **must** be British English. US English spelling **is not allowed** for
|
||||
these strings. A US English translation is provided via the translation framework.
|
||||
* Commit descriptions and pull requests must also be in English.
|
||||
|
||||
|
||||
### License Headers and Credits
|
||||
|
||||
All code should add the license header on the exact format as used in other files. Update the title
|
||||
as needed, and the copyright line. The year should be the year the code module was first created.
|
||||
The default is:
|
||||
|
||||
```
|
||||
Copyright (C) <YEAR> <Original Author Name> and UmbraEdit contributors.
|
||||
```
|
||||
|
||||
For major changes to an existing file, don't touch the year, but you can append your name. By major
|
||||
contributions is meant new code, like added new classes or larger functions, not modifications. Use
|
||||
common sense since "UmbraEdit contributors" includes most modifications and changes.
|
||||
|
||||
```
|
||||
Copyright (C) <YEAR> <Original Author Name>, <Your Name> and UmbraEdit contributors.
|
||||
```
|
||||
|
||||
Make sure the `CREDITS.md` and `credits_en.htm` files are updated too if appropriate.
|
||||
|
||||
95
CREDITS.md
@@ -1,26 +1,36 @@
|
||||
# Credits
|
||||
|
||||
## Main Developer
|
||||
## Main Developer novelWriter
|
||||
|
||||
* Veronica Berglyd Olsen
|
||||
|
||||
## Main Product Manager / Developer
|
||||
|
||||
* B.D. Murphy
|
||||
|
||||
## Contributors
|
||||
|
||||
Larger contributions were made by:
|
||||
|
||||
* Early Concept: Marian Lückhof
|
||||
* Internationalisation: Bruno Meneguello
|
||||
* Setup and Packaging: Rachel Powers
|
||||
* Vim Mode: Alexis Dumelie
|
||||
* UmbraEdit Rebranding and Word DOCX/DOCM Import: B.D. Murphy
|
||||
|
||||
For other contributions, see the project's [Contributors](https://github.com/vkbo/novelWriter/graphs/contributors) page.
|
||||
For other contributions, see the project's [Contributors](https://github.com/saga-soft/UmbraEdit/graphs/contributors) page.
|
||||
|
||||
## Artwork
|
||||
|
||||
The artwork on the Welcome dialog was created by Louis Durrant.
|
||||
The artwork on the Welcome dialog was generated with AI by B.D. Murphy. Reading print options through time.
|
||||
UmbraEdit icon by B.D. Murphy using AI.
|
||||
|
||||
## Translations
|
||||
|
||||
The default language is English (UK) with English (US) as an option. These are the original
|
||||
translators for the languages currently available:
|
||||
|
||||
* **Catalan:** Jaume Planas (jaumeplanas)
|
||||
* **Czech:** Tomáš Zmek (perteus)
|
||||
* **Dutch:** Martijn van der Kleijn (mvdkleijn)
|
||||
* **French:** Jan Lüdke (jyhelle)
|
||||
@@ -36,41 +46,90 @@ translators for the languages currently available:
|
||||
|
||||
Additional larger translation contributions:
|
||||
|
||||
* **Dutch:** Lise Blok (risingphoenix73)
|
||||
* **French:** Albert Aribaud (aaribaud)
|
||||
* **Portuguese:** Oli Maia (olimaia)
|
||||
|
||||
Translations are managed on [Crowdin](https://crowdin.com/project/novelwriter), and more
|
||||
contributions are listed on the project's Members page.
|
||||
Translations of the documentation:
|
||||
|
||||
* **French:** Jean-Michel Heras (Karduin)
|
||||
|
||||
After the fork to UmbraEdit translations of text in the program are done via AI.
|
||||
|
||||
## Libraries
|
||||
|
||||
The following libraries are dependencies of novelWriter:
|
||||
The following libraries are dependencies of UmbraEdit:
|
||||
|
||||
* **Qt6** by Qt Company
|
||||
* **PyQt6** by Riverbank Computing
|
||||
* **Enchant** by Dom Lachowicz
|
||||
* **PyEnchant** by Dimitri Merejkowsky
|
||||
|
||||
## Assets
|
||||
## Icon Themes
|
||||
|
||||
Some of the assets bundled with novelWriter were adapted from the following sources:
|
||||
The default icon themes are subsets of icons from:
|
||||
|
||||
* **Material Symbols** icons by Google Inc (Apache 2.0)
|
||||
* **Remix** icons by RemixIcon (Apache 2.0)
|
||||
* **Font Awesome** icons by Fonticons Inc (CC BY 4.0)
|
||||
* **Tomorrow** syntax themes by Chris Kempson (MIT License)
|
||||
* **Owl** syntax themes by Sarah Drasner (MIT License)
|
||||
* **Solarized** themes by Ethan Schoonover (MIT License)
|
||||
* **Cyberpunk Night** theme by Anders Lemvigh (CC BY-SA 4.0)
|
||||
* **Dracula** theme by Zeno Rocha (MIT License)
|
||||
* **Snazzy Light** theme by Florian Reuschel (MIT License)
|
||||
* **Fluent UI** by Microsoft (MIT License)
|
||||
* **Lucide** by Cole Bemis and Lucide Contributors (ISC License)
|
||||
* **Material Symbols** by Google Inc (Apache 2.0)
|
||||
|
||||
## Colour Themes
|
||||
|
||||
Colour themes included with UmbraEdit were adapted from the following sources:
|
||||
|
||||
* **Aura** themes by Dalton Menezes
|
||||
* **B2T** themes by Bram de Haan
|
||||
* **B4T** themes by Bram de Haan
|
||||
* **Catppuccin** themes by Catppuccin Org
|
||||
* **Dracula** theme by Zeno Rocha
|
||||
* **Espresso** theme by Sainnhe Park and Antoine Cotten
|
||||
* **Everforest** themes by Sainnhe Park
|
||||
* **Horizon** themes by Jonathan Olaleye
|
||||
* **New Moon** theme by Tania Rascia
|
||||
* **Noctis** themes by Liviu Schera and contributors
|
||||
* **Nord** theme by Sven Greb
|
||||
* **Owl** themes by Sarah Drasner
|
||||
* **Primer** themes by GitHub, Inc. and Myian
|
||||
* **Rosé Pine** themes by Rosé Pine
|
||||
* **Snazzy Light** theme by Florian Reuschel
|
||||
* **Solarized** themes by Ethan Schoonover
|
||||
* **Tango** themes by the Tango Desktop Project
|
||||
* **Tomorrow** themes by Chris Kempson
|
||||
|
||||
Other themes were created for UmbraEdit:
|
||||
|
||||
* **Aura Bright** theme by Myian
|
||||
* **Blue Streak** themes by Veronica Berglyd Olsen
|
||||
* **Castle** themes by Myian
|
||||
* **Chalky Soil** theme by Myian
|
||||
* **Chernozem** theme by Myian
|
||||
* **Cyberpunk Night** theme by Anders Lemvigh
|
||||
* **Dark Arts** theme by Myian
|
||||
* **Floral** themes by Myian
|
||||
* **Friendly** themes by Myian
|
||||
* **Full Moon** theme by Myian
|
||||
* **Jewel Case** themes by Myian
|
||||
* **LCARS** theme by Veronica Berglyd Olsen
|
||||
* **Nordlicht** theme by Myian
|
||||
* **Otium** themes by Myian
|
||||
* **Paragon** theme by Myian
|
||||
* **Ruby** themes by Myian
|
||||
* **Selenium** themes by Myian
|
||||
* **Sepia** themes by Myian
|
||||
* **Sultana** themes by Myian
|
||||
* **Today** themes by Veronica Berglyd Olsen
|
||||
* **Vivid** themes by Myian
|
||||
* **Warpgate** theme by Myian
|
||||
* **Waterlily** themes by Myian
|
||||
|
||||
## Fonts
|
||||
|
||||
The font used for the main novelWriter logo, mimetype and text banners is Pridi.
|
||||
The font used for the main UmbraEdit logo, mimetype and text banners is Pridi.
|
||||
|
||||
* **Pridi** by Cadson Demak (Open Font License, Version 1.1)
|
||||
|
||||
--> Caladea <--
|
||||
|
||||
## Special Mentions
|
||||
|
||||
Additional thanks to John Blommers who was an early user and who has provided a lot of very useful
|
||||
|
||||
28
MANIFEST.in
@@ -1,6 +1,28 @@
|
||||
include pkgutils.py
|
||||
include README.md
|
||||
include LICENSE.md
|
||||
include CONTRIBUTING.md
|
||||
include CREDITS.md
|
||||
include CHANGELOG.md
|
||||
recursive-include novelwriter/assets *
|
||||
recursive-include setup *
|
||||
include AI_POLICY.md
|
||||
include pyproject.toml
|
||||
include UmbraEdit.py
|
||||
include pkgutils.py
|
||||
include run_tests.py
|
||||
include build-linux.sh
|
||||
|
||||
include setup/macos/*
|
||||
include setup/windows/*
|
||||
include setup/linux/*
|
||||
include setup/flatpak/*
|
||||
include setup/data/*
|
||||
include setup/appimage_launcher.sh
|
||||
|
||||
include utils/*.py
|
||||
include utils/build_*.py
|
||||
|
||||
recursive-include docs *
|
||||
recursive-include i18n *
|
||||
recursive-exclude *.pyc
|
||||
recursive-exclude __pycache__
|
||||
global-exclude .DS_Store
|
||||
global-exclude .gitkeep
|
||||
|
||||
BIN
NW_Splash.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
95
README.md
@@ -1,82 +1,73 @@
|
||||
# novelWriter
|
||||
# UmbraEdit
|
||||
|
||||
[](https://github.com/vkbo/novelWriter/actions/workflows/test_linux.yml)
|
||||
[](https://github.com/vkbo/novelWriter/actions/workflows/test_win.yml)
|
||||
[](https://github.com/vkbo/novelWriter/actions/workflows/test_mac.yml)
|
||||
[](https://github.com/vkbo/novelWriter/actions/workflows/syntax.yml)
|
||||
[](https://codecov.io/gh/vkbo/novelWriter)
|
||||
<img align="left" style="margin: 0 0 4px 0;" src="https://git.umbratools.com/umbragit/UmbraEdit/raw/main/umbraedit/assets/icons/umbraedit.svg">
|
||||
|
||||
<img align="left" style="margin: 0 0 4px 0;" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/novelwriter_readme.png">
|
||||
|
||||
novelWriter is a plain text editor designed for writing novels assembled from many smaller text
|
||||
UmbraEdit is a plain text editor designed for writing novels assembled from many smaller text
|
||||
documents. It uses a minimal formatting syntax inspired by Markdown, and adds a meta data syntax
|
||||
for comments, synopsis, and cross-referencing. It's designed to be a simple text editor that allows
|
||||
for easy organisation of text and notes, using human readable text files as storage for robustness.
|
||||
The project format is well suited both for version control software and file synchronisation tools.
|
||||
|
||||
The project storage is suitable for version control software, and also well suited for file
|
||||
synchronisation tools. All text is saved as plain text files with a meta data header. The core
|
||||
project structure is stored in a single project XML file. Other meta data is primarily saved as
|
||||
JSON files.
|
||||
UmbraEdit is based on novelWrite 2026.02 by Veronica Berglyd Olsen (novelWriter.io) and is
|
||||
licensed under the same GPL v3.0 license.
|
||||
|
||||
For more details, and how to install and use novelWriter, please see the main website and
|
||||
documentation.
|
||||
B.D. Murphy is modifying the original using AI to make it part of his Umbratools publishing system.
|
||||
|
||||
The ideas:
|
||||
|
||||
1) Write the novel. Make it simple while writing. Formatting is later.
|
||||
2) Have the entire project together. Not the novel text here and metadata you need somewhere else. All together. 2.a) ePub, paperback (print pdf), audio all start with the same story text, but each needs something different. Put everything into one project ISBN, book blurb, search terms, genere/categories BISAC codes, cover, etc
|
||||
3) With everything together publishing is simpler
|
||||
4) The goal is to write (human written) a novel, then use AI to help with everything else. At the end of the process there will be ePub, Paperback/Hard cover, audio versions in 10 languages.
|
||||
|
||||
For more details, and how to install and use UmbraEdit, please see the main website and documentation.
|
||||
|
||||
This project is a fork of novelWrite. Taking the great start and extending it. I use AI to help.
|
||||
|
||||
**Project Links**
|
||||
|
||||
* Website: [novelwriter.io](https://novelwriter.io)
|
||||
* Documentation: [docs.novelwriter.io](https://docs.novelwriter.io)
|
||||
* Internationalisation: [crowdin.com/project/novelwriter](https://crowdin.com/project/novelwriter)
|
||||
* PyPi Project: [pypi.org/project/novelWriter](https://pypi.org/project/novelWriter)
|
||||
* Social Media: [fosstodon.org/@novelwriter](https://fosstodon.org/@novelwriter)
|
||||
* Website: [UmbraEdit](https://umbratools.com/umbraedit)
|
||||
* Documentation: [UmbraEdit Docs](https://umbratools.com/umbraedit/docs)
|
||||
|
||||
## Sponsors
|
||||
|
||||
<table style="border: none;">
|
||||
<tr>
|
||||
<td><img align="left" style="height: 25px;" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/signpath_logo.png"></td>
|
||||
<td>Free code signing on Windows provided by <a href="https://about.signpath.io/">SignPath.io</a>, certificate by <a href="https://signpath.org/">SignPath Foundation</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
This project is a fork of novelWrite. Taking the great start and extending it. I use AI to help._
|
||||
|
||||
## Implementation
|
||||
|
||||
novelWriter is written with Python and Qt6 with PyQt6 Python binding. It is released on Linux,
|
||||
Windows and MacOS. It can in principle run on any Operating System that also supports Qt, PyQt and
|
||||
Python.
|
||||
UmbraEdit is written in Python and uses Qt6 with PyQt6 Python binding as the UI framework. It
|
||||
runs on Linux, Windows and MacOS. It can in principle run on any Operating System that also
|
||||
supports Qt, PyQt and Python.
|
||||
|
||||
<p align="center">
|
||||
<img width="80%" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/screenshot.png">
|
||||
<img width="80%" src="https://raw.githubusercontent.com/saga-soft/UmbraEdit/main/setup/screenshot.png">
|
||||
</p>
|
||||
|
||||
|
||||
## Project Contributions
|
||||
|
||||
Please don't make feature pull requests without first having discussed them with the maintainer.
|
||||
You can make a feature request in the [issues tracker](https://github.com/vkbo/novelWriter/issues),
|
||||
or if the idea isn't fully formed, start a [discussion](https://github.com/vkbo/novelWriter/discussions).
|
||||
Please also don't make pull requests to reformat or rewrite existing code unless there is a very good reason for doing so.
|
||||
You can make a feature request in the [issues tracker](https://github.com/saga-soft/UmbraEdit/issues),
|
||||
or if the idea isn't fully formed, start a [discussion](https://github.com/saga-soft/UmbraEdit/discussions).
|
||||
Please also don't make pull requests to reformat or rewrite existing code unless there is a very
|
||||
good reason for doing so. Please do not submit AI generated content.
|
||||
See our [AI Policy](https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md) for details.
|
||||
|
||||
Fixes and patches are welcome. Contributions related to packaging and installing novelWriter will
|
||||
also be appreciated, but please make an issue or a discussion topic first. Before contributing any
|
||||
code, please also read the full
|
||||
[Contributing Guide](https://github.com/vkbo/novelWriter/blob/main/CONTRIBUTING.md).
|
||||
Fixes and patches are welcome. Contributions related to packaging and installing UmbraEdit will
|
||||
also be appreciated. Before contributing any code, please read the full
|
||||
[Contributing Guide](https://github.com/saga-soft/UmbraEdit/blob/main/CONTRIBUTING.md).
|
||||
|
||||
Project credits are available in [CREDITS.md](https://github.com/vkbo/novelWriter/blob/main/CREDITS.md).
|
||||
## Original Credits
|
||||
|
||||
**Note:** New features and pre-releases are made on the `main` branch. Full releases are made from
|
||||
the `release` branch. So if you're submitting a fix to a current release, **including changes to
|
||||
documentation**, they must be made to the `release` branch.
|
||||
Project credits are available in [CREDITS.md](https://github.com/saga-soft/novelwriter/blob/main/CREDITS.md).
|
||||
|
||||
### Translations
|
||||
**Note:** New features and most pre-releases are made on the `main` branch. Full releases are made
|
||||
from the `release` branch. So if you're submitting a fix to a current release, **including changes
|
||||
to documentation**, they must be made to the `release` branch.
|
||||
|
||||
New translations are always welcome. This project uses Crowdin to maintain translations, and you
|
||||
can contribute translations at the [Crowdin project page](https://crowdin.com/project/novelwriter).
|
||||
If you have any questions, feel free to post them to the
|
||||
[Translations of novelWriter](https://github.com/vkbo/novelWriter/issues/93) issue thread.
|
||||
|
||||
## Licence
|
||||
|
||||
This is Open Source software, and novelWriter is licenced under GPLv3. See the
|
||||
This is Open Source software, and UmbraEdit is licensed under GPLv3. See the
|
||||
[GNU General Public License website](https://www.gnu.org/licenses/gpl-3.0.en.html) for more
|
||||
details, or consult the [License](https://github.com/vkbo/novelWriter/blob/main/LICENSE.md)
|
||||
document. Bundled assets and their licences are listed in the
|
||||
[Credits](https://github.com/vkbo/novelWriter/blob/main/CREDITS.md) document.
|
||||
details, or consult the [License](https://github.com/saga-soft/UmbraEdit/blob/main/LICENSE.md)
|
||||
document. Bundled assets and their licenses are listed in the
|
||||
[Credits](https://github.com/saga-soft/UmbraEdit/blob/main/CREDITS.md) document.
|
||||
|
||||
157
RELEASE.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# UmbraEdit - Release Process
|
||||
|
||||
This document describes the release process for UmbraEdit, including versioning,
|
||||
platform support, build workflows, and publishing.
|
||||
|
||||
## Versioning
|
||||
|
||||
UmbraEdit uses a **YYYY/MM.P####** versioning scheme:
|
||||
|
||||
| Component | Meaning |
|
||||
|-----------|---------|
|
||||
| `YYYY` | Release year (e.g., 2026) |
|
||||
| `MM` | Release month (e.g., 11) |
|
||||
| `####` | Patch/build sequence (e.g., 0001) |
|
||||
|
||||
Examples:
|
||||
- `2026.11` - Major monthly release (November 2026)
|
||||
- `2026.11.0001` - First development build of November 2026
|
||||
- `2026.11.0002` - Second development build (e.g., new feature)
|
||||
|
||||
Git tags follow the format: `v2026.11`, `v2026.11.0001`, etc.
|
||||
|
||||
## Supported Platforms
|
||||
|
||||
| Platform | Architecture | Package Format | Build Host |
|
||||
|----------|-------------|----------------|------------|
|
||||
| Linux | amd64 | .deb, .rpm, AppImage | Linux |
|
||||
| Linux | arm64 | .deb, .rpm, AppImage | Linux (ARM64) |
|
||||
| macOS | arm64 | .dmg, .app | macOS (Apple Silicon) |
|
||||
| macOS | amd64 | .dmg, .app | macOS (Intel) |
|
||||
| Windows | amd64 | .msi, .exe | Windows |
|
||||
| Windows | arm64 | .msi, .exe | Windows (ARM64) |
|
||||
| iOS/iPadOS | arm64 | **NOT SUPPORTED** | N/A |
|
||||
|
||||
### iOS/iPadOS Support
|
||||
|
||||
UmbraEdit is **not available for iOS/iPadOS**. PyQt6 does not support iOS,
|
||||
and UmbraEdit requires a full desktop Qt environment with keyboard, mouse,
|
||||
and file system access. Porting to iOS would require a complete rewrite
|
||||
using SwiftUI or a different cross-platform framework.
|
||||
|
||||
Users on iPad should use UmbraEdit via a VNC/remote desktop connection to a
|
||||
desktop machine running UmbraEdit, or use a compatible web-based alternative.
|
||||
|
||||
## Release Workflow
|
||||
|
||||
### 1. Prepare Release
|
||||
|
||||
```bash
|
||||
# Ensure working tree is clean
|
||||
git status
|
||||
|
||||
# Update version in umbraedit/__init__.py
|
||||
# __version__ = "2026.12.0001"
|
||||
|
||||
# Update CHANGELOG.md with new release entry
|
||||
|
||||
# Commit and tag
|
||||
git add -A
|
||||
git commit -m "release: prepare v2026.12"
|
||||
git tag -a v2026.12 -m "Release v2026.12"
|
||||
git push origin main --tags
|
||||
```
|
||||
|
||||
### 2. Build All Platforms
|
||||
|
||||
On each target platform, run:
|
||||
|
||||
```bash
|
||||
# Clone the tagged release
|
||||
git clone https://git.umbratools.com/umbragit/UmbraEdit.git
|
||||
cd UmbraEdit
|
||||
git checkout v2026.12
|
||||
|
||||
# Build all packages for this platform
|
||||
python utils/build_all.py --platform <platform> --arch <arch>
|
||||
```
|
||||
|
||||
Available platforms: `linux`, `macos`, `windows`
|
||||
Available architectures: `amd64`, `arm64`
|
||||
|
||||
### 3. Publish
|
||||
|
||||
Upload all build artifacts to the release server:
|
||||
|
||||
```bash
|
||||
# Example: upload to Gitea releases
|
||||
# Files to upload:
|
||||
# Linux: dist_deb/umbraedit_*.deb, dist_appimage/*.AppImage
|
||||
# macOS: dist_macos/umbraedit-*.dmg
|
||||
# Windows: dist_win/umbraedit-*.exe, dist_win/umbraedit-*.msi
|
||||
# Source: dist/umbraedit-*.tar.gz, dist/umbraedit-*.whl
|
||||
```
|
||||
|
||||
Create a release on Gitea/GitHub and attach all artifacts.
|
||||
|
||||
## Build Artifacts
|
||||
|
||||
Each platform produces the following artifacts:
|
||||
|
||||
### Linux (.deb + AppImage)
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit_<version>_amd64.deb` | `dist_deb/` | Debian package |
|
||||
| `umbraedit-<version>-amd64.AppImage` | `dist_appimage/` | Portable AppImage |
|
||||
|
||||
### macOS (.dmg + .app)
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit-<version>-arm64.dmg` | `dist_macos/` | macOS disk image |
|
||||
| `UmbraEdit.app` | inside .dmg | macOS application bundle |
|
||||
|
||||
### Windows (.exe + .msi)
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit-<version>-amd64.exe` | `dist_win/` | Windows installer |
|
||||
| `umbraedit-<version>-amd64.msi` | `dist_win/` | Windows MSI installer |
|
||||
|
||||
### Source
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit-<version>.tar.gz` | `dist/` | Source tarball |
|
||||
| `umbraedit-<version>-py3-none-any.whl` | `dist/` | Pure Python wheel |
|
||||
|
||||
## Build Scripts
|
||||
|
||||
| Script | Purpose |
|
||||
|--------|---------|
|
||||
| `utils/build_all.py` | Unified build orchestrator for all platforms |
|
||||
| `utils/build_debian.py` | Debian/Ubuntu .deb package builder |
|
||||
| `utils/build_appimage.py` | AppImage builder |
|
||||
| `utils/build_windows.py` | Windows installer builder |
|
||||
| `setup/macos/build.sh` | macOS .dmg builder |
|
||||
|
||||
## Release Checklist
|
||||
|
||||
- [ ] Update version in `umbraedit/__init__.py`
|
||||
- [ ] Update `CHANGELOG.md` with release notes
|
||||
- [ ] Tag release: `git tag -a vYYYY.MM -m "Release vYYYY.MM"`
|
||||
- [ ] Push tag: `git push origin vYYYY.MM`
|
||||
- [ ] Build packages for all platforms
|
||||
- [ ] Test installation on each platform
|
||||
- [ ] Create release on Gitea/GitHub
|
||||
- [ ] Attach all build artifacts
|
||||
- [ ] Publish release notes
|
||||
- [ ] Announce release
|
||||
|
||||
## Credits
|
||||
|
||||
UmbraEdit is based on novelWrite 2026.02 by Veronica Berglyd Olsen
|
||||
(novelWriter.io), licenced under the same GPL v3.0 license.
|
||||
|
||||
Current development lead: B.D. Murphy
|
||||
213
UMBRAEDIT.md
Normal file
@@ -0,0 +1,213 @@
|
||||
# UmbraEdit — Project Scan & Structure
|
||||
|
||||
Copyright (C) 2026 B.D. Murphy and novelWriter contributors.
|
||||
Documentation for the UmbraEdit project (renamed from novelWriter).
|
||||
|
||||
This document is a structural scan of the **UmbraEdit** codebase. It is intended for developers who want to modify or extend the project.
|
||||
|
||||
> UmbraEdit was created by cloning **novelWriter** (vkbo/saga-soft) into this folder and renaming the project to `UmbraEdit`. The full upstream git history is preserved (see §6).
|
||||
|
||||
---
|
||||
|
||||
## 1. Overview
|
||||
|
||||
| Property | Value |
|
||||
|---|---|
|
||||
| **Project name** | UmbraEdit |
|
||||
| **Origin** | Renamed/rebased from [novelWriter](https://github.com/vkbo/novelWriter) (vkbo / saga-soft) |
|
||||
| **Inherited version** | 26.3b1 (novelWriter v26 series; see `umbraedit/__init__.py`) |
|
||||
| **Base version** | Based on novelWrite 2026.02 by Veronica Berglyd Olsen (novelWriter.io), GPL v3.0 |
|
||||
| **Language** | Python 3.11+ |
|
||||
| **UI framework** | Qt6 via PyQt6 |
|
||||
| **Platforms** | Linux, Windows, macOS |
|
||||
| **Storage model** | Plain-text project files (one document per scene + a project XML), well suited to Git and file-sync tools |
|
||||
| **Formatting** | Minimal Markdown-like syntax plus a metadata syntax for comments, synopsis, and cross-references |
|
||||
| **License** | `GPL-3.0-or-later AND Apache-2.0 AND ISC AND MIT` (see `pyproject.toml`, `LICENSE.md`) |
|
||||
| **Entry point** | `UmbraEdit.py` → `umbraedit:main()` |
|
||||
|
||||
**Core idea:** a novel is built from many small plain-text documents organised in a binder/tree, with a composing editor and a compile/export step (DOCX, EPUB, HTML, ODT, Markdown, raw text, QDoc).
|
||||
|
||||
---
|
||||
|
||||
## 2. Repository layout (top level)
|
||||
|
||||
```
|
||||
UmbraEdit/ <- this folder (was novelWriter2)
|
||||
├── UmbraEdit.py <- application start script (imports umbraedit, calls main)
|
||||
├── pyproject.toml <- project metadata, dependencies, ruff/pytest config
|
||||
├── uv.lock <- dependency lockfile (regenerate if deps change)
|
||||
├── run_tests.py <- pytest runner wrapper
|
||||
├── pkgutils.py <- packaging / i18n utility script
|
||||
├── README.md <- user-facing project page (mechanically renamed to UmbraEdit)
|
||||
├── LICENSE.md
|
||||
├── CHANGELOG.md <- historical novelWriter changelog (retains original attribution)
|
||||
├── CONTRIBUTING.md
|
||||
├── CREDITS.md
|
||||
├── AI_POLICY.md
|
||||
├── .gitignore
|
||||
├── .env.example
|
||||
├── docs/ <- Sphinx documentation source
|
||||
├── i18n/ <- Qt translation sources (ue_XX.ts) — compiled .qm are gitignored
|
||||
├── sample/ <- sample novel project (.nwx + content)
|
||||
├── setup/ <- packaging: deb, windows, flatpak, macOS, appimage, icons
|
||||
├── tests/ <- pytest suite (core, editor, gui, manuscript, models, story, text, tools, …)
|
||||
├── umbraedit/ <- main Python package (was novelwriter/)
|
||||
└── utils/ <- build scripts (appimage, debian, flatpak, pypi, windows, assets, docs)
|
||||
```
|
||||
|
||||
**Note:** `AGENTS.md` is gitignored by this project (`.gitignore` line 68). This scan lives in `UMBRAEDIT.md` instead.
|
||||
|
||||
---
|
||||
|
||||
## 3. Package layout — `umbraedit/`
|
||||
|
||||
| Module / package | Responsibility |
|
||||
|---|---|
|
||||
| `__init__.py` | Application bootstrap, `__version__`, `main()` entry |
|
||||
| `config.py` | Runtime configuration, paths, locale/i18n loading (`_ueLangPath`) |
|
||||
| `constants.py` | Application-wide constants |
|
||||
| `shared.py` | Shared data / singleton state |
|
||||
| `enum.py`, `types.py`, `error.py` | Enums, shared types, error handling |
|
||||
| `splash.py` | Splash screen |
|
||||
| `guimain.py` | Main window / GUI assembly |
|
||||
| `core/` | Project model: project, projectdata, projectxml, tree, item, document, storage, sessions, index, indexdata, projectsearch, spellcheck, status, options, coretools |
|
||||
| `editor/` | The composing editor: editor, editordocument, highlighter, history, hovercard, header/footer, toolbars, viewer, search, completion, vim mode |
|
||||
| `gui/` | Widgets/views: main menu, novel tree, project tree, sidebar, status bar, item details, search, theme |
|
||||
| `manuscript/` | Compile/export: manuscript build, document build, settings |
|
||||
| `models/` | Qt item models: item, novel, outline, search |
|
||||
| `story/` | Outline/story view, story settings |
|
||||
| `text/` | Text processing: counting, patterns, formats, autoreplace |
|
||||
| `tools/` | Dictionaries, lorem ipsum, welcome, writing stats |
|
||||
| `formats/` | Import/export filters: to/from DOCX, EPUB, HTML, ODT, Markdown, QDoc, raw text, TOML, QDoc |
|
||||
| `dialogs/` | Preferences, project settings, about, split/merge, labels, links, quotes, word list |
|
||||
| `extensions/` | Custom widgets: tab widget, switch, progress bars, event filters, etc. |
|
||||
| `assets/` | Icons, images, themes (`.toml`), i18n project JSON, manual, credits |
|
||||
|
||||
---
|
||||
|
||||
## 4. How to build and run
|
||||
|
||||
### Requirements
|
||||
- Python ≥ 3.11 (system Python 3.9.6 is **too old** — `match`/`case` syntax requires 3.10+)
|
||||
- `pyqt6>=6.4`, `pyenchant>=3.3.0`
|
||||
- macOS only: `pyobjc-framework-Cocoa`
|
||||
|
||||
### Run the application
|
||||
```bash
|
||||
cd /Volumes/1TB_APL_Storage/UmbraEdit
|
||||
python3 UmbraEdit.py
|
||||
# or, with the package on PYTHONPATH:
|
||||
python3 -c "import umbraedit; umbraedit.main()"
|
||||
```
|
||||
|
||||
### Syntax check (Python 3.11+)
|
||||
```bash
|
||||
/Volumes/Dock/worstauthor/.local/bin/python3.11 -m py_compile umbraedit/*.py umbraedit/**/*.py
|
||||
```
|
||||
|
||||
### Tests
|
||||
```bash
|
||||
python3 run_tests.py # full pytest suite
|
||||
python3 run_tests.py -m core # run a test marker group
|
||||
```
|
||||
Test configuration lives in `pyproject.toml` (`[tool.pytest.ini_options]`, testpaths=`tests`).
|
||||
|
||||
### Linting
|
||||
The project uses **ruff** (see `[tool.ruff]` in `pyproject.toml`) and **pyright**.
|
||||
|
||||
### Packaging
|
||||
See `setup/` and `utils/`:
|
||||
- `utils/build_debian.py`, `build_windows.py`, `build_flatpak.py`, `build_appimage.py`, `build_pypi.py`
|
||||
- `setup/windows/`, `setup/macos/`, `setup/debian/`, `setup/flatpak/`
|
||||
|
||||
---
|
||||
|
||||
## 5. i18n (translations)
|
||||
|
||||
- Translation sources: `i18n/ue_XX.ts` (renamed from `nw_XX.ts`)
|
||||
- Compiled `.qm` files are **gitignored** (`i18n/*.qm`, `/umbraedit/assets/i18n/*.qm`) and generated at build time
|
||||
- `umbraedit/config.py` loads `ue_<locale>.qm` from `_ueLangPath` (`umbraedit/assets/i18n`)
|
||||
- Add a new language: create `i18n/ue_XX.ts` and regenerate the `.qm` with Qt Linguist / `lrelease`
|
||||
|
||||
---
|
||||
|
||||
## 6. Git system & Gitea publishing
|
||||
|
||||
### Current remote state
|
||||
```
|
||||
upstream https://github.com/vkbo/novelWriter.git (original novelWriter, preserved as reference)
|
||||
```
|
||||
There is **no `origin`** yet.
|
||||
|
||||
### What was done in this session
|
||||
1. Cloned `https://github.com/vkbo/novelWriter.git` into this folder (`novelWriter2`).
|
||||
2. Renamed the project `novelWriter` → `UmbraEdit` (package `novelwriter` → `umbraedit`, entry `novelWriter.py` → `UmbraEdit.py`, i18n `nw_*.ts` → `ue_*.ts`, packaging files, all imports/docs/tests/workflows).
|
||||
3. Committed the rename:
|
||||
- `70d74e675 chore: rename project from novelWriter to UmbraEdit` (474 files, all renames detected by git)
|
||||
4. Archived the previous UmbraEdit (Rust/Tauri, pre-implementation spec project) preserving its git history:
|
||||
- `/Volumes/1TB_APL_Storage/Archive/UmbraEdit_archived_20261105/`
|
||||
5. Working tree is clean; branch is `main`.
|
||||
|
||||
### To publish as UmbraEdit on your Gitea server
|
||||
A Gitea credential is **not** configured in this environment, and the Gitea server URL is not known yet, so `origin` was intentionally left unset. When ready:
|
||||
|
||||
```bash
|
||||
# 1. Create the "UmbraEdit" repository on your Gitea server first
|
||||
# 2. Add it as origin
|
||||
git remote add origin <GITEA_URL>/UmbraEdit.git
|
||||
|
||||
# 3. Push
|
||||
git push -u origin main
|
||||
|
||||
# 4. (Optional) keep pulling upstream novelWriter improvements
|
||||
git fetch upstream
|
||||
git merge upstream/main # or cherry-pick as desired
|
||||
```
|
||||
|
||||
### Project URLs to update
|
||||
`README.md` and `pyproject.toml` currently carry mechanically-renamed GitHub URLs
|
||||
(`https://github.com/saga-soft/UmbraEdit`, etc.). Before publishing, replace these
|
||||
with your Gitee instance URLs, e.g.:
|
||||
- Repository → `https://<gitea>/<owner>/UmbraEdit`
|
||||
- Issues → `https://<gitea>/<owner>/UmbraEdit/issues`
|
||||
- Homepage / Documentation → your UmbraEdit docs site
|
||||
|
||||
---
|
||||
|
||||
## 7. Extension guidance (adding features)
|
||||
|
||||
The codebase is organised by concern, which makes it straightforward to extend:
|
||||
|
||||
| To add… | Touch… |
|
||||
|---|---|
|
||||
| New editor feature / syntax highlighting | `umbraedit/editor/` (editor, highlighter, history) |
|
||||
| New project-tree / binder operation | `umbraedit/core/` (tree, project, projectdata, projectxml) |
|
||||
| New import/export format | `umbraedit/formats/` (add a `toXxx` / `fromXxx` module) |
|
||||
| New settings / preferences UI | `umbraedit/dialogs/preferences.py`, `umbraedit/config.py` |
|
||||
| New view / dock panel | `umbraedit/gui/`, `umbraedit/guimain.py` |
|
||||
| New data model / Qt model | `umbraedit/models/`, `umbraedit/core/item.py` |
|
||||
| New compile/export target | `umbraedit/manuscript/` + a format module |
|
||||
| New theme | `umbraedit/assets/themes/*.toml` |
|
||||
| New translation | `i18n/ue_XX.ts` (§5) |
|
||||
|
||||
### Recommended workflow for new features
|
||||
1. Create a feature branch off `main`: `git checkout -b feature/<name>`
|
||||
2. Implement + add tests under `tests/` mirroring the source layout
|
||||
3. Run `python3 run_tests.py` and `ruff` lint
|
||||
4. Commit on the feature branch, then merge to `main`
|
||||
5. Never let a week of work sit uncommitted (per project convention)
|
||||
|
||||
---
|
||||
|
||||
## 8. Files intentionally left as-is
|
||||
|
||||
| File | Reason |
|
||||
|---|---|
|
||||
| `uv.lock` | Dependency lockfile; still references `novelwriter` — regenerate (`uv lock`) if dependencies change |
|
||||
| `setup/windows/novelWriter.exe` | Binary executable |
|
||||
| `umbraedit/assets/images/welcome.webp` | Binary image (may still render "novelWriter" text) |
|
||||
| `CHANGELOG.md`, `CREDITS.md` | Historical records retaining original novelWriter attribution |
|
||||
|
||||
---
|
||||
|
||||
*Generated as part of the UmbraEdit project setup. Scan date: 2026-11-05.*
|
||||
245
UMBRAEDIT_UPDATE_PLAN.md
Normal file
@@ -0,0 +1,245 @@
|
||||
# UmbraEdit — Toolchain & Dependency Update Plan
|
||||
|
||||
Copyright (C) 2026 B.D. Murphy and novelWriter contributors.
|
||||
Plan for upgrading UmbraEdit (Python/PyQt6) toolchain and dependencies.
|
||||
|
||||
**Goal:** Bring UmbraEdit (Python/PyQt6) up to the latest stable versions of its tools and dependencies, starting from the current baseline.
|
||||
|
||||
**Baseline (as of 2026-11-05):**
|
||||
- System Python: 3.9.6 (`/usr/bin/python3`) — **below** the project's `requires-python >=3.11`
|
||||
- Available runtimes: Python 3.11.15, 3.12.13 (via `uv` in `~/.local/bin`)
|
||||
- `uv`: 0.11.7 (2026-04-15) — outdated
|
||||
- PyQt6: not yet installed in the 3.11 environment
|
||||
- `pyproject.toml` deps: `pyqt6>=6.4`, `pyenchant>=3.3.0`, `pyobjc-framework-Cocoa` (darwin)
|
||||
- Lockfile: `uv.lock` (references `novelwriter` package name — will need regen)
|
||||
|
||||
---
|
||||
|
||||
## 1. Target Versions
|
||||
|
||||
| Tool | Current | Target | Source |
|
||||
|---|---|---|---|
|
||||
| Python runtime | 3.9.6 (system) | 3.12.x (latest 3.12) or 3.13.x | `uv` / python.org |
|
||||
| PyQt6 | not installed | latest 6.x | PyPI |
|
||||
| pyenchant | >=3.3.0 | latest 3.x | PyPI |
|
||||
| pyobjc-framework-Cocoa | pinned by pyproject | latest (macOS only) | PyPI |
|
||||
| uv | 0.11.7 | latest | github.com/astral-sh/uv |
|
||||
| ruff | (in `uv.lock`) | latest | PyPI |
|
||||
| pyright | (in `uv.lock`) | latest | npm/PyPI |
|
||||
| pytest | (in `uv.lock`) | latest 8.x | PyPI |
|
||||
| pytest-qt | (in `uv.lock`) | latest | PyPI |
|
||||
| coverage | (in `uv.lock`) | latest | PyPI |
|
||||
| Sphinx + theme | (in `uv.lock`) | latest | PyPI |
|
||||
| setuptools | 82.0.1 | latest | PyPI |
|
||||
| pip | 26.0.1 | latest | ensure via `uv` |
|
||||
|
||||
> Prefer Python **3.12** as the primary target (mature, PyQt6 wheels widely available). Keep **3.11** as a secondary CI matrix entry since `requires-python` is `>=3.11`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Phased Execution
|
||||
|
||||
### Phase 0 — Preparation & Safety
|
||||
1. Ensure working tree is clean and all changes committed on `main` (already done).
|
||||
2. Tag the current state as a rollback point:
|
||||
```bash
|
||||
git tag umbraedit/pre-toolchain-update
|
||||
git push origin umbraedit/pre-toolchain-update
|
||||
```
|
||||
3. Record current working commands (`python3 UmbraEdit.py`, test runner) so you can compare before/after.
|
||||
4. Back up `uv.lock` and `pyproject.toml`.
|
||||
|
||||
### Phase 1 — Upgrade `uv` and Python runtimes
|
||||
1. Upgrade `uv` itself:
|
||||
```bash
|
||||
uv self upgrade
|
||||
# or: curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
```
|
||||
2. Install the target Python(s) via `uv` (so they are isolated and reproducible):
|
||||
```bash
|
||||
uv python install 3.12
|
||||
uv python install 3.11 # keep for CI matrix
|
||||
uv python list
|
||||
uv python pin 3.12 # sets default for this project (writes .python-version)
|
||||
```
|
||||
3. Verify:
|
||||
```bash
|
||||
uv run python --version # should report 3.12.x
|
||||
```
|
||||
|
||||
### Phase 2 — Upgrade core runtime dependencies
|
||||
Create a fresh virtual environment with the target Python and install the project's runtime deps at their latest compatible versions:
|
||||
|
||||
```bash
|
||||
cd /Volumes/1TB_APL_Storage/UmbraEdit
|
||||
uv venv --python 3.12
|
||||
uv pip install "pyqt6>=6.4" "pyenchant>=3.3.0"
|
||||
# macOS only:
|
||||
uv pip install "pyobjc-framework-Cocoa"
|
||||
```
|
||||
|
||||
Then:
|
||||
1. Run the app to confirm it starts:
|
||||
```bash
|
||||
uv run python UmbraEdit.py
|
||||
# or, after venv activation:
|
||||
python UmbraEdit.py
|
||||
```
|
||||
2. If `pyqt6` wheels fail on the target Python, fall back to 3.11 or file an issue.
|
||||
|
||||
### Phase 3 — Upgrade build / lint / test tooling
|
||||
Update the dependency groups in `pyproject.toml` (`build`, `docs`, `test`, `lint`) to latest, then sync:
|
||||
|
||||
```toml
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
{ include-group = "build" },
|
||||
{ include-group = "docs" },
|
||||
{ include-group = "test" },
|
||||
{ include-group = "lint" },
|
||||
]
|
||||
build = ["pyyaml", "tzdata; sys_platform == 'win32'"]
|
||||
docs = [
|
||||
"docutils>=0.17.1",
|
||||
"pygments>=2.7",
|
||||
"sphinx-book-theme",
|
||||
"sphinx-copybutton",
|
||||
"sphinx-design",
|
||||
"sphinx-favicon",
|
||||
"sphinx-intl",
|
||||
"sphinx>=5.0",
|
||||
]
|
||||
test = [
|
||||
"coverage>=7.16.0",
|
||||
"pytest-qt",
|
||||
"pytest-timeout",
|
||||
"pytest>=6.0.0",
|
||||
"tzdata; sys_platform == 'win32'",
|
||||
]
|
||||
lint = ["pyright", "ruff"]
|
||||
```
|
||||
|
||||
Suggested edits:
|
||||
- Bump `pytest>=6.0.0` → `pytest>=8.0` (check PyPI for latest 8.x)
|
||||
- Bump `coverage>=7.16.0` → latest
|
||||
- Bump `sphinx>=5.0` → latest 7.x/8.x
|
||||
- Keep `ruff` and `pyright` unpinned or with generous lower bounds so `uv lock` resolves latest
|
||||
|
||||
Then sync:
|
||||
```bash
|
||||
uv lock --upgrade # resolve all groups to latest
|
||||
uv sync --all-groups # create .venv with everything
|
||||
```
|
||||
|
||||
### Phase 4 — Regenerate `uv.lock`
|
||||
`uv.lock` currently references the old `novelwriter` package name and is stale.
|
||||
```bash
|
||||
uv lock --upgrade
|
||||
git diff uv.lock # review before committing
|
||||
```
|
||||
Commit the regenerated lockfile with the toolchain update.
|
||||
|
||||
### Phase 5 — Update `requires-python` and classifiers (optional)
|
||||
If you want to drop 3.11 and standardize on 3.12+:
|
||||
```toml
|
||||
requires-python = ">=3.12"
|
||||
```
|
||||
And update classifiers accordingly. Otherwise keep `>=3.11` and test both 3.11 and 3.12 in CI.
|
||||
|
||||
### Phase 6 — Update Gitea CI workflows
|
||||
The `.github/workflows/*.yml` files reference Python setup steps. Update them to:
|
||||
- Use `actions/setup-python` with `python-version: ["3.11", "3.12"]` (or your Gitea Actions equivalent)
|
||||
- Install via `uv sync --all-groups` instead of `pip install -e .`
|
||||
- Run `uv run ruff check`, `uv run pyright`, `uv run pytest`
|
||||
|
||||
If your Gitea instance uses Gitea Actions, mirror the same matrix. If not, update the workflows to call `uv` explicitly.
|
||||
|
||||
### Phase 7 — Packaging scripts review
|
||||
The `utils/` build scripts (`build_appimage.py`, `build_debian.py`, `build_flatpak.py`, `build_pypi.py`, `build_windows.py`) and `setup/` packaging may pin Python/Qt versions. Check each for:
|
||||
- Hardcoded `python3` → should target the new runtime
|
||||
- `qt_version = "6.11"` in `[tool.novelwriter.build] flatpak` → verify against latest Qt6
|
||||
- `pyqt6>=6.4` lower bound → keep or raise
|
||||
|
||||
### Phase 8 — Validation
|
||||
1. **Syntax/compile:** `uv run python -m py_compile umbraedit/ tests/ utils/`
|
||||
2. **Import smoke:** `uv run python -c "import umbraedit; umbraedit.main(['--help'])"`
|
||||
3. **Lint:** `uv run ruff check .` and `uv run pyright`
|
||||
4. **Tests:** `uv run pytest` (or `uv run python run_tests.py`)
|
||||
5. **App launch:** `uv run python UmbraEdit.py` — confirm main window opens
|
||||
6. **Export formats:** exercise DOCX/EPUB/HTML/ODT export paths if sample data exists
|
||||
|
||||
### Phase 9 — Commit & publish
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "chore: upgrade toolchain to Python 3.12 and latest deps
|
||||
|
||||
- Upgrade uv and pin Python 3.12 via .python-version
|
||||
- Refresh pyproject.toml dependency groups to latest compatible versions
|
||||
- Regenerate uv.lock
|
||||
- Update Gitea CI workflows for uv + Python 3.11/3.12 matrix
|
||||
- Review packaging scripts for hardcoded python/qt versions"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Rollback Plan
|
||||
|
||||
If anything breaks after the update:
|
||||
|
||||
```bash
|
||||
# Restore previous state
|
||||
git checkout umbraedit/pre-toolchain-update .
|
||||
# or reset hard to the tag
|
||||
git reset --hard umbraedit/pre-toolchain-update
|
||||
git push origin main --force # only if already pushed and you need to undo
|
||||
```
|
||||
|
||||
Also keep the old system Python 3.9.6 available (do not remove `/usr/bin/python3`), and keep the `upstream` remote pointing at the original novelWriter for reference.
|
||||
|
||||
---
|
||||
|
||||
## 4. Recommended Command Sequence (copy-paste ready)
|
||||
|
||||
```bash
|
||||
cd /Volumes/1TB_APL_Storage/UmbraEdit
|
||||
|
||||
# 0. Tag rollback point
|
||||
git tag umbraedit/pre-toolchain-update
|
||||
git push origin umbraedit/pre-toolchain-update
|
||||
|
||||
# 1. Upgrade uv and pin Python 3.12
|
||||
uv self upgrade
|
||||
uv python install 3.12
|
||||
uv python pin 3.12
|
||||
uv run python --version
|
||||
|
||||
# 2. Create venv and install runtime deps at latest
|
||||
uv venv --python 3.12
|
||||
uv pip install "pyqt6>=6.4" "pyenchant>=3.3.0"
|
||||
|
||||
# 3. Smoke-test the app
|
||||
uv run python UmbraEdit.py
|
||||
|
||||
# 4. Sync dev toolchains (lint/test/docs)
|
||||
uv sync --all-groups
|
||||
|
||||
# 5. Regenerate lockfile
|
||||
uv lock --upgrade
|
||||
git diff uv.lock | head -100
|
||||
|
||||
# 6. Validate
|
||||
uv run python -m py_compile umbraedit/ tests/ utils/
|
||||
uv run ruff check .
|
||||
uv run pytest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Notes & Risks
|
||||
|
||||
- **PyQt6 on Python 3.13:** Wheels may lag; if 3.13 is required, verify PyQt6 availability first. 3.12 is the safer target.
|
||||
- **`pyobjc-framework-Cocoa`:** macOS-only; only install/test on darwin.
|
||||
- **`uv.lock` diff:** Expect a large diff since the lockfile is stale; review that no unexpected major-version jumps occur (especially PyQt6 6.x → 7.x, which would be breaking).
|
||||
- **CI:** Gitea Actions runners must have `uv` installed, or the workflows must install it as a step.
|
||||
- **Application still runs on Python 3.9.6?** No — `match`/`case` syntax requires 3.10+, and `requires-python` is `>=3.11`. The system 3.9.6 must not be used to run UmbraEdit.
|
||||
12
UmbraEdit.command
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/zsh
|
||||
# UmbraEdit Launcher for macOS
|
||||
# Double-click to launch, or run: ./UmbraEdit.command
|
||||
#
|
||||
# Copyright (C) 2026 B.D. Murphy and novelWriter contributors.
|
||||
# Created: macOS launcher script for UmbraEdit (renamed from novelWriter).
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# Use the project's uv-managed Python 3.12 virtual environment
|
||||
export UV_PYTHON_PREFERENCE="only-managed"
|
||||
exec uv run python UmbraEdit.py "$@"
|
||||
BIN
UmbraEdit.jpg
Executable file
|
After Width: | Height: | Size: 736 KiB |
15
UmbraEdit.py
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
UmbraEdit - Start Script
|
||||
==========================
|
||||
""" # noqa
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
os.curdir = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
if __name__ == "__main__":
|
||||
import umbraedit
|
||||
|
||||
umbraedit.main(sys.argv[1:])
|
||||
221
build-linux.sh
Executable file
@@ -0,0 +1,221 @@
|
||||
#!/usr/bin/env bash
|
||||
#=============================================================================
|
||||
# UmbraEdit Linux Build Script
|
||||
# ============================================================================
|
||||
# Downloads the UmbraEdit source tarball and builds a .deb package and/or
|
||||
# AppImage for Linux AMD64/ARM64.
|
||||
#
|
||||
# Usage:
|
||||
# chmod +x build-linux.sh
|
||||
# ./build-linux.sh [--arch amd64|arm64] [--distro ubuntu|debian] [--no-deb]
|
||||
#
|
||||
# No git clone required. Downloads the source tarball automatically.
|
||||
#=============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Configuration
|
||||
#-----------------------------------------------------------------------------
|
||||
VERSION="2026.11.5"
|
||||
RELEASE_VERSION="2026.11.0007"
|
||||
GITEA_URL="http://192.168.123.18:2222/umbragit/UmbraEdit"
|
||||
TARBALL_URL="${GITEA_URL}/-/archive/v${RELEASE_VERSION}/umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
TARBALL="umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
EXTRACTED_DIR="umbraedit-${RELEASE_VERSION}"
|
||||
|
||||
ARCH="${1:-amd64}"
|
||||
DISTRO="${2:-ubuntu}"
|
||||
BUILD_DEB="${3:-yes}"
|
||||
|
||||
echo "============================================================"
|
||||
echo " UmbraEdit Linux Build Script"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Version: ${RELEASE_VERSION}"
|
||||
echo " Architecture: ${ARCH}"
|
||||
echo " Distro: ${DISTRO}"
|
||||
echo " Build .deb: ${BUILD_DEB}"
|
||||
echo ""
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 1: Check prerequisites
|
||||
#--------------------------------------------------------------
|
||||
echo "[1/5] Checking prerequisites..."
|
||||
|
||||
MISSING=0
|
||||
for cmd in curl tar python3; do
|
||||
if ! command -v "$cmd" &> /dev/null; then
|
||||
echo " MISSING: $cmd"
|
||||
MISSING=1
|
||||
fi
|
||||
done
|
||||
|
||||
if command -v apt-get &> /dev/null; then
|
||||
PKG_MGR="apt-get"
|
||||
elif command -v dnf &> /dev/null; then
|
||||
PKG_MGR="dnf"
|
||||
elif command -v pacman &> /dev/null; then
|
||||
PKG_MGR="pacman"
|
||||
else
|
||||
PKG_MGR=""
|
||||
fi
|
||||
|
||||
if [ "$PKG_MGR" = "" ]; then
|
||||
echo ""
|
||||
echo "ERROR: No supported package manager found (apt-get, dnf, or pacman)"
|
||||
echo "Please install: python3, python3-pip, python3-pyqt6, python3-enchant,"
|
||||
echo " dh-python, debhelper, python3-build, appimagetool"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo " Package manager: $PKG_MGR"
|
||||
echo " Prerequisites OK"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 2: Install system dependencies
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[2/5] Installing system dependencies..."
|
||||
|
||||
INSTALL_FAILED=0
|
||||
|
||||
if [ "$PKG_MGR" = "apt-get" ]; then
|
||||
echo " Updating package lists..."
|
||||
if ! sudo apt-get update 2>&1 | tail -5; then
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " ERROR: apt-get update failed!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " One of your package repositories is broken (likely a PPA or"
|
||||
echo " third-party repo like NVIDIA's)."
|
||||
echo ""
|
||||
echo " To fix:"
|
||||
echo " 1. Check /etc/apt/sources.list and /etc/apt/sources.list.d/"
|
||||
echo " 2. Remove or disable any repositories that no longer exist"
|
||||
echo " 3. Run: sudo apt-get update"
|
||||
echo " 4. Then re-run this script: ./build-linux.sh"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Installing packages..."
|
||||
install_pkg() {
|
||||
if [ "$PKG_MGR" = "apt-get" ]; then
|
||||
sudo apt-get install -y "$@" 2>&1 | tail -3
|
||||
elif [ "$PKG_MGR" = "dnf" ]; then
|
||||
sudo dnf install -y "$@" 2>&1 | tail -3
|
||||
elif [ "$PKG_MGR" = "pacman" ]; then
|
||||
sudo pacman -Sy --noconfirm "$@" 2>&1 | tail -3
|
||||
fi
|
||||
}
|
||||
|
||||
echo " Installing: python3 python3-pip python3-pyqt6 python3-enchant"
|
||||
install_pkg python3 python3-pip python3-pyqt6 python3-enchant 2>&1 | tail -3 || {
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " ERROR: Failed to install core dependencies"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Please install manually and re-run:"
|
||||
echo " sudo apt-get install python3 python3-pip python3-pyqt6 python3-enchant"
|
||||
echo ""
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo " Installing: dh-python debhelper python3-build appimagetool"
|
||||
install_pkg dh-python debhelper python3-build appimagetool 2>&1 | tail -3 || {
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " WARNING: Some build tools failed to install"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " You may need to install these manually:"
|
||||
echo " sudo apt-get install dh-python debhelper python3-build appimagetool"
|
||||
echo ""
|
||||
echo " Continuing anyway..."
|
||||
}
|
||||
|
||||
echo " System dependencies installed"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 3: Download source tarball
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[3/5] Downloading source tarball..."
|
||||
echo " URL: ${TARBALL_URL}"
|
||||
|
||||
if [ -f "$TARBALL" ]; then
|
||||
echo " Archive already exists, skipping download"
|
||||
else
|
||||
curl -L -o "$TARBALL" "$TARBALL_URL"
|
||||
echo " Downloaded: $(ls -lh "$TARBALL" | awk '{print $5}')"
|
||||
fi
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 4: Extract source
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[4/5] Extracting source..."
|
||||
|
||||
rm -rf "$EXTRACTED_DIR"
|
||||
tar xzf "$TARBALL"
|
||||
cd "$EXTRACTED_DIR"
|
||||
|
||||
echo " Extracted to: $(pwd)"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 5: Install Python dependencies
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[5/5] Installing Python dependencies..."
|
||||
|
||||
python3 -m pip install --user --upgrade pip setuptools wheel 2>&1 | tail -1
|
||||
python3 -m pip install --user pyqt6 pyenchant 2>&1 | tail -1
|
||||
|
||||
echo " Python dependencies installed"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 6: Build packages
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[6/6] Building packages..."
|
||||
|
||||
# Build .deb (Debian/Ubuntu only)
|
||||
if [ "$BUILD_DEB" = "yes" ] && [ "$PKG_MGR" = "apt-get" ]; then
|
||||
echo ""
|
||||
echo "Building .deb package..."
|
||||
python3 utils/build_debian.py --distro "$DISTRO" --build 1
|
||||
echo ""
|
||||
echo " .deb package: dist_deb/umbraedit_*_${ARCH}.deb"
|
||||
fi
|
||||
|
||||
# Build AppImage
|
||||
echo ""
|
||||
echo "Building AppImage..."
|
||||
python3 utils/build_appimage.py --linux manylinux_2_28 --arch "$ARCH" --python 3.12
|
||||
echo ""
|
||||
echo " AppImage: dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Done
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " Build Complete!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo "Artifacts:"
|
||||
ls -la dist_deb/ 2>/dev/null || true
|
||||
ls -la dist_appimage/ 2>/dev/null || true
|
||||
echo ""
|
||||
echo "To run UmbraEdit:"
|
||||
echo " From AppImage: chmod +x dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
echo " ./dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
echo " From .deb: sudo dpkg -i dist_deb/umbraedit_*_${ARCH}.deb && umbraedit"
|
||||
echo ""
|
||||
echo "Source directory: $(pwd)"
|
||||
22
codecov.yml
@@ -1,22 +0,0 @@
|
||||
codecov:
|
||||
require_ci_to_pass: yes
|
||||
|
||||
coverage:
|
||||
precision: 2
|
||||
round: nearest
|
||||
range: "70...95"
|
||||
|
||||
status:
|
||||
project:
|
||||
default:
|
||||
threshold: 1%
|
||||
patch: no
|
||||
changes: no
|
||||
|
||||
parsers:
|
||||
gcov:
|
||||
branch_detection:
|
||||
conditional: yes
|
||||
loop: yes
|
||||
method: no
|
||||
macro: no
|
||||
@@ -1,7 +0,0 @@
|
||||
docutils>=0.17.1
|
||||
pygments>=2.7
|
||||
sphinx-book-theme
|
||||
sphinx-design
|
||||
sphinx-favicon
|
||||
sphinx-intl
|
||||
sphinx>=5.0
|
||||
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
Configuration file for the Sphinx documentation builder.
|
||||
Documentation: http://www.sphinx-doc.org/en/master/config
|
||||
"""
|
||||
""" # noqa
|
||||
|
||||
# -- Imports -----------------------------------------------------------------
|
||||
|
||||
@@ -11,26 +11,25 @@ import time
|
||||
|
||||
# -- Project Information -----------------------------------------------------
|
||||
|
||||
project = "novelWriter"
|
||||
project = "UmbraEdit"
|
||||
copyright = f"{datetime.date.today().year}" # noqa: A001
|
||||
|
||||
tmp_authors = ["Veronica Berglyd Olsen"]
|
||||
if additional := os.environ.get("SPHINX_I18N_AUTHORS"):
|
||||
tmp_authors.extend(a.strip() for a in additional.split(","))
|
||||
if override_authors := os.environ.get("SPHINX_I18N_AUTHORS"):
|
||||
author = override_authors
|
||||
else:
|
||||
author = "Veronica Berglyd Olsen"
|
||||
|
||||
author = ", ".join(tmp_authors)
|
||||
|
||||
initFile = os.path.join(
|
||||
os.path.dirname(__file__), os.pardir, os.pardir,
|
||||
"novelwriter", "__init__.py"
|
||||
)
|
||||
with open(initFile, encoding="utf-8") as inFile:
|
||||
for aLine in inFile:
|
||||
if aLine.startswith("__version__"):
|
||||
release = aLine.split('"')[1].strip()
|
||||
break
|
||||
else:
|
||||
release = "unknown"
|
||||
if override_version := os.environ.get("SPHINX_I18N_VERSION"):
|
||||
release = override_version
|
||||
else:
|
||||
initFile = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, "umbraedit", "__init__.py")
|
||||
with open(initFile, encoding="utf-8") as inFile:
|
||||
for aLine in inFile:
|
||||
if aLine.startswith("__version__"):
|
||||
release = "20" + aLine.split('"')[1].strip()
|
||||
break
|
||||
else:
|
||||
release = "unknown"
|
||||
|
||||
version = release.partition("-")[0]
|
||||
|
||||
@@ -40,9 +39,9 @@ os.environ["TZ"] = "Europe/Oslo"
|
||||
time.tzset()
|
||||
|
||||
needs_sphinx = "5.0"
|
||||
extensions = ["sphinx_design"]
|
||||
extensions = ["sphinx_design", "sphinx_copybutton"]
|
||||
templates_path = ["_templates"]
|
||||
source_suffix = ".rst"
|
||||
source_suffix = {".rst": "restructuredtext"}
|
||||
master_doc = "index"
|
||||
today_fmt = "%A, %d %B %Y at %H:%M"
|
||||
language = "en"
|
||||
@@ -58,17 +57,17 @@ html_static_path = ["_static"]
|
||||
html_css_files = ["custom.css"]
|
||||
html_theme_options = {
|
||||
"logo": {
|
||||
"image_light": "_static/novelwriter-light.png",
|
||||
"image_dark": "_static/novelwriter-dark.png",
|
||||
"image_light": "_static/umbraedit-light.png",
|
||||
"image_dark": "_static/umbraedit-dark.png",
|
||||
},
|
||||
"show_toc_level": 2,
|
||||
"show_navbar_depth": 1,
|
||||
"repository_url": "https://github.com/vkbo/novelwriter",
|
||||
"repository_url": "https://github.com/saga-soft/umbraedit",
|
||||
"navigation_with_keys": True,
|
||||
"use_repository_button": True,
|
||||
"use_issues_button": True,
|
||||
"pygment_light_style": "tango",
|
||||
"pygment_dark_style": "dracula",
|
||||
"pygments_light_style": "tango",
|
||||
"pygments_dark_style": "dracula",
|
||||
}
|
||||
html_sidebars = {
|
||||
"**": ["navbar-logo", "sidebar-title", "sbt-sidebar-nav"],
|
||||
@@ -79,13 +78,8 @@ html_sidebars = {
|
||||
latex_elements = {
|
||||
"papersize": "a4paper",
|
||||
"pointsize": "11pt",
|
||||
"preamble": (
|
||||
"\\usepackage[utf8]{inputenc}\n"
|
||||
"\\DeclareUnicodeCharacter{2212}{\\textendash}\n"
|
||||
),
|
||||
"preamble": ("\\usepackage[utf8]{inputenc}\n\\DeclareUnicodeCharacter{2212}{\\textendash}\n"),
|
||||
"figure_align": "htbp",
|
||||
}
|
||||
latex_logo = "_static/novelwriter-pdf.png"
|
||||
latex_documents = [(
|
||||
master_doc, "manual.tex", None, author, "manual"
|
||||
)]
|
||||
latex_logo = "_static/umbraedit-pdf.png"
|
||||
latex_documents = [(master_doc, "manual.tex", None, author, "manual")]
|
||||
|
||||
92
docs/source/features/dialogue.rst
Normal file
@@ -0,0 +1,92 @@
|
||||
.. _docs_features_dialogue:
|
||||
|
||||
*********************
|
||||
Dialogue Highlighting
|
||||
*********************
|
||||
|
||||
Dialogue recognition and colour highlighting is available both while you're writing and in
|
||||
generated manuscript documents.
|
||||
|
||||
The default language settings in UmbraEdit are for English. That includes the dialogue
|
||||
highlighting settings. But many dialogue styles are supported. You can tune a number of settings
|
||||
to fit your language and style preferences in the "Text Highlighting" section in **Preferences**.
|
||||
You can mix and match these settings.
|
||||
|
||||
.. figure:: images/fig_dialogue_highlighting.png
|
||||
|
||||
The **Text Highlighting** section of **Preferences**.
|
||||
|
||||
|
||||
Quoted Dialogue
|
||||
===============
|
||||
|
||||
By default, dialogue highlighting is enabled for the double quote symbols you have defined in the
|
||||
**Quotation Style** section of **Preferences**.
|
||||
|
||||
.. figure:: images/fig_dialogue_quote_styles.png
|
||||
|
||||
The **Quotation Style** section of **Preferences**.
|
||||
|
||||
You can change which quote symbols are highlighted by selecting one of "None", "Single", "Double",
|
||||
or "Both" from the "Highlight dialogue" setting under **Text Highlighting**.
|
||||
|
||||
You can also enable or disable the "Allow open-ended dialogue" setting to allow for the style where
|
||||
multi-paragraph dialogue is not closed until the last paragraph.
|
||||
|
||||
.. admonition:: Limitations
|
||||
|
||||
Dialogue highlighting for single quotes is difficult to process when the same single quote
|
||||
symbol is also used for apostrophes. There isn't a good solution to this. Your best option in
|
||||
the cases where the highlighting is wrong is to insert an alternative apostrophe symbol instead.
|
||||
See :ref:`docs_more_typographical_symbols_apostrophe` for more details.
|
||||
|
||||
|
||||
Alternative Dialogue
|
||||
====================
|
||||
|
||||
You can use the "Alternative dialogue symbols" setting for custom dialogue wrapper symbols. These
|
||||
are highlighted in a different colour than regular dialogue.
|
||||
|
||||
The intended use case here is if you use an alternative style to distinguish a different style of
|
||||
communication. The feature idea came from a science fiction series where mind-to-mind communication
|
||||
used a different quotation style.
|
||||
|
||||
|
||||
Dialogue Line Symbols
|
||||
=====================
|
||||
|
||||
In some languages, a single symbol at the start of a paragraph can indicate that the whole
|
||||
paragraph is dialogue. For instance, this symbol can be a short dash (en dash).
|
||||
|
||||
.. figure:: images/fig_dialogue_line.png
|
||||
|
||||
An example of dialogue starting with a short dash.
|
||||
|
||||
You can enable this feature by adding the symbols to the "Dialogue line symbols" setting. Multiple
|
||||
symbols are allowed.
|
||||
|
||||
|
||||
Dialogue with Narrator Break
|
||||
============================
|
||||
|
||||
The dialogue symbol setting will not detect if the dialogue ends in the paragraph. In some styles
|
||||
there is no way to actually indicate the switch from dialogue to narration; in others there are.
|
||||
These a narrator break symbols are usually dashes. You can select one of the supported dash symbols
|
||||
for narrator breaks. These can be used with any of the above dialogue recognition settings.
|
||||
|
||||
.. figure:: images/fig_dialogue_narrator_break.png
|
||||
|
||||
An example of dialogue starting with a short dash and a long dash narrator break.
|
||||
|
||||
|
||||
Alternating Dialogue and Narration
|
||||
==================================
|
||||
|
||||
The alternating dialogue and narration style is supported with the "Alternating dialogue/narration
|
||||
symbol" setting. It can be set to one of the supported dashes. This style will switch into dialogue
|
||||
mode when it first encounters the selected dash in a paragraph, and switch back out when it sees
|
||||
the next one, and so forth.
|
||||
|
||||
.. figure:: images/fig_dialogue_alternating.png
|
||||
|
||||
An example of alternating dialogue and narration using a long dash.
|
||||
BIN
docs/source/features/images/fig_dialogue_alternating.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/source/features/images/fig_dialogue_highlighting.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
docs/source/features/images/fig_dialogue_line.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
docs/source/features/images/fig_dialogue_narrator_break.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
docs/source/features/images/fig_dialogue_quote_styles.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
@@ -1,17 +1,21 @@
|
||||
.. _a_kb:
|
||||
.. _docs_features_shortcuts:
|
||||
|
||||
******************
|
||||
Keyboard Shortcuts
|
||||
******************
|
||||
|
||||
Most features in novelWriter are available as keyboard shortcuts. This is a reference list of those
|
||||
Most features in UmbraEdit are available as keyboard shortcuts. This is a reference list of those
|
||||
shortcuts. Most of them are also listed in the application's user interface.
|
||||
|
||||
.. note::
|
||||
|
||||
On MacOS, replace :kbd:`Ctrl` with :kbd:`Cmd`.
|
||||
|
||||
.. note::
|
||||
|
||||
Shortcuts marked with (*) are remapped when Vim Mode is enabled and no longer work as listed in
|
||||
the tables below. See :ref:`docs_features_vim_mode` for more details.
|
||||
|
||||
.. _a_kb_main:
|
||||
|
||||
Main Window Shortcuts
|
||||
=====================
|
||||
@@ -20,7 +24,7 @@ Main Window Shortcuts
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`F1`", "Open the online user manual"
|
||||
":kbd:`F5`", "Open the **Build Manuscript** tool"
|
||||
":kbd:`F5`", "Open the **Manuscript Build** tool"
|
||||
":kbd:`F6`", "Open the **Writing Statistics** tool"
|
||||
":kbd:`F8`", "Toggle **Focus Mode**"
|
||||
":kbd:`F9`", "Re-build the project's index"
|
||||
@@ -28,18 +32,16 @@ Main Window Shortcuts
|
||||
":kbd:`Ctrl+,`", "Open the **Preferences** dialog"
|
||||
":kbd:`Ctrl+E`", "Switch or toggle focus for the editor or viewer"
|
||||
":kbd:`Ctrl+T`", "Switch or toggle focus for the project tree or novel view"
|
||||
":kbd:`Ctrl+Q`", "Exit novelWriter"
|
||||
":kbd:`Ctrl+Q`", "Exit UmbraEdit"
|
||||
":kbd:`Ctrl+Shift+,`", "Open the **Project Settings** dialog"
|
||||
":kbd:`Ctrl+Shift+O`", "Open the Welcome dialog to open or create a project"
|
||||
":kbd:`Ctrl+Shift+S`", "Save the current project"
|
||||
":kbd:`Ctrl+Shift+T`", "Switch focus to the outline view"
|
||||
":kbd:`Ctrl+Shift+W`", "Close the current project"
|
||||
":kbd:`Shift+F1`", "Open the local user manual (PDF) if it is available"
|
||||
":kbd:`Shift+F6`", "Open the **Project Details** dialog"
|
||||
":kbd:`Shift+F8`", "Toggle tree pane visibility"
|
||||
|
||||
|
||||
.. _a_kb_tree:
|
||||
|
||||
Project Tree Shortcuts
|
||||
======================
|
||||
|
||||
@@ -56,14 +58,12 @@ Project Tree Shortcuts
|
||||
":kbd:`Ctrl+L`", "Open the **Quick Links** menu"
|
||||
":kbd:`Ctrl+N`", "Open the **Create New Item** menu"
|
||||
":kbd:`Ctrl+O`", "Open the selected document in the editor"
|
||||
":kbd:`Ctrl+R`", "Open the selected document in the viewer"
|
||||
":kbd:`Ctrl+R`", "Open the selected document in the viewer (*)"
|
||||
":kbd:`Ctrl+Up`", "Move selected item one step up in the tree"
|
||||
":kbd:`Ctrl+Down`", "Move selected item one step down in the tree"
|
||||
":kbd:`Ctrl+Shift+Del`", "Move the selected item to Trash"
|
||||
|
||||
|
||||
.. _a_kb_editor:
|
||||
|
||||
Document Editor Shortcuts
|
||||
=========================
|
||||
|
||||
@@ -93,7 +93,6 @@ Text Formatting Shortcuts
|
||||
":kbd:`Ctrl+'`", "Wrap selected text, or word under cursor, in single quotes"
|
||||
":kbd:`Ctrl+""`", "Wrap selected text, or word under cursor, in double quotes"
|
||||
":kbd:`Ctrl+/`", "Toggle comment format for block or selected text"
|
||||
":kbd:`Ctrl+0`", "Remove format for block or selected text"
|
||||
":kbd:`Ctrl+1`", "Change block format to heading level 1"
|
||||
":kbd:`Ctrl+2`", "Change block format to heading level 2"
|
||||
":kbd:`Ctrl+3`", "Change block format to heading level 3"
|
||||
@@ -106,6 +105,7 @@ Text Formatting Shortcuts
|
||||
":kbd:`Ctrl+B`", "Format selected text, or word under cursor, with bold"
|
||||
":kbd:`Ctrl+D`", "Format selected text, or word under cursor, with strike through"
|
||||
":kbd:`Ctrl+I`", "Format selected text, or word under cursor, with italic"
|
||||
":kbd:`Ctrl+M`", "Highlight selected text, or word under cursor"
|
||||
":kbd:`Ctrl+Shift+/`", "Remove format for block or selected text"
|
||||
":kbd:`Ctrl+Shift+D`", "Toggle ignored text format for block or selected text"
|
||||
|
||||
@@ -116,26 +116,37 @@ Other Editor Shortcuts
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`F7`", "Re-run the spell checker on the document"
|
||||
":kbd:`Ctrl+.`", "Open the context menu at the current cursor location"
|
||||
":kbd:`Ctrl+A`", "Select all text in the document"
|
||||
":kbd:`Ctrl+C`", "Copy selected text to clipboard"
|
||||
":kbd:`Ctrl+K`", "Activate the insert commands (see list in :ref:`a_kb_ins`)"
|
||||
":kbd:`Ctrl+R`", "Open or reload the current document in the viewer"
|
||||
":kbd:`Ctrl+S`", "Save the current document"
|
||||
":kbd:`Ctrl+V`", "Paste text from clipboard to cursor position"
|
||||
":kbd:`Ctrl+W`", "Close the current document"
|
||||
":kbd:`Ctrl+X`", "Cut selected text to clipboard"
|
||||
":kbd:`Ctrl+Y`", "Redo latest undo"
|
||||
":kbd:`Ctrl+Z`", "Undo latest changes"
|
||||
":kbd:`Ctrl+Backspace`", "Delete the word before the cursor"
|
||||
":kbd:`Ctrl+Del`", "Delete the word after the cursor"
|
||||
":kbd:`Ctrl+F7`", "Toggle spell checking"
|
||||
":kbd:`Ctrl+Return`", "Open the tag or reference under the cursor in the viewer"
|
||||
":kbd:`Ctrl+Shift+A`", "Select all text in the current paragraph"
|
||||
":kbd:`F7`", "Re-run the spell checker on the document"
|
||||
":kbd:`Ctrl+.`", "Open the context menu at the current cursor location"
|
||||
":kbd:`Ctrl+A`", "Select all text in the document"
|
||||
":kbd:`Ctrl+C`", "Copy selected text to clipboard"
|
||||
":kbd:`Ctrl+K`", "Activate the insert commands (see list in :ref:`docs_features_shortcuts_insert`)"
|
||||
":kbd:`Ctrl+R`", "Open or reload the current document in the viewer (*)"
|
||||
":kbd:`Ctrl+S`", "Save the current document"
|
||||
":kbd:`Ctrl+V`", "Paste text from clipboard to cursor position"
|
||||
":kbd:`Ctrl+W`", "Close the current document"
|
||||
":kbd:`Ctrl+X`", "Cut selected text to clipboard"
|
||||
":kbd:`Ctrl+Y`", "Redo latest undo"
|
||||
":kbd:`Ctrl+Z`", "Undo latest changes"
|
||||
":kbd:`Ctrl+0`", "Reset zoom"
|
||||
":kbd:`Ctrl++`", "Zoom in"
|
||||
":kbd:`Ctrl+=`", "Zoom in"
|
||||
":kbd:`Ctrl+-`", "Zoom out"
|
||||
":kbd:`Ctrl+_`", "Zoom out"
|
||||
":kbd:`Ctrl+Backspace`", "Delete the word before the cursor"
|
||||
":kbd:`Ctrl+Del`", "Delete the word after the cursor"
|
||||
":kbd:`Ctrl+F7`", "Toggle spell checking"
|
||||
":kbd:`Ctrl+Return`", "Open the tag or reference under the cursor in the viewer"
|
||||
":kbd:`Ctrl+Shift+Return`", "Open the tag or reference under the cursor in the editor"
|
||||
":kbd:`Ctrl+Shift+A`", "Select all text in the current paragraph"
|
||||
":kbd:`Ctrl+Shift+V`", "Paste text as plain text from clipboard to cursor position"
|
||||
":kbd:`Ctrl+Left`", "Move to previous word."
|
||||
":kbd:`Ctrl+Right`", "Move to next word."
|
||||
":kbd:`Ctrl+Up`", "Move to previous paragraph."
|
||||
":kbd:`Ctrl+Down`", "Move to next paragraph."
|
||||
|
||||
|
||||
.. _a_kb_ins:
|
||||
.. _docs_features_shortcuts_insert:
|
||||
|
||||
Insert Shortcuts
|
||||
----------------
|
||||
@@ -151,7 +162,7 @@ a key or key combination for the inserted content.
|
||||
":kbd:`Ctrl+K`, :kbd:`_`", "Insert a long dash (em dash)"
|
||||
":kbd:`Ctrl+K`, :kbd:`.`", "Insert an ellipsis"
|
||||
":kbd:`Ctrl+K`, :kbd:`'`", "Insert a modifier apostrophe"
|
||||
":kbd:`Ctrl+K`, :kbd:`*`", "Insert a list bullet"
|
||||
":kbd:`Ctrl+K`, :kbd:`*`", "Insert a bullet symbol"
|
||||
":kbd:`Ctrl+K`, :kbd:`%`", "Insert a per mille symbol"
|
||||
":kbd:`Ctrl+K`, :kbd:`~`", "Insert a figure dash (same width as a number)"
|
||||
":kbd:`Ctrl+K`, :kbd:`−`", "Insert a short dash (en dash)"
|
||||
@@ -184,8 +195,6 @@ a key or key combination for the inserted content.
|
||||
":kbd:`Ctrl+K`, :kbd:`Shift+Space`", "Insert a thin space"
|
||||
|
||||
|
||||
.. _a_kb_viewer:
|
||||
|
||||
Document Viewer Shortcuts
|
||||
=========================
|
||||
|
||||
@@ -195,5 +204,10 @@ Document Viewer Shortcuts
|
||||
":kbd:`Alt+Left`", "Move backward in the view history"
|
||||
":kbd:`Alt+Right`", "Move forward in the view history"
|
||||
":kbd:`Ctrl+C`", "Copy selected text to clipboard"
|
||||
":kbd:`Ctrl+0`", "Reset zoom"
|
||||
":kbd:`Ctrl++`", "Zoom in"
|
||||
":kbd:`Ctrl+=`", "Zoom in"
|
||||
":kbd:`Ctrl+-`", "Zoom out"
|
||||
":kbd:`Ctrl+_`", "Zoom out"
|
||||
":kbd:`Ctrl+Shift+A`", "Select all text in the current paragraph"
|
||||
":kbd:`Ctrl+Shift+R`", "Close the document viewer"
|
||||
":kbd:`Ctrl+Shift+R`", "Close the document viewer (*)"
|
||||
@@ -1,25 +1,26 @@
|
||||
.. _a_story_structure:
|
||||
.. _docs_features_story:
|
||||
|
||||
************************
|
||||
Story Structure Comments
|
||||
************************
|
||||
**************
|
||||
Story Comments
|
||||
**************
|
||||
|
||||
|
||||
As of version 2.7, story structure annotations using the ``%story`` style of comment is supported.
|
||||
To use the feature, make the first word of a comment ``story``, followed by a period, a structure
|
||||
term, a colon, a space and the text for that term.
|
||||
|
||||
Here's an example:
|
||||
|
||||
.. code-block:: md
|
||||
|
||||
%story.term: text
|
||||
A special set of comment styles allow for annotating your text with structure information. There
|
||||
are two styles of comments available. They are an extension to regular comments as described in
|
||||
:ref:`docs_usage_comments`.
|
||||
|
||||
.. versionadded:: 2.7
|
||||
|
||||
|
||||
Story Structure Comments
|
||||
========================
|
||||
|
||||
You can annotate story structure by using the ``%Story`` style of comment. To use the feature,
|
||||
make the first word of a comment ``Story``, followed by a period, a structure term, a colon, a
|
||||
space and the text for that term.
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
-----
|
||||
|
||||
The story term can be anything that you want to track in the manuscript. This construct is intended
|
||||
to make it easier to extract metadata from a work to perform a structural analysis of the story.
|
||||
@@ -33,6 +34,8 @@ story is composed of "beats", and that each beat has an inciting incident, a com
|
||||
crisis, and a resolution. One might capture these elements of a beat where a character overcomes
|
||||
their fear of giving a speech as:
|
||||
|
||||
:bdg-info:`Example`
|
||||
|
||||
.. code-block:: md
|
||||
|
||||
### Scene
|
||||
@@ -48,7 +51,7 @@ Other analytical models propose tracking a scene's pace, how it affects the mood
|
||||
which element(s) of the story's genre are being satisfied. An author can use this mechanism to
|
||||
track any element of a scene. Some examples include time of day, how much time passes in the scene,
|
||||
or even the physical form of a shape-shifting character. If a story involves magic, one could track
|
||||
which wand a main character has in hand. It's up to tha author.
|
||||
which wand a main character has in hand. It's up to the author.
|
||||
|
||||
When the story and other scene metadata is extracted into a tabular form, it is possible to get a
|
||||
comprehensive overview of the story and to identify possible issues. For example, so many
|
||||
@@ -56,7 +59,7 @@ fast-paced scenes without a break that readers might become fatigued or over-sti
|
||||
|
||||
|
||||
Output
|
||||
======
|
||||
------
|
||||
|
||||
The story structure comments can be included in the manuscript, and are formatted similarly to
|
||||
the synopsis comments:
|
||||
@@ -67,3 +70,41 @@ the synopsis comments:
|
||||
|
||||
When you export your project data from the Outline View, all story structure terms are added as
|
||||
columns to the exported file, which can then be opened in the spread sheet software of your choice.
|
||||
|
||||
|
||||
Story Notes
|
||||
===========
|
||||
|
||||
Story notes are similar to story structure comments, but have no predefined meaning. Essentially
|
||||
they are a generalisation of the story structure comment, and the only point of having this
|
||||
additional format is to allow you do filter them in and out of your manuscript independently.
|
||||
|
||||
You can annotate story notes by using the ``%Note`` style of comment. To use the feature,
|
||||
make the first word of a comment ``Note``, followed by a period, a term, a colon, a space and the
|
||||
text for the note.
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
These notes are free form, but one intended use case is to add consistency annotations to your text
|
||||
to remind yourself where you have described something that must be checked against other parts of
|
||||
your text later on.
|
||||
|
||||
:bdg-info:`Example`
|
||||
|
||||
.. code-block:: md
|
||||
|
||||
### Scene
|
||||
|
||||
%Synopsis: Carol overcomes her fear of giving a speech.
|
||||
|
||||
%Note.consistency: This is the first time in the story Carol gives a speech.
|
||||
|
||||
|
||||
Output
|
||||
------
|
||||
|
||||
Story notes are included in the manuscript in exactly the same way story structure comments are,
|
||||
but has a separate inclusion setting in the build settings. They are also included in CSV exports
|
||||
from the **Outline View**.
|
||||
126
docs/source/features/vim_mode.rst
Normal file
@@ -0,0 +1,126 @@
|
||||
.. _docs_features_vim_mode:
|
||||
|
||||
********
|
||||
Vim Mode
|
||||
********
|
||||
|
||||
.. _Vim: https://www.vim.org/
|
||||
|
||||
Vim_ is a keyboard-centric text editor. "Vim mode" refers to another editor implementing the
|
||||
ability to perform a subset of vim motions. This will allow you to write, select, edit, copy,
|
||||
paste, navigate, etc, efficiently by using keyboard commands.
|
||||
|
||||
Vim is modal. Three such modes have been implemented in UmbraEdit:
|
||||
|
||||
- **Normal** mode is the default mode used to navigate text.
|
||||
- **Insert** mode is where you can write text like in a 'normal' text editor.
|
||||
- **Visual** mode is for selecting text, with:
|
||||
|
||||
- **Visual** mode for per character selection.
|
||||
- **V-Line** mode for per-line selection.
|
||||
|
||||
The vim mode setting is found in the **Features** section of the **Preferences**.
|
||||
|
||||
.. note::
|
||||
|
||||
Vim mode is an advanced feature. When you enable it, the text editor will behave very
|
||||
differently than a standard text editor. A label in the footer of the editor will show which of
|
||||
the vim modes it is in.
|
||||
|
||||
|
||||
Mode Switching
|
||||
==============
|
||||
|
||||
To switch between the various vim modes, these keystrokes implemented:
|
||||
|
||||
.. csv-table::
|
||||
:header: "From Mode", "To Mode", "Keystrokes"
|
||||
|
||||
"Normal", "Insert", ":kbd:`i`, :kbd:`I`, :kbd:`a`, :kbd:`A`, :kbd:`o`, :kbd:`O`"
|
||||
"Insert", "Normal", ":kbd:`Esc`"
|
||||
"Normal", "Visual", ":kbd:`v`, :kbd:`V`"
|
||||
"Visual", "V-Line", ":kbd:`V`"
|
||||
"V-Line", "Visual", ":kbd:`v`"
|
||||
"Visual", "Normal", ":kbd:`Esc`, :kbd:`v`"
|
||||
"V-Line", "Normal", ":kbd:`Esc`, :kbd:`V`"
|
||||
|
||||
You can exit visual mode back to normal mode by pressing :kbd:`Esc`, but all visual mode commands
|
||||
that logically "terminate" the visual mode usage will return you to normal mode.
|
||||
|
||||
For instance, press :kbd:`V` to enter V-Line mode, extend the selection to the next line with
|
||||
:kbd:`j`, and press :kbd:`y` to yank (copy). You are now automatically put back in normal mode as
|
||||
you have completed selecting your text.
|
||||
|
||||
|
||||
Implemented Keystrokes (Vim Motions)
|
||||
====================================
|
||||
|
||||
The table below shows the vim motions currently implemented in UmbraEdit.
|
||||
|
||||
.. csv-table::
|
||||
:header: "Motion", "Mode(s)", "Description"
|
||||
|
||||
":kbd:`i`", "Normal → Insert", "Enter insert mode"
|
||||
":kbd:`I`", "Normal → Insert", "Jump to start of line and enter insert"
|
||||
":kbd:`v`", "Normal → Visual", "Enter character-wise visual mode"
|
||||
":kbd:`V`", "Normal → V-Line", "Enter line-wise visual mode"
|
||||
":kbd:`dd`", "Normal", "Delete (cut) current line"
|
||||
":kbd:`x`", "Normal", "Delete character under cursor"
|
||||
":kbd:`w`", "Normal / Visual", "Move to next word start"
|
||||
":kbd:`b`", "Normal / Visual", "Move to previous word start"
|
||||
":kbd:`e`", "Normal / Visual", "Move to next word end"
|
||||
":kbd:`dw`", "Normal", "Delete from cursor to next word start"
|
||||
":kbd:`de`", "Normal", "Delete from cursor to next word end"
|
||||
":kbd:`db`", "Normal", "Delete from cursor to previous word start"
|
||||
":kbd:`d$`", "Normal", "Delete from cursor to end of line"
|
||||
":kbd:`yw`", "Normal", "Yank (copy) from cursor to next word start"
|
||||
":kbd:`gg`", "Normal / Visual", "Jump to first line"
|
||||
":kbd:`G`", "Normal / Visual", "Jump to last line"
|
||||
":kbd:`yy`", "Normal", "Yank current line"
|
||||
":kbd:`p`", "Normal", "Paste after current line or cursor"
|
||||
":kbd:`P`", "Normal", "Paste before current line or at cursor"
|
||||
":kbd:`o`", "Normal → Insert", "Open new line below and enter insert"
|
||||
":kbd:`O`", "Normal → Insert", "Open new line above and enter insert"
|
||||
":kbd:`$`", "Normal / Visual", "Move to end of line"
|
||||
":kbd:`0`", "Normal / Visual", "Move to start of line"
|
||||
":kbd:`a`", "Normal → Insert", "Enter insert after cursor"
|
||||
":kbd:`A`", "Normal → Insert", "Enter insert at end of line"
|
||||
":kbd:`u`", "Normal", "Undo last change"
|
||||
":kbd:`Ctrl+R`", "Normal", "Redo last undone change (*)"
|
||||
":kbd:`zz`", "Normal", "Centre cursor vertically"
|
||||
":kbd:`h`", "Normal / Visual", "Move left"
|
||||
":kbd:`j`", "Normal / Visual", "Move down"
|
||||
":kbd:`k`", "Normal / Visual", "Move up"
|
||||
":kbd:`l`", "Normal / Visual", "Move right"
|
||||
":kbd:`d`", "Visual / V-Line", "Delete selection"
|
||||
":kbd:`x`", "Visual / V-Line", "Delete selection"
|
||||
":kbd:`y`", "Visual / V-Line", "Yank selection"
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
Shortcuts marked with (*) are remapped when Vim Mode is enabled. These are shortcuts that
|
||||
usually do other things when Vim Mode is off.
|
||||
|
||||
|
||||
Known Issues
|
||||
============
|
||||
|
||||
* Differing behaviour from vim: :kbd:`j` and :kbd:`k` move by displayed line when a line is
|
||||
wrapped, like :kbd:`gj` and :kbd:`gk` in vim. All other line commands act on the full line.
|
||||
* :kbd:`Esc` in normal mode will leave Focus Mode if there is no pending command to cancel.
|
||||
* Differing behaviour from vim: the :kbd:`e` command behaves a bit differently with regards to the
|
||||
last character of a word. The behaviour is inconsistent with vim but functional and still logical
|
||||
to use. The cursor is placed at the end of the word after the last character rather than on the
|
||||
last character.
|
||||
|
||||
.. code-block::
|
||||
|
||||
test
|
||||
^ Cursor placed here in vim
|
||||
test
|
||||
^ Cursor placed here in UmbraEdit vim mode
|
||||
|
||||
You will only really ever notice this behaviour if you try to combine the :kbd:`e` command with
|
||||
another. For instance, :kbd:`de` will not delete the last character but delete forward as it
|
||||
starts one character after the word boundary.
|
||||
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 516 KiB |
|
Before Width: | Height: | Size: 535 KiB |
@@ -5,7 +5,7 @@ User Guide
|
||||
| **Release Version:** |release|
|
||||
| **Updated:** |today|
|
||||
|
||||
novelWriter is an open source plain text editor designed for writing novels assembled from
|
||||
UmbraEdit is an open source plain text editor designed for writing novels assembled from
|
||||
individual text documents. It uses a minimal formatting syntax inspired by Markdown, and adds a
|
||||
meta data syntax for comments, synopsis, and cross-referencing. It is designed to be a simple text
|
||||
editor that allows for easy organisation of text and notes, using human readable text files as
|
||||
@@ -16,88 +16,77 @@ storage for robustness.
|
||||
:align: center
|
||||
:width: 500
|
||||
|
||||
The project storage is suitable for version control software, and also well suited for file
|
||||
synchronisation tools. All text is saved as plain text files, and your project data as standard
|
||||
data formats in XML and JSON. See :ref:`a_storage` for more details.
|
||||
|
||||
Any operating system that has Python 3 and the Qt 6 libraries should be able to run novelWriter.
|
||||
It runs fine on Linux, Windows and MacOS, and users have tested it on other platforms as well.
|
||||
See :ref:`a_started` for more details.
|
||||
|
||||
**Useful Links**
|
||||
|
||||
* Website: https://novelwriter.io
|
||||
* Documentation: https://docs.novelwriter.io
|
||||
* Public Releases: https://releases.novelwriter.io
|
||||
* Internationalisation: https://crowdin.com/project/novelwriter
|
||||
* Source Code: https://github.com/vkbo/novelWriter
|
||||
* Source Releases: https://github.com/vkbo/novelWriter/releases
|
||||
* Issue Tracker: https://github.com/vkbo/novelWriter/issues
|
||||
* Feature Discussions: https://github.com/vkbo/novelWriter/discussions
|
||||
* PyPi Project: https://pypi.org/project/novelWriter
|
||||
* Social Media: https://fosstodon.org/@novelwriter
|
||||
* Website: https://umbraedit.io
|
||||
* Documentation: https://docs.umbraedit.io
|
||||
* Public Releases: https://releases.umbraedit.io
|
||||
* Internationalisation: https://crowdin.com/project/umbraedit
|
||||
* Source Code: https://github.com/saga-soft/UmbraEdit
|
||||
* Source Releases: https://github.com/saga-soft/UmbraEdit/releases
|
||||
* Issue Tracker: https://github.com/saga-soft/UmbraEdit/issues
|
||||
* Feature Discussions: https://github.com/saga-soft/UmbraEdit/discussions
|
||||
* PyPi Project: https://pypi.org/project/UmbraEdit
|
||||
* Social Media: https://fosstodon.org/@umbraedit
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
Main Page <self>
|
||||
More Documents <https://novelwriter.io/more/>
|
||||
self
|
||||
More Documents <https://umbraedit.io/more/>
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Introduction
|
||||
:caption: Getting Started
|
||||
:hidden:
|
||||
|
||||
int_introduction
|
||||
int_overview
|
||||
int_started
|
||||
int_howto
|
||||
int_glossary
|
||||
usage/introduction
|
||||
usage/organising_project
|
||||
usage/chapters_and_scenes
|
||||
usage/basic_formatting
|
||||
usage/comments
|
||||
usage/tags_and_references
|
||||
usage/alignment_and_indent
|
||||
usage/advanced_formatting
|
||||
usage/front_back_matter
|
||||
usage/howto
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Using novelWriter
|
||||
:caption: The User Interface
|
||||
:hidden:
|
||||
|
||||
usage_breakdown
|
||||
usage_project
|
||||
usage_writing
|
||||
usage_format
|
||||
usage_shortcuts
|
||||
usage_typography
|
||||
user_interface/main_window
|
||||
user_interface/projects
|
||||
user_interface/editor_viewer
|
||||
user_interface/split_and_merge
|
||||
user_interface/manuscript
|
||||
user_interface/formatting
|
||||
user_interface/statistics
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Organising Your Project
|
||||
:caption: Other Features
|
||||
:hidden:
|
||||
|
||||
project_overview
|
||||
project_structure
|
||||
project_references
|
||||
project_manuscript
|
||||
features/dialogue
|
||||
features/story_comments
|
||||
features/shortcuts
|
||||
features/vim_mode
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Writing Aids
|
||||
:caption: In-Depth Topics
|
||||
:hidden:
|
||||
|
||||
writing_story
|
||||
more/counting
|
||||
more/typography
|
||||
more/dictionaries
|
||||
more/customise
|
||||
more/handling_errors
|
||||
more/project_format
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Additional Details
|
||||
:hidden:
|
||||
|
||||
more_customise
|
||||
more_projectformat
|
||||
more_counting
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Technical Topics
|
||||
:hidden:
|
||||
|
||||
tech_locations
|
||||
tech_storage
|
||||
tech_source
|
||||
tech_tests
|
||||
technical/locations
|
||||
technical/storage
|
||||
technical/source
|
||||
technical/tests
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
.. _a_glossary:
|
||||
|
||||
********
|
||||
Glossary
|
||||
********
|
||||
|
||||
.. glossary::
|
||||
:sorted:
|
||||
|
||||
Root Folder
|
||||
A "Root Folder" is a top level folder of the project tree in novelWriter. Each type of root
|
||||
folder has a specific icon to identify it. For an overview of available root folder types,
|
||||
see :ref:`a_proj_roots`.
|
||||
|
||||
Novel Documents
|
||||
These are documents that are created under a "Novel" :term:`Root Folder`. They behave
|
||||
differently than :term:`Project Notes`, and have some more restrictions. For instance, they
|
||||
can not exist in folders intended only for project notes. See the :ref:`a_struct` chapter for
|
||||
more details.
|
||||
|
||||
Project Notes
|
||||
Project Notes are unrestricted documents that can be placed anywhere in your project. You
|
||||
should not use these documents for story elements, only for notes. Project notes are the
|
||||
source files used by the Tags and References system. See the :ref:`a_references` chapter for
|
||||
more details on how to use them.
|
||||
|
||||
Tag
|
||||
A tag is a user defined value assigned as a tag to a section of your :term:`Project Notes`.
|
||||
It is optional, and can be defined once per heading. It is set using the :term:`keyword`
|
||||
syntax ``@tag: value``, where ``value`` is the user defined part. Each tag can be referenced
|
||||
in another file using one of the :term:`reference` keywords. See :ref:`a_references` chapter
|
||||
for more details.
|
||||
|
||||
Reference
|
||||
A reference is one of a set of :term:`keywords<keyword>` that can be used to link to a
|
||||
:term:`tag` in another document. The reference keywords are specific to the different
|
||||
:term:`root folder` types. A full overview is available in the :ref:`a_references` chapter.
|
||||
|
||||
Project Index
|
||||
The project index is a record of all headings in a project, with all their meta data like
|
||||
synopsis comments, :term:`tags<tag>` and :term:`references<reference>`. The project index is
|
||||
kept up to date automatically, but can also be regenerated manually from the
|
||||
:guilabel:`Tools` menu or by pressing :kbd:`F9`.
|
||||
|
||||
Context Menu
|
||||
A context menu is a menu that pops up when you right click something in the user interface.
|
||||
In novelWriter, you can often also open a context menu by pressing the keyboard shortcut
|
||||
:kbd:`Ctrl+.`.
|
||||
|
||||
Headings
|
||||
Each level of headings in :term:`Novel Documents` have a specific meaning in terms of the
|
||||
structure of the story. That is, they determine what novelWriter considers a partition, a
|
||||
chapter, a scene or a text section. For :term:`Project Notes`, the heading levels don't
|
||||
matter. For more details on headings in novel documents, see :ref:`a_struct_heads`.
|
||||
|
||||
Keyword
|
||||
A keyword in novelWriter is a special command you put in the text of your documents. They are
|
||||
not standard Markdown, but are used in novelWriter to add information that is interpreted by
|
||||
the application. For instance, keywords are used for :term:`tags<tag>` and
|
||||
:term:`references<reference>`.
|
||||
|
||||
Keywords must always be on their own line, and the first character of the line must always be
|
||||
the ``@`` character. The keyword must also always be followed by a ``:`` character, and the
|
||||
values passed to the command are added after this, separated by commas.
|
||||
@@ -1,129 +0,0 @@
|
||||
.. _a_intro:
|
||||
|
||||
********
|
||||
Overview
|
||||
********
|
||||
|
||||
.. _Snowflake: https://www.advancedfictionwriting.com/articles/snowflake-method/
|
||||
.. _Markdown: https://en.wikipedia.org/wiki/Markdown
|
||||
|
||||
At its core, novelWriter is a multi-document plain text editor. The idea is to let you edit your
|
||||
text without having to deal with formatting until you generate a draft document or manuscript.
|
||||
Instead, you can focus on the writing right from the start.
|
||||
|
||||
Of course, you probably need *some* formatting for your text. At the very least you need emphasis.
|
||||
Most people are familiar with adding emphasis using ``_underscores_`` and ``**asterisks**``. This
|
||||
formatting standard comes from Markdown_ and is supported by novelWriter. It also uses Markdown
|
||||
formatting for defining document headings. If you need more specialised formatting, additional
|
||||
formatting options are available using a shortcode format. See :ref:`a_fmt_shortcodes` for more
|
||||
details.
|
||||
|
||||
.. admonition:: Limitations
|
||||
|
||||
novelWriter is designed for writing fiction, so the formatting features available are limited to
|
||||
those relevant for this purpose. It is *not* suitable for technical writing, and it is *not* a
|
||||
full-featured Markdown editor.
|
||||
|
||||
It is also not intended as a tool for organising research for writing, and therefore lacks
|
||||
formatting features you may need for this purpose. The notes feature in novelWriter is mainly
|
||||
intended for character profiles and plot outlines.
|
||||
|
||||
Your novel project in novelWriter is organised as a collection of separate plain text documents
|
||||
instead of a single, large document. The idea is to make it easier to reorganise your project
|
||||
structure without having to cut and paste text between chapters and scenes.
|
||||
|
||||
There are two kinds of documents in your project: :term:`Novel Documents` are documents that are
|
||||
part of your story. The other kind of documents are :term:`Project Notes`, which are intended for
|
||||
your notes about your characters, your world building, and so on.
|
||||
|
||||
You can at any point split the individual documents by their headings up into multiple documents,
|
||||
or merge multiple documents into a single document. This makes it easier to use variations of the
|
||||
Snowflake_ method for writing. You can start by writing larger structure-focused documents, like
|
||||
for instance one document per act, and later effortlessly split these up into individual chapter or
|
||||
scene documents.
|
||||
|
||||
|
||||
.. _a_intro_features:
|
||||
|
||||
Key Features
|
||||
============
|
||||
|
||||
Below are some key features of novelWriter.
|
||||
|
||||
**Focus on writing**
|
||||
The aim of the user interface is to let you focus on writing instead of spending time formatting
|
||||
text. Formatting is therefore limited to a small set of formatting tags for simple things like
|
||||
text emphasis and paragraph alignment. Additional shortcodes are available for special
|
||||
formatting cases when you need them.
|
||||
|
||||
When you really want to focus on just writing, you can switch the editor into **Focus Mode**
|
||||
where only the text editor panel itself is visible, and the project structure view is hidden
|
||||
away.
|
||||
|
||||
**Keep an eye on your notes**
|
||||
The main window can optionally show a document viewer to the right of the editor. The viewer
|
||||
is intended for displaying another scene document, your character notes, plot notes, or any
|
||||
other document you may need to reference while writing. It is not intended as a preview panel
|
||||
for the document you're editing, but if you wish, you can also use it for this purpose.
|
||||
|
||||
**Organise your documents how you like**
|
||||
You can split your novel project up into as many individual documents as you want to. When you
|
||||
build the project into a manuscript, they are all glued together in the top-to-bottom order in
|
||||
which they appear in the project tree. You can use as few text documents as you like, but
|
||||
splitting the project up into chapters and scenes means you can easily reorder them using the
|
||||
drag-and-drop feature of the project tree. You can also start out with fewer documents and then
|
||||
later split them into multiple documents based on chapter and scene headings.
|
||||
|
||||
**Multi-novel project support**
|
||||
The main parts of your project is split up into top level special folders called "Root" folders.
|
||||
Your main story text lives in the "Novel" root folder. You can have multiple such folders in a
|
||||
project, and rename them to whatever you want. This allows you to keep a series of individual
|
||||
novels with the same characters and world building in the same project, and create manuscripts
|
||||
for them separately.
|
||||
|
||||
**Keep track of your story elements**
|
||||
All documents in your project can be assigned a :term:`tag` that you can then :term:`reference`
|
||||
from any other document or note. In fact, you can add a new tag under each heading of a note if
|
||||
you need to be able to reference specific sections of it, or you want to keep several topics or
|
||||
scenes in the same document.
|
||||
|
||||
**Get an overview of your story**
|
||||
It is not the documents themselves that define the chapters and scenes of your story, but the
|
||||
headings within them. In the **Outline View** on the main window you can see an outline of all
|
||||
the chapter and scene headings of each novel root folder in your project. If they have any
|
||||
references in them, like which character is in what chapter and scene, these are listed in
|
||||
additional columns.
|
||||
|
||||
You can also add a synopsis to each chapter or scene, which can be listed here as well. You have
|
||||
the option to add or remove columns of information from this outline. A subset of the outline
|
||||
information is also available in the **Novel View** as an alternative view to the project tree.
|
||||
|
||||
**Get an overview of your story elements**
|
||||
Under the document viewer panel you will find a series of tabs that show the different story
|
||||
elements you have created tags for. The tabs are sorted into **Characters**, **Plots**, etc,
|
||||
depending on which categories you are using in your story. This panel can be hidden to free up
|
||||
space when you don't need it.
|
||||
|
||||
**Assembling your manuscript**
|
||||
Whether you want to assemble a manuscript, or export all your notes, or generate an outline of
|
||||
your chapters and scenes with a synopsis included, you can use the **Build Manuscript** tool to
|
||||
do so. The tool lets you select what information you want to include in the generated document,
|
||||
and how it is formatted. You can send the result to a printer, or generate an Open Document or
|
||||
Word Document file that can be opened by most office type word processors. You can also generate
|
||||
the result as HTML, or Markdown, both suitable for further conversion to other formats.
|
||||
|
||||
|
||||
.. _a_intro_screenshots:
|
||||
|
||||
Screenshots
|
||||
===========
|
||||
|
||||
.. figure:: images/screenshot_light.png
|
||||
:class: dark-light
|
||||
|
||||
novelWriter with light colour theme
|
||||
|
||||
.. figure:: images/screenshot_dark.png
|
||||
:class: dark-light
|
||||
|
||||
novelWriter with dark colour theme
|
||||
@@ -1,100 +0,0 @@
|
||||
.. _a_reading:
|
||||
|
||||
******************
|
||||
What to Read First
|
||||
******************
|
||||
|
||||
The documentation of novelWriter is quite extensive. There are a lot of features to get used to,
|
||||
but you don't need to know all of them to get started.
|
||||
|
||||
The chapters below labelled "Essential Information" are the ones you need to know to use the
|
||||
application correctly. By "correctly" it is meant: in a way so novelWriter understands the basic
|
||||
structure of your text. It collects a lot of information from your text and uses it to display the
|
||||
structure of it in various ways to help you get an overview of your writing.
|
||||
|
||||
The chapters labelled "Recommended Reading" includes additional information on how the different
|
||||
parts if the application work and what the features do.
|
||||
|
||||
The "Optional" and "Lookup" chapters contain additional information or lookup tables that are not
|
||||
essential for using the application.
|
||||
|
||||
|
||||
Using novelWriter
|
||||
=================
|
||||
|
||||
In order to use novelWriter effectively, you need to know the basics of how it works. The following
|
||||
chapters will explain the main principles. They start with the basics, and get more detailed as you
|
||||
read on.
|
||||
|
||||
:ref:`a_breakdown` -- Essential Information
|
||||
This chapter explains the basics of how the application works and what it can and cannot do.
|
||||
|
||||
:ref:`a_ui_project` -- Recommended Reading
|
||||
This chapter will give you a more detailed explanation of how you can use the user interface
|
||||
components to organise and view your project work.
|
||||
|
||||
:ref:`a_ui_writing` -- Recommended Reading
|
||||
This chapter will give you a more detailed explanation of how the text editor and viewer work.
|
||||
|
||||
:ref:`a_fmt` -- Essential Information
|
||||
This chapter covers how you should format your text. The editor is plain text, so text
|
||||
formatting requires some basic markup. The structure of your novel is also inferred from how you
|
||||
use headings. Tags and references are implemented by special keywords.
|
||||
|
||||
:ref:`a_kb` -- Optional / Lookup
|
||||
This chapter lists all the keyboard shortcuts in novelWriter and what they do. Most of the
|
||||
shortcuts are also listed next to their menu entries inside the app, or in tool tips. This
|
||||
chapter is mostly for reference.
|
||||
|
||||
:ref:`a_typ` -- Optional
|
||||
This chapter gives you an overview of the special typographical symbols available in
|
||||
novelWriter. The auto-replace feature can handle the insertion of standard quote symbols for
|
||||
your language, and other special characters. If you use any symbols aside from these, their
|
||||
intended use is explained here.
|
||||
|
||||
|
||||
Organising Your Projects
|
||||
========================
|
||||
|
||||
In addition to managing a collection of plain text files, novelWriter can interpret and map the
|
||||
structure of your novel and show you additional information about its flow and content. In order
|
||||
to take advantage of these features, you must structure your text in a specific way and add some
|
||||
meta data for it to extract.
|
||||
|
||||
:ref:`a_proj` -- Essential Information
|
||||
This chapter explains how you organise the content of your project, and how to set up automated
|
||||
backups of your work.
|
||||
|
||||
:ref:`a_struct` -- Essential Information
|
||||
This chapter covers the way your novel's structure is encoded into the text documents. It
|
||||
explains how the different levels of headings are used, and some special formatting for
|
||||
different kinds of headings.
|
||||
|
||||
:ref:`a_references` -- Recommended Reading
|
||||
This chapter explains how you organise your notes, and how the Tags and References system works.
|
||||
This system lets you cross-link your documents in your project, and display these references in
|
||||
the application interface.
|
||||
|
||||
:ref:`a_manuscript` -- Recommended Reading
|
||||
This chapter explains how the **Manuscript Build** tool works, how you can control the way
|
||||
chapter titles are formatted, and how scene and section breaks are handled.
|
||||
|
||||
|
||||
Writing Aids
|
||||
============
|
||||
|
||||
We are in the process of adding tools to novelWriter that can be used to track more information
|
||||
about your project to assist in your writing. These tools are entirely optional and will not be in
|
||||
your way if you choose to not use them.
|
||||
|
||||
:ref:`a_story_structure` -- Writing Tools
|
||||
Story structure comments are a way to add meta data that can be used to analyse the structure of
|
||||
your writing. These comments can be exported to spreadsheets for analysis.
|
||||
|
||||
|
||||
Additional Details & Technical Topics
|
||||
=====================================
|
||||
|
||||
The Additional Details and the Technical Topics sections contain more in-depth information about
|
||||
how various bits of novelWriter works. This information is not essential to getting started using
|
||||
novelWriter.
|
||||
@@ -1,170 +0,0 @@
|
||||
.. _a_started:
|
||||
|
||||
**********************
|
||||
Setup and Installation
|
||||
**********************
|
||||
|
||||
.. _Enchant: http://rrthomas.github.io/enchant/
|
||||
.. _GitHub: https://github.com/vkbo/novelWriter
|
||||
.. _Downloads page: https://download.novelwriter.io
|
||||
.. _PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter
|
||||
.. _Pre-Release PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter-pre
|
||||
.. _PyPi: https://pypi.org/project/novelWriter/
|
||||
.. _python.org: https://www.python.org/downloads/
|
||||
.. _Releases: https://github.com/vkbo/novelWriter/releases
|
||||
.. _AppImage: https://appimage.org/
|
||||
|
||||
Ready-made packages and installers for novelWriter are available for all major platforms, including
|
||||
Linux, Windows and MacOS, from the `Downloads page`_. See below for additional install instructions
|
||||
for each platform.
|
||||
|
||||
You can also install novelWriter from the Python Package Index (PyPi_). See :ref:`a_started_pip`.
|
||||
Installing from PyPi does not set up icon launchers, so you will either have to do this yourself,
|
||||
or start novelWriter from the command line.
|
||||
|
||||
Spell checking in novelWriter is provided by a third party library called Enchant_. Generally, it
|
||||
should pull dictionaries from your operating system automatically. However, on Windows they must be
|
||||
installed manually. See :ref:`a_custom_dict` for more details.
|
||||
|
||||
|
||||
.. _a_started_windows:
|
||||
|
||||
Installing on Windows
|
||||
=====================
|
||||
|
||||
You can install novelWriter with both Python and library dependencies embedded using the Windows
|
||||
Installer (setup.exe) file from the `Downloads page`_, or from the Releases_ page on GitHub_.
|
||||
Installing it should be straightforward.
|
||||
|
||||
If you have any issues, try uninstalling the previous version and making a fresh install. If you
|
||||
already had a version installed via a different method, you should uninstall that first as having
|
||||
multiple installations has been known to cause problems.
|
||||
|
||||
|
||||
.. _a_started_linux:
|
||||
|
||||
Installing on Linux
|
||||
===================
|
||||
|
||||
A Debian package can be downloaded from the `Downloads page`_, or from the Releases_ page on
|
||||
GitHub_. This package should work on both Debian, Ubuntu and Linux Mint, at least.
|
||||
|
||||
If you prefer, you can also add the novelWriter repository on Launchpad to your package manager.
|
||||
The Launchpad packages `are signed by the author <https://launchpad.net/~vkbo>`__.
|
||||
|
||||
|
||||
Ubuntu
|
||||
------
|
||||
|
||||
You can add the Ubuntu PPA_ and install novelWriter with the following commands.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo add-apt-repository ppa:vkbo/novelwriter
|
||||
sudo apt update
|
||||
sudo apt install novelwriter
|
||||
|
||||
If you want the `Pre-Release PPA`_ instead, add the ``ppa:vkbo/novelwriter-pre`` repository.
|
||||
|
||||
|
||||
Debian and Mint
|
||||
---------------
|
||||
|
||||
Since this is a pure Python package, the Launchpad PPA can in principle also be used on Debian or
|
||||
Mint. However, the above command will fail to add the signing key, as it is Ubuntu-specific.
|
||||
|
||||
Instead, run the following commands to add the repository and key:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/novelwriter-ppa-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F19F1FCE50043114
|
||||
echo "deb [signed-by=/usr/share/keyrings/novelwriter-ppa-keyring.gpg] http://ppa.launchpad.net/vkbo/novelwriter/ubuntu noble main" | sudo tee /etc/apt/sources.list.d/novelwriter.list
|
||||
|
||||
Then run the update and install commands as for Ubuntu:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt update
|
||||
sudo apt install novelwriter
|
||||
|
||||
.. tip::
|
||||
If you get an error message like ``gpg: failed to create temporary file`` when importing the key
|
||||
from the Ubuntu keyserver, try creating the folder it fails on, and import the key again:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo mkdir /root/.gnupg/
|
||||
|
||||
|
||||
AppImage Releases
|
||||
-----------------
|
||||
|
||||
For other Linux distros than the ones mentioned above, the primary option is AppImage_. These are
|
||||
completely standalone images for the app that include the necessary environment to run novelWriter.
|
||||
They can of course be run on any Linux distro, if you prefer this to native packages.
|
||||
|
||||
.. note::
|
||||
novelWriter generally doesn't support Python versions that have reached end of life. If your
|
||||
Linux distro still uses older Python versions and novelWriter won't run, you may want to try the
|
||||
AppImage instead.
|
||||
|
||||
|
||||
.. _a_started_macos:
|
||||
|
||||
Installing on MacOS
|
||||
===================
|
||||
|
||||
You can install novelWriter with both its Python and library dependencies embedded using the DMG
|
||||
application image file from the `Downloads page`_, or from the Releases_ page on GitHub_.
|
||||
Installing it should be straightforward.
|
||||
|
||||
* Download the DMG file and open it. Then drag the novelWriter icon to the :guilabel:`Applications`
|
||||
folder on the right. This will install it into your :guilabel:`Applications`.
|
||||
* The first time you try to launch it, it will say that the bundle cannot be verified, simply press
|
||||
the :guilabel:`Open` button to add an exception.
|
||||
* If you are not presented with an :guilabel:`Open` button in the dialog, launch the application
|
||||
again by right clicking on the application in Finder and selecting :guilabel:`Open` from the
|
||||
context menu.
|
||||
|
||||
The context menu can also be accessed by option-clicking if you have a one button mouse. This is
|
||||
done by holding down the option key on your keyboard and clicking on the application in Finder.
|
||||
|
||||
.. note::
|
||||
The novelWriter DMG is not signed because Apple doesn't currently provide a way for non-profit
|
||||
open source projects to properly sign their installers. The novelWriter project doesn't have the
|
||||
funding to pay for a commercial software signing certificate.
|
||||
|
||||
|
||||
.. _a_started_pip:
|
||||
|
||||
Installing from PyPi
|
||||
====================
|
||||
|
||||
novelWriter is also available on the Python Package Index, or PyPi_. This install method works on
|
||||
all supported operating systems with a suitable Python environment.
|
||||
|
||||
To install from PyPi you must first have the ``python`` and ``pip`` commands available on your
|
||||
system. You can download Python from `python.org`_. It is recommended that you install the latest
|
||||
version. If you are on Windows, also make sure to select the "Add Python to PATH" option during
|
||||
installation.
|
||||
|
||||
To install novelWriter from PyPi, use the following command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install novelwriter
|
||||
|
||||
To upgrade an existing installation, use:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install --upgrade novelwriter
|
||||
|
||||
When installing via pip, novelWriter can be launched from command line with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
novelwriter
|
||||
|
||||
Make sure the install location for pip is in your PATH variable. This is not always the case by
|
||||
default, and then you may get a "Not Found" error when running the ``novelwriter`` command.
|
||||
@@ -1,2 +0,0 @@
|
||||
# French translation authors, one name per line
|
||||
Jean-Michel Heras
|
||||
3
docs/source/locales/config.toml
Normal file
@@ -0,0 +1,3 @@
|
||||
[fr]
|
||||
version = "2.7"
|
||||
authors = ["Jean-Michel Heras", "Veronica Berglyd Olsen"]
|
||||
223
docs/source/locales/fr/LC_MESSAGES/features/dialogue.po
Normal file
@@ -0,0 +1,223 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 22:09+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/features/dialogue.rst:5
|
||||
msgid "Dialogue Highlighting"
|
||||
msgstr "Mise en évidence du dialogue"
|
||||
|
||||
#: ../../source/features/dialogue.rst:7
|
||||
msgid ""
|
||||
"Dialogue recognition and colour highlighting is available both while "
|
||||
"you're writing and in generated manuscript documents."
|
||||
msgstr ""
|
||||
"La reconnaissance des dialogues et le surlignage des couleurs sont "
|
||||
"disponibles à la fois pendant que vous écrivez et dans les documents "
|
||||
"manuscrits générés."
|
||||
|
||||
#: ../../source/features/dialogue.rst:10
|
||||
msgid ""
|
||||
"The default language settings in UmbraEdit are for English. That "
|
||||
"includes the dialogue highlighting settings. But many dialogue styles "
|
||||
"are supported. You can tune a number of settings to fit your language "
|
||||
"and style preferences in the \"Text Highlighting\" section in "
|
||||
"**Preferences**. You can mix and match these settings."
|
||||
msgstr ""
|
||||
"Les paramètres linguistiques par défaut de UmbraEdit sont ceux de "
|
||||
"l'anglais. Cela inclut les paramètres de mise en évidence des dialogues. "
|
||||
"Mais de nombreux styles de dialogue sont pris en charge. Vous pouvez "
|
||||
"ajuster un certain nombre de paramètres en fonction de vos préférences "
|
||||
"linguistiques et stylistiques dans la section « Surlignage du texte » "
|
||||
"des **Préférences**. Vous pouvez combiner ces paramètres.\n"
|
||||
"\n"
|
||||
"Traduit avec DeepL.com (version gratuite)"
|
||||
|
||||
#: ../../source/features/dialogue.rst:17
|
||||
msgid "The **Text Highlighting** section of **Preferences**."
|
||||
msgstr "La section **Mise en évidence du texte** des **Préférences**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:21
|
||||
msgid "Quoted Dialogue"
|
||||
msgstr "Dialogue entre guillemets"
|
||||
|
||||
#: ../../source/features/dialogue.rst:23
|
||||
msgid ""
|
||||
"By default, dialogue highlighting is enabled for the double quote "
|
||||
"symbols you have defined in the **Quotation Style** section of "
|
||||
"**Preferences**."
|
||||
msgstr ""
|
||||
"Par défaut, la mise en évidence du dialogue est activée pour les "
|
||||
"symboles de guillemets doubles que vous avez définis dans la section "
|
||||
"**Style de guillemets** des **Préférences**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:28
|
||||
msgid "The **Quotation Style** section of **Preferences**."
|
||||
msgstr "La section **Style de guillemets** des **Préférences**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:30
|
||||
msgid ""
|
||||
"You can change which quote symbols are highlighted by selecting one of "
|
||||
"\"None\", \"Single\", \"Double\", or \"Both\" from the \"Highlight "
|
||||
"dialogue\" setting under **Text Highlighting**."
|
||||
msgstr ""
|
||||
"Vous pouvez modifier les symboles de guillemets mis en évidence en "
|
||||
"sélectionnant « Aucun », « Simple », « Double » ou « Les deux » dans le "
|
||||
"paramètre « Mettre les dialogues en évidence » sous **Surlignage du "
|
||||
"texte**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:33
|
||||
msgid ""
|
||||
"You can also enable or disable the \"Allow open-ended dialogue\" setting "
|
||||
"to allow for the style where multi-paragraph dialogue is not closed "
|
||||
"until the last paragraph."
|
||||
msgstr ""
|
||||
"Vous pouvez également activer ou désactiver le paramètre « Autoriser les "
|
||||
"dialogues ouverts » pour autoriser le style dans lequel les dialogues à "
|
||||
"plusieurs paragraphes ne sont pas clos avant le dernier paragraphe."
|
||||
|
||||
#: ../../source/features/dialogue.rst:36
|
||||
msgid "Limitations"
|
||||
msgstr "Restrictions"
|
||||
|
||||
#: ../../source/features/dialogue.rst:38
|
||||
msgid ""
|
||||
"Dialogue highlighting for single quotes is difficult to process when the "
|
||||
"same single quote symbol is also used for apostrophes. There isn't a "
|
||||
"good solution to this. Your best option in the cases where the "
|
||||
"highlighting is wrong is to insert an alternative apostrophe symbol "
|
||||
"instead. See :ref:`docs_more_typographical_symbols_apostrophe` for more "
|
||||
"details."
|
||||
msgstr ""
|
||||
"La mise en évidence du dialogue pour les guillemets simples est "
|
||||
"difficile à traiter lorsque le même symbole de guillemet simple est "
|
||||
"également utilisé pour les apostrophes. Il n'existe pas de bonne "
|
||||
"solution à ce problème. Votre meilleure option dans les cas où la mise "
|
||||
"en évidence est erronée est d'insérer un symbole d'apostrophe alternatif "
|
||||
"à la place. Voir :ref:`docs_more_typographical_symbols_apostrophe` pour "
|
||||
"plus de détails."
|
||||
|
||||
#: ../../source/features/dialogue.rst:45
|
||||
msgid "Alternative Dialogue"
|
||||
msgstr "Dialogue alternatif"
|
||||
|
||||
#: ../../source/features/dialogue.rst:47
|
||||
msgid ""
|
||||
"You can use the \"Alternative dialogue symbols\" setting for custom "
|
||||
"dialogue wrapper symbols. These are highlighted in a different colour "
|
||||
"than regular dialogue."
|
||||
msgstr ""
|
||||
"Vous pouvez utiliser le paramètre « Symboles de dialogue alternatifs » "
|
||||
"pour les symboles de dialogue personnalisés. Ceux-ci sont mis en "
|
||||
"évidence dans une couleur différente de celle des dialogues normaux."
|
||||
|
||||
#: ../../source/features/dialogue.rst:50
|
||||
msgid ""
|
||||
"The intended use case here is if you use an alternative style to "
|
||||
"distinguish a different style of communication. The feature idea came "
|
||||
"from a science fiction series where mind-to-mind communication used a "
|
||||
"different quotation style."
|
||||
msgstr ""
|
||||
"Le cas d'utilisation prévu ici est celui où vous utilisez un style "
|
||||
"alternatif pour distinguer un style de communication différent. L'idée "
|
||||
"est venue d'une série de science-fiction dans laquelle la communication "
|
||||
"d'esprit à esprit utilisait un style de citation différent."
|
||||
|
||||
#: ../../source/features/dialogue.rst:56
|
||||
msgid "Dialogue Line Symbols"
|
||||
msgstr "Symboles des lignes de dialogue"
|
||||
|
||||
#: ../../source/features/dialogue.rst:58
|
||||
msgid ""
|
||||
"In some languages, a single symbol at the start of a paragraph can "
|
||||
"indicate that the whole paragraph is dialogue. For instance, this symbol "
|
||||
"can be a short dash (en dash)."
|
||||
msgstr ""
|
||||
"Dans certaines langues, un seul symbole au début d'un paragraphe peut "
|
||||
"indiquer que tout le paragraphe est un dialogue. Par exemple, ce symbole "
|
||||
"peut être un tiret demi-cadratin."
|
||||
|
||||
#: ../../source/features/dialogue.rst:63
|
||||
msgid "An example of dialogue starting with a short dash."
|
||||
msgstr "Exemple de dialogue commençant par un tiret demi-cadratin."
|
||||
|
||||
#: ../../source/features/dialogue.rst:65
|
||||
msgid ""
|
||||
"You can enable this feature by adding the symbols to the \"Dialogue line "
|
||||
"symbols\" setting. Multiple symbols are allowed."
|
||||
msgstr ""
|
||||
"Vous pouvez activer cette fonction en ajoutant les symboles au paramètre "
|
||||
"« Symboles de la ligne de dialogue ». Plusieurs symboles sont autorisés."
|
||||
|
||||
#: ../../source/features/dialogue.rst:70
|
||||
msgid "Dialogue with Narrator Break"
|
||||
msgstr "Dialogue avec incise"
|
||||
|
||||
#: ../../source/features/dialogue.rst:72
|
||||
msgid ""
|
||||
"The dialogue symbol setting will not detect if the dialogue ends in the "
|
||||
"paragraph. In some styles there is no way to actually indicate the "
|
||||
"switch from dialogue to narration; in others there are. These a narrator "
|
||||
"break symbols are usually dashes. You can select one of the supported "
|
||||
"dash symbols for narrator breaks. These can be used with any of the "
|
||||
"above dialogue recognition settings."
|
||||
msgstr ""
|
||||
"Le réglage du symbole de dialogue ne détecte pas si le dialogue se "
|
||||
"termine dans le paragraphe. Dans certains styles, il n'y a aucun moyen "
|
||||
"d'indiquer le passage du dialogue à la narration ; dans d'autres, il y "
|
||||
"en a un. Ces symboles de rupture avec le narrateur sont généralement des "
|
||||
"tirets. Vous pouvez sélectionner l'un des symboles de tirets pris en "
|
||||
"charge pour les ruptures de narration. Ces symboles peuvent être "
|
||||
"utilisés avec n'importe lequel des paramètres de reconnaissance de "
|
||||
"dialogue ci-dessus."
|
||||
|
||||
#: ../../source/features/dialogue.rst:79
|
||||
msgid ""
|
||||
"An example of dialogue starting with a short dash and a long dash "
|
||||
"narrator break."
|
||||
msgstr ""
|
||||
"Exemple de dialogue commençant par un tiret demi-cadratin, une incise "
|
||||
"par un tiret cadratin."
|
||||
|
||||
#: ../../source/features/dialogue.rst:83
|
||||
msgid "Alternating Dialogue and Narration"
|
||||
msgstr "Dialogue et narration alternés"
|
||||
|
||||
#: ../../source/features/dialogue.rst:85
|
||||
msgid ""
|
||||
"The alternating dialogue and narration style is supported with the "
|
||||
"\"Alternating dialogue/narration symbol\" setting. It can be set to one "
|
||||
"of the supported dashes. This style will switch into dialogue mode when "
|
||||
"it first encounters the selected dash in a paragraph, and switch back "
|
||||
"out when it sees the next one, and so forth."
|
||||
msgstr ""
|
||||
"Le style de dialogue et de narration alternés est pris en charge par le "
|
||||
"paramètre « Symbole de dialogue/narration alternés ». Il peut être "
|
||||
"défini sur l'un des tirets pris en charge. Ce style passe en mode "
|
||||
"dialogue lorsqu'il rencontre pour la première fois le tiret sélectionné "
|
||||
"dans un paragraphe, et revient en mode dialogue lorsqu'il rencontre le "
|
||||
"tiret suivant, et ainsi de suite."
|
||||
|
||||
#: ../../source/features/dialogue.rst:92
|
||||
msgid "An example of alternating dialogue and narration using a long dash."
|
||||
msgstr ""
|
||||
"Exemple d'alternance de dialogue et de narration à l'aide d'un tiret "
|
||||
"cadratin."
|
||||
221
docs/source/locales/fr/LC_MESSAGES/features/story_comments.po
Normal file
@@ -0,0 +1,221 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 22:28+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/features/story_comments.rst:5
|
||||
msgid "Story Comments"
|
||||
msgstr "Commentaires sur l'histoire"
|
||||
|
||||
#: ../../source/features/story_comments.rst:7
|
||||
msgid ""
|
||||
"A special set of comment styles allow for annotating your text with "
|
||||
"structure information. There are two styles of comments available. They "
|
||||
"are an extension to regular comments as described in :ref:"
|
||||
"`docs_usage_comments`."
|
||||
msgstr ""
|
||||
"Un ensemble spécial de styles de commentaires permet d'annoter votre "
|
||||
"texte avec des informations sur la structure. Deux styles de "
|
||||
"commentaires sont disponibles. Ils sont une extension des commentaires "
|
||||
"normaux tels que décrits dans :ref:`docs_usage_comments`."
|
||||
|
||||
#: ../../source/features/story_comments.rst:15
|
||||
msgid "Story Structure Comments"
|
||||
msgstr "Commentaires sur la structure de l'histoire"
|
||||
|
||||
#: ../../source/features/story_comments.rst:17
|
||||
msgid ""
|
||||
"You can annotate story structure by using the ``%Story`` style of "
|
||||
"comment. To use the feature, make the first word of a comment ``Story``, "
|
||||
"followed by a period, a structure term, a colon, a space and the text "
|
||||
"for that term."
|
||||
msgstr ""
|
||||
"Vous pouvez annoter la structure de l'histoire en utilisant le style de "
|
||||
"commentaire ``%Story``. Pour utiliser cette fonctionnalité, le premier "
|
||||
"mot du commentaire doit être ``Story``, suivi d'un point, d'un terme de "
|
||||
"structure, de deux points, d'un espace et du texte correspondant à ce "
|
||||
"terme."
|
||||
|
||||
#: ../../source/features/story_comments.rst:23
|
||||
#: ../../source/features/story_comments.rst:88
|
||||
msgid "Usage"
|
||||
msgstr "Utilisation"
|
||||
|
||||
#: ../../source/features/story_comments.rst:25
|
||||
msgid ""
|
||||
"The story term can be anything that you want to track in the manuscript. "
|
||||
"This construct is intended to make it easier to extract metadata from a "
|
||||
"work to perform a structural analysis of the story."
|
||||
msgstr ""
|
||||
"Le terme de l'histoire peut être n'importe quoi que vous voulez suivre "
|
||||
"dans le manuscrit. Cette construction est destinée à faciliter "
|
||||
"l'extraction des métadonnées d'une œuvre afin d'effectuer une analyse "
|
||||
"structurelle de l'histoire."
|
||||
|
||||
#: ../../source/features/story_comments.rst:28
|
||||
msgid ""
|
||||
"There are probably as many ways to examine story structure as there are "
|
||||
"authors and editors combined. For this reason the story tag is flexible. "
|
||||
"You can use any terms you want and track any aspect of the story that "
|
||||
"serves your purposes."
|
||||
msgstr ""
|
||||
"Il y a probablement autant de façons d'examiner la structure d'une "
|
||||
"histoire qu'il y a d'auteurs et d'éditeurs réunis. C'est la raison pour "
|
||||
"laquelle l'étiquette « histoire » est flexible. Vous pouvez utiliser les "
|
||||
"termes de votre choix et suivre tous les aspects de l'histoire qui vous "
|
||||
"intéressent."
|
||||
|
||||
#: ../../source/features/story_comments.rst:32
|
||||
msgid ""
|
||||
"An example method has been advanced by Shawn Coyne in *The Story Grid*. "
|
||||
"This method asserts that a story is composed of \"beats\", and that each "
|
||||
"beat has an inciting incident, a complication, a crisis, and a "
|
||||
"resolution. One might capture these elements of a beat where a character "
|
||||
"overcomes their fear of giving a speech as:"
|
||||
msgstr ""
|
||||
"Un exemple de méthode a été proposé par Shawn Coyne dans *The Story "
|
||||
"Grid*. Cette méthode affirme qu'une histoire est composée de « temps » "
|
||||
"et que chaque temps comporte un incident déclencheur, une complication, "
|
||||
"une crise et une résolution. On pourrait saisir les éléments d'un temps "
|
||||
"où un personnage surmonte sa peur de faire un discours comme suit :"
|
||||
|
||||
#: ../../source/features/story_comments.rst:37
|
||||
#: ../../source/features/story_comments.rst:94
|
||||
msgid ":bdg-info:`Example`"
|
||||
msgstr ":bdg-info:`Exemple`"
|
||||
|
||||
#: ../../source/features/story_comments.rst:50
|
||||
msgid ""
|
||||
"Other analytical models propose tracking a scene's pace, how it affects "
|
||||
"the mood of the story, or which element(s) of the story's genre are "
|
||||
"being satisfied. An author can use this mechanism to track any element "
|
||||
"of a scene. Some examples include time of day, how much time passes in "
|
||||
"the scene, or even the physical form of a shape-shifting character. If a "
|
||||
"story involves magic, one could track which wand a main character has in "
|
||||
"hand. It's up to tha author."
|
||||
msgstr ""
|
||||
"D'autres modèles analytiques proposent de suivre le rythme d'une scène, "
|
||||
"la façon dont il affecte l'ambiance de l'histoire ou les éléments du "
|
||||
"genre de l'histoire qui sont satisfaits. Un auteur peut utiliser ce "
|
||||
"mécanisme pour suivre n'importe quel élément d'une scène. Il peut "
|
||||
"s'agir, par exemple, de l'heure, du temps qui s'écoule dans la scène ou "
|
||||
"même de la forme physique d'un personnage qui change de forme. Si "
|
||||
"l'histoire fait appel à la magie, il est possible de savoir quelle "
|
||||
"baguette le personnage principal tient en main. C'est à l'auteur de "
|
||||
"décider."
|
||||
|
||||
#: ../../source/features/story_comments.rst:56
|
||||
msgid ""
|
||||
"When the story and other scene metadata is extracted into a tabular "
|
||||
"form, it is possible to get a comprehensive overview of the story and to "
|
||||
"identify possible issues. For example, so many fast-paced scenes without "
|
||||
"a break that readers might become fatigued or over-stimulated."
|
||||
msgstr ""
|
||||
"Lorsque les métadonnées de l'histoire et d'autres scènes sont extraites "
|
||||
"sous forme de tableau, il est possible d'obtenir une vue d'ensemble de "
|
||||
"l'histoire et d'identifier les problèmes éventuels. Par exemple, un si "
|
||||
"grand nombre de scènes au rythme rapide, sans pause, que les lecteurs "
|
||||
"risquent de se fatiguer ou d'être trop stimulés."
|
||||
|
||||
#: ../../source/features/story_comments.rst:62
|
||||
#: ../../source/features/story_comments.rst:106
|
||||
msgid "Output"
|
||||
msgstr "Production"
|
||||
|
||||
#: ../../source/features/story_comments.rst:64
|
||||
msgid ""
|
||||
"The story structure comments can be included in the manuscript, and are "
|
||||
"formatted similarly to the synopsis comments:"
|
||||
msgstr ""
|
||||
"Les commentaires sur la structure de l'histoire peuvent être inclus dans "
|
||||
"le manuscrit et sont formatés de la même manière que les commentaires "
|
||||
"sur le synopsis :"
|
||||
|
||||
#: ../../source/features/story_comments.rst:69
|
||||
msgid "A set of story structure comments as shown in the Manuscript tool."
|
||||
msgstr ""
|
||||
"Une série de commentaires sur la structure de l'histoire, tels qu'ils "
|
||||
"apparaissent dans l'outil Manuscrit."
|
||||
|
||||
#: ../../source/features/story_comments.rst:71
|
||||
msgid ""
|
||||
"When you export your project data from the Outline View, all story "
|
||||
"structure terms are added as columns to the exported file, which can "
|
||||
"then be opened in the spread sheet software of your choice."
|
||||
msgstr ""
|
||||
"Lorsque vous exportez les données de votre projet à partir de la vue en "
|
||||
"plan, tous les termes de la structure du récit sont ajoutés en tant que "
|
||||
"colonnes au fichier exporté, qui peut ensuite être ouvert dans le "
|
||||
"logiciel de feuille de calcul de votre choix."
|
||||
|
||||
#: ../../source/features/story_comments.rst:76
|
||||
msgid "Story Notes"
|
||||
msgstr "Notes sur l'histoire"
|
||||
|
||||
#: ../../source/features/story_comments.rst:78
|
||||
msgid ""
|
||||
"Story notes are similar to story structure comments, but have no "
|
||||
"predefined meaning. Essentially they are a generalisation of the story "
|
||||
"structure comment, and the only point of having this additional format "
|
||||
"is to allow you do filter them in and out of your manuscript "
|
||||
"independently."
|
||||
msgstr ""
|
||||
"Les notes de récit sont similaires aux commentaires de structure de "
|
||||
"récit, mais n'ont pas de signification prédéfinie. Il s'agit "
|
||||
"essentiellement d'une généralisation du commentaire de structure, et le "
|
||||
"seul intérêt de ce format supplémentaire est de vous permettre de les "
|
||||
"filtrer dans et hors de votre manuscrit de manière indépendante."
|
||||
|
||||
#: ../../source/features/story_comments.rst:82
|
||||
msgid ""
|
||||
"You can annotate story notes by using the ``%Note`` style of comment. To "
|
||||
"use the feature, make the first word of a comment ``Note``, followed by "
|
||||
"a period, a term, a colon, a space and the text for the note."
|
||||
msgstr ""
|
||||
"Vous pouvez annoter les notes d'articles en utilisant le style de "
|
||||
"commentaire ``%Note``. Pour utiliser cette fonctionnalité, le premier "
|
||||
"mot du commentaire doit être « Note », suivi d'un point, d'un terme, de "
|
||||
"deux points, d'un espace et du texte de la note."
|
||||
|
||||
#: ../../source/features/story_comments.rst:90
|
||||
msgid ""
|
||||
"These notes are free form, but one intended use case is to add "
|
||||
"consistency annotations to your text to remind yourself where you have "
|
||||
"described something that must be checked against other parts of your "
|
||||
"text later on."
|
||||
msgstr ""
|
||||
"Ces notes sont libres, mais l'une des utilisations prévues est d'ajouter "
|
||||
"des annotations de cohérence à votre texte pour vous rappeler où vous "
|
||||
"avez décrit quelque chose qui doit être vérifié ultérieurement par "
|
||||
"rapport à d'autres parties de votre texte."
|
||||
|
||||
#: ../../source/features/story_comments.rst:108
|
||||
msgid ""
|
||||
"Story notes are included in the manuscript in exactly the same way story "
|
||||
"structure comments are, but has a separate inclusion setting in the "
|
||||
"build settings. They are also included in CSV exports from the **Outline "
|
||||
"View**."
|
||||
msgstr ""
|
||||
"Les notes de récit sont incluses dans le manuscrit de la même manière "
|
||||
"que les commentaires sur la structure du récit, mais elles ont un "
|
||||
"paramètre d'inclusion distinct dans les paramètres de construction. "
|
||||
"Elles sont également incluses dans les exportations CSV à partir de la "
|
||||
"**Vue d'ensemble**."
|
||||
@@ -1,16 +1,16 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2024
|
||||
# This file is distributed under the same license as the novelWriter
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: novelWriter 2.6b1\n"
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-03 16:59+0100\n"
|
||||
"PO-Revision-Date: 2025-02-03 17:00+0100\n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-27 20:56+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
@@ -21,33 +21,33 @@ msgstr ""
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/index.rst:40
|
||||
msgid "Main Page"
|
||||
msgstr "Page d'accueil"
|
||||
#: ../../source/index.rst:32
|
||||
msgid "More Documents"
|
||||
msgstr "Plus d'informations"
|
||||
|
||||
#: ../../source/index.rst:45
|
||||
msgid "Introduction"
|
||||
msgstr "Introduction"
|
||||
#: ../../source/index.rst:38
|
||||
msgid "Getting Started"
|
||||
msgstr "Pour commencer"
|
||||
|
||||
#: ../../source/index.rst:56
|
||||
msgid "Using novelWriter"
|
||||
msgstr "Utiliser novelWriter"
|
||||
#: ../../source/index.rst:53
|
||||
msgid "The User Interface"
|
||||
msgstr "Interface utilisateur"
|
||||
|
||||
#: ../../source/index.rst:68
|
||||
msgid "Organising Your Project"
|
||||
msgstr "Organiser votre projet"
|
||||
#: ../../source/index.rst:64
|
||||
msgid "Other Features"
|
||||
msgstr "Autres fonctionnalités"
|
||||
|
||||
#: ../../source/index.rst:78
|
||||
msgid "Additional Details"
|
||||
msgstr "Détails additionnels"
|
||||
#: ../../source/index.rst:72
|
||||
msgid "In-Depth Topics"
|
||||
msgstr "En détail"
|
||||
|
||||
#: ../../source/index.rst:87
|
||||
#: ../../source/index.rst:82
|
||||
msgid "Technical Topics"
|
||||
msgstr "Sujets techniques"
|
||||
msgstr "Rubriques techniques"
|
||||
|
||||
#: ../../source/index.rst:3
|
||||
msgid "User Guide"
|
||||
msgstr "Guide de l'utilisateur"
|
||||
msgstr "Guide d'utilisation"
|
||||
|
||||
#: ../../source/index.rst:5
|
||||
msgid "**Release Version:** |release|"
|
||||
@@ -55,91 +55,66 @@ msgstr "**Version :** |release|"
|
||||
|
||||
#: ../../source/index.rst:6
|
||||
msgid "**Updated:** |today|"
|
||||
msgstr "**Mise à jour:** |today|"
|
||||
msgstr "**Mise à jour :** |today|"
|
||||
|
||||
#: ../../source/index.rst:8
|
||||
msgid ""
|
||||
"novelWriter is an open source plain text editor designed for writing "
|
||||
"UmbraEdit is an open source plain text editor designed for writing "
|
||||
"novels assembled from individual text documents. It uses a minimal "
|
||||
"formatting syntax inspired by Markdown, and adds a meta data syntax for "
|
||||
"comments, synopsis, and cross-referencing. It is designed to be a simple "
|
||||
"text editor that allows for easy organisation of text and notes, using "
|
||||
"human readable text files as storage for robustness."
|
||||
msgstr ""
|
||||
"novelWriter est un éditeur de texte brut open source conçu pour écrire des "
|
||||
"romans assemblés à partir de documents texte individuels. Il utilise une "
|
||||
"syntaxe de formatage minimale inspirée de Markdown, et ajoute une syntaxe "
|
||||
"de métadonnées pour les commentaires, les synopsis et les références "
|
||||
"croisées. Il est conçu pour être un éditeur de texte simple qui permet "
|
||||
"d'organiser facilement le texte et les notes, en utilisant des fichiers "
|
||||
"texte lisibles par l'homme comme stockage pour plus de robustesse."
|
||||
"UmbraEdit est un éditeur de texte brut open source conçu pour écrire "
|
||||
"des romans assemblés à partir de documents texte individuels. Il utilise "
|
||||
"une syntaxe de formatage minimale inspirée de Markdown, et ajoute une "
|
||||
"syntaxe de métadonnées pour les commentaires, les synopsis et les "
|
||||
"références croisées. Il est conçu pour être un éditeur de texte simple "
|
||||
"qui permet d'organiser facilement le texte et les notes, en utilisant des "
|
||||
"fichiers texte lisibles par l'homme comme stockage pour plus de "
|
||||
"robustesse."
|
||||
|
||||
#: ../../source/index.rst:19
|
||||
msgid ""
|
||||
"The project storage is suitable for version control software, and also "
|
||||
"well suited for file synchronisation tools. All text is saved as plain "
|
||||
"text files, and your project data as standard data formats in XML and "
|
||||
"JSON. See :ref:`a_storage` for more details."
|
||||
msgstr ""
|
||||
"Le stockage du projet est adapté aux logiciels de contrôle de version, "
|
||||
"ainsi qu'aux outils de synchronisation de fichiers.Tout le texte est "
|
||||
"sauvegardé sous forme de fichiers de texte brut, et les données de votre "
|
||||
"projet sous les formats de données standard XML et JSON.Voir :ref:"
|
||||
"`a_storage` pour plus de détails."
|
||||
|
||||
#: ../../source/index.rst:23
|
||||
msgid ""
|
||||
"Any operating system that has Python 3 and the Qt 6 libraries should be "
|
||||
"able to run novelWriter. It runs fine on Linux, Windows and MacOS, and "
|
||||
"users have tested it on other platforms as well. See :ref:`a_started` for "
|
||||
"more details."
|
||||
msgstr ""
|
||||
"Tout système d'exploitation disposant de Python 3 et des bibliothèques Qt "
|
||||
"6 devrait pouvoir faire fonctionner novelWriter. Il fonctionne "
|
||||
"correctement sous Linux, Windows et MacOS, et des utilisateurs l'ont "
|
||||
"également testé sur d'autres plateformes. Voir :ref:`a_started` pour plus "
|
||||
"de détails."
|
||||
|
||||
#: ../../source/index.rst:27
|
||||
msgid "**Useful Links**"
|
||||
msgstr "**Liens utiles**"
|
||||
|
||||
#: ../../source/index.rst:21
|
||||
msgid "Website: https://umbraedit.io"
|
||||
msgstr "Site web : https://umbraedit.io"
|
||||
|
||||
#: ../../source/index.rst:22
|
||||
msgid "Documentation: https://docs.umbraedit.io"
|
||||
msgstr "Documentation: https://docs.umbraedit.io"
|
||||
|
||||
#: ../../source/index.rst:23
|
||||
msgid "Public Releases: https://releases.umbraedit.io"
|
||||
msgstr "Public Releases: https://releases.umbraedit.io"
|
||||
|
||||
#: ../../source/index.rst:24
|
||||
msgid "Internationalisation: https://crowdin.com/project/umbraedit"
|
||||
msgstr "Internationalisation: https://crowdin.com/project/umbraedit"
|
||||
|
||||
#: ../../source/index.rst:25
|
||||
msgid "Source Code: https://github.com/saga-soft/UmbraEdit"
|
||||
msgstr "Code source : https://github.com/saga-soft/UmbraEdit"
|
||||
|
||||
#: ../../source/index.rst:26
|
||||
msgid "Source Releases: https://github.com/saga-soft/UmbraEdit/releases"
|
||||
msgstr "Source Releases: https://github.com/saga-soft/UmbraEdit/releases"
|
||||
|
||||
#: ../../source/index.rst:27
|
||||
msgid "Issue Tracker: https://github.com/saga-soft/UmbraEdit/issues"
|
||||
msgstr "Issue Tracker: https://github.com/saga-soft/UmbraEdit/issues"
|
||||
|
||||
#: ../../source/index.rst:28
|
||||
msgid "Feature Discussions: https://github.com/saga-soft/UmbraEdit/discussions"
|
||||
msgstr "Feature Discussions: https://github.com/saga-soft/UmbraEdit/discussions"
|
||||
|
||||
#: ../../source/index.rst:29
|
||||
msgid "Website: https://novelwriter.io"
|
||||
msgstr "Site web : https://novelwriter.io"
|
||||
msgid "PyPi Project: https://pypi.org/project/UmbraEdit"
|
||||
msgstr "PyPi Project: https://pypi.org/project/UmbraEdit"
|
||||
|
||||
#: ../../source/index.rst:30
|
||||
msgid "Documentation: https://docs.novelwriter.io"
|
||||
msgstr "Documentation: https://docs.novelwriter.io"
|
||||
|
||||
#: ../../source/index.rst:31
|
||||
msgid "Public Releases: https://releases.novelwriter.io"
|
||||
msgstr "Public Releases: https://releases.novelwriter.io"
|
||||
|
||||
#: ../../source/index.rst:32
|
||||
msgid "Internationalisation: https://crowdin.com/project/novelwriter"
|
||||
msgstr "Internationalisation: https://crowdin.com/project/novelwriter"
|
||||
|
||||
#: ../../source/index.rst:33
|
||||
msgid "Source Code: https://github.com/vkbo/novelWriter"
|
||||
msgstr "Code source : https://github.com/vkbo/novelWriter"
|
||||
|
||||
#: ../../source/index.rst:34
|
||||
msgid "Source Releases: https://github.com/vkbo/novelWriter/releases"
|
||||
msgstr "Source Releases: https://github.com/vkbo/novelWriter/releases"
|
||||
|
||||
#: ../../source/index.rst:35
|
||||
msgid "Issue Tracker: https://github.com/vkbo/novelWriter/issues"
|
||||
msgstr "Issue Tracker: https://github.com/vkbo/novelWriter/issues"
|
||||
|
||||
#: ../../source/index.rst:36
|
||||
msgid "Feature Discussions: https://github.com/vkbo/novelWriter/discussions"
|
||||
msgstr "Feature Discussions: https://github.com/vkbo/novelWriter/discussions"
|
||||
|
||||
#: ../../source/index.rst:37
|
||||
msgid "PyPi Project: https://pypi.org/project/novelWriter"
|
||||
msgstr "PyPi Project: https://pypi.org/project/novelWriter"
|
||||
|
||||
#: ../../source/index.rst:38
|
||||
msgid "Social Media: https://fosstodon.org/@novelwriter"
|
||||
msgstr "Social Media: https://fosstodon.org/@novelwriter"
|
||||
msgid "Social Media: https://fosstodon.org/@umbraedit"
|
||||
msgstr "Social Media: https://fosstodon.org/@umbraedit"
|
||||
|
||||
@@ -1,201 +0,0 @@
|
||||
# French translations for PROJECT.
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2025-01-27 10:21+0100\n"
|
||||
"PO-Revision-Date: 2025-01-27 10:29+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/int_glossary.rst:5
|
||||
msgid "Glossary"
|
||||
msgstr "Glossaire"
|
||||
|
||||
#: ../../source/int_glossary.rst:44
|
||||
msgid "Context Menu"
|
||||
msgstr "Menu contextuel"
|
||||
|
||||
#: ../../source/int_glossary.rst:46
|
||||
msgid ""
|
||||
"A context menu is a menu that pops up when you right click something in "
|
||||
"the user interface. In novelWriter, you can often also open a context "
|
||||
"menu by pressing the keyboard shortcut :kbd:`Ctrl+.`."
|
||||
msgstr ""
|
||||
"Un menu contextuel est un menu qui apparaît lorsque vous faites un clic "
|
||||
"droit sur quelque chose dans l'interface utilisateur. Dans novelWriter, "
|
||||
"vous pouvez également ouvrir un menu contextuel en appuyant sur le "
|
||||
"raccourci clavier :kbd:`Ctrl+.`."
|
||||
|
||||
#: ../../source/int_glossary.rst:49
|
||||
msgid "Headings"
|
||||
msgstr "En-têtes"
|
||||
|
||||
#: ../../source/int_glossary.rst:51
|
||||
msgid ""
|
||||
"Each level of headings in :term:`Novel Documents` have a specific "
|
||||
"meaning in terms of the structure of the story. That is, they determine "
|
||||
"what novelWriter considers a partition, a chapter, a scene or a text "
|
||||
"section. For :term:`Project Notes`, the heading levels don't matter. For "
|
||||
"more details on headings in novel documents, see :ref:`a_struct_heads`."
|
||||
msgstr ""
|
||||
"Chaque niveau d'en-têtes dans :term:`Documents du roman` a une "
|
||||
"signification spécifique en termes de structure de l'histoire. En "
|
||||
"d'autres termes, ils déterminent ce que novelWriter considère comme une "
|
||||
"partition, un chapitre, une scène ou une section de texte. Pour :term:"
|
||||
"`Notes de projet`, les niveaux d'en-tête n'ont pas d'importance. Pour "
|
||||
"plus de détails sur les en-têtes dans les documents de roman, voir :ref:"
|
||||
"`a_struct_heads`."
|
||||
|
||||
#: ../../source/int_glossary.rst:55
|
||||
msgid "Keyword"
|
||||
msgstr "Mot-clé"
|
||||
|
||||
#: ../../source/int_glossary.rst:57
|
||||
msgid ""
|
||||
"A keyword in novelWriter is a special command you put in the text of "
|
||||
"your documents. They are not standard Markdown, but are used in "
|
||||
"novelWriter to add information that is interpreted by the application. "
|
||||
"For instance, keywords are used for :term:`tags<tag>` and :term:"
|
||||
"`references<reference>`."
|
||||
msgstr ""
|
||||
"Un mot-clé dans novelWriter est une commande spéciale que vous placez "
|
||||
"dans le texte de vos documents. Il ne s'agit pas de Markdown standard, "
|
||||
"mais ils sont utilisés dans novelWriter pour ajouter des informations "
|
||||
"qui sont interprétées par l'application. Par exemple, les mots-clés sont "
|
||||
"utilisés pour :term:`tags<tag>` et :term:`références<reference>`."
|
||||
|
||||
#: ../../source/int_glossary.rst:62
|
||||
msgid ""
|
||||
"Keywords must always be on their own line, and the first character of "
|
||||
"the line must always be the ``@`` character. The keyword must also "
|
||||
"always be followed by a ``:`` character, and the values passed to the "
|
||||
"command are added after this, separated by commas."
|
||||
msgstr ""
|
||||
"Les mots-clés doivent toujours être sur leur propre ligne, et le premier "
|
||||
"caractère de la ligne doit toujours être le caractère ``@``. Le mot-clé "
|
||||
"doit également toujours être suivi du caractère ``:``, et les valeurs "
|
||||
"transmises à la commande sont ajoutées à la suite, séparées par des "
|
||||
"virgules."
|
||||
|
||||
#: ../../source/int_glossary.rst:14
|
||||
msgid "Novel Documents"
|
||||
msgstr "Documents du roman"
|
||||
|
||||
#: ../../source/int_glossary.rst:16
|
||||
msgid ""
|
||||
"These are documents that are created under a \"Novel\" :term:`Root "
|
||||
"Folder`. They behave differently than :term:`Project Notes`, and have "
|
||||
"some more restrictions. For instance, they can not exist in folders "
|
||||
"intended only for project notes. See the :ref:`a_struct` chapter for "
|
||||
"more details."
|
||||
msgstr ""
|
||||
"Il s'agit de documents créés sous un :term:`dossier racine` « Roman ». "
|
||||
"Ils se comportent différemment des :term:`Notes de projet`, et ont plus "
|
||||
"de restrictions. Par exemple, ils ne peuvent pas exister dans des "
|
||||
"dossiers destinés uniquement aux notes de projet. Voir le chapitre :ref:"
|
||||
"`a_struct` pour plus de détails."
|
||||
|
||||
#: ../../source/int_glossary.rst:38
|
||||
msgid "Project Index"
|
||||
msgstr "Index du projet"
|
||||
|
||||
#: ../../source/int_glossary.rst:40
|
||||
msgid ""
|
||||
"The project index is a record of all headings in a project, with all "
|
||||
"their meta data like synopsis comments, :term:`tags<tag>` and :term:"
|
||||
"`references<reference>`. The project index is kept up to date "
|
||||
"automatically, but can also be regenerated manually from the :guilabel:"
|
||||
"`Tools` menu or by pressing :kbd:`F9`."
|
||||
msgstr ""
|
||||
"L'index du projet est un enregistrement de toutes les en-têtes d'un "
|
||||
"projet, avec toutes leurs métadonnées comme les commentaires de "
|
||||
"synopsis, les :term:`tags<tag>` et les :term:`références<reference>`. "
|
||||
"L'index du projet est mis à jour automatiquement, mais il peut aussi "
|
||||
"être régénéré manuellement à partir du menu :guilabel:`Outils` ou en "
|
||||
"appuyant sur :kbd:`F9`."
|
||||
|
||||
#: ../../source/int_glossary.rst:20
|
||||
msgid "Project Notes"
|
||||
msgstr "Notes de projet"
|
||||
|
||||
#: ../../source/int_glossary.rst:22
|
||||
msgid ""
|
||||
"Project Notes are unrestricted documents that can be placed anywhere in "
|
||||
"your project. You should not use these documents for story elements, "
|
||||
"only for notes. Project notes are the source files used by the Tags and "
|
||||
"References system. See the :ref:`a_references` chapter for more details "
|
||||
"on how to use them."
|
||||
msgstr ""
|
||||
"Les notes de projet sont des documents libres qui peuvent être placés "
|
||||
"n'importe où dans votre projet. Vous ne devez pas utiliser ces documents "
|
||||
"pour les éléments de l'histoire, mais uniquement pour les notes. Les "
|
||||
"notes de projet sont les fichiers sources utilisés par le système de "
|
||||
"balises et de références. Voir le chapitre :ref:`a_references` pour plus "
|
||||
"de détails sur leur utilisation."
|
||||
|
||||
#: ../../source/int_glossary.rst:33
|
||||
msgid "Reference"
|
||||
msgstr "Référence"
|
||||
|
||||
#: ../../source/int_glossary.rst:35
|
||||
msgid ""
|
||||
"A reference is one of a set of :term:`keywords<keyword>` that can be "
|
||||
"used to link to a :term:`tag` in another document. The reference "
|
||||
"keywords are specific to the different :term:`root folder` types. A full "
|
||||
"overview is available in the :ref:`a_references` chapter."
|
||||
msgstr ""
|
||||
"Une référence fait partie d'un ensemble de :term:`mots-clés<keyword>` "
|
||||
"qui peuvent être utilisés pour établir un lien avec un :term:`tag` dans "
|
||||
"un autre document. Les mots-clés de référence sont spécifiques aux "
|
||||
"différents types de :term:`dossier racine`. Une présentation complète "
|
||||
"est disponible dans le chapitre :ref:`a_references`."
|
||||
|
||||
#: ../../source/int_glossary.rst:9
|
||||
msgid "Root Folder"
|
||||
msgstr "Dossier racine"
|
||||
|
||||
#: ../../source/int_glossary.rst:11
|
||||
msgid ""
|
||||
"A \"Root Folder\" is a top level folder of the project tree in "
|
||||
"novelWriter. Each type of root folder has a specific icon to identify "
|
||||
"it. For an overview of available root folder types, see :ref:"
|
||||
"`a_proj_roots`."
|
||||
msgstr ""
|
||||
"Un « dossier racine » est un dossier de premier niveau de l'arborescence "
|
||||
"du projet dans novelWriter. Chaque type de dossier racine possède une "
|
||||
"icône spécifique pour l'identifier. Pour une vue d'ensemble des types de "
|
||||
"dossiers racines disponibles, voir :ref:`a_proj_roots`."
|
||||
|
||||
#: ../../source/int_glossary.rst:26
|
||||
msgid "Tag"
|
||||
msgstr "Tag"
|
||||
|
||||
#: ../../source/int_glossary.rst:28
|
||||
msgid ""
|
||||
"A tag is a user defined value assigned as a tag to a section of your :"
|
||||
"term:`Project Notes`. It is optional, and can be defined once per "
|
||||
"heading. It is set using the :term:`keyword` syntax ``@tag: value``, "
|
||||
"where ``value`` is the user defined part. Each tag can be referenced in "
|
||||
"another file using one of the :term:`reference` keywords. See :ref:"
|
||||
"`a_references` chapter for more details."
|
||||
msgstr ""
|
||||
"Un tag est une valeur définie par l'utilisateur et attribuée comme tag à "
|
||||
"une section de votre :term:`Notes de projet`. Elle est facultative et ne "
|
||||
"peut être définie qu'une seule fois par rubrique. Elle est définie en "
|
||||
"utilisant la syntaxe :term:`mot-clé` `@tag : valeur``, où `valeur`` est "
|
||||
"la partie définie par l'utilisateur. Chaque balise peut être référencée "
|
||||
"dans un autre fichier en utilisant l'un des mots-clés :term:`référence`. "
|
||||
"Voir le chapitre :ref:`a_references` pour plus de détails."
|
||||
@@ -1,349 +0,0 @@
|
||||
# French translations for PROJECT.
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2025-01-27 10:21+0100\n"
|
||||
"PO-Revision-Date: 2025-01-31 21:29+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/int_introduction.rst:5
|
||||
msgid "Overview"
|
||||
msgstr "Présentation générale"
|
||||
|
||||
#: ../../source/int_introduction.rst:10
|
||||
msgid ""
|
||||
"At its core, novelWriter is a multi-document plain text editor. The idea "
|
||||
"is to let you edit your text without having to deal with formatting "
|
||||
"until you generate a draft document or manuscript. Instead, you can "
|
||||
"focus on the writing right from the start."
|
||||
msgstr ""
|
||||
"A la base, novelWriter est un éditeur de texte brut multi-documents. "
|
||||
"L'idée est de vous permettre d'éditer votre texte sans avoir à vous "
|
||||
"préoccuper de la mise en forme jusqu'à ce que vous génériez un projet de "
|
||||
"document ou un manuscrit. Au lieu de cela, vous pouvez vous concentrer "
|
||||
"sur l'écriture dès le début."
|
||||
|
||||
#: ../../source/int_introduction.rst:14
|
||||
msgid ""
|
||||
"Of course, you probably need *some* formatting for your text. At the "
|
||||
"very least you need emphasis. Most people are familiar with adding "
|
||||
"emphasis using ``_underscores_`` and ``**asterisks**``. This formatting "
|
||||
"standard comes from Markdown_ and is supported by novelWriter. It also "
|
||||
"uses Markdown formatting for defining document headings. If you need "
|
||||
"more specialised formatting, additional formatting options are available "
|
||||
"using a shortcode format. See :ref:`a_fmt_shortcodes` for more details."
|
||||
msgstr ""
|
||||
"Bien sûr, vous avez probablement besoin d'une certaine mise en forme "
|
||||
"pour votre texte. Au minimum, vous avez besoin d'accentuation. La "
|
||||
"plupart des gens sont familiers avec l'ajout d'emphase en utilisant "
|
||||
"``_underscores_`` et ``**asterisks**``. Ce standard de formatage vient "
|
||||
"de Markdown_ et est supporté par novelWriter. Il utilise également le "
|
||||
"formatage Markdown pour définir les titres du document. Si vous avez "
|
||||
"besoin d'un formatage plus spécialisé, des options de formatage "
|
||||
"supplémentaires sont disponibles en utilisant un format shortcode. Voir :"
|
||||
"ref:`a_fmt_shortcodes` pour plus de détails."
|
||||
|
||||
#: ../../source/int_introduction.rst:21
|
||||
msgid "Limitations"
|
||||
msgstr "Restrictions"
|
||||
|
||||
#: ../../source/int_introduction.rst:23
|
||||
msgid ""
|
||||
"novelWriter is designed for writing fiction, so the formatting features "
|
||||
"available are limited to those relevant for this purpose. It is *not* "
|
||||
"suitable for technical writing, and it is *not* a full-featured Markdown "
|
||||
"editor."
|
||||
msgstr ""
|
||||
"novelWriter est conçu pour l'écriture de fictions, et les fonctions de "
|
||||
"formatage disponibles sont donc limitées à celles qui sont pertinentes "
|
||||
"pour cet usage. Il n'est *pas* adapté à la rédaction technique et n'est "
|
||||
"*pas* un éditeur Markdown complet."
|
||||
|
||||
#: ../../source/int_introduction.rst:27
|
||||
msgid ""
|
||||
"It is also not intended as a tool for organising research for writing, "
|
||||
"and therefore lacks formatting features you may need for this purpose. "
|
||||
"The notes feature in novelWriter is mainly intended for character "
|
||||
"profiles and plot outlines."
|
||||
msgstr ""
|
||||
"Il n'est pas non plus conçu comme un outil d'organisation de la "
|
||||
"recherche en vue de l'écriture, et ne dispose donc pas des fonctions de "
|
||||
"formatage dont vous pourriez avoir besoin à cette fin. La fonction de "
|
||||
"notes de novelWriter est principalement destinée aux profils de "
|
||||
"personnages et aux ébauches d'intrigues."
|
||||
|
||||
#: ../../source/int_introduction.rst:31
|
||||
msgid ""
|
||||
"Your novel project in novelWriter is organised as a collection of "
|
||||
"separate plain text documents instead of a single, large document. The "
|
||||
"idea is to make it easier to reorganise your project structure without "
|
||||
"having to cut and paste text between chapters and scenes."
|
||||
msgstr ""
|
||||
"Votre projet de roman dans novelWriter est organisé comme une collection "
|
||||
"de documents de texte brut séparés au lieu d'un seul grand document. "
|
||||
"L'idée est de faciliter la réorganisation de la structure de votre "
|
||||
"projet sans avoir à couper et coller du texte entre les chapitres et les "
|
||||
"scènes."
|
||||
|
||||
#: ../../source/int_introduction.rst:35
|
||||
msgid ""
|
||||
"There are two kinds of documents in your project: :term:`Novel "
|
||||
"Documents` are documents that are part of your story. The other kind of "
|
||||
"documents are :term:`Project Notes`, which are intended for your notes "
|
||||
"about your characters, your world building, and so on."
|
||||
msgstr ""
|
||||
"Il y a deux types de documents dans votre projet : :term:`Documents du "
|
||||
"roman` sont des documents qui font partie de votre histoire. L'autre "
|
||||
"type de documents est :term:`Notes de projet`, qui sont destinés à vos "
|
||||
"notes sur vos personnages, votre construction du monde, et ainsi de "
|
||||
"suite."
|
||||
|
||||
#: ../../source/int_introduction.rst:39
|
||||
msgid ""
|
||||
"You can at any point split the individual documents by their headings up "
|
||||
"into multiple documents, or merge multiple documents into a single "
|
||||
"document. This makes it easier to use variations of the Snowflake_ "
|
||||
"method for writing. You can start by writing larger structure-focused "
|
||||
"documents, like for instance one document per act, and later "
|
||||
"effortlessly split these up into individual chapter or scene documents."
|
||||
msgstr ""
|
||||
"Vous pouvez à tout moment diviser les documents individuels par leurs "
|
||||
"titres en plusieurs documents ou fusionner plusieurs documents en un "
|
||||
"seul. Il est ainsi plus facile d'utiliser des variantes de la méthode "
|
||||
"Snowflake_ pour l'écriture. Vous pouvez commencer par rédiger des "
|
||||
"documents plus importants axés sur la structure, comme par exemple un "
|
||||
"document par acte, et les diviser ensuite sans effort en documents "
|
||||
"individuels de chapitres ou de scènes."
|
||||
|
||||
#: ../../source/int_introduction.rst:49
|
||||
msgid "Key Features"
|
||||
msgstr "Fonctionnalités principales"
|
||||
|
||||
#: ../../source/int_introduction.rst:51
|
||||
msgid "Below are some key features of novelWriter."
|
||||
msgstr "Voici quelques caractéristiques clés de novelWriter."
|
||||
|
||||
#: ../../source/int_introduction.rst:53
|
||||
msgid "**Focus on writing**"
|
||||
msgstr "**Focus sur l'écriture**"
|
||||
|
||||
#: ../../source/int_introduction.rst:54
|
||||
msgid ""
|
||||
"The aim of the user interface is to let you focus on writing instead of "
|
||||
"spending time formatting text. Formatting is therefore limited to a "
|
||||
"small set of formatting tags for simple things like text emphasis and "
|
||||
"paragraph alignment. Additional shortcodes are available for special "
|
||||
"formatting cases when you need them."
|
||||
msgstr ""
|
||||
"L'objectif de l'interface utilisateur est de vous permettre de vous "
|
||||
"concentrer sur l'écriture plutôt que de passer du temps à formater le "
|
||||
"texte. Le formatage est donc limité à un petit ensemble de balises de "
|
||||
"formatage pour des choses simples comme l'emphase du texte et "
|
||||
"l'alignement des paragraphes. Des shortcodes supplémentaires sont "
|
||||
"disponibles pour des cas de formatage particuliers lorsque vous en avez "
|
||||
"besoin."
|
||||
|
||||
#: ../../source/int_introduction.rst:59
|
||||
msgid ""
|
||||
"When you really want to focus on just writing, you can switch the editor "
|
||||
"into **Focus Mode** where only the text editor panel itself is visible, "
|
||||
"and the project structure view is hidden away."
|
||||
msgstr ""
|
||||
"Lorsque vous souhaitez vraiment vous concentrer sur l'écriture, vous "
|
||||
"pouvez basculer l'éditeur en **Mode sans distraction**, où seul le "
|
||||
"panneau de l'éditeur de texte est visible, et la vue de la structure du "
|
||||
"projet est cachée."
|
||||
|
||||
#: ../../source/int_introduction.rst:63
|
||||
msgid "**Keep an eye on your notes**"
|
||||
msgstr "**Gardez un œil sur vos notes**"
|
||||
|
||||
#: ../../source/int_introduction.rst:64
|
||||
msgid ""
|
||||
"The main window can optionally show a document viewer to the right of "
|
||||
"the editor. The viewer is intended for displaying another scene "
|
||||
"document, your character notes, plot notes, or any other document you "
|
||||
"may need to reference while writing. It is not intended as a preview "
|
||||
"panel for the document you're editing, but if you wish, you can also use "
|
||||
"it for this purpose."
|
||||
msgstr ""
|
||||
"La fenêtre principale peut éventuellement afficher une visionneuse de "
|
||||
"documents à droite de l'éditeur. La visionneuse est destinée à afficher "
|
||||
"un autre document de scène, vos notes de personnage, vos notes "
|
||||
"d'intrigue ou tout autre document auquel vous pourriez avoir besoin de "
|
||||
"vous référer lors de l'écriture. Il ne s'agit pas d'un panneau de "
|
||||
"prévisualisation du document que vous êtes en train d'éditer, mais si "
|
||||
"vous le souhaitez, vous pouvez également l'utiliser à cette fin."
|
||||
|
||||
#: ../../source/int_introduction.rst:69
|
||||
msgid "**Organise your documents how you like**"
|
||||
msgstr "**Organisez vos documents à votre guise**"
|
||||
|
||||
#: ../../source/int_introduction.rst:70
|
||||
msgid ""
|
||||
"You can split your novel project up into as many individual documents as "
|
||||
"you want to. When you build the project into a manuscript, they are all "
|
||||
"glued together in the top-to-bottom order in which they appear in the "
|
||||
"project tree. You can use as few text documents as you like, but "
|
||||
"splitting the project up into chapters and scenes means you can easily "
|
||||
"reorder them using the drag-and-drop feature of the project tree. You "
|
||||
"can also start out with fewer documents and then later split them into "
|
||||
"multiple documents based on chapter and scene headings."
|
||||
msgstr ""
|
||||
"Vous pouvez diviser votre projet de roman en autant de documents "
|
||||
"individuels que vous le souhaitez. Lorsque vous transformez le projet en "
|
||||
"manuscrit, tous les documents sont collés ensemble dans l'ordre où ils "
|
||||
"apparaissent dans l'arborescence du projet. Vous pouvez utiliser aussi "
|
||||
"peu de documents texte que vous le souhaitez, mais en divisant le projet "
|
||||
"en chapitres et en scènes, vous pouvez facilement les réorganiser à "
|
||||
"l'aide de la fonction « glisser-déposer » de l'arborescence du projet. "
|
||||
"Vous pouvez également commencer avec moins de documents, puis les "
|
||||
"diviser en plusieurs documents en fonction des titres des chapitres et "
|
||||
"des scènes."
|
||||
|
||||
#: ../../source/int_introduction.rst:77
|
||||
msgid "**Multi-novel project support**"
|
||||
msgstr "**Support de projets de plusieurs romans**"
|
||||
|
||||
#: ../../source/int_introduction.rst:78
|
||||
msgid ""
|
||||
"The main parts of your project is split up into top level special "
|
||||
"folders called \"Root\" folders. Your main story text lives in the "
|
||||
"\"Novel\" root folder. You can have multiple such folders in a project, "
|
||||
"and rename them to whatever you want. This allows you to keep a series "
|
||||
"of individual novels with the same characters and world building in the "
|
||||
"same project, and create manuscripts for them separately."
|
||||
msgstr ""
|
||||
"Les principales parties de votre projet sont réparties dans des dossiers "
|
||||
"spéciaux de premier niveau appelés dossiers « racine ». Le texte "
|
||||
"principal de votre histoire se trouve dans le dossier racine « Roman ». "
|
||||
"Vous pouvez avoir plusieurs dossiers de ce type dans un projet et les "
|
||||
"renommer comme vous le souhaitez. Cela vous permet de conserver une "
|
||||
"série de romans individuels avec les mêmes personnages et la même "
|
||||
"construction du monde dans le même projet, et de créer des manuscrits "
|
||||
"pour chacun d'entre eux."
|
||||
|
||||
#: ../../source/int_introduction.rst:84
|
||||
msgid "**Keep track of your story elements**"
|
||||
msgstr "**Tracez les éléments de votre histoire**"
|
||||
|
||||
#: ../../source/int_introduction.rst:85
|
||||
msgid ""
|
||||
"All documents in your project can be assigned a :term:`tag` that you can "
|
||||
"then :term:`reference` from any other document or note. In fact, you can "
|
||||
"add a new tag under each heading of a note if you need to be able to "
|
||||
"reference specific sections of it, or you want to keep several topics or "
|
||||
"scenes in the same document."
|
||||
msgstr ""
|
||||
"Toutes les notes de votre projet peuvent se voir attribuer un :term:"
|
||||
"`tag` que vous pouvez ensuite :term:`référencer<reference>` à partir de "
|
||||
"n'importe quel autre document ou note. En fait, vous pouvez ajouter une "
|
||||
"nouvelle balise sous chaque titre d'une note si vous avez besoin de "
|
||||
"pouvoir référencer des sections spécifiques de celle-ci, ou si vous "
|
||||
"voulez conserver plusieurs sujets dans la même note."
|
||||
|
||||
#: ../../source/int_introduction.rst:90
|
||||
msgid "**Get an overview of your story**"
|
||||
msgstr "**Obtenez une vue d'ensemble de votre histoire**"
|
||||
|
||||
#: ../../source/int_introduction.rst:91
|
||||
msgid ""
|
||||
"It is not the documents themselves that define the chapters and scenes "
|
||||
"of your story, but the headings within them. In the **Outline View** on "
|
||||
"the main window you can see an outline of all the chapter and scene "
|
||||
"headings of each novel root folder in your project. If they have any "
|
||||
"references in them, like which character is in what chapter and scene, "
|
||||
"these are listed in additional columns."
|
||||
msgstr ""
|
||||
"Ce ne sont pas les documents eux-mêmes qui définissent les chapitres et "
|
||||
"les scènes de votre histoire, mais les titres qu'ils contiennent. Dans "
|
||||
"la **Vue d'ensemble** de la fenêtre principale, vous pouvez voir un "
|
||||
"aperçu de tous les titres de chapitres et de scènes de chaque dossier "
|
||||
"racine de roman de votre projet. S'ils contiennent des références, par "
|
||||
"exemple quel personnage se trouve dans quel chapitre et quelle scène, "
|
||||
"celles-ci sont répertoriées dans des colonnes supplémentaires."
|
||||
|
||||
#: ../../source/int_introduction.rst:97
|
||||
msgid ""
|
||||
"You can also add a synopsis to each chapter or scene, which can be "
|
||||
"listed here as well. You have the option to add or remove columns of "
|
||||
"information from this outline. A subset of the outline information is "
|
||||
"also available in the **Novel View** as an alternative view to the "
|
||||
"project tree."
|
||||
msgstr ""
|
||||
"Vous pouvez également ajouter un synopsis à chaque chapitre ou scène, "
|
||||
"qui peut également être listé ici. Vous avez la possibilité d'ajouter ou "
|
||||
"de supprimer des colonnes d'informations dans ce plan. Un sous-ensemble "
|
||||
"des informations du plan est également disponible dans la **Vue roman** "
|
||||
"comme vue alternative à l'arborescence du projet."
|
||||
|
||||
#: ../../source/int_introduction.rst:101
|
||||
msgid "**Get an overview of your story elements**"
|
||||
msgstr "**Obtenez une vue d'ensemble des éléments de votre histoire**"
|
||||
|
||||
#: ../../source/int_introduction.rst:102
|
||||
msgid ""
|
||||
"Under the document viewer panel you will find a series of tabs that show "
|
||||
"the different story elements you have created tags for. The tabs are "
|
||||
"sorted into **Characters**, **Plots**, etc, depending on which "
|
||||
"categories you are using in your story. This panel can be hidden to free "
|
||||
"up space when you don't need it."
|
||||
msgstr ""
|
||||
"Sous le panneau de visualisation du document, vous trouverez une série "
|
||||
"d'onglets qui montrent les différents éléments de l'histoire pour "
|
||||
"lesquels vous avez créé des étiquettes. Les onglets sont classés en "
|
||||
"**Personnages**, **Intrigues**, etc., en fonction des catégories que "
|
||||
"vous utilisez dans votre histoire. Ce panneau peut être caché pour "
|
||||
"libérer de l'espace lorsque vous n'en avez pas besoin."
|
||||
|
||||
#: ../../source/int_introduction.rst:107
|
||||
msgid "**Assembling your manuscript**"
|
||||
msgstr "**Assembler votre manuscrit**"
|
||||
|
||||
#: ../../source/int_introduction.rst:108
|
||||
msgid ""
|
||||
"Whether you want to assemble a manuscript, or export all your notes, or "
|
||||
"generate an outline of your chapters and scenes with a synopsis "
|
||||
"included, you can use the **Build Manuscript** tool to do so. The tool "
|
||||
"lets you select what information you want to include in the generated "
|
||||
"document, and how it is formatted. You can send the result to a printer, "
|
||||
"or generate an Open Document or Word Document file that can be opened by "
|
||||
"most office type word processors. You can also generate the result as "
|
||||
"HTML, or Markdown, both suitable for further conversion to other formats."
|
||||
msgstr ""
|
||||
"Que vous souhaitiez assembler un manuscrit, exporter toutes vos notes ou "
|
||||
"générer un plan de vos chapitres et scènes avec un synopsis, vous pouvez "
|
||||
"utiliser l'outil **Compiler le manuscrit** pour le faire. Cet outil vous "
|
||||
"permet de sélectionner les informations que vous souhaitez inclure dans "
|
||||
"le document généré, ainsi que son formatage. Vous pouvez envoyer le "
|
||||
"résultat à une imprimante ou générer un fichier Open Document ou Word "
|
||||
"Document qui peut être ouvert par la plupart des traitements de texte de "
|
||||
"type bureautique. Vous pouvez également générer le résultat sous forme "
|
||||
"de HTML ou de Markdown, tous deux adaptés à une conversion ultérieure "
|
||||
"dans d'autres formats."
|
||||
|
||||
#: ../../source/int_introduction.rst:119
|
||||
msgid "Screenshots"
|
||||
msgstr "Captures d'écran"
|
||||
|
||||
#: ../../source/int_introduction.rst:124
|
||||
msgid "novelWriter with light colour theme"
|
||||
msgstr "novelWriter avec un thème de couleur claire"
|
||||
|
||||
#: ../../source/int_introduction.rst:129
|
||||
msgid "novelWriter with dark colour theme"
|
||||
msgstr "novelWriter avec un thème de couleur sombre"
|
||||
@@ -1,265 +0,0 @@
|
||||
# French translations for PROJECT.
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2025-01-27 10:21+0100\n"
|
||||
"PO-Revision-Date: 2025-01-27 10:33+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/int_overview.rst:5
|
||||
msgid "What to Read First"
|
||||
msgstr "Premières lectures"
|
||||
|
||||
#: ../../source/int_overview.rst:7
|
||||
msgid ""
|
||||
"The documentation of novelWriter is quite extensive. There are a lot of "
|
||||
"features to get used to, but you don't need to know all of them to get "
|
||||
"started."
|
||||
msgstr ""
|
||||
"La documentation de novelWriter est assez complète. Il y a beaucoup de "
|
||||
"fonctionnalités auxquelles il faut s'habituer, mais vous n'avez pas "
|
||||
"besoin de toutes pour commencer."
|
||||
|
||||
#: ../../source/int_overview.rst:10
|
||||
msgid ""
|
||||
"The chapters below labelled \"Essential Information\" are the ones you "
|
||||
"need to know to use the application correctly. By \"correctly\" it is "
|
||||
"meant: in a way so novelWriter understands the basic structure of your "
|
||||
"text. It collects a lot of information from your text and uses it to "
|
||||
"display the structure of it in various ways to help you get an overview "
|
||||
"of your writing."
|
||||
msgstr ""
|
||||
"Les chapitres ci-dessous intitulés « Informations essentielles » sont "
|
||||
"ceux que vous devez connaître pour utiliser correctement l'application. "
|
||||
"Par « correctement », on entend : de manière à ce que novelWriter "
|
||||
"comprenne la structure de base de votre texte. Il collecte de nombreuses "
|
||||
"informations à partir de votre texte et les utilise pour afficher la "
|
||||
"structure de celui-ci de différentes manières afin de vous aider à "
|
||||
"obtenir une vue d'ensemble de votre écriture."
|
||||
|
||||
#: ../../source/int_overview.rst:15
|
||||
msgid ""
|
||||
"The chapters labelled \"Recommended Reading\" includes additional "
|
||||
"information on how the different parts if the application work and what "
|
||||
"the features do."
|
||||
msgstr ""
|
||||
"Les chapitres intitulés « Lectures recommandées » contiennent des "
|
||||
"informations supplémentaires sur le fonctionnement des différentes "
|
||||
"parties de l'application et sur les fonctionnalités."
|
||||
|
||||
#: ../../source/int_overview.rst:18
|
||||
msgid ""
|
||||
"The \"Optional\" and \"Lookup\" chapters contain additional information "
|
||||
"or lookup tables that are not essential for using the application."
|
||||
msgstr ""
|
||||
"Les chapitres « Optionnel “ et ” Consulter » contiennent des "
|
||||
"informations supplémentaires ou des tables de consultation qui ne sont "
|
||||
"pas indispensables à l'utilisation de l'application."
|
||||
|
||||
#: ../../source/int_overview.rst:23
|
||||
msgid "Using novelWriter"
|
||||
msgstr "Utiliser novelWriter"
|
||||
|
||||
#: ../../source/int_overview.rst:25
|
||||
msgid ""
|
||||
"In order to use novelWriter effectively, you need to know the basics of "
|
||||
"how it works. The following chapters will explain the main principles. "
|
||||
"They start with the basics, and get more detailed as you read on."
|
||||
msgstr ""
|
||||
"Afin d'utiliser novelWriter de manière efficace, vous devez connaître "
|
||||
"les bases de son fonctionnement. Les chapitres suivants expliquent les "
|
||||
"grands principes. Ils commencent par les bases et deviennent de plus en "
|
||||
"plus détaillés au fur et à mesure de la lecture."
|
||||
|
||||
#: ../../source/int_overview.rst:29
|
||||
msgid ":ref:`a_breakdown` – Essential Information"
|
||||
msgstr ":ref:`a_breakdown` - Informations essentielles"
|
||||
|
||||
#: ../../source/int_overview.rst:30
|
||||
msgid ""
|
||||
"This chapter explains the basics of how the application works and what "
|
||||
"it can and cannot do."
|
||||
msgstr ""
|
||||
"Ce chapitre explique les bases du fonctionnement de l'application et ce "
|
||||
"qu'elle peut et ne peut pas faire."
|
||||
|
||||
#: ../../source/int_overview.rst:32
|
||||
msgid ":ref:`a_ui_project` – Recommended Reading"
|
||||
msgstr ":ref:`a_ui_project` - Lecture recommandée"
|
||||
|
||||
#: ../../source/int_overview.rst:33
|
||||
msgid ""
|
||||
"This chapter will give you a more detailed explanation of how you can "
|
||||
"use the user interface components to organise and view your project work."
|
||||
msgstr ""
|
||||
"Ce chapitre explique plus en détail comment vous pouvez utiliser les "
|
||||
"composants de l'interface utilisateur pour organiser et visualiser votre "
|
||||
"travail de projet."
|
||||
|
||||
#: ../../source/int_overview.rst:36
|
||||
msgid ":ref:`a_ui_writing` – Recommended Reading"
|
||||
msgstr ":ref:`a_ui_writing` - Lecture recommandée"
|
||||
|
||||
#: ../../source/int_overview.rst:37
|
||||
msgid ""
|
||||
"This chapter will give you a more detailed explanation of how the text "
|
||||
"editor and viewer work."
|
||||
msgstr ""
|
||||
"Ce chapitre explique plus en détail le fonctionnement de l'éditeur de "
|
||||
"texte et de l'affichage."
|
||||
|
||||
#: ../../source/int_overview.rst:39
|
||||
msgid ":ref:`a_fmt` – Essential Information"
|
||||
msgstr ":ref:`a_fmt` - Informations essentielles"
|
||||
|
||||
#: ../../source/int_overview.rst:40
|
||||
msgid ""
|
||||
"This chapter covers how you should format your text. The editor is plain "
|
||||
"text, so text formatting requires some basic markup. The structure of "
|
||||
"your novel is also inferred from how you use headings. Tags and "
|
||||
"references are implemented by special keywords."
|
||||
msgstr ""
|
||||
"Ce chapitre traite de la mise en forme du texte. L'éditeur étant du "
|
||||
"texte brut, la mise en forme du texte nécessite un balisage de base. La "
|
||||
"structure de votre roman est également déduite de la manière dont vous "
|
||||
"utilisez les titres. Les balises et les références sont mises en œuvre "
|
||||
"par des mots-clés spéciaux."
|
||||
|
||||
#: ../../source/int_overview.rst:44
|
||||
msgid ":ref:`a_kb` – Optional / Lookup"
|
||||
msgstr ":ref:`a_kb` - Optionnel / Consulter"
|
||||
|
||||
#: ../../source/int_overview.rst:45
|
||||
msgid ""
|
||||
"This chapter lists all the keyboard shortcuts in novelWriter and what "
|
||||
"they do. Most of the shortcuts are also listed next to their menu "
|
||||
"entries inside the app, or in tool tips. This chapter is mostly for "
|
||||
"reference."
|
||||
msgstr ""
|
||||
"Ce chapitre énumère tous les raccourcis clavier de novelWriter et leur "
|
||||
"fonction. La plupart des raccourcis sont également listés à côté de "
|
||||
"leurs entrées de menu dans l'application, ou dans les info-bulles. Ce "
|
||||
"chapitre est principalement destiné à servir de référence."
|
||||
|
||||
#: ../../source/int_overview.rst:49
|
||||
msgid ":ref:`a_typ` – Optional"
|
||||
msgstr ":ref:`a_typ` - Optionnel"
|
||||
|
||||
#: ../../source/int_overview.rst:50
|
||||
msgid ""
|
||||
"This chapter gives you an overview of the special typographical symbols "
|
||||
"available in novelWriter. The auto-replace feature can handle the "
|
||||
"insertion of standard quote symbols for your language, and other special "
|
||||
"characters. If you use any symbols aside from these, their intended use "
|
||||
"is explained here."
|
||||
msgstr ""
|
||||
"Ce chapitre vous donne un aperçu des symboles typographiques spéciaux "
|
||||
"disponibles dans novelWriter. La fonction de remplacement automatique "
|
||||
"peut gérer l'insertion des symboles de guillemets standard de votre "
|
||||
"langue, ainsi que d'autres caractères spéciaux. Si vous utilisez "
|
||||
"d'autres symboles, leur utilisation est expliquée ici."
|
||||
|
||||
#: ../../source/int_overview.rst:57
|
||||
msgid "Organising Your Projects"
|
||||
msgstr "Organiser vos projets"
|
||||
|
||||
#: ../../source/int_overview.rst:59
|
||||
msgid ""
|
||||
"In addition to managing a collection of plain text files, novelWriter "
|
||||
"can interpret and map the structure of your novel and show you "
|
||||
"additional information about its flow and content. In order to take "
|
||||
"advantage of these features, you must structure your text in a specific "
|
||||
"way and add some meta data for it to extract."
|
||||
msgstr ""
|
||||
"En plus de gérer une collection de fichiers de texte brut, novelWriter "
|
||||
"peut interpréter et cartographier la structure de votre roman et vous "
|
||||
"fournir des informations supplémentaires sur son déroulement et son "
|
||||
"contenu. Pour bénéficier de ces fonctionnalités, vous devez structurer "
|
||||
"votre texte d'une manière spécifique et ajouter des métadonnées à "
|
||||
"extraire."
|
||||
|
||||
#: ../../source/int_overview.rst:64
|
||||
msgid ":ref:`a_proj` – Essential Information"
|
||||
msgstr ":ref:`a_proj` - Informations essentielles"
|
||||
|
||||
#: ../../source/int_overview.rst:65
|
||||
msgid ""
|
||||
"This chapter explains how you organise the content of your project, and "
|
||||
"how to set up automated backups of your work."
|
||||
msgstr ""
|
||||
"Ce chapitre explique comment organiser le contenu de votre projet et "
|
||||
"comment mettre en place des sauvegardes automatiques de votre travail."
|
||||
|
||||
#: ../../source/int_overview.rst:68
|
||||
msgid ":ref:`a_struct` – Essential Information"
|
||||
msgstr ":ref:`a_struct` - Informations essentielles"
|
||||
|
||||
#: ../../source/int_overview.rst:69
|
||||
msgid ""
|
||||
"This chapter covers the way your novel's structure is encoded into the "
|
||||
"text documents. It explains how the different levels of headings are "
|
||||
"used, and some special formatting for different kinds of headings."
|
||||
msgstr ""
|
||||
"Ce chapitre traite de la manière dont la structure de votre roman est "
|
||||
"encodée dans les documents textuels. Il explique comment les différents "
|
||||
"niveaux d'en-têtes sont utilisés, ainsi que certains formats spéciaux "
|
||||
"pour différents types d'en-têtes."
|
||||
|
||||
#: ../../source/int_overview.rst:73
|
||||
msgid ":ref:`a_references` - Recommended Reading"
|
||||
msgstr ":ref:`a_references` - Lecture recommandée"
|
||||
|
||||
#: ../../source/int_overview.rst:74
|
||||
msgid ""
|
||||
"This chapter explains how you organise your notes, and how the Tags and "
|
||||
"References system works. This system lets you cross-link your documents "
|
||||
"in your project, and display these references in the application "
|
||||
"interface."
|
||||
msgstr ""
|
||||
"Ce chapitre explique comment organiser vos notes et comment fonctionne "
|
||||
"le système de balises et de références. Ce système vous permet d'établir "
|
||||
"des liens entre les documents de votre projet et d'afficher ces "
|
||||
"références dans l'interface de l'application."
|
||||
|
||||
#: ../../source/int_overview.rst:78
|
||||
msgid ":ref:`a_manuscript` - Recommended Reading"
|
||||
msgstr ":ref:`a_manuscript` - Lecture recommandée"
|
||||
|
||||
#: ../../source/int_overview.rst:79
|
||||
msgid ""
|
||||
"This chapter explains how the **Manuscript Build** tool works, how you "
|
||||
"can control the way chapter titles are formatted, and how scene and "
|
||||
"section breaks are handled."
|
||||
msgstr ""
|
||||
"Ce chapitre explique le fonctionnement de l'outil **Manuscript Build**, "
|
||||
"la manière dont vous pouvez contrôler le formatage des titres de "
|
||||
"chapitre et la gestion des sauts de scène et de section."
|
||||
|
||||
#: ../../source/int_overview.rst:84
|
||||
msgid "Additional Details & Technical Topics"
|
||||
msgstr "Détails supplémentaires et sujets techniques"
|
||||
|
||||
#: ../../source/int_overview.rst:86
|
||||
msgid ""
|
||||
"The Additional Details and the Technical Topics sections contain more in-"
|
||||
"depth information about how various bits of novelWriter works. This "
|
||||
"information is not essential to getting started using novelWriter."
|
||||
msgstr ""
|
||||
"Les sections Détails supplémentaires et Sujets techniques contiennent "
|
||||
"des informations plus approfondies sur le fonctionnement des différents "
|
||||
"éléments de novelWriter. Ces informations ne sont pas essentielles pour "
|
||||
"commencer à utiliser novelWriter."
|
||||
@@ -1,340 +0,0 @@
|
||||
# French translations for PROJECT.
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2025-01-27 10:21+0100\n"
|
||||
"PO-Revision-Date: 2025-01-27 10:32+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/int_started.rst:5
|
||||
msgid "Setup and Installation"
|
||||
msgstr "Configuration et installation"
|
||||
|
||||
#: ../../source/int_started.rst:17
|
||||
msgid ""
|
||||
"Ready-made packages and installers for novelWriter are available for all "
|
||||
"major platforms, including Linux, Windows and MacOS, from the `Downloads "
|
||||
"page`_. See below for additional install instructions for each platform."
|
||||
msgstr ""
|
||||
"Des paquets prêts à l'emploi et des installateurs pour novelWriter sont "
|
||||
"disponibles pour toutes les plateformes principales, y compris Linux, Windows "
|
||||
"et MacOS, à partir de la page `Downloads`_. Voir ci-dessous les instructions "
|
||||
"d'installation supplémentaires pour chaque plateforme."
|
||||
|
||||
#: ../../source/int_started.rst:21
|
||||
msgid ""
|
||||
"You can also install novelWriter from the Python Package Index (PyPi_). See :"
|
||||
"ref:`a_started_pip`. Installing from PyPi does not set up icon launchers, so "
|
||||
"you will either have to do this yourself, or start novelWriter from the "
|
||||
"command line."
|
||||
msgstr ""
|
||||
"Vous pouvez également installer novelWriter à partir de l'index des paquets "
|
||||
"Python (PyPi_). Voir :ref:`a_started_pip`. L'installation à partir de PyPi ne "
|
||||
"met pas en place de lanceurs d'icônes, vous devrez donc soit le faire vous-"
|
||||
"même, soit lancer novelWriter à partir de la ligne de commande."
|
||||
|
||||
#: ../../source/int_started.rst:25
|
||||
msgid ""
|
||||
"Spell checking in novelWriter is provided by a third party library called "
|
||||
"Enchant_. Generally, it should pull dictionaries from your operating system "
|
||||
"automatically. However, on Windows they must be installed manually. See :ref:"
|
||||
"`a_custom_dict` for more details."
|
||||
msgstr ""
|
||||
"La vérification orthographique dans novelWriter est assurée par une "
|
||||
"bibliothèque tierce appelée Enchant_. En général, elle devrait extraire "
|
||||
"automatiquement les dictionnaires de votre système d'exploitation. Cependant, "
|
||||
"sous Windows, ils doivent être installés manuellement. Voir :ref:"
|
||||
"`a_custom_dict` pour plus de détails."
|
||||
|
||||
#: ../../source/int_started.rst:33
|
||||
msgid "Installing on Windows"
|
||||
msgstr "Installation sous Windows"
|
||||
|
||||
#: ../../source/int_started.rst:35
|
||||
msgid ""
|
||||
"You can install novelWriter with both Python and library dependencies "
|
||||
"embedded using the Windows Installer (setup.exe) file from the `Downloads "
|
||||
"page`_, or from the Releases_ page on GitHub_. Installing it should be "
|
||||
"straightforward."
|
||||
msgstr ""
|
||||
"Vous pouvez installer novelWriter avec les dépendances Python et les "
|
||||
"bibliothèques intégrées en utilisant le fichier Windows Installer (setup.exe) "
|
||||
"depuis la page `Downloads`_, ou depuis la page Releases_ sur GitHub_. "
|
||||
"L'installation devrait être simple."
|
||||
|
||||
#: ../../source/int_started.rst:39
|
||||
msgid ""
|
||||
"If you have any issues, try uninstalling the previous version and making a "
|
||||
"fresh install. If you already had a version installed via a different method, "
|
||||
"you should uninstall that first as having multiple installations has been "
|
||||
"known to cause problems."
|
||||
msgstr ""
|
||||
"Si vous rencontrez des problèmes, essayez de désinstaller la version "
|
||||
"précédente et de procéder à une nouvelle installation. Si vous avez déjà "
|
||||
"installé une version par une autre méthode, désinstallez-la d'abord, car les "
|
||||
"installations multiples sont connues pour causer des problèmes."
|
||||
|
||||
#: ../../source/int_started.rst:47
|
||||
msgid "Installing on Linux"
|
||||
msgstr "Installation sous Linux"
|
||||
|
||||
#: ../../source/int_started.rst:49
|
||||
msgid ""
|
||||
"A Debian package can be downloaded from the `Downloads page`_, or from the "
|
||||
"Releases_ page on GitHub_. This package should work on both Debian, Ubuntu "
|
||||
"and Linux Mint, at least."
|
||||
msgstr ""
|
||||
"Un paquet Debian peut être téléchargé depuis la page `Downloads`_, ou depuis "
|
||||
"la page Releases_ sur GitHub_. Ce paquet devrait fonctionner sur Debian, "
|
||||
"Ubuntu et Linux Mint, au moins."
|
||||
|
||||
#: ../../source/int_started.rst:52
|
||||
msgid ""
|
||||
"If you prefer, you can also add the novelWriter repository on Launchpad to "
|
||||
"your package manager. The Launchpad packages `are signed by the author "
|
||||
"<https://launchpad.net/~vkbo>`__."
|
||||
msgstr ""
|
||||
"Si vous préférez, vous pouvez également ajouter le dépôt novelWriter sur "
|
||||
"Launchpad à votre gestionnaire de paquets. Les paquets Launchpad `sont signés "
|
||||
"par l'auteur <https://launchpad.net/~vkbo>`__."
|
||||
|
||||
#: ../../source/int_started.rst:57
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: ../../source/int_started.rst:59
|
||||
msgid ""
|
||||
"You can add the Ubuntu PPA_ and install novelWriter with the following "
|
||||
"commands."
|
||||
msgstr ""
|
||||
"Vous pouvez ajouter le PPA_ Ubuntu et installer novelWriter avec les "
|
||||
"commandes suivantes."
|
||||
|
||||
#: ../../source/int_started.rst:67
|
||||
msgid ""
|
||||
"If you want the `Pre-Release PPA`_ instead, add the ``ppa:vkbo/novelwriter-"
|
||||
"pre`` repository."
|
||||
msgstr ""
|
||||
"Si vous voulez le PPA `Pre-Release`_ à la place, ajoutez le dépôt ``ppa:vkbo/"
|
||||
"novelwriter-pre``."
|
||||
|
||||
#: ../../source/int_started.rst:71
|
||||
msgid "Debian and Mint"
|
||||
msgstr "Debian et Mint"
|
||||
|
||||
#: ../../source/int_started.rst:73
|
||||
msgid ""
|
||||
"Since this is a pure Python package, the Launchpad PPA can in principle also "
|
||||
"be used on Debian or Mint. However, the above command will fail to add the "
|
||||
"signing key, as it is Ubuntu-specific."
|
||||
msgstr ""
|
||||
"Comme il s'agit d'un paquetage purement Python, le PPA Launchpad peut en "
|
||||
"principe être utilisé sur Debian ou Mint. Cependant, la commande ci-dessus "
|
||||
"n'ajoutera pas la clé de signature, car elle est spécifique à Ubuntu."
|
||||
|
||||
#: ../../source/int_started.rst:76
|
||||
msgid "Instead, run the following commands to add the repository and key:"
|
||||
msgstr ""
|
||||
"Au lieu de cela, exécutez les commandes suivantes pour ajouter le dépôt et la "
|
||||
"clé :"
|
||||
|
||||
#: ../../source/int_started.rst:83
|
||||
msgid "Then run the update and install commands as for Ubuntu:"
|
||||
msgstr ""
|
||||
"Exécutez ensuite les commandes de mise à jour et d'installation comme pour "
|
||||
"Ubuntu :"
|
||||
|
||||
#: ../../source/int_started.rst:91
|
||||
msgid ""
|
||||
"If you get an error message like ``gpg: failed to create temporary file`` "
|
||||
"when importing the key from the Ubuntu keyserver, try creating the folder it "
|
||||
"fails on, and import the key again:"
|
||||
msgstr ""
|
||||
"Si vous obtenez un message d'erreur du type ``gpg : failed to create "
|
||||
"temporary file`` lors de l'importation de la clé depuis le serveur de clés "
|
||||
"Ubuntu, essayez de créer le dossier sur lequel l'erreur s'est produite, et "
|
||||
"importez à nouveau la clé :"
|
||||
|
||||
#: ../../source/int_started.rst:100
|
||||
msgid "AppImage Releases"
|
||||
msgstr "AppImage"
|
||||
|
||||
#: ../../source/int_started.rst:102
|
||||
msgid ""
|
||||
"For other Linux distros than the ones mentioned above, the primary option is "
|
||||
"AppImage_. These are completely standalone images for the app that include "
|
||||
"the necessary environment to run novelWriter. They can of course be run on "
|
||||
"any Linux distro, if you prefer this to native packages."
|
||||
msgstr ""
|
||||
"Pour les distros Linux autres que celles mentionnées ci-dessus, l'option "
|
||||
"principale est AppImage_. Il s'agit d'images complètement autonomes pour "
|
||||
"l'application qui incluent l'environnement nécessaire pour faire fonctionner "
|
||||
"novelWriter. Elles peuvent bien sûr être exécutées sur n'importe quelle "
|
||||
"distribution Linux, si vous préférez cela aux paquets natifs."
|
||||
|
||||
#: ../../source/int_started.rst:107
|
||||
msgid ""
|
||||
"novelWriter generally doesn't support Python versions that have reached end "
|
||||
"of life. If your Linux distro still uses older Python versions and "
|
||||
"novelWriter won't run, you may want to try the AppImage instead."
|
||||
msgstr ""
|
||||
"novelWriter ne supporte généralement pas les versions de Python qui ont "
|
||||
"atteint leur fin de vie. Si votre distro Linux utilise encore d'anciennes "
|
||||
"versions de Python et que novelWriter ne fonctionne pas, vous pouvez essayer "
|
||||
"l'AppImage à la place."
|
||||
|
||||
#: ../../source/int_started.rst:115
|
||||
msgid "Installing on MacOS"
|
||||
msgstr "Installation sur MacOS"
|
||||
|
||||
#: ../../source/int_started.rst:117
|
||||
msgid ""
|
||||
"You can install novelWriter with both its Python and library dependencies "
|
||||
"embedded using the DMG application image file from the `Downloads page`_, or "
|
||||
"from the Releases_ page on GitHub_. Installing it should be straightforward."
|
||||
msgstr ""
|
||||
"Vous pouvez installer novelWriter avec ses dépendances Python et "
|
||||
"bibliothèques intégrées en utilisant le fichier image de l'application DMG "
|
||||
"depuis la page `Downloads`_, ou depuis la page Releases_ sur GitHub_. "
|
||||
"L'installation devrait être simple."
|
||||
|
||||
#: ../../source/int_started.rst:121
|
||||
msgid ""
|
||||
"Download the DMG file and open it. Then drag the novelWriter icon to the :"
|
||||
"guilabel:`Applications` folder on the right. This will install it into your :"
|
||||
"guilabel:`Applications`."
|
||||
msgstr ""
|
||||
"Téléchargez le fichier DMG et ouvrez-le. Faites ensuite glisser l'icône "
|
||||
"novelWriter dans le dossier :guilabel:`Applications` sur la droite. Cela "
|
||||
"l'installera dans votre :guilabel:`Applications`."
|
||||
|
||||
#: ../../source/int_started.rst:123
|
||||
msgid ""
|
||||
"The first time you try to launch it, it will say that the bundle cannot be "
|
||||
"verified, simply press the :guilabel:`Open` button to add an exception."
|
||||
msgstr ""
|
||||
"La première fois que vous essayez de le lancer, il vous dira que le bundle ne "
|
||||
"peut pas être vérifié, appuyez simplement sur le bouton :guilabel:`Open` pour "
|
||||
"ajouter une exception."
|
||||
|
||||
#: ../../source/int_started.rst:125
|
||||
msgid ""
|
||||
"If you are not presented with an :guilabel:`Open` button in the dialog, "
|
||||
"launch the application again by right clicking on the application in Finder "
|
||||
"and selecting :guilabel:`Open` from the context menu."
|
||||
msgstr ""
|
||||
"Si aucun bouton :guilabel:`Open` n'apparaît dans la boîte de dialogue, "
|
||||
"relancez l'application en faisant un clic droit sur l'application dans le "
|
||||
"Finder et en sélectionnant :guilabel:`Open` dans le menu contextuel."
|
||||
|
||||
#: ../../source/int_started.rst:129
|
||||
msgid ""
|
||||
"The context menu can also be accessed by option-clicking if you have a one "
|
||||
"button mouse. This is done by holding down the option key on your keyboard "
|
||||
"and clicking on the application in Finder."
|
||||
msgstr ""
|
||||
"Vous pouvez également accéder au menu contextuel par un clic d'option si vous "
|
||||
"disposez d'une souris à un bouton. Pour ce faire, maintenez la touche option "
|
||||
"de votre clavier enfoncée et cliquez sur l'application dans le Finder."
|
||||
|
||||
#: ../../source/int_started.rst:133
|
||||
msgid ""
|
||||
"The novelWriter DMG is not signed because Apple doesn't currently provide a "
|
||||
"way for non-profit open source projects to properly sign their installers. "
|
||||
"The novelWriter project doesn't have the funding to pay for a commercial "
|
||||
"software signing certificate."
|
||||
msgstr ""
|
||||
"Le DMG de novelWriter n'est pas signé parce qu'Apple ne fournit actuellement "
|
||||
"aucun moyen aux projets open source à but non lucratif de signer correctement "
|
||||
"leurs programmes d'installation. Le projet novelWriter n'a pas les moyens de "
|
||||
"payer des certificats de signature de logiciels commerciaux."
|
||||
|
||||
#: ../../source/int_started.rst:141
|
||||
msgid "Installing from PyPi"
|
||||
msgstr "Installation à partir de PyPi"
|
||||
|
||||
#: ../../source/int_started.rst:143
|
||||
msgid ""
|
||||
"novelWriter is also available on the Python Package Index, or PyPi_. This "
|
||||
"install method works on all supported operating systems with a suitable "
|
||||
"Python environment."
|
||||
msgstr ""
|
||||
"novelWriter est également disponible sur le Python Package Index, ou PyPi_. "
|
||||
"Cette méthode d'installation fonctionne sur tous les systèmes d'exploitation "
|
||||
"compatibles avec un environnement Python approprié."
|
||||
|
||||
#: ../../source/int_started.rst:146
|
||||
msgid ""
|
||||
"To install from PyPi you must first have the ``python`` and ``pip`` commands "
|
||||
"available on your system. You can download Python from `python.org`_. It is "
|
||||
"recommended that you install the latest version. If you are on Windows, also "
|
||||
"make sure to select the \"Add Python to PATH\" option during installation."
|
||||
msgstr ""
|
||||
"Pour installer à partir de PyPi, vous devez d'abord avoir les commandes "
|
||||
"``python`` et ``pip`` disponibles sur votre système. Vous pouvez télécharger "
|
||||
"Python depuis `python.org`_. Il est recommandé d'installer la dernière "
|
||||
"version. Si vous êtes sous Windows, assurez-vous également de sélectionner "
|
||||
"l'option « Add Python to PATH » pendant l'installation."
|
||||
|
||||
#: ../../source/int_started.rst:151
|
||||
msgid "To install novelWriter from PyPi, use the following command:"
|
||||
msgstr "Pour installer novelWriter depuis PyPi, utilisez la commande suivante :"
|
||||
|
||||
#: ../../source/int_started.rst:157
|
||||
msgid "To upgrade an existing installation, use:"
|
||||
msgstr "Pour mettre à jour une installation existante, utilisez :"
|
||||
|
||||
#: ../../source/int_started.rst:163
|
||||
msgid ""
|
||||
"When installing via pip, novelWriter can be launched from command line with:"
|
||||
msgstr ""
|
||||
"Lors de l'installation via pip, novelWriter peut être lancé depuis la ligne "
|
||||
"de commande avec :"
|
||||
|
||||
#: ../../source/int_started.rst:169
|
||||
msgid ""
|
||||
"Make sure the install location for pip is in your PATH variable. This is not "
|
||||
"always the case by default, and then you may get a \"Not Found\" error when "
|
||||
"running the ``novelwriter`` command."
|
||||
msgstr ""
|
||||
"Assurez-vous que l'emplacement d'installation de pip est dans votre variable "
|
||||
"PATH. Ce n'est pas toujours le cas par défaut, et vous pouvez alors obtenir "
|
||||
"une erreur « Not Found » lorsque vous exécutez la commande ``novelwriter``."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The novelWriter installer is not signed because Microsoft doesn't "
|
||||
#~ "currently provide a way for non-profit open source projects to properly "
|
||||
#~ "sign their installers. The novelWriter project doesn't have the funding to "
|
||||
#~ "pay for commercial software signing certificates. You will therefore see "
|
||||
#~ "an additional warning about this when you download and run the installer."
|
||||
#~ msgstr ""
|
||||
#~ "Le programme d'installation de novelWriter n'est pas signé parce que "
|
||||
#~ "Microsoft ne fournit pas actuellement un moyen pour les projets open "
|
||||
#~ "source à but non lucratif de signer correctement leurs programmes "
|
||||
#~ "d'installation. Le projet novelWriter n'a pas les moyens de payer des "
|
||||
#~ "certificats de signature de logiciels commerciaux. Vous verrez donc un "
|
||||
#~ "avertissement supplémentaire à ce sujet lorsque vous téléchargerez et "
|
||||
#~ "exécuterez le programme d'installation."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "You may need to use the Ubuntu 20.04 (focal) packages for Debian 11 or "
|
||||
#~ "earlier. The newer Ubuntu packages use a different compression algorithm "
|
||||
#~ "that may not be supported."
|
||||
#~ msgstr ""
|
||||
#~ "Il se peut que vous deviez utiliser les paquets Ubuntu 20.04 (focal) pour "
|
||||
#~ "Debian 11 ou antérieures. Les paquets Ubuntu plus récents utilisent un "
|
||||
#~ "algorithme de compression différent qui peut ne pas être pris en charge."
|
||||
@@ -1,53 +1,55 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-12-21 19:37+0100\n"
|
||||
"PO-Revision-Date: 2025-01-26 16:54+0100\n"
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 23:00+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more_counting.rst:5
|
||||
#: ../../source/more/counting.rst:5
|
||||
msgid "Word and Text Counts"
|
||||
msgstr "Décompte des mots et des textes"
|
||||
|
||||
#: ../../source/more_counting.rst:7
|
||||
#: ../../source/more/counting.rst:7
|
||||
msgid ""
|
||||
"This is an overview of how words and other counts of your text are performed. "
|
||||
"The counting rules should be relatively standard, and are compared to Libre "
|
||||
"The counting rules should be relatively standard, and are comparable to Libre "
|
||||
"Office Writer rules."
|
||||
msgstr ""
|
||||
"Il s'agit d'une vue d'ensemble de la manière dont les mots et autres décomptes "
|
||||
"Il s'agit d'une vue d'ensemble de la manière dont les mots et autres comptages "
|
||||
"de votre texte sont effectués. Les règles de comptage devraient être "
|
||||
"relativement standard, et sont comparables aux règles de Libre Office Writer."
|
||||
|
||||
#: ../../source/more_counting.rst:10
|
||||
#: ../../source/more/counting.rst:10
|
||||
msgid ""
|
||||
"The counts provided in the app on the raw text is meant to be approximate. For "
|
||||
"The counts provided in the app on the raw text are meant to be approximate. For "
|
||||
"more accurate counts, you need to build your manuscript in the **Manuscript "
|
||||
"Tool** and check the counts on the generated preview."
|
||||
msgstr ""
|
||||
"Les décomptes fournis dans l'application sur le texte brut sont approximatifs. "
|
||||
"Pour des décomptes plus précis, vous devez compiler votre manuscrit avec "
|
||||
"**Outil manuscrit** et vérifier les décomptes sur l'aperçu généré."
|
||||
"**Compiler le manuscrit** et vérifier les décomptes sur l'aperçu généré."
|
||||
|
||||
#: ../../source/more_counting.rst:16
|
||||
#: ../../source/more/counting.rst:16
|
||||
msgid "Text Word Counts and Stats"
|
||||
msgstr "Décompte des mots du texte et statistiques"
|
||||
|
||||
#: ../../source/more_counting.rst:18
|
||||
#: ../../source/more/counting.rst:18
|
||||
msgid ""
|
||||
"These are the rules for the main counts available for for each document in a "
|
||||
"project."
|
||||
@@ -55,54 +57,54 @@ msgstr ""
|
||||
"Il s'agit des règles relatives aux principaux décomptes disponibles pour chaque "
|
||||
"document d'un projet."
|
||||
|
||||
#: ../../source/more_counting.rst:20
|
||||
#: ../../source/more/counting.rst:20
|
||||
msgid "For all counts, the following rules apply."
|
||||
msgstr "Pour tous les décomptes, les règles suivantes s'appliquent."
|
||||
|
||||
#: ../../source/more_counting.rst:22 ../../source/more_counting.rst:56
|
||||
#: ../../source/more/counting.rst:22 ../../source/more/counting.rst:56
|
||||
msgid "Short (–) and long (—) dashes are considered word separators."
|
||||
msgstr ""
|
||||
"Les tirets courts (-) et longs (—) sont considérés comme des séparateurs de "
|
||||
"mots."
|
||||
"Les tirets demi-cadratin (–) et cadratin (—) sont considérés comme des "
|
||||
"séparateurs de mots."
|
||||
|
||||
#: ../../source/more_counting.rst:23
|
||||
#: ../../source/more/counting.rst:23
|
||||
msgid "Any line starting with ``%`` or ``@`` is ignored."
|
||||
msgstr "Toute ligne commençant par ``%`` ou ``@`` est ignorée."
|
||||
|
||||
#: ../../source/more_counting.rst:24
|
||||
#: ../../source/more/counting.rst:24
|
||||
msgid "Trailing white spaces are ignored, including line breaks."
|
||||
msgstr ""
|
||||
"Les espaces blancs de fin de ligne sont ignorés, y compris les sauts de ligne."
|
||||
|
||||
#: ../../source/more_counting.rst:25
|
||||
#: ../../source/more/counting.rst:25
|
||||
msgid "Leading ``>`` and trailing ``<`` are ignored with any spaces next to them."
|
||||
msgstr ""
|
||||
"Les ``>`` de début et les ``<`` de fin sont ignorés, de même que les espaces "
|
||||
"qui les accompagnent."
|
||||
|
||||
#: ../../source/more_counting.rst:26
|
||||
#: ../../source/more/counting.rst:26
|
||||
msgid ""
|
||||
"Valid shortcodes and other commands wrapped in brackets ``[]`` are ignored."
|
||||
msgstr ""
|
||||
"Les shortcodes valides et les autres commandes entre crochets ``[]`` sont "
|
||||
"ignorés."
|
||||
|
||||
#: ../../source/more_counting.rst:27
|
||||
#: ../../source/more/counting.rst:27
|
||||
msgid "In-line Markdown syntax in text paragraphs is treated as part of the text."
|
||||
msgstr ""
|
||||
"La syntaxe Markdown en ligne dans les paragraphes de texte est traitée comme "
|
||||
"faisant partie du texte."
|
||||
|
||||
#: ../../source/more_counting.rst:29
|
||||
#: ../../source/more/counting.rst:29
|
||||
msgid ""
|
||||
"After the above preparation of the text, the following counts are available."
|
||||
msgstr "Après la préparation du texte, les chiffres suivants sont disponibles."
|
||||
|
||||
#: ../../source/more_counting.rst:31
|
||||
#: ../../source/more/counting.rst:31
|
||||
msgid "**Character Count**"
|
||||
msgstr "**Décompte des caractères**"
|
||||
|
||||
#: ../../source/more_counting.rst:32
|
||||
#: ../../source/more/counting.rst:32
|
||||
msgid ""
|
||||
"The character count is the sum of characters per line, including leading and in-"
|
||||
"text white space characters, but excluding trailing white space characters. "
|
||||
@@ -115,11 +117,11 @@ msgstr ""
|
||||
"inclus, mais les codes Markdown le sont. Seuls les en-têtes et le texte sont "
|
||||
"pris en compte."
|
||||
|
||||
#: ../../source/more_counting.rst:36
|
||||
#: ../../source/more/counting.rst:36
|
||||
msgid "**Word Count**"
|
||||
msgstr "**Décompte des mots**"
|
||||
|
||||
#: ../../source/more_counting.rst:37
|
||||
#: ../../source/more/counting.rst:37
|
||||
msgid ""
|
||||
"The words count is the sum of blocks of continuous character per line separated "
|
||||
"by any number of white space characters or dashes. Only headings and text are "
|
||||
@@ -127,13 +129,13 @@ msgid ""
|
||||
msgstr ""
|
||||
"Le nombre de mots est la somme des blocs de caractères continus par ligne, "
|
||||
"séparés par un nombre quelconque de caractères d'espacement ou de tirets. Seuls "
|
||||
"les en-têtes et le texte sont comptés."
|
||||
"les titres et le texte sont comptés."
|
||||
|
||||
#: ../../source/more_counting.rst:40
|
||||
#: ../../source/more/counting.rst:40
|
||||
msgid "**Paragraph Count**"
|
||||
msgstr "**Décompte des paragraphes**"
|
||||
|
||||
#: ../../source/more_counting.rst:41
|
||||
#: ../../source/more/counting.rst:41
|
||||
msgid ""
|
||||
"The paragraph count is the number of text blocks separated by one or more empty "
|
||||
"line. A line consisting only of white spaces is considered empty."
|
||||
@@ -142,11 +144,11 @@ msgstr ""
|
||||
"plusieurs lignes vides. Une ligne constituée uniquement d'espaces blancs est "
|
||||
"considérée comme vide."
|
||||
|
||||
#: ../../source/more_counting.rst:46
|
||||
#: ../../source/more/counting.rst:46
|
||||
msgid "Manuscript Counts"
|
||||
msgstr "Décompte du manuscrit"
|
||||
|
||||
#: ../../source/more_counting.rst:48
|
||||
#: ../../source/more/counting.rst:48
|
||||
msgid ""
|
||||
"These are the rules for the counts available for a manuscript in the "
|
||||
"**Manuscript Tool**. The rules have been tuned to agree with LibreOffice "
|
||||
@@ -160,7 +162,7 @@ msgstr ""
|
||||
"texte. LibreOffice Writer compte également le texte dans l'en-tête de la page, "
|
||||
"ce que ne fait pas l'outil **Outil Manuscrit**."
|
||||
|
||||
#: ../../source/more_counting.rst:53
|
||||
#: ../../source/more/counting.rst:53
|
||||
msgid ""
|
||||
"The content of each line is counted after all formatting has been processed, so "
|
||||
"the result will be more accurate than the counts for text documents elsewhere "
|
||||
@@ -171,7 +173,7 @@ msgstr ""
|
||||
"documents textuels dans d'autres parties de l'application. Les règles suivantes "
|
||||
"s'appliquent :"
|
||||
|
||||
#: ../../source/more_counting.rst:57
|
||||
#: ../../source/more/counting.rst:57
|
||||
msgid ""
|
||||
"Leading and trailing white spaces are generally included, but paragraph breaks "
|
||||
"are not."
|
||||
@@ -179,91 +181,91 @@ msgstr ""
|
||||
"Les espaces blancs de début et de fin sont généralement inclus, mais les sauts "
|
||||
"de paragraphe ne le sont pas."
|
||||
|
||||
#: ../../source/more_counting.rst:58
|
||||
#: ../../source/more/counting.rst:58
|
||||
msgid "Hard line breaks within paragraph are considered white space characters."
|
||||
msgstr ""
|
||||
"Les retours à la ligne dans un paragraphe sont considérés comme des caractères "
|
||||
"d'espacement."
|
||||
|
||||
#: ../../source/more_counting.rst:59
|
||||
#: ../../source/more/counting.rst:59
|
||||
msgid ""
|
||||
"All formatting codes are ignored, including shortcodes, commands and Markdown."
|
||||
msgstr ""
|
||||
"Tous les codes de formatage sont ignorés, y compris les shortcodes, les "
|
||||
"commandes et Markdown."
|
||||
|
||||
#: ../../source/more_counting.rst:60
|
||||
#: ../../source/more/counting.rst:60
|
||||
msgid "Scene and section separators are counted."
|
||||
msgstr "Les séparateurs de scène et de section sont pris en compte."
|
||||
|
||||
#: ../../source/more_counting.rst:61
|
||||
#: ../../source/more/counting.rst:61
|
||||
msgid "Comments and meta data lines are counted after they are formatted."
|
||||
msgstr ""
|
||||
"Les lignes de commentaires et de métadonnées sont comptées après leur mise en "
|
||||
"forme."
|
||||
|
||||
#: ../../source/more_counting.rst:62
|
||||
#: ../../source/more/counting.rst:62
|
||||
msgid "Headers are counted after they are formatted with custom formats."
|
||||
msgstr ""
|
||||
"Les en-têtes sont comptés après avoir été formatés avec des formats "
|
||||
"personnalisés."
|
||||
|
||||
#: ../../source/more_counting.rst:64
|
||||
#: ../../source/more/counting.rst:64
|
||||
msgid "The following counts are available:"
|
||||
msgstr "Les décomptes suivants sont disponibles :"
|
||||
|
||||
#: ../../source/more_counting.rst:66
|
||||
#: ../../source/more/counting.rst:66
|
||||
msgid "**Headings**"
|
||||
msgstr "**En-têtes**"
|
||||
|
||||
#: ../../source/more_counting.rst:67
|
||||
#: ../../source/more/counting.rst:67
|
||||
msgid "The number of headings in the manuscript."
|
||||
msgstr "Le nombre d'en-têtes dans le manuscrit."
|
||||
msgstr "Le nombre d'entêtes dans le manuscrit."
|
||||
|
||||
#: ../../source/more_counting.rst:69
|
||||
#: ../../source/more/counting.rst:69
|
||||
msgid "**Paragraphs**"
|
||||
msgstr "**Paragraphes**"
|
||||
|
||||
#: ../../source/more_counting.rst:70
|
||||
#: ../../source/more/counting.rst:70
|
||||
msgid "The number of body text paragraphs in the manuscript."
|
||||
msgstr "Le nombre de paragraphes dans le manuscrit."
|
||||
|
||||
#: ../../source/more_counting.rst:72
|
||||
#: ../../source/more/counting.rst:72
|
||||
msgid "**Words**"
|
||||
msgstr "**Mots**"
|
||||
|
||||
#: ../../source/more_counting.rst:73
|
||||
#: ../../source/more/counting.rst:73
|
||||
msgid ""
|
||||
"The number of words in the manuscript, including any comments and meta data "
|
||||
"text."
|
||||
msgstr ""
|
||||
"Le nombre de mots du manuscrit, y compris les commentaires et les métadonnées."
|
||||
|
||||
#: ../../source/more_counting.rst:75
|
||||
#: ../../source/more/counting.rst:75
|
||||
msgid "**Words in Text**"
|
||||
msgstr "**Mots dans le texte**"
|
||||
|
||||
#: ../../source/more_counting.rst:76
|
||||
#: ../../source/more/counting.rst:76
|
||||
msgid "The number of words in body text paragraphs, excluding all other text."
|
||||
msgstr "Nombre de mots dans les paragraphes, à l'exclusion de tout autre texte."
|
||||
|
||||
#: ../../source/more_counting.rst:78
|
||||
#: ../../source/more/counting.rst:78
|
||||
msgid "**Words in Headings**"
|
||||
msgstr "**Mots dans les en-têtes**"
|
||||
msgstr "**Mots dans les entêtes**"
|
||||
|
||||
#: ../../source/more_counting.rst:79
|
||||
#: ../../source/more/counting.rst:79
|
||||
msgid ""
|
||||
"The number of words in headings, including inserted formatting like chapter "
|
||||
"numbers, etc."
|
||||
msgstr ""
|
||||
"Le nombre de mots dans les en-têtes, y compris le formatage inséré comme les "
|
||||
"Le nombre de mots dans les entêtes, y compris le formatage inséré comme les "
|
||||
"numéros de chapitre, etc."
|
||||
|
||||
#: ../../source/more_counting.rst:81
|
||||
#: ../../source/more/counting.rst:81
|
||||
msgid "**Characters**"
|
||||
msgstr "**Caractères**"
|
||||
|
||||
#: ../../source/more_counting.rst:82
|
||||
#: ../../source/more/counting.rst:82
|
||||
msgid ""
|
||||
"The number of characters in all lines, including any comments and meta data "
|
||||
"text. Paragraph breaks are not counted, but in-paragraph hard line breaks are."
|
||||
@@ -272,11 +274,11 @@ msgstr ""
|
||||
"texte des métadonnées. Les sauts de paragraphe ne sont pas comptés, mais les "
|
||||
"sauts de ligne dans les paragraphes le sont."
|
||||
|
||||
#: ../../source/more_counting.rst:85
|
||||
#: ../../source/more/counting.rst:85
|
||||
msgid "**Character in Text**"
|
||||
msgstr "**Caractères dans le texte**"
|
||||
|
||||
#: ../../source/more_counting.rst:86
|
||||
#: ../../source/more/counting.rst:86
|
||||
msgid ""
|
||||
"The number of characters in body text paragraphs. Paragraph breaks are not "
|
||||
"counted, but in-paragraph hard line breaks are."
|
||||
@@ -284,19 +286,19 @@ msgstr ""
|
||||
"Nombre de caractères dans les paragraphes. Les sauts de paragraphe ne sont pas "
|
||||
"comptés, mais les sauts de ligne dans les paragraphes le sont."
|
||||
|
||||
#: ../../source/more_counting.rst:89
|
||||
#: ../../source/more/counting.rst:89
|
||||
msgid "**Characters in Headings**"
|
||||
msgstr "**Caractères dans les en-têtes**"
|
||||
msgstr "**Caractères dans les entêtes**"
|
||||
|
||||
#: ../../source/more_counting.rst:90
|
||||
#: ../../source/more/counting.rst:90
|
||||
msgid "The number of characters in headings."
|
||||
msgstr "Le nombre de caractères dans les en-têtes."
|
||||
|
||||
#: ../../source/more_counting.rst:92
|
||||
#: ../../source/more/counting.rst:92
|
||||
msgid "**Character in Text, No Spaces**"
|
||||
msgstr "**Caractères dans le texte, sans les espaces**"
|
||||
|
||||
#: ../../source/more_counting.rst:93
|
||||
#: ../../source/more/counting.rst:93
|
||||
msgid ""
|
||||
"The number of characters in body text paragraphs considered part of a word or "
|
||||
"punctuation. That is, white space characters are not counted."
|
||||
@@ -305,11 +307,11 @@ msgstr ""
|
||||
"d'un mot ou d'une ponctuation. En d'autres termes, les caractères d'espacement "
|
||||
"ne sont pas pris en compte."
|
||||
|
||||
#: ../../source/more_counting.rst:96
|
||||
#: ../../source/more/counting.rst:96
|
||||
msgid "**Character in Headings, No Spaces**"
|
||||
msgstr "**Caractères dans les en-têtes, sans les espaces**"
|
||||
|
||||
#: ../../source/more_counting.rst:97
|
||||
#: ../../source/more/counting.rst:97
|
||||
msgid ""
|
||||
"The number of characters in headings considered part of a word or punctuation. "
|
||||
"That is, white space characters are not counted."
|
||||
@@ -1,17 +1,18 @@
|
||||
# French translations for PROJECT.
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2025-01-28 21:52+0100\n"
|
||||
"PO-Revision-Date: 2025-01-28 21:59+0100\n"
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:05+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
@@ -20,74 +21,74 @@ msgstr ""
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more_customise.rst:5
|
||||
#: ../../source/more/customise.rst:5
|
||||
msgid "Customisations"
|
||||
msgstr "Personnalisations"
|
||||
|
||||
#: ../../source/more_customise.rst:10
|
||||
#: ../../source/more/customise.rst:10
|
||||
msgid ""
|
||||
"There are a few ways you can customise novelWriter yourself. Currently, you "
|
||||
"can add new GUI themes, your own syntax themes, and install additional "
|
||||
"There are a few ways you can customise UmbraEdit yourself. Currently, "
|
||||
"you can add new GUI themes, your own syntax themes, and install additional "
|
||||
"dictionaries."
|
||||
msgstr ""
|
||||
"Vous pouvez personnaliser novelWriter de plusieurs façons. Actuellement, "
|
||||
"Vous pouvez personnaliser UmbraEdit de plusieurs façons. Actuellement, "
|
||||
"vous pouvez ajouter de nouveaux thèmes d'interface graphique, vos propres "
|
||||
"thèmes de syntaxe et installer des dictionnaires supplémentaires."
|
||||
|
||||
#: ../../source/more_customise.rst:17
|
||||
#: ../../source/more/customise.rst:17
|
||||
msgid "Spell Check Dictionaries"
|
||||
msgstr "Dictionnaires de vérification orthographique"
|
||||
|
||||
#: ../../source/more_customise.rst:19
|
||||
#: ../../source/more/customise.rst:19
|
||||
msgid ""
|
||||
"novelWriter uses Enchant_ as the spell checking tool. Depending on your "
|
||||
"UmbraEdit uses Enchant_ as the spell checking tool. Depending on your "
|
||||
"operating system, it may or may not load all installed spell check "
|
||||
"dictionaries automatically."
|
||||
msgstr ""
|
||||
"novelWriter utilise Enchant_ comme outil de vérification orthographique. "
|
||||
"UmbraEdit utilise Enchant_ comme outil de vérification orthographique. "
|
||||
"Selon votre système d'exploitation, il peut ou non charger automatiquement "
|
||||
"tous les dictionnaires de vérification orthographique installés."
|
||||
|
||||
#: ../../source/more_customise.rst:23
|
||||
#: ../../source/more/customise.rst:24
|
||||
msgid "Linux and MacOS"
|
||||
msgstr "Linux et MacOS"
|
||||
|
||||
#: ../../source/more_customise.rst:25
|
||||
#: ../../source/more/customise.rst:26
|
||||
msgid ""
|
||||
"On Linux and MacOS, you generally only have to install hunspell, aspell or "
|
||||
"myspell dictionaries on your system like you do for other applications. See "
|
||||
"your distro or OS documentation for how to do this. These dictionaries "
|
||||
"should show up as available spell check languages in novelWriter."
|
||||
"myspell dictionaries on your system like you do for other applications. "
|
||||
"See your distro or OS documentation for how to do this. These dictionaries "
|
||||
"should show up as available spell check languages in UmbraEdit."
|
||||
msgstr ""
|
||||
"Sous Linux et MacOS, il vous suffit généralement d'installer les "
|
||||
"dictionnaires hunspell, aspell ou myspell sur votre système, comme vous le "
|
||||
"faites pour d'autres applications. Consultez la documentation de votre "
|
||||
"distro ou de votre système d'exploitation pour savoir comment procéder. Ces "
|
||||
"dictionnaires devraient apparaître comme des langues de vérification "
|
||||
"orthographique disponibles dans novelWriter."
|
||||
"distro ou de votre système d'exploitation pour savoir comment procéder. "
|
||||
"Ces dictionnaires devraient apparaître comme des langues de vérification "
|
||||
"orthographique disponibles dans UmbraEdit."
|
||||
|
||||
#: ../../source/more_customise.rst:30
|
||||
#: ../../source/more/customise.rst:32
|
||||
msgid "Windows"
|
||||
msgstr "Windows"
|
||||
|
||||
#: ../../source/more_customise.rst:32
|
||||
#: ../../source/more/customise.rst:34
|
||||
msgid ""
|
||||
"For Windows, English is included with the installation. For other languages "
|
||||
"you have to download and add dictionaries yourself."
|
||||
"For Windows, English is included with the installation. For other "
|
||||
"languages you have to download and add dictionaries yourself."
|
||||
msgstr ""
|
||||
"Pour Windows, l'anglais est inclus dans l'installation. Pour les autres "
|
||||
"langues, vous devez télécharger et ajouter les dictionnaires vous-même."
|
||||
|
||||
#: ../../source/more_customise.rst:35
|
||||
#: ../../source/more/customise.rst:37
|
||||
msgid "**Install Tool**"
|
||||
msgstr "**Outil d'installation**"
|
||||
|
||||
#: ../../source/more_customise.rst:37
|
||||
#: ../../source/more/customise.rst:39
|
||||
msgid ""
|
||||
"A small tool to assist with this can be found under **Tools > Add "
|
||||
"Dictionaries**. It will import spell checking dictionaries from Free Office "
|
||||
"or Libre Office extensions. The dictionaries are then installed in the "
|
||||
"install location for the Enchant library and should thus work for any "
|
||||
"Dictionaries**. It will import spell checking dictionaries from Free "
|
||||
"Office or Libre Office extensions. The dictionaries are then installed in "
|
||||
"the install location for the Enchant library and should thus work for any "
|
||||
"application that uses Enchant for spell checking."
|
||||
msgstr ""
|
||||
"Un petit outil pour vous aider se trouve sous **Outils > Ajouter des "
|
||||
@@ -97,11 +98,11 @@ msgstr ""
|
||||
"bibliothèque Enchant et devraient donc fonctionner pour toute application "
|
||||
"qui utilise Enchant pour la vérification orthographique."
|
||||
|
||||
#: ../../source/more_customise.rst:42
|
||||
#: ../../source/more/customise.rst:44
|
||||
msgid "**Manual Install**"
|
||||
msgstr "**Installation manuelle**"
|
||||
|
||||
#: ../../source/more_customise.rst:44
|
||||
#: ../../source/more/customise.rst:46
|
||||
msgid ""
|
||||
"If you prefer to do this manually or want to use a different source than "
|
||||
"the ones mentioned above, You need to get compatible dictionary files for "
|
||||
@@ -114,26 +115,26 @@ msgstr ""
|
||||
"de deux fichiers se terminant par ``.aff`` et ``.dic``. Ces fichiers "
|
||||
"doivent ensuite être copiés à l'emplacement suivant :"
|
||||
|
||||
#: ../../source/more_customise.rst:48
|
||||
#: ../../source/more/customise.rst:50
|
||||
msgid "``C:\\Users\\<USER>\\AppData\\Local\\enchant\\hunspell``"
|
||||
msgstr "``C:\\Users\\<USER>\\AppData\\Local\\enchant\\hunspell``"
|
||||
|
||||
#: ../../source/more_customise.rst:50
|
||||
#: ../../source/more/customise.rst:52
|
||||
msgid ""
|
||||
"This assumes your user profile is stored at ``C:\\Users\\<USER>``. The last "
|
||||
"one or two folders may not exist, so you may need to create them."
|
||||
"This assumes your user profile is stored at ``C:\\Users\\<USER>``. The "
|
||||
"last one or two folders may not exist, so you may need to create them."
|
||||
msgstr ""
|
||||
"Cela suppose que votre profil d'utilisateur est stocké dans ``C:"
|
||||
"\\Users\\<USER>``. Le dernier ou les deux derniers dossiers peuvent ne pas "
|
||||
"exister, vous devrez donc les créer."
|
||||
|
||||
#: ../../source/more_customise.rst:53
|
||||
#: ../../source/more/customise.rst:55
|
||||
msgid "You can find the various dictionaries on the `Free Desktop`_ website."
|
||||
msgstr ""
|
||||
"Vous pouvez trouver les différents dictionnaires sur le site web `Free "
|
||||
"Desktop`_."
|
||||
|
||||
#: ../../source/more_customise.rst:56
|
||||
#: ../../source/more/customise.rst:58
|
||||
msgid ""
|
||||
"The Free Desktop link points to a repository, and what may look like file "
|
||||
"links inside the dictionary folder are actually links to web pages. If you "
|
||||
@@ -145,25 +146,25 @@ msgstr ""
|
||||
"la souris et que vous les téléchargez, vous obtiendrez des fichiers HTML, "
|
||||
"pas des dictionnaires !"
|
||||
|
||||
#: ../../source/more_customise.rst:60
|
||||
#: ../../source/more/customise.rst:62
|
||||
msgid ""
|
||||
"In order to download the actual dictionary files, right-click the \"plain\" "
|
||||
"label at the end of each line and download that."
|
||||
"In order to download the actual dictionary files, right-click the "
|
||||
"\"plain\" label at the end of each line and download that."
|
||||
msgstr ""
|
||||
"Pour télécharger les fichiers du dictionnaire, cliquez avec le bouton droit "
|
||||
"de la souris sur l'étiquette « plain » à la fin de chaque ligne et "
|
||||
"Pour télécharger les fichiers du dictionnaire, cliquez avec le bouton "
|
||||
"droit de la souris sur l'étiquette « plain » à la fin de chaque ligne et "
|
||||
"téléchargez-la."
|
||||
|
||||
#: ../../source/more_customise.rst:67
|
||||
#: ../../source/more/customise.rst:69
|
||||
msgid "Syntax and GUI Themes"
|
||||
msgstr "Syntaxe et thèmes de l'interface graphique"
|
||||
|
||||
#: ../../source/more_customise.rst:69
|
||||
#: ../../source/more/customise.rst:71
|
||||
msgid ""
|
||||
"Adding your own GUI and syntax themes is relatively easy, although it "
|
||||
"requires that you manually edit config files with colour values. The themes "
|
||||
"are defined by simple plain text config files with meta data and colour "
|
||||
"settings."
|
||||
"requires that you manually edit config files with colour values. The "
|
||||
"themes are defined by simple plain text config files with meta data and "
|
||||
"colour settings."
|
||||
msgstr ""
|
||||
"L'ajout de vos propres thèmes d'interface graphique et de syntaxe est "
|
||||
"relativement facile, bien qu'il soit nécessaire d'éditer manuellement les "
|
||||
@@ -171,40 +172,42 @@ msgstr ""
|
||||
"définis par de simples fichiers de configuration en texte brut contenant "
|
||||
"des métadonnées et des paramètres de couleur."
|
||||
|
||||
#: ../../source/more_customise.rst:73
|
||||
#: ../../source/more/customise.rst:75
|
||||
msgid ""
|
||||
"In order to make your own versions, first copy one of the existing files to "
|
||||
"your local computer and modify it as you like."
|
||||
"In order to make your own versions, first copy one of the existing files "
|
||||
"to your local computer and modify it as you like."
|
||||
msgstr ""
|
||||
"Pour créer vos propres versions, copiez d'abord l'un des fichiers existants "
|
||||
"sur votre ordinateur local et modifiez-le à votre guise."
|
||||
"Pour créer vos propres versions, copiez d'abord l'un des fichiers "
|
||||
"existants sur votre ordinateur local et modifiez-le à votre guise."
|
||||
|
||||
#: ../../source/more_customise.rst:76
|
||||
#: ../../source/more/customise.rst:78
|
||||
msgid ""
|
||||
"The existing syntax themes are stored in `novelwriter/assets/syntax "
|
||||
"<https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/syntax>`_."
|
||||
"The existing syntax themes are stored in `umbraedit/assets/syntax "
|
||||
"<https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/"
|
||||
"syntax>`_."
|
||||
msgstr ""
|
||||
"Les thèmes syntaxiques existants sont stockés dans `novelwriter/assets/"
|
||||
"syntax <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/"
|
||||
"Les thèmes syntaxiques existants sont stockés dans `umbraedit/assets/"
|
||||
"syntax <https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/"
|
||||
"syntax>`_."
|
||||
|
||||
#: ../../source/more_customise.rst:78
|
||||
#: ../../source/more/customise.rst:80
|
||||
msgid ""
|
||||
"The existing GUI themes are stored in `novelwriter/assets/themes <https://"
|
||||
"github.com/vkbo/novelWriter/tree/main/novelwriter/assets/themes>`_."
|
||||
"The existing GUI themes are stored in `umbraedit/assets/themes <https://"
|
||||
"github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/themes>`_."
|
||||
msgstr ""
|
||||
"Les thèmes GUI existants sont stockés dans `novelwriter/assets/themes "
|
||||
"<https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/themes>`_."
|
||||
"Les thèmes GUI existants sont stockés dans `umbraedit/assets/themes "
|
||||
"<https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/"
|
||||
"themes>`_."
|
||||
|
||||
#: ../../source/more_customise.rst:80
|
||||
#: ../../source/more/customise.rst:82
|
||||
msgid ""
|
||||
"The existing icon themes are stored in `novelwriter/assets/icons <https://"
|
||||
"github.com/vkbo/novelWriter/tree/main/novelwriter/assets/icons>`_."
|
||||
"The existing icon themes are stored in `umbraedit/assets/icons <https://"
|
||||
"github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/icons>`_."
|
||||
msgstr ""
|
||||
"Les thèmes d'icônes existants sont stockés dans `novelwriter/assets/icons "
|
||||
"<https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/icons>`_."
|
||||
"Les thèmes d'icônes existants sont stockés dans `umbraedit/assets/icons "
|
||||
"<https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/icons>`_."
|
||||
|
||||
#: ../../source/more_customise.rst:83
|
||||
#: ../../source/more/customise.rst:85
|
||||
msgid ""
|
||||
"Remember to also change the name of your theme by modifying the ``name`` "
|
||||
"setting at the top of the file, otherwise you may not be able to "
|
||||
@@ -214,22 +217,25 @@ msgstr ""
|
||||
"paramètre ``name`` en haut du fichier, sinon vous ne pourrez pas les "
|
||||
"distinguer dans les **Préférences**."
|
||||
|
||||
#: ../../source/more_customise.rst:86
|
||||
#: ../../source/more/customise.rst:88
|
||||
msgid ""
|
||||
"For novelWriter to be able to locate the custom theme files, you must copy "
|
||||
"them to the :ref:`a_locations_data` location in your home or user area. "
|
||||
"There should be a folder there named ``syntax`` for syntax themes, just "
|
||||
"``themes`` for GUI themes, and ``icons`` for icon themes. These folders are "
|
||||
"created the first time you start novelWriter."
|
||||
"For UmbraEdit to be able to locate the custom theme files, you must copy "
|
||||
"them to the :ref:`docs_technical_locations_data` location in your home or "
|
||||
"user area. There should be a folder there named ``syntax`` for syntax "
|
||||
"themes, just ``themes`` for GUI themes, and ``icons`` for icon themes. "
|
||||
"These folders are created the first time you start UmbraEdit."
|
||||
msgstr ""
|
||||
"Pour que novelWriter puisse localiser les fichiers de thèmes personnalisés, "
|
||||
"vous devez les copier dans l'emplacement :ref:`a_locations_data` dans votre "
|
||||
"espace personnel ou utilisateur. Il devrait y avoir un dossier nommé "
|
||||
"``syntax`` pour les thèmes de syntaxe, juste ``themes`` pour les thèmes "
|
||||
"d'interface graphique, et ``icons`` pour les thèmes d'icônes. Ces dossiers "
|
||||
"sont créés la première fois que vous démarrez novelWriter."
|
||||
"Pour que UmbraEdit puisse localiser les fichiers de thèmes "
|
||||
"personnalisés, vous devez les copier dans l'emplacement :ref:"
|
||||
"`docs_technical_locations_data` dans votre espace personnel ou "
|
||||
"utilisateur. Il devrait y avoir un dossier nommé ``syntax`` pour les "
|
||||
"thèmes de syntaxe, juste ``themes`` pour les thèmes GUI, et ``icons`` pour "
|
||||
"les thèmes d'icônes. Ces dossiers sont créés la première fois que vous "
|
||||
"démarrez UmbraEdit.\n"
|
||||
"\n"
|
||||
"Traduit avec DeepL.com (version gratuite)"
|
||||
|
||||
#: ../../source/more_customise.rst:91
|
||||
#: ../../source/more/customise.rst:93
|
||||
msgid ""
|
||||
"Once the files are copied there, they should show up in **Preferences** "
|
||||
"with the label you set as ``name`` inside the file."
|
||||
@@ -237,41 +243,30 @@ msgstr ""
|
||||
"Une fois les fichiers copiés, ils devraient apparaître dans les "
|
||||
"**Préférences** avec le nom que vous avez défini dans le fichier."
|
||||
|
||||
#: ../../source/more_customise.rst:94
|
||||
#: ../../source/more/customise.rst:98
|
||||
msgid ""
|
||||
"The ``icontheme`` value was added to GUI themes. Make sure you set this "
|
||||
"value in existing custom themes. Otherwise, novelWriter will try to guess "
|
||||
"your icon theme, and may not pick the most suitable one."
|
||||
"The theme file formats change regularly in new releases. It is up to you "
|
||||
"to keep custom theme files up to date."
|
||||
msgstr ""
|
||||
"La valeur ``icontheme`` a été ajoutée aux thèmes GUI. Assurez-vous de "
|
||||
"définir cette valeur dans les thèmes personnalisés existants. Sinon, "
|
||||
"novelWriter essaiera de deviner votre thème d'icônes, et ne choisira peut-"
|
||||
"être pas le plus approprié."
|
||||
"Les formats des fichiers de thème changent régulièrement dans les "
|
||||
"nouvelles versions. C'est à vous qu'il incombe de mettre à jour les "
|
||||
"fichiers des thèmes personnalisés."
|
||||
|
||||
#: ../../source/more_customise.rst:101
|
||||
#: ../../source/more/customise.rst:103
|
||||
msgid "Custom GUI and Icons Theme"
|
||||
msgstr "Thème d'interface graphique et d'icônes personnalisé"
|
||||
|
||||
#: ../../source/more_customise.rst:103
|
||||
#: ../../source/more/customise.rst:105
|
||||
msgid "A GUI theme ``.conf`` file consists of the following settings:"
|
||||
msgstr ""
|
||||
"Le fichier ``.conf`` d'un thème GUI est constitué des paramètres suivants :"
|
||||
|
||||
#: ../../source/more_customise.rst:141
|
||||
msgid ""
|
||||
"In the Main section you must at least define the ``name`` and ``icontheme`` "
|
||||
"settings. The ``icontheme`` settings should correspond to one of the "
|
||||
"internal icon themes, either ``typicons_light`` or ``typicons_dark``, or to "
|
||||
"an icon theme in your custom icons directory. The setting must match the "
|
||||
"icon theme's folder name."
|
||||
#: ../../source/more/customise.rst:159
|
||||
msgid "In the Main section you must at least define the ``name`` settings."
|
||||
msgstr ""
|
||||
"Dans la section Main, vous devez au moins définir les paramètres ``name`` "
|
||||
"et ``icontheme``. Le paramètre ``icontheme`` doit correspondre à l'un des "
|
||||
"thèmes d'icônes internes, soit ``typicons_light`` ou ``typicons_dark``, "
|
||||
"soit à un thème d'icônes dans votre répertoire d'icônes personnalisé. Le "
|
||||
"paramètre doit correspondre au nom du dossier du thème d'icônes."
|
||||
"Dans la section Main, vous devez au moins définir les paramètres ``name``."
|
||||
|
||||
#: ../../source/more_customise.rst:146
|
||||
#: ../../source/more/customise.rst:161
|
||||
msgid ""
|
||||
"The Palette values correspond to the Qt enum values for ``QPalette::"
|
||||
"ColorRole``, see the `Qt documentation <https://doc.qt.io/qt-6/qpalette."
|
||||
@@ -279,7 +274,8 @@ msgid ""
|
||||
"on the format ``r, g, b`` where each is an integer from ``0`` to ``255``. "
|
||||
"Omitted values are not loaded and will use default values. If the "
|
||||
"``helptext`` colour is not defined, it is computed as a colour between the "
|
||||
"``window`` and ``windowtext`` colour."
|
||||
"``window`` and ``windowtext`` colour. Additional shades of some of the "
|
||||
"colours are also computed. These are mainly used for 3D effects."
|
||||
msgstr ""
|
||||
"Les valeurs de la palette correspondent aux valeurs de l'enum Qt pour "
|
||||
"``QPalette::ColorRole``, voir la documentation Qt <https://doc.qt.io/qt-6/"
|
||||
@@ -288,23 +284,36 @@ msgstr ""
|
||||
"de ``0`` à ``255``. Les valeurs omises ne sont pas chargées et utilisent "
|
||||
"les valeurs par défaut. Si la couleur ``helptext`` n'est pas définie, elle "
|
||||
"est calculée comme une couleur comprise entre les couleurs ``window`` et "
|
||||
"``windowtext``."
|
||||
"``windowtext``. Des nuances supplémentaires de certaines couleurs sont "
|
||||
"également calculées. Elles sont principalement utilisées pour les effets "
|
||||
"3D."
|
||||
|
||||
#: ../../source/more_customise.rst:152
|
||||
#: ../../source/more/customise.rst:168
|
||||
msgid "The ``fadedtext`` and ``errortext`` theme colour entries were added."
|
||||
msgstr ""
|
||||
"Les entrées de couleur des thèmes ``fadedtext`` et ``errortext`` ont été "
|
||||
"ajoutées."
|
||||
|
||||
#: ../../source/more_customise.rst:157
|
||||
#: ../../source/more/customise.rst:171
|
||||
msgid ""
|
||||
"The ``icontheme`` setting was dropped as the icon theme is now its own "
|
||||
"setting. The ``[Icons]`` and ``[Project]`` sections were added, and the "
|
||||
"``status*`` settings removed."
|
||||
msgstr ""
|
||||
"Le paramètre ``icontheme`` a été supprimé car le thème des icônes a "
|
||||
"maintenant son propre paramètre. Les sections ``[Icons]`` et ``[Project]`` "
|
||||
"ont été ajoutées, et le paramètre ``status*`` a été supprimé."
|
||||
|
||||
#: ../../source/more/customise.rst:177
|
||||
msgid "Custom Syntax Theme"
|
||||
msgstr "Syntaxe des thèmes personnalisés"
|
||||
|
||||
#: ../../source/more_customise.rst:159
|
||||
#: ../../source/more/customise.rst:179
|
||||
msgid "A syntax theme ``.conf`` file consists of the following settings:"
|
||||
msgstr "Un fichier ``.conf`` de thème est constitué des paramètres suivants :"
|
||||
msgstr ""
|
||||
"Un fichier ``.conf`` de thème est constitué des paramètres suivants :"
|
||||
|
||||
#: ../../source/more_customise.rst:193
|
||||
#: ../../source/more/customise.rst:213
|
||||
msgid ""
|
||||
"In the Main section, you must define at least the ``name`` setting. The "
|
||||
"Syntax colour values are RGB(A) numbers of the format ``r, g, b, a`` where "
|
||||
@@ -312,39 +321,39 @@ msgid ""
|
||||
"channel, which can be omitted."
|
||||
msgstr ""
|
||||
"Dans la section Main, vous devez définir au moins le paramètre ``name``. "
|
||||
"Les valeurs de couleur de la syntaxe sont des nombres RVB(A) du format ``r, "
|
||||
"g, b, a`` où chacun est un entier de ``0`` à ``255``. La quatrième valeur "
|
||||
"est le canal alpha, qui peut être omis."
|
||||
"Les valeurs de couleur de la syntaxe sont des nombres RVB(A) du format "
|
||||
"``r, g, b, a`` où chacun est un entier de ``0`` à ``255``. La quatrième "
|
||||
"valeur est le canal alpha, qui peut être omis."
|
||||
|
||||
#: ../../source/more_customise.rst:197
|
||||
#: ../../source/more/customise.rst:217
|
||||
msgid ""
|
||||
"Omitted syntax colours default to black, except ``background`` which "
|
||||
"defaults to white, and ``texthighlight`` which defaults to white with half "
|
||||
"transparency."
|
||||
msgstr ""
|
||||
"Les couleurs omises dans la syntaxe prennent par défaut la couleur noire, à "
|
||||
"l'exception de ``background`` qui prend par défaut la couleur blanche, et "
|
||||
"de ``texthighlight`` qui prend par défaut la couleur blanche avec une demi-"
|
||||
"transparence."
|
||||
"Les couleurs omises dans la syntaxe prennent par défaut la couleur noire, "
|
||||
"à l'exception de ``background`` qui prend par défaut la couleur blanche, "
|
||||
"et de ``texthighlight`` qui prend par défaut la couleur blanche avec une "
|
||||
"demi-transparence."
|
||||
|
||||
#: ../../source/more_customise.rst:200
|
||||
#: ../../source/more/customise.rst:220
|
||||
msgid "The ``shortcode`` syntax colour entry was added."
|
||||
msgstr "Le paramètre de couleur ``shortcode`` a été ajouté."
|
||||
|
||||
#: ../../source/more_customise.rst:203
|
||||
#: ../../source/more/customise.rst:223
|
||||
msgid "The ``optional`` syntax colour entry was added."
|
||||
msgstr "Le paramètre de couleur ``optional`` a été ajouté."
|
||||
|
||||
#: ../../source/more_customise.rst:206
|
||||
#: ../../source/more/customise.rst:226
|
||||
msgid "The ``texthighlight`` syntax colour entry was added."
|
||||
msgstr "Le paramètre de couleur ``texthighlight`` a été ajouté."
|
||||
|
||||
#: ../../source/more_customise.rst:209
|
||||
#: ../../source/more/customise.rst:229
|
||||
msgid ""
|
||||
"The ``dialog``, ``altdialog``, ``note`` and ``tag`` syntax colour entries "
|
||||
"were added. ``straightquotes``, ``doublequotes`` and ``singlequotes`` were "
|
||||
"removed."
|
||||
msgstr ""
|
||||
"Les paramètres de couleur ``dialog``, ``altdialog``, ``note`` et ``tag`` "
|
||||
"Les paramètres de couleur ``dialog``, ``altdialog``, ``note`` et ``tag`` "
|
||||
"ont été ajoutés. Les paramètres ``guillemets droits``, ``guillemets "
|
||||
"doubles`` et ``guillemets simples`` ont été supprimés."
|
||||
159
docs/source/locales/fr/LC_MESSAGES/more/handling_errors.po
Normal file
@@ -0,0 +1,159 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:11+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:5
|
||||
msgid "Handling Errors"
|
||||
msgstr "Traitement des erreurs"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:7
|
||||
msgid ""
|
||||
"In case something goes wrong, UmbraEdit has a few built-in features to "
|
||||
"reduce the chance your work is lost. In case of a crash, it will also "
|
||||
"try to save whatever changes you have made before exiting, if this is at "
|
||||
"all possible."
|
||||
msgstr ""
|
||||
"En cas de problème, UmbraEdit dispose de quelques fonctions intégrées "
|
||||
"pour réduire le risque de perte de votre travail. En cas de panne, il "
|
||||
"essaiera également d'enregistrer les modifications que vous avez "
|
||||
"apportées avant de quitter, si cela est possible."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:11
|
||||
msgid ""
|
||||
"The storage solution is designed to save each text document "
|
||||
"independently, so only the document you're working on is actually at a "
|
||||
"risk of losing data in the event of a crash."
|
||||
msgstr ""
|
||||
"La solution de stockage est conçue pour sauvegarder chaque document "
|
||||
"texte indépendamment, de sorte que seul le document sur lequel vous "
|
||||
"travaillez risque de perdre des données en cas de panne."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:18
|
||||
msgid "Recovered Documents"
|
||||
msgstr "Documents récupérés"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:20
|
||||
msgid ""
|
||||
"If UmbraEdit crashes or otherwise exits without saving the project "
|
||||
"state, or if you're using a file synchronisation tool that runs out of "
|
||||
"sync, there may be files in the project storage folder that aren't "
|
||||
"tracked in the core project file. These files, when discovered, are "
|
||||
"recovered and added back into the project when a project is opened."
|
||||
msgstr ""
|
||||
"Si UmbraEdit se plante ou se termine sans sauvegarder l'état du "
|
||||
"projet, ou si vous utilisez un outil de synchronisation de fichiers qui "
|
||||
"se désynchronise, il peut y avoir des fichiers dans le dossier de "
|
||||
"stockage du projet qui ne sont pas suivis dans le fichier de base du "
|
||||
"projet. Ces fichiers, lorsqu'ils sont découverts, sont récupérés et "
|
||||
"ajoutés au projet lorsqu'un projet est ouvert."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:25
|
||||
msgid ""
|
||||
"The discovered files are scanned for metadata that give clues as to "
|
||||
"where the document may previously have been located in the project. The "
|
||||
"project loading routine will try to put them back as close as possible "
|
||||
"to this location, if it still exists. Generally, it will be appended to "
|
||||
"the end of the folder where it previously was located. If that folder "
|
||||
"doesn't exist, it will try to add it to the correct root folder type. If "
|
||||
"it cannot figure out which root folder is correct, the document will be "
|
||||
"added to the **Novel** root folder. Finally, if a **Novel** does not "
|
||||
"exist, one will be created."
|
||||
msgstr ""
|
||||
"Les fichiers découverts sont analysés à la recherche de métadonnées qui "
|
||||
"donnent des indices sur l'emplacement antérieur du document dans le "
|
||||
"projet. La routine de chargement du projet essaiera de les replacer "
|
||||
"aussi près que possible de cet emplacement, s'il existe toujours. En "
|
||||
"général, le document sera ajouté à la fin du dossier où il se trouvait "
|
||||
"auparavant. Si ce dossier n'existe pas, il essaiera de l'ajouter au type "
|
||||
"de dossier racine correct. S'il ne parvient pas à déterminer quel est le "
|
||||
"bon dossier racine, le document sera ajouté au dossier racine "
|
||||
"**Nouveau**. Enfin, si un **Nouveau** n'existe pas, il en sera créé un."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:33
|
||||
msgid ""
|
||||
"If the title of the document can be recovered, the word \"Recovered:\" "
|
||||
"will be added as a prefix to indicate that it may need further "
|
||||
"attention. If the title cannot be determined, the document will be named "
|
||||
"after its internal key, which is a string of characters and numbers."
|
||||
msgstr ""
|
||||
"Si le titre du document peut être récupéré, le mot « Récupéré : » sera "
|
||||
"ajouté comme préfixe pour indiquer qu'il peut nécessiter une attention "
|
||||
"supplémentaire. Si le titre ne peut être déterminé, le document sera "
|
||||
"nommé d'après sa clé interne, qui est une chaîne de caractères et de "
|
||||
"chiffres."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:41
|
||||
msgid "Project Lockfile"
|
||||
msgstr "Fichier de verrouillage du projet"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:43
|
||||
msgid ""
|
||||
"To prevent data loss caused by file conflicts when UmbraEdit projects "
|
||||
"are synchronised via file synchronisation tools, a project lockfile is "
|
||||
"written to the project storage folder when a project is open. If you try "
|
||||
"to open a project that already has such a file present, you will be "
|
||||
"presented with a warning, and some information about where else "
|
||||
"UmbraEdit thinks the project is also open. You will be given the "
|
||||
"option to ignore this warning, and continue opening the project at your "
|
||||
"own risk."
|
||||
msgstr ""
|
||||
"Pour éviter la perte de données causée par des conflits de fichiers "
|
||||
"lorsque les projets UmbraEdit sont synchronisés via des outils de "
|
||||
"synchronisation de fichiers, un fichier de verrouillage de projet est "
|
||||
"écrit dans le dossier de stockage du projet lorsqu'un projet est ouvert. "
|
||||
"Si vous essayez d'ouvrir un projet dans lequel un tel fichier est déjà "
|
||||
"présent, vous recevrez un avertissement et des informations sur "
|
||||
"l'endroit où UmbraEdit pense que le projet est également ouvert. Vous "
|
||||
"aurez la possibilité d'ignorer cet avertissement et de continuer à "
|
||||
"ouvrir le projet à vos risques et périls."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:52
|
||||
msgid ""
|
||||
"If, for some reason, UmbraEdit or your computer crashes, the lock file "
|
||||
"may remain even if there are no other instances keeping the project "
|
||||
"open. In such a case it is safe to ignore the lock file warning when re-"
|
||||
"opening the project."
|
||||
msgstr ""
|
||||
"Si, pour une raison quelconque, UmbraEdit ou votre ordinateur tombe en "
|
||||
"panne, le fichier de verrouillage peut subsister même si aucune autre "
|
||||
"instance ne maintient le projet ouvert. Dans ce cas, il est prudent "
|
||||
"d'ignorer l'avertissement relatif au fichier de verrouillage lors de la "
|
||||
"réouverture du projet."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:58
|
||||
msgid ""
|
||||
"If you choose to ignore the warning and continue opening the project, "
|
||||
"and multiple instances of the project are in fact open, you are likely "
|
||||
"to cause inconsistencies and create diverging project files, potentially "
|
||||
"resulting in loss of data and orphaned files. You are not likely to lose "
|
||||
"any actual text unless both instances have the same document open in the "
|
||||
"editor, and UmbraEdit will try to resolve project inconsistencies the "
|
||||
"next time you open the project."
|
||||
msgstr ""
|
||||
"Si vous choisissez d'ignorer l'avertissement et de continuer à ouvrir le "
|
||||
"projet, et que plusieurs instances du projet sont en fait ouvertes, vous "
|
||||
"risquez de provoquer des incohérences et de créer des fichiers de projet "
|
||||
"divergents, ce qui peut entraîner une perte de données et des fichiers "
|
||||
"orphelins. Il est peu probable que vous perdiez du texte à moins que les "
|
||||
"deux instances aient le même document ouvert dans l'éditeur, et "
|
||||
"UmbraEdit essaiera de résoudre les incohérences du projet la prochaine "
|
||||
"fois que vous l'ouvrirez."
|
||||
@@ -1,42 +1,44 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-12-21 19:37+0100\n"
|
||||
"PO-Revision-Date: 2024-12-23 17:49+0100\n"
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:21+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more_projectformat.rst:5
|
||||
#: ../../source/more/project_format.rst:5
|
||||
msgid "Project Format Changes"
|
||||
msgstr "Modifications du format des projet"
|
||||
msgstr "Modifications du format des projets"
|
||||
|
||||
#: ../../source/more_projectformat.rst:10
|
||||
#: ../../source/more/project_format.rst:7
|
||||
msgid ""
|
||||
"Most of the changes to the file formats over the history of novelWriter "
|
||||
"Most of the changes to the file formats over the history of UmbraEdit "
|
||||
"have no impact on the user side of things. The project files are "
|
||||
"generally updated automatically. However, some of the changes require "
|
||||
"minor actions from the user."
|
||||
msgstr ""
|
||||
"La plupart des modifications apportées aux formats de fichiers au cours "
|
||||
"de l'histoire de novelWriter n'ont pas d'impact sur l'utilisateur. Les "
|
||||
"de l'histoire de UmbraEdit n'ont pas d'impact sur l'utilisateur. Les "
|
||||
"fichiers de projet sont généralement mis à jour automatiquement. "
|
||||
"Cependant, certains changements nécessitent des actions mineures de la "
|
||||
"part de l'utilisateur."
|
||||
|
||||
#: ../../source/more_projectformat.rst:14
|
||||
#: ../../source/more/project_format.rst:11
|
||||
msgid ""
|
||||
"The key changes in the formats are listed in this chapter, as well as "
|
||||
"the user actions required, where applicable."
|
||||
@@ -45,60 +47,40 @@ msgstr ""
|
||||
"ce chapitre, ainsi que les actions requises de la part de l'utilisateur, "
|
||||
"le cas échéant."
|
||||
|
||||
#: ../../source/more_projectformat.rst:19
|
||||
#: ../../source/more/project_format.rst:14
|
||||
msgid ""
|
||||
"A full project file format specification is available in the online "
|
||||
"documentation_."
|
||||
"A full project file format specification is available under \"More "
|
||||
"Documents\"."
|
||||
msgstr ""
|
||||
"Une spécification complète du format de fichier du projet est disponible "
|
||||
"dans la documentation en ligne_."
|
||||
"sous « Plus d'informations »."
|
||||
|
||||
#: ../../source/more_projectformat.rst:22
|
||||
#: ../../source/more/project_format.rst:18
|
||||
msgid ""
|
||||
"When you update a project from one format version to the next, the "
|
||||
"project can no longer be opened by a version of novelWriter prior to the "
|
||||
"project can no longer be opened by a version of UmbraEdit prior to the "
|
||||
"version where the new file format was introduced. You will get a "
|
||||
"notification about any updates to your project file format and will have "
|
||||
"the option to decline the upgrade."
|
||||
msgstr ""
|
||||
"Lorsque vous mettez à jour un projet d'une version de format à la "
|
||||
"suivante, le projet ne peut plus être ouvert par une version de "
|
||||
"novelWriter antérieure à la version où le nouveau format de fichier a "
|
||||
"UmbraEdit antérieure à la version où le nouveau format de fichier a "
|
||||
"été introduit. Vous recevrez une notification concernant toute mise à "
|
||||
"jour du format de fichier de votre projet et vous aurez la possibilité "
|
||||
"de refuser la mise à jour."
|
||||
|
||||
#: ../../source/more_projectformat.rst:29
|
||||
msgid "**For Developers**"
|
||||
msgstr "**Pour les développeurs**"
|
||||
|
||||
#: ../../source/more_projectformat.rst:31
|
||||
msgid ""
|
||||
"A full description of the current file format is available in the :"
|
||||
"download:`File Format Spec 1.5 <fileformatspec15.pdf>` document, "
|
||||
"available as a PDF. This document is intended for contributors to "
|
||||
"novelWriter, those building project conversion tools, either to or from "
|
||||
"tne novelWriter format, and for those who wish to make their own "
|
||||
"templating system."
|
||||
msgstr ""
|
||||
"Une description complète du format de fichier actuel est disponible dans "
|
||||
"le document :download:`File Format Spec 1.5 <fileformatspec15.pdf>`, "
|
||||
"disponible au format PDF. Ce document est destiné aux contributeurs de "
|
||||
"novelWriter, à ceux qui construisent des outils de conversion de "
|
||||
"projets, soit vers, soit à partir du format novelWriter, et à ceux qui "
|
||||
"souhaitent créer leur propre système de gabarit."
|
||||
|
||||
#: ../../source/more_projectformat.rst:41
|
||||
#: ../../source/more/project_format.rst:27
|
||||
msgid "Format 1.5 Changes"
|
||||
msgstr "Format 1.5 Modifications"
|
||||
|
||||
#: ../../source/more_projectformat.rst:43
|
||||
msgid "This project format was introduced in novelWriter version 2.0 RC 2."
|
||||
#: ../../source/more/project_format.rst:29
|
||||
msgid "This project format was introduced in UmbraEdit version 2.0 RC 2."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 2.0 RC 2 de "
|
||||
"novelWriter."
|
||||
"UmbraEdit."
|
||||
|
||||
#: ../../source/more_projectformat.rst:45
|
||||
#: ../../source/more/project_format.rst:31
|
||||
msgid ""
|
||||
"This is a modification of the 1.4 format. It makes the XML more "
|
||||
"consistent in that meta data have been moved to their respective section "
|
||||
@@ -118,22 +100,22 @@ msgstr ""
|
||||
"lors du premier chargement d'un projet. Aucune action de l'utilisateur "
|
||||
"n'est nécessaire."
|
||||
|
||||
#: ../../source/more_projectformat.rst:55
|
||||
#: ../../source/more/project_format.rst:41
|
||||
msgid "Format 1.4 Changes"
|
||||
msgstr "Format 1.4 Modifications"
|
||||
|
||||
#: ../../source/more_projectformat.rst:57
|
||||
#: ../../source/more/project_format.rst:43
|
||||
msgid ""
|
||||
"This project format was introduced in novelWriter version 2.0 RC 1. "
|
||||
"This project format was introduced in UmbraEdit version 2.0 RC 1. "
|
||||
"Since this was a release candidate, it is unlikely that your project "
|
||||
"uses it, but it may be the case if you've installed a pre-release."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 2.0 RC 1 de "
|
||||
"novelWriter. Comme il s'agissait d'une version candidate, il est peu "
|
||||
"UmbraEdit. Comme il s'agissait d'une version candidate, il est peu "
|
||||
"probable que votre projet l'utilise, mais c'est peut-être le cas si vous "
|
||||
"avez installé une préversion."
|
||||
|
||||
#: ../../source/more_projectformat.rst:61
|
||||
#: ../../source/more/project_format.rst:47
|
||||
msgid ""
|
||||
"This format changes the way project items (folders, documents and notes) "
|
||||
"are stored. It is a more compact format that is simpler and faster to "
|
||||
@@ -146,16 +128,16 @@ msgstr ""
|
||||
"conversion se fait automatiquement lors du premier chargement d'un "
|
||||
"projet. Aucune action de l'utilisateur n'est nécessaire."
|
||||
|
||||
#: ../../source/more_projectformat.rst:69
|
||||
#: ../../source/more/project_format.rst:55
|
||||
msgid "Format 1.3 Changes"
|
||||
msgstr "Format 1.3 Modifications"
|
||||
|
||||
#: ../../source/more_projectformat.rst:71
|
||||
msgid "This project format was introduced in novelWriter version 1.5."
|
||||
#: ../../source/more/project_format.rst:57
|
||||
msgid "This project format was introduced in UmbraEdit version 1.5."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 1.5 de novelWriter."
|
||||
"Ce format de projet a été introduit dans la version 1.5 de UmbraEdit."
|
||||
|
||||
#: ../../source/more_projectformat.rst:73
|
||||
#: ../../source/more/project_format.rst:59
|
||||
msgid ""
|
||||
"With this format, the number of document layouts was reduced from eight "
|
||||
"to two. The conversion of document layouts is performed automatically "
|
||||
@@ -165,7 +147,7 @@ msgstr ""
|
||||
"huit à deux. La conversion des présentations de documents s'effectue "
|
||||
"automatiquement lors de l'ouverture du projet."
|
||||
|
||||
#: ../../source/more_projectformat.rst:76
|
||||
#: ../../source/more/project_format.rst:62
|
||||
msgid ""
|
||||
"Due to the reduction of layouts, some features that were previously "
|
||||
"controlled by these layouts will be lost. These features are instead now "
|
||||
@@ -178,7 +160,7 @@ msgstr ""
|
||||
"Pour les récupérer, l'utilisateur doit donc apporter quelques "
|
||||
"modifications mineures aux documents sélectionnés."
|
||||
|
||||
#: ../../source/more_projectformat.rst:80
|
||||
#: ../../source/more/project_format.rst:66
|
||||
msgid ""
|
||||
"The manual changes the user must make should be very few as they apply "
|
||||
"to document layouts that should be used only a few places in any given "
|
||||
@@ -189,118 +171,125 @@ msgstr ""
|
||||
"qui ne doivent être utilisées qu'à quelques endroits dans un projet "
|
||||
"donné. Ces modifications sont les suivantes :"
|
||||
|
||||
#: ../../source/more_projectformat.rst:83
|
||||
#: ../../source/more/project_format.rst:69
|
||||
msgid "**Title Pages**"
|
||||
msgstr "**Pages de titres**"
|
||||
|
||||
#: ../../source/more_projectformat.rst:85
|
||||
#: ../../source/more/project_format.rst:71
|
||||
msgid ""
|
||||
"The formatting of the level one title on the title page must be changed "
|
||||
"from ``# Title Text`` to ``#! Title Text`` in order to retain the "
|
||||
"previous functionality. See :ref:`a_fmt_head`."
|
||||
"previous functionality. See :ref:`docs_usage_headings_levels`."
|
||||
msgstr ""
|
||||
"Le formatage du titre de niveau 1 sur la page de titre doit être modifié "
|
||||
"de ``# Texte du titre`` à ``# ! Texte du titre`` afin de conserver la "
|
||||
"fonctionnalité précédente. Voir :ref:`a_fmt_head`."
|
||||
"de ``# Title Text`` à ``# ! Title Text`` afin de conserver la "
|
||||
"fonctionnalité précédente. Voir :ref:`docs_usage_headings_levels`."
|
||||
|
||||
#: ../../source/more_projectformat.rst:87
|
||||
#: ../../source/more/project_format.rst:74
|
||||
msgid ""
|
||||
"Any text that was previously centred on the page must be manually "
|
||||
"centred using the text alignment feature. See :ref:`a_fmt_align`."
|
||||
"centred using the text alignment feature. See :ref:"
|
||||
"`docs_usage_align_indent`."
|
||||
msgstr ""
|
||||
"Tout texte qui était précédemment centré sur la page doit être centré "
|
||||
"manuellement en utilisant la fonction d'alignement du texte. Voir :ref:"
|
||||
"`a_fmt_align`."
|
||||
"`docs_usage_align_indent`."
|
||||
|
||||
#: ../../source/more_projectformat.rst:90
|
||||
#: ../../source/more/project_format.rst:77
|
||||
msgid "**Unnumbered Chapters**"
|
||||
msgstr "**Chapitres non numérotés**"
|
||||
|
||||
#: ../../source/more_projectformat.rst:92
|
||||
#: ../../source/more/project_format.rst:79
|
||||
msgid ""
|
||||
"Since the specific layout for unnumbered chapters has been dropped, such "
|
||||
"chapters must all use the ``##! Chapter Name`` formatting code instead "
|
||||
"of ``## Chapter Name``. This also includes chapters marked by an "
|
||||
"asterisk: ``## *Chapter Name``, as this feature has also been dropped. "
|
||||
"See :ref:`a_fmt_head`."
|
||||
"See :ref:`docs_usage_headings_levels`."
|
||||
msgstr ""
|
||||
"La mise en page spécifique pour les chapitres non numérotés ayant été "
|
||||
"abandonnée, ces chapitres doivent tous utiliser le code de formatage "
|
||||
"``# ! Nom de chapitre`` au lieu de `## Nom de chapitre``. Cela inclut "
|
||||
"``# ! Nom du chapitre`` au lieu de `## Nom du chapitre``. Cela inclut "
|
||||
"également les chapitres marqués d'un astérisque : `## *Nom de "
|
||||
"chapitre``, car cette fonctionnalité a également été abandonnée. Voir :"
|
||||
"ref:`a_fmt_head`."
|
||||
"ref:`docs_usage_headings_levels`."
|
||||
|
||||
#: ../../source/more_projectformat.rst:97
|
||||
#: ../../source/more/project_format.rst:84
|
||||
msgid "**Plain Pages**"
|
||||
msgstr "**Pages vierges**"
|
||||
|
||||
#: ../../source/more_projectformat.rst:99
|
||||
#: ../../source/more/project_format.rst:86
|
||||
msgid ""
|
||||
"The layout named \"Plain Page\" has also been removed. The only feature "
|
||||
"of this layout was that it ensured that the content always started on a "
|
||||
"fresh page. In the new format, fresh pages can be set anywhere in the "
|
||||
"text with the ``[NEW PAGE]`` code. See :ref:`a_fmt_break`."
|
||||
"text with the ``[new page]`` code. See :ref:"
|
||||
"`docs_usage_formatting_breaks`."
|
||||
msgstr ""
|
||||
"La mise en page appelée « Page vierge » a également été supprimée. La "
|
||||
"La mise en page appelée « page simple » a également été supprimée. La "
|
||||
"seule caractéristique de cette mise en page était qu'elle garantissait "
|
||||
"que le contenu commençait toujours sur une nouvelle page. Dans le "
|
||||
"nouveau format, les pages fraîches peuvent être placées n'importe où "
|
||||
"dans le texte avec le code ``[NEW PAGE]``. Voir :ref:`a_fmt_break`."
|
||||
"nouveau format, les nouvelles pages peuvent être placées n'importe où "
|
||||
"dans le texte avec le code ``[new page]``. Voir :ref:"
|
||||
"`docs_usage_formatting_breaks`."
|
||||
|
||||
#: ../../source/more_projectformat.rst:107
|
||||
#: ../../source/more/project_format.rst:94
|
||||
msgid "Format 1.2 Changes"
|
||||
msgstr "Format 1.2 Modifications"
|
||||
|
||||
#: ../../source/more_projectformat.rst:109
|
||||
msgid "This project format was introduced in novelWriter version 0.10."
|
||||
#: ../../source/more/project_format.rst:96
|
||||
msgid "This project format was introduced in UmbraEdit version 0.10."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 0.10 de novelWriter."
|
||||
"Ce format de projet a été introduit dans la version 0.10 de UmbraEdit."
|
||||
|
||||
#: ../../source/more_projectformat.rst:111
|
||||
#: ../../source/more/project_format.rst:98
|
||||
msgid ""
|
||||
"With this format, the way auto-replace entries were stored in the main "
|
||||
"project XML file changed."
|
||||
"project XML file changed. Conversion from this format is done "
|
||||
"automatically."
|
||||
msgstr ""
|
||||
"Avec ce format, la façon dont les entrées de remplacement automatique "
|
||||
"étaient stockées dans le fichier XML du projet principal a changé."
|
||||
"étaient stockées dans le fichier XML du projet principal a changé. La "
|
||||
"conversion de ce format se fait automatiquement."
|
||||
|
||||
#: ../../source/more_projectformat.rst:117
|
||||
#: ../../source/more/project_format.rst:105
|
||||
msgid "Format 1.1 Changes"
|
||||
msgstr "Format 1.1 Modifications"
|
||||
|
||||
#: ../../source/more_projectformat.rst:119
|
||||
msgid "This project format was introduced in novelWriter version 0.7."
|
||||
#: ../../source/more/project_format.rst:107
|
||||
msgid "This project format was introduced in UmbraEdit version 0.7."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 0.7 de novelWriter."
|
||||
"Ce format de projet a été introduit dans la version 0.7 de UmbraEdit."
|
||||
|
||||
#: ../../source/more_projectformat.rst:121
|
||||
#: ../../source/more/project_format.rst:109
|
||||
msgid ""
|
||||
"With this format, the ``content`` folder was introduced in the project "
|
||||
"storage. Previously, all novelWriter documents were saved in a series of "
|
||||
"storage. Previously, all UmbraEdit documents were saved in a series of "
|
||||
"folders numbered from ``data_0`` to ``data_f``."
|
||||
msgstr ""
|
||||
"Avec ce format, le dossier ``content`` a été introduit dans le stockage "
|
||||
"du projet. Auparavant, tous les documents de novelWriter étaient "
|
||||
"du projet. Auparavant, tous les documents de UmbraEdit étaient "
|
||||
"sauvegardés dans une série de dossiers numérotés de ``data_0`` à "
|
||||
"``data_f``."
|
||||
|
||||
#: ../../source/more_projectformat.rst:124
|
||||
#: ../../source/more/project_format.rst:112
|
||||
msgid ""
|
||||
"It also reduces the number of meta data and cache files. These files are "
|
||||
"automatically deleted if an old project is opened. This was also when "
|
||||
"the Table of Contents file was introduced."
|
||||
"the Table of Contents file was introduced. Conversion from this format "
|
||||
"is done automatically."
|
||||
msgstr ""
|
||||
"Il réduit également le nombre de métadonnées et de fichiers de cache. "
|
||||
"Ces fichiers sont automatiquement supprimés lorsqu'un ancien projet est "
|
||||
"ouvert. C'est également à cette époque que le fichier de table des "
|
||||
"matières a été introduit."
|
||||
"matières a été introduit. La conversion de ce format se fait "
|
||||
"automatiquement."
|
||||
|
||||
#: ../../source/more_projectformat.rst:131
|
||||
#: ../../source/more/project_format.rst:120
|
||||
msgid "Format 1.0 Changes"
|
||||
msgstr "Format 1.0 Modifications"
|
||||
|
||||
#: ../../source/more_projectformat.rst:133
|
||||
#: ../../source/more/project_format.rst:122
|
||||
msgid ""
|
||||
"This is the original file format and project structure. It was in use up "
|
||||
"to version 0.6.3."
|
||||
267
docs/source/locales/fr/LC_MESSAGES/more/typography.po
Normal file
@@ -0,0 +1,267 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 23:17+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more/typography.rst:5
|
||||
msgid "Typographical Notes"
|
||||
msgstr "Notes typographiques"
|
||||
|
||||
#: ../../source/more/typography.rst:12
|
||||
msgid ""
|
||||
"UmbraEdit has some support for typographical symbols that are not usually "
|
||||
"easily available in many text editors. This includes for instance the "
|
||||
"proper unicode quotation marks, dashes, ellipsis, thin spaces, etc. All "
|
||||
"these symbols are available from the **Insert** menu, and via keyboard "
|
||||
"shortcuts. See :ref:`docs_features_shortcuts_insert`."
|
||||
msgstr ""
|
||||
"UmbraEdit prend en charge certains symboles typographiques qui ne sont "
|
||||
"généralement pas disponibles dans de nombreux éditeurs de texte. Cela "
|
||||
"inclut par exemple les guillemets unicode, les tirets, les ellipses, les "
|
||||
"espaces fins, etc. Tous ces symboles sont disponibles dans le menu "
|
||||
"**Insérer**, et via des raccourcis clavier. Voir :ref:"
|
||||
"`docs_features_shortcuts_insert`."
|
||||
|
||||
#: ../../source/more/typography.rst:17
|
||||
msgid ""
|
||||
"This chapter provides some additional information on how UmbraEdit "
|
||||
"handles these symbols."
|
||||
msgstr ""
|
||||
"Ce chapitre fournit des informations supplémentaires sur la manière dont "
|
||||
"UmbraEdit gère ces symboles."
|
||||
|
||||
#: ../../source/more/typography.rst:21
|
||||
msgid "Dashes and Ellipsis"
|
||||
msgstr "Tirets et points de suspension"
|
||||
|
||||
#: ../../source/more/typography.rst:23
|
||||
msgid ""
|
||||
"With the auto-replace feature enabled (see :ref:`docs_ui_edit_view_auto`), "
|
||||
"two and three hyphens are converted automatically to short and long dashes, "
|
||||
"four hyphens to a horizontal bar, and three dots to ellipsis."
|
||||
msgstr ""
|
||||
"Lorsque la fonction de remplacement automatique est activée (voir :ref:"
|
||||
"`docs_ui_edit_view_auto`), les deux et trois traits d'union sont "
|
||||
"automatiquement convertis en tirets demi-cadratin et cadratin, les quatre "
|
||||
"traits d'union en barre horizontale et les trois points en points de "
|
||||
"suspension."
|
||||
|
||||
#: ../../source/more/typography.rst:29
|
||||
msgid ""
|
||||
"The last auto-replace can always be reverted with the undo command :kbd:"
|
||||
"`Ctrl+Z`, reverting the text to what you typed before the automatic "
|
||||
"replacement occurred."
|
||||
msgstr ""
|
||||
"Le dernier remplacement automatique peut toujours être annulé avec la "
|
||||
"commande d'annulation :kbd:`Ctrl+Z`, rétablissant le texte tel qu'il était "
|
||||
"avant le remplacement automatique."
|
||||
|
||||
#: ../../source/more/typography.rst:32
|
||||
msgid ""
|
||||
"In addition, \"Figure Dash\" is available. The Figure Dash is a dash that "
|
||||
"has the same width as the numbers of the same font, for most fonts. It "
|
||||
"helps to align numbers nicely in columns when you need to use a dash in "
|
||||
"them."
|
||||
msgstr ""
|
||||
"En outre, le « tiret chiffré » est disponible. Il s'agit d'un tiret de la "
|
||||
"même largeur que les chiffres de la même police, pour la plupart des "
|
||||
"polices. Il permet de bien aligner les chiffres dans les colonnes lorsque "
|
||||
"vous devez utiliser un tiret."
|
||||
|
||||
#: ../../source/more/typography.rst:38
|
||||
msgid "Single and Double Quotes"
|
||||
msgstr "Guillemets simples et doubles"
|
||||
|
||||
#: ../../source/more/typography.rst:40
|
||||
msgid ""
|
||||
"All the different quotation marks listed on the `Quotation Mark`_ Wikipedia "
|
||||
"page are available, and can be selected as auto-replaced symbols for "
|
||||
"straight single and double quote key strokes. The settings can be found in "
|
||||
"**Preferences**."
|
||||
msgstr ""
|
||||
"Tous les différents guillemets listés sur la page Wikipedia `Quotation "
|
||||
"Mark`_ sont disponibles, et peuvent être sélectionnés comme symboles auto-"
|
||||
"remplacés pour les touches de guillemets simples et doubles. Les réglages "
|
||||
"se trouvent dans les **Préférences**."
|
||||
|
||||
#: ../../source/more/typography.rst:44
|
||||
msgid ""
|
||||
"If your text contains straight single and double quotes, there are two "
|
||||
"convenience functions in the **Format** menu that can be used to re-format "
|
||||
"a selected section of text with the correct quote symbols."
|
||||
msgstr ""
|
||||
"Si votre texte contient des guillemets simples et doubles, deux fonctions "
|
||||
"pratiques du menu **Format** permettent de reformater une section de texte "
|
||||
"sélectionnée avec les symboles de guillemets corrects."
|
||||
|
||||
#: ../../source/more/typography.rst:48
|
||||
msgid ""
|
||||
"You can enable dialogue recognition and colour highlighting for novel "
|
||||
"documents. See :ref:`docs_features_dialogue` for more details."
|
||||
msgstr ""
|
||||
"Vous pouvez activer la reconnaissance du dialogue et la mise en évidence "
|
||||
"des couleurs pour les nouveaux documents. Voir :ref:"
|
||||
"`docs_features_dialogue` pour plus de détails."
|
||||
|
||||
#: ../../source/more/typography.rst:53
|
||||
msgid "Single and Double Prime"
|
||||
msgstr "Simple et double prime"
|
||||
|
||||
#: ../../source/more/typography.rst:55
|
||||
msgid ""
|
||||
"Both single and double prime symbols are available in the **Insert** menu. "
|
||||
"These symbols are the correct symbols to use for unit symbols for feet, "
|
||||
"inches, minutes, and seconds. The usage of these is described in more "
|
||||
"detail on the Wikipedia Prime_ page. They look very similar to single and "
|
||||
"double straight quotes, and may be rendered similarly by the font, but they "
|
||||
"have different codes. Using these correctly will also prevent the auto-"
|
||||
"replace and dialogue highlighting features misunderstanding their meaning "
|
||||
"in the text."
|
||||
msgstr ""
|
||||
"Les symboles de prime simple et double sont disponibles dans le menu "
|
||||
"**Insérer**. Ces symboles sont les symboles corrects à utiliser pour les "
|
||||
"symboles d'unités pour les pieds, les pouces, les minutes et les secondes. "
|
||||
"L'utilisation de ces symboles est décrite plus en détail sur la page Prime_ "
|
||||
"de Wikipedia. Ils ressemblent beaucoup aux guillemets simples et doubles et "
|
||||
"peuvent être rendus de la même manière par la police, mais ils ont des "
|
||||
"codes différents. En les utilisant correctement, vous éviterez que les "
|
||||
"fonctions de remplacement automatique et de mise en évidence des dialogues "
|
||||
"ne se méprennent sur leur signification dans le texte."
|
||||
|
||||
#: ../../source/more/typography.rst:66
|
||||
msgid "Modifier Letter Apostrophe"
|
||||
msgstr "Modificateur Lettre Apostrophe"
|
||||
|
||||
#: ../../source/more/typography.rst:68
|
||||
msgid ""
|
||||
"The auto-replace feature will consider any right-facing single straight "
|
||||
"quote as a quote symbol, even if it is intended as an apostrophe. This also "
|
||||
"includes the syntax highlighter, which may assume the first following "
|
||||
"apostrophe is the closing symbol of a single quoted region of text."
|
||||
msgstr ""
|
||||
"La fonction de remplacement automatique considère tout guillemet droit "
|
||||
"simple orienté vers la droite comme un symbole de guillemet, même s'il "
|
||||
"s'agit d'une apostrophe. Cela s'applique également à l'outil de mise en "
|
||||
"évidence de la syntaxe, qui peut supposer que la première apostrophe qui "
|
||||
"suit est le symbole de fermeture d'une région de texte entre guillemets."
|
||||
|
||||
#: ../../source/more/typography.rst:72
|
||||
msgid ""
|
||||
"To get around this, an alternative apostrophe is available. It is a special "
|
||||
"Unicode character that is not categorised as punctuation, but as a "
|
||||
"modifier. It is usually rendered the same way as the right single quotation "
|
||||
"marks, depending on the font. There is a Wikipedia article for the "
|
||||
"`Modifier letter apostrophe`_ with more details."
|
||||
msgstr ""
|
||||
"Pour contourner ce problème, il existe une apostrophe alternative. Il "
|
||||
"s'agit d'un caractère Unicode spécial qui n'est pas considéré comme une "
|
||||
"ponctuation, mais comme un modificateur. Il est généralement rendu de la "
|
||||
"même manière que les guillemets simples de droite, en fonction de la police "
|
||||
"de caractères. Il existe un article de Wikipédia sur la `lettre "
|
||||
"modificatrice apostrophe`_ avec plus de détails."
|
||||
|
||||
#: ../../source/more/typography.rst:79
|
||||
msgid ""
|
||||
"On export with the **Build Manuscript** tool, these apostrophes will be "
|
||||
"replaced automatically with the corresponding right hand single quote "
|
||||
"symbol as is generally recommended. Therefore it doesn't really matter if "
|
||||
"you only use them to correct syntax highlighting in some places, and not "
|
||||
"others."
|
||||
msgstr ""
|
||||
"Lors de l'exportation à l'aide de l'outil **Compiler le manuscrit**, ces "
|
||||
"apostrophes seront automatiquement remplacées par le symbole de guillemet "
|
||||
"simple de droite correspondant, comme cela est généralement recommandé. Par "
|
||||
"conséquent, il importe peu que vous les utilisiez uniquement pour corriger "
|
||||
"la coloration syntaxique à certains endroits, et pas à d'autres."
|
||||
|
||||
#: ../../source/more/typography.rst:86
|
||||
msgid "White Space Symbols"
|
||||
msgstr "Symboles de l'espace"
|
||||
|
||||
#: ../../source/more/typography.rst:88
|
||||
msgid ""
|
||||
"A few variations of the regular space character is supported. The correct "
|
||||
"typographical way to separate a number from its unit is with a `thin "
|
||||
"space`_. It is usually 2/3 the width of a regular space. For numbers and "
|
||||
"units, this should in addition be a non-breaking space, that is, the text "
|
||||
"wrapping should not add a line break on this particular space."
|
||||
msgstr ""
|
||||
"Quelques variations du caractère espace régulier sont prises en charge. La "
|
||||
"manière typographique correcte de séparer un nombre de son unité est "
|
||||
"d'utiliser une `espace fine`_. Sa largeur est généralement égale aux deux "
|
||||
"tiers de celle d'une espace normale. Pour les nombres et les unités, il "
|
||||
"doit en outre s'agir d'un espace insécable, c'est-à-dire que l'habillage du "
|
||||
"texte ne doit pas ajouter de saut de ligne sur cet espace particulier."
|
||||
|
||||
#: ../../source/more/typography.rst:93
|
||||
msgid "A regular space can also be made into a non-breaking space if needed."
|
||||
msgstr ""
|
||||
"Un espace régulier peut également être transformé en espace insécable si "
|
||||
"nécessaire."
|
||||
|
||||
#: ../../source/more/typography.rst:95
|
||||
msgid ""
|
||||
"All non-breaking spaces are highlighted with a differently coloured "
|
||||
"background to make it easier to spot them in the text. The colour will "
|
||||
"depend on the selected colour theme."
|
||||
msgstr ""
|
||||
"Tous les espaces insécables sont mis en évidence par un arrière-plan de "
|
||||
"couleur différente pour faciliter leur repérage dans le texte. La couleur "
|
||||
"dépend du thème de couleur sélectionné."
|
||||
|
||||
#: ../../source/more/typography.rst:98
|
||||
msgid ""
|
||||
"You can insert these spaces in your text using the following keyboard "
|
||||
"combinations:"
|
||||
msgstr ""
|
||||
"Vous pouvez insérer ces espaces dans votre texte en utilisant les "
|
||||
"combinaisons de clavier suivantes :"
|
||||
|
||||
#: ../../source/more/typography.rst:100
|
||||
msgid "A non-breaking space can be inserted with :kbd:`Ctrl+K`, :kbd:`Space`."
|
||||
msgstr ""
|
||||
"Un espace insécable peut être inséré avec :kbd:`Ctrl+K`, :kbd:`Espace`."
|
||||
|
||||
#: ../../source/more/typography.rst:101
|
||||
msgid ""
|
||||
"Thin spaces are also supported, and can be inserted with :kbd:`Ctrl+K`, :"
|
||||
"kbd:`Shift+Space`."
|
||||
msgstr ""
|
||||
"Les espaces courtes sont également supportés, et peuvent être insérés avec :"
|
||||
"kbd:`Ctrl+K`, :kbd:`Maj+Espace`."
|
||||
|
||||
#: ../../source/more/typography.rst:102
|
||||
msgid ""
|
||||
"Non-breaking thin space can be inserted with :kbd:`Ctrl+K`, :kbd:"
|
||||
"`Ctrl+Space`."
|
||||
msgstr ""
|
||||
"Une espace courte insécable peut être insérée avec :kbd:`Ctrl+K`, :kbd:"
|
||||
"`Ctrl+Espace`."
|
||||
|
||||
#: ../../source/more/typography.rst:104
|
||||
msgid ""
|
||||
"These are all insert features, and the **Insert** menu has more. The "
|
||||
"keyboard shortcuts for them are also listed in :ref:"
|
||||
"`docs_features_shortcuts`."
|
||||
msgstr ""
|
||||
"Ce sont toutes des fonctions d'insertion, et le menu **Insérer** en propose "
|
||||
"d'autres. Les raccourcis clavier sont également listés dans :ref:"
|
||||
"`docs_features_shortcuts`."
|
||||
@@ -1,531 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2024
|
||||
# This file is distributed under the same license as the novelWriter
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: novelWriter 2.6b1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-01-27 10:21+0100\n"
|
||||
"PO-Revision-Date: 2025-01-27 11:05+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/project_manuscript.rst:5
|
||||
msgid "Building the Manuscript"
|
||||
msgstr "Compiler le manuscrit"
|
||||
|
||||
#: ../../source/project_manuscript.rst:9
|
||||
msgid ""
|
||||
"You can at any time build a manuscript, an outline of your notes, or any other "
|
||||
"type of document from the text in your project. All of this is handled by the "
|
||||
"**Manuscript Build** tool. You can activate it from the sidebar, the **Tools** "
|
||||
"menu, or by pressing :kbd:`F5`."
|
||||
msgstr ""
|
||||
"Vous pouvez à tout moment compiler un manuscrit, une ébauche de vos notes ou "
|
||||
"tout autre type de document à partir du texte de votre projet. Tout cela est "
|
||||
"géré par l'outil **Compiler le manuscrit**. Vous pouvez l'activer à partir de "
|
||||
"la barre latérale, du menu **Outils**, ou en appuyant sur :kbd:`F5`."
|
||||
|
||||
#: ../../source/project_manuscript.rst:15
|
||||
msgid ""
|
||||
"This tool is new for version 2.1. A simpler tool was used for earlier versions. "
|
||||
"The simpler tool only allows you to define a single set of options for the "
|
||||
"build, but otherwise had much the same functionality."
|
||||
msgstr ""
|
||||
"Cet outil est nouveau pour la version 2.1. Un outil plus simple était utilisé "
|
||||
"pour les versions précédentes. Cet outil plus simple ne vous permettait de "
|
||||
"définir qu'un seul ensemble d'options pour la compilation, mais il offrait à "
|
||||
"peu près les mêmes fonctionnalités."
|
||||
|
||||
#: ../../source/project_manuscript.rst:23
|
||||
msgid "The Manuscript Build Tool"
|
||||
msgstr "L'outil de compilation de manuscrit"
|
||||
|
||||
#: ../../source/project_manuscript.rst:28
|
||||
msgid "The **Manuscript Build** tool main window."
|
||||
msgstr "La fenêtre principale de l'outil **Compiler le manuscrit**."
|
||||
|
||||
#: ../../source/project_manuscript.rst:30
|
||||
msgid ""
|
||||
"The main window of the **Manuscript Build** tool contains a list of all the "
|
||||
"builds you have defined, a selection of settings, and a few buttons to generate "
|
||||
"preview, open the print dialog, or run the build to create a manuscript "
|
||||
"document."
|
||||
msgstr ""
|
||||
"La fenêtre principale de l'outil **Compiler le manuscrit** contient une liste "
|
||||
"de toutes les structures que vous avez définies, une sélection de paramètres et "
|
||||
"quelques boutons permettant de générer un aperçu, d'ouvrir la boîte de dialogue "
|
||||
"d'impression ou d'exécuter la compilation pour créer un document manuscrit."
|
||||
|
||||
#: ../../source/project_manuscript.rst:36
|
||||
msgid "Outline and Word Counts"
|
||||
msgstr "Plan et nombre de mots"
|
||||
|
||||
#: ../../source/project_manuscript.rst:41
|
||||
msgid "The **Manuscript Build** tool main window with the **Outline** visible."
|
||||
msgstr ""
|
||||
"La fenêtre principale de l'outil **Compiler le manuscrit** avec le **Plan** "
|
||||
"visible."
|
||||
|
||||
#: ../../source/project_manuscript.rst:43
|
||||
msgid ""
|
||||
"The **Outline** tab on the left lets you navigate the headings in the preview "
|
||||
"document. It will show up to scene level headings for novel documents, and "
|
||||
"level 2 headings for notes."
|
||||
msgstr ""
|
||||
"L'onglet **Plan** sur la gauche vous permet de naviguer dans les rubriques du "
|
||||
"document de prévisualisation. Il affiche les titres de niveau scène pour les "
|
||||
"documents de roman, et les titres de niveau 2 pour les notes."
|
||||
|
||||
#: ../../source/project_manuscript.rst:46
|
||||
msgid ""
|
||||
"A collapsible panel of word and character counts are also available below the "
|
||||
"preview document. These are calculated from the text you have included in the "
|
||||
"document, and are more accurate counts than what's available in the project "
|
||||
"tree since they are counted *after formatting*."
|
||||
msgstr ""
|
||||
"Un panneau escamotable indiquant le nombre de mots et de caractères est "
|
||||
"également disponible sous le document de prévisualisation. Ces chiffres sont "
|
||||
"calculés à partir du texte que vous avez inclus dans le document et sont plus "
|
||||
"précis que ceux disponibles dans l'arborescence du projet puisqu'ils sont "
|
||||
"comptés *après le formatage*."
|
||||
|
||||
#: ../../source/project_manuscript.rst:50
|
||||
msgid "For a detailed description on how they are counted, see :ref:`a_counting`."
|
||||
msgstr ""
|
||||
"Pour une description détaillée de la façon dont ils sont comptés, voir :ref:"
|
||||
"`a_counting`."
|
||||
|
||||
#: ../../source/project_manuscript.rst:56
|
||||
msgid "Build Settings"
|
||||
msgstr "Paramètres de compilation"
|
||||
|
||||
#: ../../source/project_manuscript.rst:58
|
||||
msgid ""
|
||||
"Each build definition can be edited by opening it in the **Manuscript Build "
|
||||
"Settings** dialog, either by double-clicking or by selecting it and pressing "
|
||||
"the edit button in the toolbar."
|
||||
msgstr ""
|
||||
"Chaque définition de construction peut être éditée en l'ouvrant dans la boîte "
|
||||
"de dialogue **Paramètres de construction du manuscrit**, soit en double-"
|
||||
"cliquant, soit en la sélectionnant et en appuyant sur le bouton d'édition dans "
|
||||
"la barre d'outils."
|
||||
|
||||
#: ../../source/project_manuscript.rst:63
|
||||
msgid ""
|
||||
"You can keep the **Manuscript Build Settings** dialog open while testing the "
|
||||
"different options, and just hit the :guilabel:`Apply` button. You can test the "
|
||||
"result of your settings by pressing the :guilabel:`Preview` button in the main "
|
||||
"**Manuscript Build** window. When you're happy with the result, you can close "
|
||||
"the settings."
|
||||
msgstr ""
|
||||
"Vous pouvez garder la boîte de dialogue **Paramètres de construction du "
|
||||
"manuscrit** ouverte pendant que vous testez les différentes options, et "
|
||||
"simplement cliquer sur le bouton :guilabel:`Appliquer`. Vous pouvez tester le "
|
||||
"résultat de vos réglages en appuyant sur le bouton :guilabel:`Aperçu` dans la "
|
||||
"fenêtre principale **Compiler le manuscrit**. Lorsque vous êtes satisfait du "
|
||||
"résultat, vous pouvez fermer les paramètres."
|
||||
|
||||
#: ../../source/project_manuscript.rst:70
|
||||
msgid "Document Selection"
|
||||
msgstr "Sélection des documents"
|
||||
|
||||
#: ../../source/project_manuscript.rst:75
|
||||
msgid "The **Selections** page of the **Manuscript Build Settings** dialog."
|
||||
msgstr ""
|
||||
"La page **Sélection** de la boîte de dialogue **Paramètres de construction du "
|
||||
"manuscrit**."
|
||||
|
||||
#: ../../source/project_manuscript.rst:77
|
||||
msgid ""
|
||||
"The **Selections** page of the **Manuscript Build Settings** dialog allows you "
|
||||
"to fine tune which documents are included in the build. They are indicated by a "
|
||||
"green arrow icon in the last column. On the right you have some filter options "
|
||||
"for selecting content of a specific type, and a set of switches for which root "
|
||||
"folders to include."
|
||||
msgstr ""
|
||||
"La page **Sélection** de la boîte de dialogue **Paramètres de construction du "
|
||||
"manuscrit** vous permet d'affiner les documents inclus dans la construction. "
|
||||
"Ils sont indiqués par une icône de flèche verte dans la dernière colonne. Sur "
|
||||
"la droite, vous disposez d'options de filtrage pour sélectionner le contenu "
|
||||
"d'un type spécifique, et d'un ensemble de commutateurs pour les dossiers racine "
|
||||
"à inclure."
|
||||
|
||||
#: ../../source/project_manuscript.rst:82
|
||||
msgid ""
|
||||
"You can override the result of these filters by marking one or more documents "
|
||||
"and selecting to explicitly include or exclude them by using the buttons below "
|
||||
"the tree view. The last button can be used to reset the override and return "
|
||||
"control to the filter settings."
|
||||
msgstr ""
|
||||
"Vous pouvez remplacer le résultat de ces filtres en marquant un ou plusieurs "
|
||||
"documents et en choisissant de les inclure ou de les exclure explicitement à "
|
||||
"l'aide des boutons situés sous l'arborescence. Le dernier bouton peut être "
|
||||
"utilisé pour réinitialiser l'annulation et redonner le contrôle aux paramètres "
|
||||
"du filtre."
|
||||
|
||||
#: ../../source/project_manuscript.rst:86
|
||||
msgid ""
|
||||
"In the figure, the green arrow icon and the blue pin icon indicates which "
|
||||
"documents are included, and the red forbidden icon indicates that a document is "
|
||||
"explicitly excluded."
|
||||
msgstr ""
|
||||
"Dans la figure, l'icône de la flèche verte et l'icône de l'épingle bleue "
|
||||
"indiquent les documents inclus, et l'icône de l'interdiction rouge indique "
|
||||
"qu'un document est explicitement exclu."
|
||||
|
||||
#: ../../source/project_manuscript.rst:93
|
||||
msgid "Formatting Headings"
|
||||
msgstr "Mise en forme des en-têtes"
|
||||
|
||||
#: ../../source/project_manuscript.rst:98
|
||||
msgid "The **Headings** page of the **Manuscript Build Settings** dialog."
|
||||
msgstr ""
|
||||
"La page **En-têtes** de la boîte de dialogue **Paramètres de construction du "
|
||||
"manuscrit**."
|
||||
|
||||
#: ../../source/project_manuscript.rst:100
|
||||
msgid ""
|
||||
"The **Headings** page of the **Manuscript Build Settings** dialog allows you to "
|
||||
"set how the headings in your :term:`Novel Documents` are formatted. By default, "
|
||||
"the title is just copied as-is, indicated by the ``{Title}`` format. You can "
|
||||
"change this to for instance add chapter numbers and scene numbers, or insert "
|
||||
"character names, like shown in the figure above."
|
||||
msgstr ""
|
||||
"La page **En-têtes** de la boîte de dialogue **Paramètres de construction du "
|
||||
"manuscrit** vous permet de définir le format des titres de vos :term:`Documents "
|
||||
"du roman`. Par défaut, le titre est simplement copié tel quel, comme l'indique "
|
||||
"le format ``{Title}``. Vous pouvez modifier ce format pour, par exemple, "
|
||||
"ajouter des numéros de chapitre et de scène, ou insérer des noms de "
|
||||
"personnages, comme indiqué dans la figure ci-dessus."
|
||||
|
||||
#: ../../source/project_manuscript.rst:105
|
||||
msgid ""
|
||||
"Clicking the edit button next to a format will copy the formatting string into "
|
||||
"the edit box where it can be modified, and where a syntax highlighter will help "
|
||||
"indicate which parts are automatically generated by the build tool. The :"
|
||||
"guilabel:`Insert` button is a dropdown list of these formats, and selecting one "
|
||||
"will insert it at the position of the cursor."
|
||||
msgstr ""
|
||||
"Cliquer sur le bouton d'édition à côté d'un format copiera la chaîne de "
|
||||
"formatage dans la boîte d'édition où elle peut être modifiée, et où un "
|
||||
"surligneur de syntaxe aidera à indiquer quelles parties sont automatiquement "
|
||||
"générées par l'outil de construction. Le bouton :guilabel:`Insérer` est une "
|
||||
"liste déroulante de ces formats, et en sélectionner un l'insérera à la position "
|
||||
"du curseur."
|
||||
|
||||
#: ../../source/project_manuscript.rst:110
|
||||
msgid ""
|
||||
"Any text you add that isn't highlighted in colours will remain in your "
|
||||
"formatted titles. ``{Title}`` will always be replaced by the text in the "
|
||||
"heading from your documents."
|
||||
msgstr ""
|
||||
"Tout texte que vous ajoutez et qui n'est pas surligné en couleur restera dans "
|
||||
"vos titres formatés. ``{Titre}`` sera toujours remplacé par le texte de l'en-"
|
||||
"tête de vos documents."
|
||||
|
||||
#: ../../source/project_manuscript.rst:113
|
||||
msgid ""
|
||||
"You can preview the result of these format strings by clicking :guilabel:"
|
||||
"`Apply`, and then clicking :guilabel:`Preview` in the **Manuscript Build** tool "
|
||||
"main window."
|
||||
msgstr ""
|
||||
"Vous pouvez prévisualiser le résultat de ces chaînes de formatage en cliquant "
|
||||
"sur :guilabel:`appliquer`, puis en cliquant sur :guilabel:`aperçu` dans la "
|
||||
"fenêtre principale de l'outil **Compiler le manuscrit**."
|
||||
|
||||
#: ../../source/project_manuscript.rst:118
|
||||
msgid "Scene Separators"
|
||||
msgstr "Séparateurs de scènes"
|
||||
|
||||
#: ../../source/project_manuscript.rst:120
|
||||
msgid ""
|
||||
"If you don't want any titles for your scenes (or for your sections if you have "
|
||||
"them), you can leave the formatting boxes empty. If so, an empty paragraph will "
|
||||
"be inserted between the scenes or sections instead, resulting in a gap in the "
|
||||
"text. You can also switch on the :guilabel:`Hide` setting, which will ignore "
|
||||
"them completely. That is, there won't even be an extra gap inserted."
|
||||
msgstr ""
|
||||
"Si vous ne voulez pas de titres pour vos scènes (ou pour vos sections si vous "
|
||||
"en avez), vous pouvez laisser les cases de mise en forme vides. Dans ce cas, un "
|
||||
"paragraphe vide sera inséré entre les scènes ou les sections, ce qui créera un "
|
||||
"vide dans le texte. Vous pouvez également activer le paramètre :guilabel:"
|
||||
"`Cacher`, qui les ignorera complètement. En d'autres termes, il n'y aura même "
|
||||
"pas d'espace supplémentaire inséré."
|
||||
|
||||
#: ../../source/project_manuscript.rst:125
|
||||
msgid ""
|
||||
"Alternatively, if you want a separator text between them, like the common ``* * "
|
||||
"*``, you can enter the desired separator text as the format. If the format is "
|
||||
"any piece of static text, it will always be treated as a separator."
|
||||
msgstr ""
|
||||
"Alternativement, si vous voulez un texte séparateur entre eux, comme le commun "
|
||||
"``* * *``, vous pouvez entrer le texte séparateur désiré comme format. Si le "
|
||||
"format est un morceau de texte statique, il sera toujours traité comme un "
|
||||
"séparateur."
|
||||
|
||||
#: ../../source/project_manuscript.rst:133
|
||||
msgid "Hard and Soft Scenes"
|
||||
msgstr "Scènes dures et douces"
|
||||
|
||||
#: ../../source/project_manuscript.rst:135
|
||||
msgid ""
|
||||
"If you wish to distinguish between so-called soft and hard scene breaks, you "
|
||||
"can use the alternative scene heading format in your text. You can then give "
|
||||
"these headings a different formatting in the **Headings** settings."
|
||||
msgstr ""
|
||||
"Si vous souhaitez faire la distinction entre les ruptures de scène douces et "
|
||||
"dures, vous pouvez utiliser le format alternatif de l'en-tête de scène dans "
|
||||
"votre texte. Vous pouvez ensuite donner à ces titres un format différent dans "
|
||||
"les paramètres **En-têtes**."
|
||||
|
||||
#: ../../source/project_manuscript.rst:139
|
||||
msgid ""
|
||||
"See :ref:`a_fmt_head` for more info on how to format headings in your text."
|
||||
msgstr ""
|
||||
"Voir :ref:`a_fmt_head` pour plus d'informations sur la façon de formater les "
|
||||
"titres dans votre texte."
|
||||
|
||||
#: ../../source/project_manuscript.rst:143
|
||||
msgid "Output Settings"
|
||||
msgstr "Paramètres de sortie"
|
||||
|
||||
#: ../../source/project_manuscript.rst:145
|
||||
msgid ""
|
||||
"The **Content**, **Format** and **Output** pages of the **Manuscript Build "
|
||||
"Settings** dialog control a number of other settings for the output. Some of "
|
||||
"these only apply to specific output formats, which is indicated by the section "
|
||||
"headings on the settings pages."
|
||||
msgstr ""
|
||||
"Les pages **Contenu**, **Format** et **Sortie** de la boîte de dialogue "
|
||||
"**Paramètres de construction du manuscrit** contrôlent un certain nombre "
|
||||
"d'autres paramètres pour la sortie. Certains d'entre eux ne s'appliquent qu'à "
|
||||
"des formats de sortie spécifiques, ce qui est indiqué par les titres de section "
|
||||
"sur les pages de paramètres."
|
||||
|
||||
#: ../../source/project_manuscript.rst:153
|
||||
msgid "Building Manuscript Documents"
|
||||
msgstr "Création des manuscrits"
|
||||
|
||||
#: ../../source/project_manuscript.rst:158
|
||||
msgid ""
|
||||
"The **Manuscript Build** dialog used for writing the actual manuscript "
|
||||
"documents."
|
||||
msgstr ""
|
||||
"Le dialogue **compiler le manuscrit** est utilisé pour créer les manuscrits "
|
||||
"proprement dits."
|
||||
|
||||
#: ../../source/project_manuscript.rst:160
|
||||
msgid ""
|
||||
"When you press the :guilabel:`Build` button on the **Build Manuscript** tool "
|
||||
"main window, a special file dialog opens up. This is where you pick your "
|
||||
"desired output format and where to write the file."
|
||||
msgstr ""
|
||||
"Lorsque vous appuyez sur le bouton :guilabel:`Construire` dans la fenêtre "
|
||||
"principale de l'outil **Compiler le manuscrit**, une boîte de dialogue spéciale "
|
||||
"s'ouvre. C'est là que vous choisissez le format de sortie désiré et l'endroit "
|
||||
"où écrire le fichier."
|
||||
|
||||
#: ../../source/project_manuscript.rst:164
|
||||
msgid ""
|
||||
"On the left side of the dialog is a list of all the available file formats, and "
|
||||
"on the right, a list of the documents which are included based on the build "
|
||||
"definition you selected. You can choose an output path, and set a base file "
|
||||
"name as well. The file extension will be added automatically."
|
||||
msgstr ""
|
||||
"La partie gauche de la boîte de dialogue contient une liste de tous les formats "
|
||||
"de fichiers disponibles, et la partie droite, une liste des documents qui sont "
|
||||
"inclus en fonction de la définition de la construction que vous avez "
|
||||
"sélectionnée. Vous pouvez choisir un chemin de sortie et définir un nom de "
|
||||
"fichier de base. L'extension du fichier sera ajoutée automatiquement."
|
||||
|
||||
#: ../../source/project_manuscript.rst:168
|
||||
msgid ""
|
||||
"To generate the manuscript document, press the :guilabel:`Build` button. A "
|
||||
"small progress bar will show the build progress, but for small projects it may "
|
||||
"pass very fast."
|
||||
msgstr ""
|
||||
"Pour générer le document manuscrit, appuyez sur le bouton :guilabel:"
|
||||
"`Construire`. Une petite barre de progression indique l'avancement de la "
|
||||
"construction, mais pour les petits projets, elle peut passer très vite."
|
||||
|
||||
#: ../../source/project_manuscript.rst:173
|
||||
msgid "File Formats"
|
||||
msgstr "Formats de fichiers"
|
||||
|
||||
#: ../../source/project_manuscript.rst:175
|
||||
msgid "Currently, four document formats are supported."
|
||||
msgstr "Actuellement, quatre formats de documents sont pris en charge."
|
||||
|
||||
#: ../../source/project_manuscript.rst:177
|
||||
msgid "Open Document Format"
|
||||
msgstr "Open Document Format"
|
||||
|
||||
#: ../../source/project_manuscript.rst:178
|
||||
msgid ""
|
||||
"The Build tool can produce either an ``.odt`` file, or an ``.fodt`` file. The "
|
||||
"latter is just a flat version of the document format as a single XML file. Most "
|
||||
"rich text editors support the former, and only a few the latter."
|
||||
msgstr ""
|
||||
"L'outil de construction peut produire soit un fichier ``.odt``, soit un fichier "
|
||||
"``.fodt``. Ce dernier n'est qu'une version plate du format du document sous la "
|
||||
"forme d'un fichier XML unique. La plupart des éditeurs de texte riche "
|
||||
"supportent le premier, et seulement quelques uns le second."
|
||||
|
||||
#: ../../source/project_manuscript.rst:182
|
||||
msgid "Microsoft Word Document Format"
|
||||
msgstr "Format de document Microsoft Word"
|
||||
|
||||
#: ../../source/project_manuscript.rst:183
|
||||
msgid ""
|
||||
"The Microsoft Word Document format writes a single ``.docx`` file. It uses a "
|
||||
"fairly basic format that should be compatible with most rich text editors."
|
||||
msgstr ""
|
||||
"Le format Microsoft Word Document permet d'écrire un seul fichier ``.docx``. Il "
|
||||
"utilise un format assez basique qui devrait être compatible avec la plupart des "
|
||||
"éditeurs de texte riche."
|
||||
|
||||
#: ../../source/project_manuscript.rst:186
|
||||
msgid "Portable Document Format (PDF)"
|
||||
msgstr "Format de document portable (PDF)"
|
||||
|
||||
#: ../../source/project_manuscript.rst:187
|
||||
msgid ""
|
||||
"The PDF is generated from a copy of the preview document, and should have the "
|
||||
"same formatting capabilities as the preview. It's identical to what is produced "
|
||||
"if you select the print option and print to PDF."
|
||||
msgstr ""
|
||||
"Le PDF est généré à partir d'une copie du document de prévisualisation et "
|
||||
"devrait avoir les mêmes capacités de formatage que la prévisualisation. Il est "
|
||||
"identique à celui qui est produit lorsque vous sélectionnez l'option "
|
||||
"d'impression et que vous imprimez au format PDF."
|
||||
|
||||
#: ../../source/project_manuscript.rst:191
|
||||
msgid "novelWriter HTML"
|
||||
msgstr "novelWriter HTML"
|
||||
|
||||
#: ../../source/project_manuscript.rst:192
|
||||
msgid ""
|
||||
"The HTML format writes a single ``.htm`` file with minimal style formatting. "
|
||||
"The HTML document is suitable for further processing by document conversion "
|
||||
"tools like Pandoc_, for importing in word processors, or for printing from "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Le format HTML écrit un seul fichier ``.htm`` avec un formatage de style "
|
||||
"minimal. Le document HTML peut être traité par des outils de conversion de "
|
||||
"documents tels que Pandoc_, importé dans un traitement de texte ou imprimé à "
|
||||
"partir d'un navigateur."
|
||||
|
||||
#: ../../source/project_manuscript.rst:196
|
||||
msgid "Standard/Extended Markdown"
|
||||
msgstr "Markdown standard/étendu"
|
||||
|
||||
#: ../../source/project_manuscript.rst:197
|
||||
msgid ""
|
||||
"The Markdown format comes in both Standard and Extended flavour. The *only* "
|
||||
"difference in terms of novelWriter functionality is the support for strike "
|
||||
"through text, which is not supported by the Standard flavour."
|
||||
msgstr ""
|
||||
"Le format Markdown existe en version standard et en version étendue. La *seule* "
|
||||
"différence en termes de fonctionnalité de novelWriter est la prise en charge du "
|
||||
"texte barré, qui n'est pas prise en charge par la version standard."
|
||||
|
||||
#: ../../source/project_manuscript.rst:201
|
||||
msgid "novelWriter Markup"
|
||||
msgstr "novelWriter Markup"
|
||||
|
||||
#: ../../source/project_manuscript.rst:202
|
||||
msgid ""
|
||||
"This is simply a concatenation of the project documents selected by the filters "
|
||||
"into a ``.txt`` file. The documents are stacked together in the order they "
|
||||
"appear in the project tree, with comments, tags, etc. included if they are "
|
||||
"selected. This is a useful format for exporting the project for later import "
|
||||
"back into novelWriter."
|
||||
msgstr ""
|
||||
"Il s'agit simplement d'une concaténation des documents du projet sélectionnés "
|
||||
"par les filtres dans un fichier ``.txt``. Les documents sont empilés dans "
|
||||
"l'ordre où ils apparaissent dans l'arborescence du projet, avec les "
|
||||
"commentaires, les balises, etc. inclus s'ils sont sélectionnés. C'est un format "
|
||||
"utile pour exporter le projet et le réimporter plus tard dans novelWriter."
|
||||
|
||||
#: ../../source/project_manuscript.rst:209
|
||||
msgid "Microsoft Word and PDF output options were added."
|
||||
msgstr "Les options de sortie Microsoft Word et PDF ont été ajoutées."
|
||||
|
||||
#: ../../source/project_manuscript.rst:213
|
||||
msgid "Additional Formats"
|
||||
msgstr "Formats supplémentaires"
|
||||
|
||||
#: ../../source/project_manuscript.rst:215
|
||||
msgid ""
|
||||
"In addition to the above document formats, the novelWriter HTML and Markup "
|
||||
"formats can also be wrapped in a JSON file. These files will have a meta data "
|
||||
"entry and a body entry. For HTML, also the accompanying CSS styles used by the "
|
||||
"preview are included."
|
||||
msgstr ""
|
||||
"En plus des formats de document ci-dessus, les formats HTML et Markup de "
|
||||
"novelWriter peuvent également être enveloppés dans un fichier JSON. Ces "
|
||||
"fichiers auront une entrée pour les métadonnées et une entrée pour le corps du "
|
||||
"texte. Pour le HTML, les styles CSS utilisés par la prévisualisation sont "
|
||||
"également inclus."
|
||||
|
||||
#: ../../source/project_manuscript.rst:219
|
||||
msgid ""
|
||||
"The text body is saved in a two-level list. The outer list contains one entry "
|
||||
"per document, in the order they appear in the project tree. Each document is "
|
||||
"then split up into a list as well, with one entry per paragraph it contains."
|
||||
msgstr ""
|
||||
"Le corps du texte est enregistré dans une liste à deux niveaux. La liste "
|
||||
"extérieure contient une entrée par document, dans l'ordre où ils apparaissent "
|
||||
"dans l'arborescence du projet. Chaque document est ensuite divisé en une liste, "
|
||||
"avec une entrée par paragraphe qu'il contient."
|
||||
|
||||
#: ../../source/project_manuscript.rst:223
|
||||
msgid ""
|
||||
"These files are mainly intended for scripted post-processing for those who want "
|
||||
"that option. A JSON file can be imported directly into a Python dict object or "
|
||||
"a PHP array, to mentions a few options."
|
||||
msgstr ""
|
||||
"Ces fichiers sont principalement destinés au post-traitement par script pour "
|
||||
"ceux qui souhaitent cette option. Un fichier JSON peut être importé directement "
|
||||
"dans un objet dict de Python ou dans un tableau de PHP, pour ne citer que "
|
||||
"quelques options."
|
||||
|
||||
#: ../../source/project_manuscript.rst:230
|
||||
msgid "Printing"
|
||||
msgstr "Impression"
|
||||
|
||||
#: ../../source/project_manuscript.rst:232
|
||||
msgid ""
|
||||
"The :guilabel:`Print` button allows you to print the content in the preview "
|
||||
"window. You can either print to one of your system's printers, or select PDF as "
|
||||
"your output format from the printer icon on the print dialog."
|
||||
msgstr ""
|
||||
"Le bouton :guilabel:`Imprimer` vous permet d'imprimer le contenu de la fenêtre "
|
||||
"de prévisualisation. Vous pouvez soit imprimer sur l'une des imprimantes de "
|
||||
"votre système, soit sélectionner le format PDF à partir de l'icône de "
|
||||
"l'imprimante dans la boîte de dialogue d'impression."
|
||||
|
||||
#: ../../source/project_manuscript.rst:238
|
||||
msgid ""
|
||||
"The paper format should in all cases default to whatever your system default "
|
||||
"is. If you want to change it, you have to select it from the **Print Preview** "
|
||||
"dialog."
|
||||
msgstr ""
|
||||
"Dans tous les cas, le format de papier doit être défini par défaut, quel que "
|
||||
"soit le format par défaut de votre système. Si vous souhaitez le modifier, vous "
|
||||
"devez le sélectionner dans la boîte de dialogue **Aperçu avant impression**."
|
||||
|
||||
#~ msgid "Print and PDF"
|
||||
#~ msgstr "Imprimer et PDF"
|
||||
@@ -1,588 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2024
|
||||
# This file is distributed under the same license as the novelWriter
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: novelWriter 2.6b1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-01-27 10:21+0100\n"
|
||||
"PO-Revision-Date: 2025-01-27 11:14+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/project_references.rst:5
|
||||
msgid "Tags and References"
|
||||
msgstr "Tags et références"
|
||||
|
||||
#: ../../source/project_references.rst:7
|
||||
msgid ""
|
||||
"In novelWriter there are no forms or tables to fill in to define "
|
||||
"characters, locations or other elements of your story. Instead, you "
|
||||
"create :term:`project notes` which you can mark as representing these "
|
||||
"story elements by creating a :term:`tag`. Whenever you want to link a "
|
||||
"piece of your story to a note defining a story element, like a character, "
|
||||
"you create a :term:`reference` back to that tag. You can also cross-link "
|
||||
"your project notes in the same way."
|
||||
msgstr ""
|
||||
"Dans novelWriter, il n'y a pas de formulaires ou de tableaux à remplir "
|
||||
"pour définir les personnages, les lieux ou d'autres éléments de votre "
|
||||
"histoire. Au lieu de cela, vous créez des :term:`notes de projet` que "
|
||||
"vous pouvez marquer comme représentant ces éléments de l'histoire en "
|
||||
"créant un :term:`tag`. Lorsque vous souhaitez lier un élément de votre "
|
||||
"histoire à une note définissant un élément de l'histoire, comme un "
|
||||
"personnage, vous créez un :term:`référence` qui renvoie à cette "
|
||||
"étiquette. Vous pouvez également créer des liens croisés entre les notes "
|
||||
"de votre projet de la même manière."
|
||||
|
||||
#: ../../source/project_references.rst:13
|
||||
msgid ""
|
||||
"This is perhaps one of the features that makes novelWriter different from "
|
||||
"other, similar applications. It is therefore not always obvious to new "
|
||||
"users how this is supposed to work, so this chapter hopes to explain in "
|
||||
"more detail how to use this tags and references system."
|
||||
msgstr ""
|
||||
"C'est peut-être l'une des caractéristiques qui différencie novelWriter "
|
||||
"d'autres applications similaires. Il n'est donc pas toujours évident pour "
|
||||
"les nouveaux utilisateurs de comprendre comment cela est censé "
|
||||
"fonctionner, c'est pourquoi ce chapitre vise à expliquer plus en détail "
|
||||
"comment utiliser ce système de balises et de références."
|
||||
|
||||
#: ../../source/project_references.rst:19
|
||||
msgid ""
|
||||
"If you find the Tags and Reference system difficult to follow just from "
|
||||
"reading this chapter, you can create a new project in the **Welcome** "
|
||||
"dialog's New project form and select \"Create an example project\" from "
|
||||
"the \"Pre-fill project\" option. The example project contains several "
|
||||
"examples of tags and references."
|
||||
msgstr ""
|
||||
"Si le système de balises et de références vous semble difficile à suivre "
|
||||
"à la seule lecture de ce chapitre, vous pouvez créer un nouveau projet "
|
||||
"dans le formulaire Nouveau projet de la boîte de dialogue **Bienvenue** "
|
||||
"et sélectionner « Créer un projet d'exemple » dans l'option « Pré-remplir "
|
||||
"le projet ». Le projet d'exemple contient plusieurs exemples de balises "
|
||||
"et de références."
|
||||
|
||||
#: ../../source/project_references.rst:28
|
||||
msgid "Metadata in novelWriter"
|
||||
msgstr "Métadonnées dans novelWriter"
|
||||
|
||||
#: ../../source/project_references.rst:30
|
||||
msgid ""
|
||||
"The structure of your novelWriter project is inferred from the :term:"
|
||||
"`headings` within the documents, not the documents themselves. See :ref:"
|
||||
"`a_struct_heads` for more details. Therefore, metadata is also associated "
|
||||
"with headings, and not the documents directly."
|
||||
msgstr ""
|
||||
"La structure de votre projet novelWriter est déduite des :term:`en-têtes` "
|
||||
"des documents, et non des documents eux-mêmes. Voir :ref:`a_struct_heads` "
|
||||
"pour plus de détails. Par conséquent, les métadonnées sont également "
|
||||
"associées aux en-têtes, et non aux documents directement."
|
||||
|
||||
#: ../../source/project_references.rst:34
|
||||
msgid ""
|
||||
"If you split your project into separate documents for each scene, this "
|
||||
"distinction may not matter. However, there are several benefits to using "
|
||||
"documents at a larger structural scale when first starting your project. "
|
||||
"For instance, it may make more sense to define all your scenes, and even "
|
||||
"chapters, in a single document at first, or perhaps a document per act. "
|
||||
"You can later split these documents up using the document split feature. "
|
||||
"See :ref:`a_ui_tree_split_merge` for more details."
|
||||
msgstr ""
|
||||
"Si vous divisez votre projet en documents distincts pour chaque scène, "
|
||||
"cette distinction peut ne pas avoir d'importance. Cependant, "
|
||||
"l'utilisation de documents à une échelle structurelle plus large présente "
|
||||
"plusieurs avantages lorsque vous démarrez votre projet. Par exemple, il "
|
||||
"peut être plus judicieux de définir toutes les scènes, et même les "
|
||||
"chapitres, dans un seul document au départ, ou peut-être un document par "
|
||||
"acte. Vous pouvez par la suite diviser ces documents en utilisant la "
|
||||
"fonction de division de document. Voir :ref:`a_ui_tree_split_merge` pour "
|
||||
"plus de détails."
|
||||
|
||||
#: ../../source/project_references.rst:40
|
||||
msgid ""
|
||||
"You can do the same with your notes. You can treat each heading as an "
|
||||
"independent element of your notes that can be referenced somewhere else. "
|
||||
"That way you can collect all your minor or background characters in a "
|
||||
"single note file, and still be able to reference them individually by "
|
||||
"separating them with headings and assigning each a tag. Or, you can lay "
|
||||
"out your plot in a single document and have a tag for each plot stage "
|
||||
"under separate headings."
|
||||
msgstr ""
|
||||
"Vous pouvez faire de même avec vos notes. Vous pouvez traiter chaque en-"
|
||||
"tête comme un élément indépendant de vos notes qui peut être référencé "
|
||||
"ailleurs. Ainsi, vous pouvez rassembler tous vos personnages mineurs ou "
|
||||
"de second plan dans un seul fichier de notes, tout en étant en mesure de "
|
||||
"les référencer individuellement en les séparant par des en-têtes et en "
|
||||
"leur attribuant à chacun une balise. Vous pouvez également présenter "
|
||||
"votre intrigue dans un seul document et attribuer une balise à chaque "
|
||||
"étape de l'intrigue dans des rubriques distinctes."
|
||||
|
||||
#: ../../source/project_references.rst:50
|
||||
msgid "How to Use Tags"
|
||||
msgstr "Comment utiliser les tags"
|
||||
|
||||
#: ../../source/project_references.rst:52
|
||||
msgid ""
|
||||
"A \"tag\" in novelWriter is a word or phrase that you define as belonging "
|
||||
"to a heading. Tags are set by using the ``@tag`` :term:`keyword`."
|
||||
msgstr ""
|
||||
"Un « tag » dans novelWriter est un mot ou une phrase que vous définissez "
|
||||
"comme appartenant à une rubrique. Les balises sont définies à l'aide de "
|
||||
"la commande ``@tag`` :term:`mot-clé`."
|
||||
|
||||
#: ../../source/project_references.rst:55
|
||||
msgid "The basic format of a tag is ``@tag: tagName``."
|
||||
msgstr "Le format de base d'une balise est ``@tag: NomDuTag``."
|
||||
|
||||
#: ../../source/project_references.rst:57
|
||||
msgid "An alternative format of a tag is ``@tag: tagName | displayName``."
|
||||
msgstr "Un autre format de balise est ``@tag: NomDuTag | NomAffiché``."
|
||||
|
||||
#: ../../source/project_references.rst:59
|
||||
msgid "``tagName`` (Required)"
|
||||
msgstr "``NomDuTag`` (Requis)"
|
||||
|
||||
#: ../../source/project_references.rst:60
|
||||
msgid ""
|
||||
"This is a unique identifier of your choosing. It is the value you use "
|
||||
"later for making references back to this document, or section of the "
|
||||
"document."
|
||||
msgstr ""
|
||||
"Il s'agit d'un identifiant unique de votre choix. C'est la valeur que "
|
||||
"vous utiliserez plus tard pour faire référence à ce document ou à une "
|
||||
"section du document."
|
||||
|
||||
#: ../../source/project_references.rst:63
|
||||
msgid "``displayName`` (Optional)"
|
||||
msgstr "``NomAffiché`` (Optionnel)"
|
||||
|
||||
#: ../../source/project_references.rst:64
|
||||
msgid ""
|
||||
"This is an optional display name used for the tag. When you build your "
|
||||
"manuscript, you can for instance insert the point of view character name "
|
||||
"directly into chapter headings. By default, the ``tagName`` value is used "
|
||||
"in such headings, but if you use a shortened format internally in your "
|
||||
"project, you can use this to specify a more suitable format for your "
|
||||
"manuscript headings."
|
||||
msgstr ""
|
||||
"Il s'agit d'un nom d'affichage facultatif utilisé pour la balise. Lorsque "
|
||||
"vous construisez votre manuscrit, vous pouvez par exemple insérer le nom "
|
||||
"du personnage du point de vue directement dans les titres des chapitres. "
|
||||
"Par défaut, la valeur ``NomDuTag`` est utilisée dans ces titres, mais si "
|
||||
"vous utilisez un format abrégé en interne dans votre projet, vous pouvez "
|
||||
"utiliser ceci pour spécifier un format plus approprié pour les titres de "
|
||||
"votre manuscrit."
|
||||
|
||||
#: ../../source/project_references.rst:69
|
||||
msgid ""
|
||||
"You can only set **one** tag per heading, and the tag has to be unique "
|
||||
"across **all** documents in the project."
|
||||
msgstr ""
|
||||
"Vous ne pouvez définir qu'une seule balise** par rubrique, et la balise "
|
||||
"doit être unique dans **tous** les documents du projet."
|
||||
|
||||
#: ../../source/project_references.rst:72
|
||||
msgid ""
|
||||
"After a tag has been defined, it can be referenced in novel documents, or "
|
||||
"cross-referenced in other notes. Tags will also show up in the **Outline "
|
||||
"View** and in the references panel under the document viewer when a "
|
||||
"document is open in the viewer."
|
||||
msgstr ""
|
||||
"Une fois qu'une balise a été définie, elle peut être référencée dans de "
|
||||
"nouveaux documents ou faire l'objet de références croisées dans d'autres "
|
||||
"notes. Les balises apparaîtront également dans la **Vue en plan** et dans "
|
||||
"le panneau des références sous le visualiseur de documents lorsqu'un "
|
||||
"document est ouvert dans le visualiseur."
|
||||
|
||||
#: ../../source/project_references.rst:76
|
||||
msgid ""
|
||||
"The syntax highlighter will indicate to you that the keyword is correctly "
|
||||
"used and that the tag is allowed, that is, the tag is unique. Duplicate "
|
||||
"tags should be detected as long as the index is up to date. An invalid "
|
||||
"tag should have a green wiggly line under it, and will not receive the "
|
||||
"colour that valid tags do."
|
||||
msgstr ""
|
||||
"Le surligneur syntaxique vous indiquera que le mot-clé est correctement "
|
||||
"utilisé et que la balise est autorisée, c'est-à-dire qu'elle est unique. "
|
||||
"Les balises dupliquées devraient être détectées si l'index est à jour. "
|
||||
"Une balise non valide est signalée par une ligne verte et ne reçoit pas "
|
||||
"la même couleur que les balises valides."
|
||||
|
||||
#: ../../source/project_references.rst:81
|
||||
msgid ""
|
||||
"The tag is the only part of these notes that novelWriter uses. The rest "
|
||||
"of the document content is there for you to use in whatever way you wish. "
|
||||
"Of course, the content of the documents can be added to the manuscript, "
|
||||
"or an outline document. If you want to compile a single document of all "
|
||||
"your notes, you can do this from the **Manuscript Build** tool."
|
||||
msgstr ""
|
||||
"La balise est la seule partie de ces notes que novelWriter utilise. Le "
|
||||
"reste du contenu du document est là pour que vous puissiez l'utiliser "
|
||||
"comme bon vous semble. Bien entendu, le contenu des documents peut être "
|
||||
"ajouté au manuscrit ou à un document de synthèse. Si vous souhaitez "
|
||||
"compiler un seul document de toutes vos notes, vous pouvez le faire à "
|
||||
"partir de l'outil **Compiler le manuscrit**."
|
||||
|
||||
#: ../../source/project_references.rst:88
|
||||
msgid ""
|
||||
"Tags are no longer case sensitive. The tags are by default displayed with "
|
||||
"the capitalisation you use when defining the tag, but you don't have to "
|
||||
"use the same capitalisation when referencing it later."
|
||||
msgstr ""
|
||||
"Les balises ne sont plus sensibles à la casse. Les balises sont affichées "
|
||||
"par défaut avec la majuscule utilisée lors de la définition de la balise, "
|
||||
"mais vous n'êtes pas obligé d'utiliser la même majuscule lorsque vous y "
|
||||
"faites référence ultérieurement."
|
||||
|
||||
#: ../../source/project_references.rst:94
|
||||
msgid "Tags can have an optional display name for manuscript builds."
|
||||
msgstr ""
|
||||
"Les balises peuvent avoir un nom d'affichage facultatif pour les "
|
||||
"constructions de manuscrits."
|
||||
|
||||
#: ../../source/project_references.rst:98
|
||||
msgid ""
|
||||
"You can now add tags also to Novel Documents. These can be used for cross-"
|
||||
"referencing between chapters and scenes, and also from notes if desired."
|
||||
msgstr ""
|
||||
"Vous pouvez désormais ajouter des balises aux documents du roman. Celles-"
|
||||
"ci peuvent être utilisées pour les références croisées entre les "
|
||||
"chapitres et les scènes, ainsi qu'à partir des notes si vous le souhaitez."
|
||||
|
||||
#: ../../source/project_references.rst:101
|
||||
msgid "Example of a heading with a tag for a character of the story:"
|
||||
msgstr "Exemple d'un titre avec une tag pour un personnage de l'histoire :"
|
||||
|
||||
#: ../../source/project_references.rst:111
|
||||
msgid ""
|
||||
"When this is done in a document in a :term:`Root Folder` of type "
|
||||
"\"Characters\", the tag is automatically treated as an available "
|
||||
"character in your project with the value \"Jane\", and you will be able "
|
||||
"to reference it in any of your other documents using the reference "
|
||||
"keywords for characters. It will also show up in the Character tab in the "
|
||||
"Reference panel below the document viewer, and in the reference auto-"
|
||||
"completer menu in the editor when you fill in references. See :ref:"
|
||||
"`a_ui_view` and :ref:`a_references_completer`."
|
||||
msgstr ""
|
||||
"Lorsque cela est fait dans un document dans un :term:`Dossier racine` de "
|
||||
"type « Personnages “, la balise est automatiquement traitée comme un "
|
||||
"caractère disponible dans votre projet avec la valeur ” Jane », et vous "
|
||||
"pourrez y faire référence dans n'importe lequel de vos autres documents "
|
||||
"en utilisant les mots-clés de référence pour les personnages. Il "
|
||||
"apparaîtra également dans l'onglet Personnage du panneau Référence sous "
|
||||
"le visualiseur de document, et dans le menu d'auto-complétion de "
|
||||
"référence dans l'éditeur lorsque vous remplissez des références. Voir :"
|
||||
"ref:`a_ui_view` et :ref:`a_references_completer`."
|
||||
|
||||
#: ../../source/project_references.rst:118
|
||||
msgid ""
|
||||
"It is the root folder type that defines what category of story elements "
|
||||
"the tag is indexed under. See the :ref:`a_proj_roots` section for an "
|
||||
"overview of available root folder types. They are also covered in the "
|
||||
"next section."
|
||||
msgstr ""
|
||||
"C'est le type de dossier racine qui définit la catégorie d'éléments de "
|
||||
"l'histoire sous laquelle la balise est indexée. Voir la section :ref:"
|
||||
"`a_proj_roots` pour une vue d'ensemble des types de dossiers racines "
|
||||
"disponibles. Ils sont également abordés dans la section suivante."
|
||||
|
||||
#: ../../source/project_references.rst:126
|
||||
msgid "How to Use References"
|
||||
msgstr "Comment utiliser les références"
|
||||
|
||||
#: ../../source/project_references.rst:128
|
||||
msgid ""
|
||||
"Each heading of any level in your project can contain references to tags "
|
||||
"set in project notes. The references are gathered by the indexer and used "
|
||||
"to generate the **Outline View**, among other things."
|
||||
msgstr ""
|
||||
"Chaque en-tête de n'importe quel niveau de votre projet peut contenir des "
|
||||
"références à des balises définies dans les notes du projet. Ces "
|
||||
"références sont rassemblées par l'indexeur et utilisées pour générer la "
|
||||
"**Vue d'ensemble**, entre autres choses."
|
||||
|
||||
#: ../../source/project_references.rst:132
|
||||
msgid ""
|
||||
"References are set as a :term:`keyword` and a list of corresponding tags. "
|
||||
"The valid keywords are listed below. The format of a reference line is "
|
||||
"``@keyword: value1, [value2] ... [valueN]``. All reference keywords allow "
|
||||
"multiple values."
|
||||
msgstr ""
|
||||
"Les références sont définies sous la forme d'un :term:`mot-clé` et d'une "
|
||||
"liste de balises correspondantes. Les mots-clés valides sont listés ci-"
|
||||
"dessous. Le format d'une ligne de référence est ``@keyword: value1, "
|
||||
"[value2] ... [valeurN]``. Tous les mots-clés de référence autorisent des "
|
||||
"valeurs multiples."
|
||||
|
||||
#: ../../source/project_references.rst:136
|
||||
msgid "``@pov``"
|
||||
msgstr "``@pov``"
|
||||
|
||||
#: ../../source/project_references.rst:137
|
||||
msgid ""
|
||||
"The point-of-view character for the current section. The target must be a "
|
||||
"note tag in a **Character** type root folder."
|
||||
msgstr ""
|
||||
"Le personnage de point de vue pour la section en cours. La cible doit "
|
||||
"être une balise note dans un dossier racine de type **Personnages**."
|
||||
|
||||
#: ../../source/project_references.rst:140
|
||||
msgid "``@focus``"
|
||||
msgstr "``@focus``"
|
||||
|
||||
#: ../../source/project_references.rst:141
|
||||
msgid ""
|
||||
"The character that has the focus for the current section. This can be "
|
||||
"used in cases where the focus is not a point-of-view character. The "
|
||||
"target must be a note tag in a **Character** type root folder."
|
||||
msgstr ""
|
||||
"Le personnage qui est au centre de l'attention pour la section en cours. "
|
||||
"Ceci peut être utilisé dans les cas où le focus n'est pas un personnage "
|
||||
"de point de vue. La cible doit être une balise note dans un dossier "
|
||||
"racine de type **Personnages**."
|
||||
|
||||
#: ../../source/project_references.rst:145
|
||||
msgid "``@char``"
|
||||
msgstr "``@char``"
|
||||
|
||||
#: ../../source/project_references.rst:146
|
||||
msgid ""
|
||||
"Other characters in the current section. The target must be a note tag in "
|
||||
"a **Character** type root folder. This should not include the point-of-"
|
||||
"view or focus character if those references are used."
|
||||
msgstr ""
|
||||
"Autres personnages de la section courante. La cible doit être une "
|
||||
"étiquette de note dans un dossier racine de type **Personnages**. Cela ne "
|
||||
"doit pas inclure le point de vue ou le personnage principal si ces "
|
||||
"références sont utilisées."
|
||||
|
||||
#: ../../source/project_references.rst:150
|
||||
msgid "``@plot``"
|
||||
msgstr "``@plot``"
|
||||
|
||||
#: ../../source/project_references.rst:151
|
||||
msgid ""
|
||||
"The plot or subplot advanced in the current section. The target must be a "
|
||||
"note tag in a **Plot** type root folder."
|
||||
msgstr ""
|
||||
"L'intrigue ou la sous-intrigue développée dans la section en cours. La "
|
||||
"cible doit être une balise note dans un dossier racine de type "
|
||||
"**Intrigue**."
|
||||
|
||||
#: ../../source/project_references.rst:154
|
||||
msgid "``@time``"
|
||||
msgstr "``@time``"
|
||||
|
||||
#: ../../source/project_references.rst:155
|
||||
msgid ""
|
||||
"The timelines touched by the current section. The target must be a note "
|
||||
"tag in a **Timeline** type root folder."
|
||||
msgstr ""
|
||||
"Les lignes de temps concernées par la section en cours. La cible doit "
|
||||
"être une balise note dans un dossier racine de type **Chronologie**."
|
||||
|
||||
#: ../../source/project_references.rst:158
|
||||
msgid "``@location``"
|
||||
msgstr "``@location``"
|
||||
|
||||
#: ../../source/project_references.rst:159
|
||||
msgid ""
|
||||
"The location the current section takes place in. The target must be a "
|
||||
"note tag in a **Locations** type root folder."
|
||||
msgstr ""
|
||||
"L'endroit où se déroule la section en cours. La cible doit être une "
|
||||
"balise note dans un dossier racine de type **lieux**."
|
||||
|
||||
#: ../../source/project_references.rst:162
|
||||
msgid "``@object``"
|
||||
msgstr "``@object``"
|
||||
|
||||
#: ../../source/project_references.rst:163
|
||||
msgid ""
|
||||
"Objects present in the current section. The target must be a note tag in "
|
||||
"a **Object** type root folder."
|
||||
msgstr ""
|
||||
"Objets présents dans la section courante. La cible doit être une "
|
||||
"étiquette de note dans un dossier racine de type **Objets**."
|
||||
|
||||
#: ../../source/project_references.rst:166
|
||||
msgid "``@entity``"
|
||||
msgstr "``@entity``"
|
||||
|
||||
#: ../../source/project_references.rst:167
|
||||
msgid ""
|
||||
"Entities present in the current section. The target must be a note tag in "
|
||||
"an **Entities** type root folder."
|
||||
msgstr ""
|
||||
"Entités présentes dans la section courante. La cible doit être une balise "
|
||||
"note dans un dossier racine de type **Entités**."
|
||||
|
||||
#: ../../source/project_references.rst:170
|
||||
msgid "``@custom``"
|
||||
msgstr "``@custom``"
|
||||
|
||||
#: ../../source/project_references.rst:171
|
||||
msgid ""
|
||||
"Custom references in the current section. The target must be a note tag "
|
||||
"in a **Custom** type root folder. The custom folder are for any other "
|
||||
"category of notes you may want to use."
|
||||
msgstr ""
|
||||
"Références personnalisées dans la section en cours. La cible doit être "
|
||||
"une étiquette de note dans un dossier racine de type **personnalisé**. "
|
||||
"Les dossiers personnalisés sont destinés à toute autre catégorie de notes "
|
||||
"que vous souhaiteriez utiliser."
|
||||
|
||||
#: ../../source/project_references.rst:174
|
||||
msgid "``@mention``"
|
||||
msgstr "``@mention``"
|
||||
|
||||
#: ../../source/project_references.rst:175
|
||||
msgid ""
|
||||
"Anything mentioned, but not present in the current section. It is "
|
||||
"intended for those cases where you reveal details about a character or "
|
||||
"place in a scene without it being otherwise a part of it. This can be "
|
||||
"useful when checking for consistency later. Any tag in any root note "
|
||||
"folder can be listed under mentions."
|
||||
msgstr ""
|
||||
"Tout ce qui est mentionné, mais qui n'est pas présent dans la section "
|
||||
"actuelle. Il est destiné aux cas où vous révélez des détails sur un "
|
||||
"personnage ou un lieu dans une scène sans qu'il en fasse partie. Cela "
|
||||
"peut être utile pour vérifier la cohérence ultérieurement. N'importe "
|
||||
"quelle balise dans n'importe quel dossier de notes racine peut être "
|
||||
"listée sous mentions."
|
||||
|
||||
#: ../../source/project_references.rst:180
|
||||
msgid "``@story``"
|
||||
msgstr "``@story``"
|
||||
|
||||
#: ../../source/project_references.rst:181
|
||||
msgid ""
|
||||
"This is used when referencing a Novel Document, like a scene or chapter, "
|
||||
"from somewhere else in your project."
|
||||
msgstr ""
|
||||
"Cette fonction est utilisée pour référencer un document de roman, comme "
|
||||
"une scène ou un chapitre, à partir d'un autre endroit de votre projet."
|
||||
|
||||
#: ../../source/project_references.rst:184
|
||||
msgid ""
|
||||
"The syntax highlighter will alert the user that the tags and references "
|
||||
"are used correctly, and that the tags referenced exist."
|
||||
msgstr ""
|
||||
"L'outil de mise en évidence de la syntaxe avertit l'utilisateur que les "
|
||||
"balises et les références sont utilisées correctement et que les balises "
|
||||
"référencées existent."
|
||||
|
||||
#: ../../source/project_references.rst:189
|
||||
msgid ""
|
||||
"The highlighter may be mistaken if the index of defined tags is out of "
|
||||
"date. If so, press :kbd:`F9` to regenerate it, or select **Rebuild "
|
||||
"Index** from the **Tools** menu. In general, the index for a document is "
|
||||
"regenerated when it is saved, so this shouldn't normally be necessary."
|
||||
msgstr ""
|
||||
"Le surligneur peut se tromper si l'index des balises définies n'est pas à "
|
||||
"jour. Si c'est le cas, appuyez sur :kbd:`F9` pour le régénérer, ou "
|
||||
"sélectionnez **Reconstruire l'index** dans le menu **Outils**. En "
|
||||
"général, l'index d'un document est régénéré lorsqu'il est sauvegardé, ce "
|
||||
"qui ne devrait pas être nécessaire."
|
||||
|
||||
#: ../../source/project_references.rst:195
|
||||
msgid ""
|
||||
"If you add a reference in the editor to a tag that doesn't yet exist, you "
|
||||
"can right-click it and select **Create Note for Tag**. This will generate "
|
||||
"a new project note automatically with the new tag defined. In order for "
|
||||
"this to be possible, a root folder for that category of references must "
|
||||
"already exist."
|
||||
msgstr ""
|
||||
"Si vous ajoutez une référence dans l'éditeur à une balise qui n'existe "
|
||||
"pas encore, vous pouvez cliquer dessus avec le bouton droit de la souris "
|
||||
"et sélectionner **Créer une note pour la balise**. Cela générera "
|
||||
"automatiquement une nouvelle note de projet avec la nouvelle balise "
|
||||
"définie. Pour que cela soit possible, un dossier racine pour cette "
|
||||
"catégorie de références doit déjà exister."
|
||||
|
||||
#: ../../source/project_references.rst:200
|
||||
msgid ""
|
||||
"One note can also reference another note in the same way novel documents "
|
||||
"do. When the note is opened in the document viewer, the references become "
|
||||
"clickable links, making it easier to follow connections in the plot. You "
|
||||
"can follow links in the document editor by clicking them with the mouse "
|
||||
"while holding down the :kbd:`Ctrl` key. Clicked links are always opened "
|
||||
"in the view panel."
|
||||
msgstr ""
|
||||
"Une note peut également faire référence à une autre note, de la même "
|
||||
"manière que les documents de romans. Lorsque la note est ouverte dans "
|
||||
"l'éditeur de documents, les références deviennent des liens cliquables, "
|
||||
"ce qui facilite le suivi des connexions dans l'intrigue. Vous pouvez "
|
||||
"suivre les liens dans l'éditeur de documents en les cliquant avec la "
|
||||
"souris tout en maintenant la touche :kbd:`Ctrl` enfoncée. Les liens "
|
||||
"cliqués sont toujours ouverts dans le panneau de visualisation."
|
||||
|
||||
#: ../../source/project_references.rst:205
|
||||
msgid ""
|
||||
"Project notes don't show up in the **Outline View**, so referencing "
|
||||
"between notes is only meaningful if you want to be able to click-navigate "
|
||||
"between them, or of course if you just want to highlight that two notes "
|
||||
"are related."
|
||||
msgstr ""
|
||||
"Les notes de projet n'apparaissent pas dans la **Vue d'ensemble**, de "
|
||||
"sorte que les références entre les notes n'ont de sens que si vous voulez "
|
||||
"pouvoir naviguer d'une note à l'autre en cliquant, ou bien sûr si vous "
|
||||
"voulez simplement mettre en évidence que deux notes sont liées."
|
||||
|
||||
#: ../../source/project_references.rst:211
|
||||
msgid ""
|
||||
"If you cross-reference between notes and export your project as an HTML "
|
||||
"document using the **Manuscript Build** tool, the cross-references become "
|
||||
"clickable links in the exported HTML document as well."
|
||||
msgstr ""
|
||||
"Si vous faites des références croisées entre les notes et que vous "
|
||||
"exportez votre projet en tant que document HTML à l'aide de l'outil "
|
||||
"**Compiler le manuscrit**, les références croisées deviennent également "
|
||||
"des liens cliquables dans le document HTML exporté."
|
||||
|
||||
#: ../../source/project_references.rst:215
|
||||
msgid "Example of a novel document with references to characters and plots:"
|
||||
msgstr ""
|
||||
"Exemple de document de roman avec références aux personnages et aux "
|
||||
"intrigues :"
|
||||
|
||||
#: ../../source/project_references.rst:234
|
||||
msgid "The References Auto-Completer"
|
||||
msgstr "L'auto-complétion des références"
|
||||
|
||||
#: ../../source/project_references.rst:236
|
||||
msgid ""
|
||||
"An auto-completer context menu will show up automatically in the document "
|
||||
"editor when you type the character ``@`` on a new line. It will first "
|
||||
"suggest tag or reference keywords for you to add, and after the ``:`` has "
|
||||
"been added, suggest references from the list of tags you have already "
|
||||
"defined."
|
||||
msgstr ""
|
||||
"Un menu contextuel d'auto-complétion s'affiche automatiquement dans "
|
||||
"l'éditeur de document lorsque vous tapez le caractère ``@`` sur une "
|
||||
"nouvelle ligne. Il vous proposera d'abord des mots-clés de balise ou de "
|
||||
"référence à ajouter, puis, après l'ajout de ``:``, des références à "
|
||||
"partir de la liste des balises que vous avez déjà définies."
|
||||
|
||||
#: ../../source/project_references.rst:240
|
||||
msgid ""
|
||||
"You can use the auto-completer to add multiple references with a ``,`` "
|
||||
"between them, and even type new ones. New references can be created by "
|
||||
"right-clicking on them and selecting **Create Note for Tag** from the "
|
||||
"menu."
|
||||
msgstr ""
|
||||
"Vous pouvez utiliser l'auto-complétion pour ajouter plusieurs références "
|
||||
"avec un `,` entre elles, et même en taper de nouvelles. De nouvelles "
|
||||
"références peuvent être créées en cliquant dessus avec le bouton droit de "
|
||||
"la souris et en sélectionnant **Créer une note pour le tag** dans le menu."
|
||||
@@ -1,340 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2024
|
||||
# This file is distributed under the same license as the novelWriter
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: novelWriter 2.6b1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-01-27 10:21+0100\n"
|
||||
"PO-Revision-Date: 2025-01-27 11:10+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/project_structure.rst:5
|
||||
msgid "Novel Structure"
|
||||
msgstr "Structure du roman"
|
||||
|
||||
#: ../../source/project_structure.rst:7
|
||||
msgid "This chapter covers the structure of a novel project."
|
||||
msgstr "Ce chapitre traite de la structure d'un projet de roman."
|
||||
|
||||
#: ../../source/project_structure.rst:9
|
||||
msgid ""
|
||||
"There are two different types of documents in a project, **Novel "
|
||||
"Documents** and **Project Notes**. Active novel documents can only live "
|
||||
"in a **Novel** type root folder. You can also move them to **Archive** "
|
||||
"and **Trash** of course, where they become inactive."
|
||||
msgstr ""
|
||||
"Il existe deux types de documents dans un projet, les **Documents de "
|
||||
"roman** et les **Notes de projet**. Les documents inédits actifs ne "
|
||||
"peuvent se trouver que dans un dossier racine de type **Nouveau**. Vous "
|
||||
"pouvez également les déplacer vers **Archives** et **Corbeille** bien "
|
||||
"sûr, où ils deviennent inactifs."
|
||||
|
||||
#: ../../source/project_structure.rst:13
|
||||
msgid ""
|
||||
"The project tree can distinguish between the different heading levels of "
|
||||
"the novel documents using coloured icons, and optionally add emphasis on "
|
||||
"the label. Emphasis can be enabled in **Preferences**."
|
||||
msgstr ""
|
||||
"L'arborescence du projet peut distinguer les différents niveaux d'en-"
|
||||
"tête des nouveaux documents à l'aide d'icônes colorées, et "
|
||||
"éventuellement ajouter de l'emphase sur l'étiquette. L'accentuation peut "
|
||||
"être activée dans les **Préférences**."
|
||||
|
||||
#: ../../source/project_structure.rst:21
|
||||
msgid "Importance of Headings"
|
||||
msgstr "Importance des titres"
|
||||
|
||||
#: ../../source/project_structure.rst:23
|
||||
msgid ""
|
||||
"Subfolders under root folders have no impact on the structure of the "
|
||||
"novel itself. The structure is instead dictated by the heading level of "
|
||||
"the headings within the documents."
|
||||
msgstr ""
|
||||
"Les sous-dossiers des dossiers racines n'ont aucun impact sur la "
|
||||
"structure du roman lui-même. La structure est plutôt dictée par le "
|
||||
"niveau des titres des documents."
|
||||
|
||||
#: ../../source/project_structure.rst:26
|
||||
msgid ""
|
||||
"Four levels of headings are supported, signified by the number of hashes "
|
||||
"(``#``) preceding the title. See also the :ref:`a_fmt` section for more "
|
||||
"details about the markup syntax."
|
||||
msgstr ""
|
||||
"Quatre niveaux de titres sont supportés, indiqués par le nombre de "
|
||||
"signes (``#``) précédant le titre. Voir aussi la section :ref:`a_fmt` "
|
||||
"pour plus de détails sur la syntaxe du balisage."
|
||||
|
||||
#: ../../source/project_structure.rst:31
|
||||
msgid ""
|
||||
"The heading levels are not only important when generating the "
|
||||
"manuscript, they are also used by the indexer when building the outline "
|
||||
"tree in the **Outline View** as well as in the **Novel Tree**. Each "
|
||||
"heading also starts a new region where new Tags and References can be "
|
||||
"defined. See :ref:`a_references` for more details."
|
||||
msgstr ""
|
||||
"Les niveaux de titres ne sont pas seulement importants lors de la "
|
||||
"génération du manuscrit, ils sont également utilisés par l'indexeur lors "
|
||||
"de la construction de l'arborescence dans la **Vue d'ensemble** ainsi "
|
||||
"que dans l'**Arborescence du roman**. Chaque rubrique commence également "
|
||||
"une nouvelle région où de nouvelles étiquettes et références peuvent "
|
||||
"être définies. Voir :ref:`a_references` pour plus de détails."
|
||||
|
||||
#: ../../source/project_structure.rst:36
|
||||
msgid ""
|
||||
"The syntax for the four basic heading types, and the three special "
|
||||
"types, is listed in section :ref:`a_fmt_head`. The meaning of the four "
|
||||
"levels for the structure of your novel is as follows:"
|
||||
msgstr ""
|
||||
"La syntaxe des quatre types de titres de base, et des trois types "
|
||||
"spéciaux, est listée dans la section :ref:`a_fmt_head`. La signification "
|
||||
"des quatre niveaux pour la structure de votre roman est la suivante :"
|
||||
|
||||
#: ../../source/project_structure.rst:39
|
||||
msgid "**Heading Level 1: Partition**"
|
||||
msgstr "**Titre de niveau 1 : Section**"
|
||||
|
||||
#: ../../source/project_structure.rst:40
|
||||
msgid ""
|
||||
"This heading level signifies that the text refers to a top level "
|
||||
"heading. This is useful when you want to split the manuscript up into "
|
||||
"books, parts, or acts. These headings are not required. The novel title "
|
||||
"itself should use the special heading level ``#!`` covered in :ref:"
|
||||
"`a_fmt_head`."
|
||||
msgstr ""
|
||||
"Ce niveau de titre signifie que le texte se réfère à un titre de niveau "
|
||||
"supérieur. Il est utile lorsque vous souhaitez diviser le manuscrit en "
|
||||
"livres, parties ou actes. Ces titres ne sont pas obligatoires. Le titre "
|
||||
"du roman lui-même doit utiliser le niveau de titre spécial ``#!`` "
|
||||
"couvert dans :ref:`a_fmt_head`."
|
||||
|
||||
#: ../../source/project_structure.rst:44
|
||||
msgid "**Heading Level 2: Chapter**"
|
||||
msgstr "**Niveau de niveau 2 : Chapitre**"
|
||||
|
||||
#: ../../source/project_structure.rst:45
|
||||
msgid ""
|
||||
"This heading level signifies a chapter. Each time you want to start a "
|
||||
"new chapter, you must add such a heading. If you choose to split your "
|
||||
"manuscript up into one document per scene, you need a single chapter "
|
||||
"document with just the heading. You can of course also add a synopsis "
|
||||
"and reference keywords to the chapter document. If you want to open the "
|
||||
"chapter with a quote or other introductory text that isn't part of a "
|
||||
"scene, this is also where you'd put that text."
|
||||
msgstr ""
|
||||
"Ce niveau de titre correspond à un chapitre. Chaque fois que vous voulez "
|
||||
"commencer un nouveau chapitre, vous devez ajouter un tel titre. Si vous "
|
||||
"choisissez de diviser votre manuscrit en un document par scène, vous "
|
||||
"avez besoin d'un seul document de chapitre avec seulement l'en-tête. "
|
||||
"Vous pouvez bien entendu ajouter un synopsis et des mots-clés de "
|
||||
"référence au document de chapitre. Si vous souhaitez ouvrir le chapitre "
|
||||
"par une citation ou un autre texte d'introduction qui ne fait pas partie "
|
||||
"d'une scène, c'est également dans ce document que vous placerez ce texte."
|
||||
|
||||
#: ../../source/project_structure.rst:51
|
||||
msgid "**Heading Level 3: Scene**"
|
||||
msgstr "**Niveau de titre 3 : Scène**"
|
||||
|
||||
#: ../../source/project_structure.rst:52
|
||||
msgid ""
|
||||
"This heading level signifies a scene. You must provide a title text, but "
|
||||
"the title text can be replaced with a scene separator or just skipped "
|
||||
"entirely when you build your manuscript. If you need to distinguish "
|
||||
"between hard and soft scene breaks, there is an alternative format for "
|
||||
"scenes you can use for this distinction. The formatting is covered in :"
|
||||
"ref:`a_fmt_head`. See also :ref:`a_struct_heads_scenes`."
|
||||
msgstr ""
|
||||
"Ce niveau de titre correspond à une scène. Vous devez fournir un texte "
|
||||
"de titre, mais celui-ci peut être remplacé par un séparateur de scène ou "
|
||||
"simplement ignoré lors de la construction de votre manuscrit. Si vous "
|
||||
"avez besoin de faire la distinction entre une scène dure et une scène "
|
||||
"douce, il existe un format alternatif pour les scènes que vous pouvez "
|
||||
"utiliser pour faire cette distinction. Le formatage est couvert dans :"
|
||||
"ref:`a_fmt_head`. Voir aussi :ref:`a_struct_heads_scenes`."
|
||||
|
||||
#: ../../source/project_structure.rst:58
|
||||
msgid "**Heading Level 4: Section**"
|
||||
msgstr "**Niveau de titre 4 : Section**"
|
||||
|
||||
#: ../../source/project_structure.rst:59
|
||||
msgid ""
|
||||
"This heading level can be used to split up a scene, usually called a "
|
||||
"\"section\" in the documentation and the user interface. These can be "
|
||||
"useful if you want to change references mid-scene, like if you change "
|
||||
"the point-of-view character. You are free to use sections as you wish, "
|
||||
"and you can filter them out of the final manuscript."
|
||||
msgstr ""
|
||||
"Ce niveau d'en-tête peut être utilisé pour diviser une scène, "
|
||||
"généralement appelée « section » dans la documentation et l'interface "
|
||||
"utilisateur. Ces sections peuvent être utiles si vous souhaitez changer "
|
||||
"de référence au milieu de la scène, par exemple si vous changez de point "
|
||||
"de vue. Vous êtes libre d'utiliser les sections comme vous le souhaitez, "
|
||||
"et vous pouvez les filtrer dans le manuscrit final."
|
||||
|
||||
#: ../../source/project_structure.rst:64
|
||||
msgid ""
|
||||
"Page breaks can be automatically added before titles, partition, chapter "
|
||||
"and scene headings from the **Manuscript Build** tool when you build "
|
||||
"your project to a format that supports page breaks. If you want page "
|
||||
"breaks in other places, you have to specify them manually. See :ref:"
|
||||
"`a_fmt_break`."
|
||||
msgstr ""
|
||||
"Les sauts de page peuvent être automatiquement ajoutés avant les titres, "
|
||||
"les parties, les chapitres et les scènes à partir de l'outil **Compiler "
|
||||
"le manuscrit** lorsque vous créez votre projet dans un format qui prend "
|
||||
"en charge les sauts de page. Si vous voulez des sauts de page à d'autres "
|
||||
"endroits, vous devez les spécifier manuellement. Voir :ref:`a_fmt_break`."
|
||||
|
||||
#: ../../source/project_structure.rst:70
|
||||
msgid ""
|
||||
"There are multiple options of how to process novel headings when "
|
||||
"building the manuscript. For instance, chapter numbers can be applied "
|
||||
"automatically, and so can scene numbers if you want them in a draft "
|
||||
"manuscript. You can also insert point-of-view character names in chapter "
|
||||
"titles. See the :ref:`a_manuscript` page for more details."
|
||||
msgstr ""
|
||||
"Il existe de nombreuses options pour traiter les titres de roman lors de "
|
||||
"la construction du manuscrit. Par exemple, les numéros de chapitre "
|
||||
"peuvent être appliqués automatiquement, de même que les numéros de scène "
|
||||
"si vous le souhaitez dans un projet de manuscrit. Vous pouvez également "
|
||||
"insérer des noms de personnages dans les titres de chapitres. Voir la "
|
||||
"page :ref:`a_manuscript` pour plus de détails."
|
||||
|
||||
#: ../../source/project_structure.rst:77
|
||||
msgid ""
|
||||
"As of 2.6, the heading levels internally in novelWriter do not map "
|
||||
"directly to heading levels in manuscript documents. In manuscript "
|
||||
"documents, chapters are considered the top level heading, and partitions "
|
||||
"become plain text paragraphs with a larger font."
|
||||
msgstr ""
|
||||
"Depuis la version 2.6, les niveaux d'en-tête internes à novelWriter ne "
|
||||
"correspondent pas directement aux niveaux d'en-tête des documents "
|
||||
"manuscrits. Dans les documents manuscrits, les chapitres sont considérés "
|
||||
"comme l'en-tête de premier niveau, et les partitions deviennent des "
|
||||
"paragraphes de texte simple avec une police plus grande."
|
||||
|
||||
#: ../../source/project_structure.rst:87
|
||||
msgid "Novel Title and Front Matter"
|
||||
msgstr "Titre du roman et page de garde"
|
||||
|
||||
#: ../../source/project_structure.rst:89
|
||||
msgid ""
|
||||
"It is recommended that you add a document at the very top of each "
|
||||
"**Novel** root folder with the novel title in it. You should modify the "
|
||||
"level 1 heading format code with an ``!`` in order to render it as a "
|
||||
"document title that is excluded from any automatic Table of Content in a "
|
||||
"manuscript build document."
|
||||
msgstr ""
|
||||
"Il est recommandé d'ajouter un document au premier niveau de chaque "
|
||||
"dossier racine **Nouveau** avec le titre du roman. Vous devez modifier "
|
||||
"le code de format de l'en-tête de niveau 1 avec un ``!`` afin de le "
|
||||
"rendre comme un titre de document qui est exclu de toute table des "
|
||||
"matières automatique dans un document de construction de manuscrit."
|
||||
|
||||
#: ../../source/project_structure.rst:94
|
||||
msgid ""
|
||||
"You can also add the author name and address above this if this is "
|
||||
"required by the manuscript format you use, and additional space added "
|
||||
"before the title."
|
||||
msgstr ""
|
||||
"Vous pouvez également ajouter le nom et l'adresse de l'auteur au-dessus "
|
||||
"de ce titre si le format de manuscrit que vous utilisez l'exige, et "
|
||||
"ajouter un espace supplémentaire avant le titre."
|
||||
|
||||
#: ../../source/project_structure.rst:97
|
||||
msgid ""
|
||||
"This is the title page novelWriter generates automatically for a new "
|
||||
"project as of version 2.6:"
|
||||
msgstr ""
|
||||
"Il s'agit de la page de titre que novelWriter génère automatiquement "
|
||||
"pour un nouveau projet à partir de la version 2.6 :"
|
||||
|
||||
#: ../../source/project_structure.rst:113
|
||||
msgid ""
|
||||
"The title is by default centred on the page. You can add more text to "
|
||||
"the page as you wish, like for instance the author's name and details."
|
||||
msgstr ""
|
||||
"Le titre est par défaut centré sur la page. Vous pouvez ajouter plus de "
|
||||
"texte à la page si vous le souhaitez, comme par exemple le nom de "
|
||||
"l'auteur et ses coordonnées."
|
||||
|
||||
#: ../../source/project_structure.rst:116
|
||||
msgid ""
|
||||
"If you want an additional page of text after the title page, starting on "
|
||||
"a fresh page, you can add ``[new page]`` on a line by itself, and "
|
||||
"continue the text after it. This will insert a page break before the "
|
||||
"text. See also :ref:`a_fmt_break`."
|
||||
msgstr ""
|
||||
"Si vous voulez une page de texte supplémentaire après la page de titre, "
|
||||
"commençant sur une nouvelle page, vous pouvez ajouter ``[new page]`` sur "
|
||||
"une ligne à part, et continuer le texte après elle. Cela insérera un "
|
||||
"saut de page avant le texte. Voir aussi :ref:`a_fmt_break`."
|
||||
|
||||
#: ../../source/project_structure.rst:124
|
||||
msgid "Unnumbered Chapter Headings"
|
||||
msgstr "Titres des chapitres non numérotés"
|
||||
|
||||
#: ../../source/project_structure.rst:126
|
||||
msgid ""
|
||||
"If you use the automatic numbering feature for your chapters, but you "
|
||||
"want to keep some special chapters separate from this, you can add an ``!"
|
||||
"`` to the level 2 heading formatting code to tell the build tool to skip "
|
||||
"these chapters when adding numbers."
|
||||
msgstr ""
|
||||
"Si vous utilisez la numérotation automatique pour vos chapitres, mais "
|
||||
"que vous voulez garder certains chapitres spéciaux séparés, vous pouvez "
|
||||
"ajouter un `!` au code de formatage des titres de niveau 2 pour indiquer "
|
||||
"à l'outil de construction d'ignorer ces chapitres lors de l'ajout des "
|
||||
"numéros."
|
||||
|
||||
#: ../../source/project_structure.rst:136
|
||||
msgid ""
|
||||
"There is a separate formatting feature for such chapter titles in the "
|
||||
"**Manuscript Build** tool as well. See the :ref:`a_manuscript` page for "
|
||||
"more details. When building a document of a format that supports page "
|
||||
"breaks, also unnumbered chapters can have a page break added just like "
|
||||
"for normal chapters."
|
||||
msgstr ""
|
||||
"L'outil **Compiler le manuscrit** dispose également d'une fonction de "
|
||||
"formatage distincte pour ces titres de chapitre. Voir la page :ref:"
|
||||
"`a_manuscript` pour plus de détails. Lors de la construction d'un "
|
||||
"document d'un format qui supporte les sauts de page, les chapitres non "
|
||||
"numérotés peuvent également avoir un saut de page ajouté comme pour les "
|
||||
"chapitres normaux."
|
||||
|
||||
#: ../../source/project_structure.rst:145
|
||||
msgid "Hard and Soft Scene Breaks"
|
||||
msgstr "Ruptures de scène dures et douces"
|
||||
|
||||
#: ../../source/project_structure.rst:147
|
||||
msgid ""
|
||||
"If you need two different ways to style scenes in your manuscript, like "
|
||||
"if you want to insert different scene separators for soft and hard scene "
|
||||
"breaks, there is an alternative scene format available for scene "
|
||||
"headings with a ``!`` added to the formatting code."
|
||||
msgstr ""
|
||||
"Si vous avez besoin de deux façons différentes de styliser les scènes "
|
||||
"dans votre manuscrit, par exemple si vous voulez insérer des séparateurs "
|
||||
"de scène différents pour les ruptures de scène douces et dures, il "
|
||||
"existe un format de scène alternatif disponible pour les titres de scène "
|
||||
"avec un `!` ajouté au code de formatage."
|
||||
|
||||
#: ../../source/project_structure.rst:161
|
||||
msgid ""
|
||||
"There is a separate formatting feature for these titles in the "
|
||||
"**Manuscript Build** tool."
|
||||
msgstr ""
|
||||
"Il existe une fonction de formatage distincte pour ces titres dans "
|
||||
"l'outil **Compiler le manuscrit**."
|
||||