From 5ae4eb9b8f2b03baebbb9da1eb2a6bee642c610d Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Mon, 14 Feb 2022 02:56:05 -0800 Subject: [PATCH 001/132] Super messy initial working version. To clean up. --- bookwyrm/static/js/bookwyrm.js | 59 ++++++++++++++++++++ bookwyrm/static/js/vendor/quagga.min.js | 1 + bookwyrm/templates/layout.html | 7 +++ bookwyrm/templates/search/barcode_modal.html | 14 +++++ 4 files changed, 81 insertions(+) create mode 100644 bookwyrm/static/js/vendor/quagga.min.js create mode 100644 bookwyrm/templates/search/barcode_modal.html diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index cf3ce3032..b826a54e2 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -47,6 +47,10 @@ let BookWyrm = new (class { .forEach((node) => node.addEventListener("toggle", this.handleDetailsDropdown.bind(this)) ); + + document + .querySelector("#barcode_scanner_modal") + .addEventListener("open", this.openBarcodeScanner.bind(this)); } /** @@ -427,9 +431,11 @@ let BookWyrm = new (class { }); modalElement.addEventListener("keydown", handleFocusTrap); + modalElement.dispatchEvent(new Event('open')); } function handleModalClose(modalElement) { + modalElement.dispatchEvent(new Event('close')); modalElement.removeEventListener("keydown", handleFocusTrap); htmlElement.classList.remove("is-clipped"); modalElement.classList.remove("is-active"); @@ -632,4 +638,57 @@ let BookWyrm = new (class { } } } + + openBarcodeScanner(event) { + /*function onScanSuccess(decodedText, decodedResult) { + alert(`${decodedText}`, decodedResult); + } + + function onScanFailure(error) { + alert(error); + }*/ + + Quagga.init({ + inputStream : { + name: "Live", + type: "LiveStream", + target: "#barcode_scanner" + }, + decoder : { + readers: [ + "ean_reader", + { + format: "ean_reader", + config: { + supplements: [ "ean_2_reader", "ean_5_reader" ] + } + } + ], + debug: { + drawBoundingBox: true, + drawScanline: true, + showPattern: true, + }, + multiple: false + }, + debug: true + }, function(err) { + if (err) { + console.log(err); + return; + } + + console.log('started'); + Quagga.start(); + }); + + Quagga.onDetected(function(result) { + var code = result.codeResult.code; + + location.href = `search?q=${code}`; + Quagga.stop(); + + console.log(code); + }); + } })(); diff --git a/bookwyrm/static/js/vendor/quagga.min.js b/bookwyrm/static/js/vendor/quagga.min.js new file mode 100644 index 000000000..f7a30f41b --- /dev/null +++ b/bookwyrm/static/js/vendor/quagga.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(e.toString()).default:"object"==typeof exports?exports.Quagga=e(e.toString()).default:t.Quagga=e(e.toString()).default}(this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=166)}([function(t,e){function n(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}t.exports=n},function(t,e,n){"use strict";function r(t,e){return this._row=[],this.config=t||{},this.supplements=e,this}var o=n(3);r.prototype._nextUnset=function(t,e){var n;for(void 0===e&&(e=0),n=e;nn)return Number.MAX_VALUE;u+=c}return u/f},r.prototype._nextSet=function(t,e){var n;for(e=e||0,n=e;n1&&(t[n[r]]=o)},r.prototype._matchTrace=function(t,e){var n,r,o=[],i=this,a=i._nextSet(i._row),u=!i._row[a],c=0,s={error:Number.MAX_VALUE,code:-1,start:0};if(t){for(n=0;n=0;r--)e=Math.floor(Math.random()*r),n=t[r],t[r]=t[e],t[e]=n;return t},toPointList:function(t){var e,n,r=[],o=[];for(e=0;e=e&&o.push(t[r]);return o},maxIndex:function(t){var e,n=0;for(e=0;et[n]&&(n=e);return n},max:function t(e){var n,t=0;for(n=0;nt&&(t=e[n]);return t},sum:function t(e){for(var n=e.length,t=0;n--;)t+=e[n];return t}}},function(t,e,n){"use strict";function r(t,e){t=a()(o(),t),u.a.call(this,t,e)}function o(){var t={};return Object.keys(r.CONFIG_KEYS).forEach(function(e){t[e]=r.CONFIG_KEYS[e].default}),t}var i=n(28),a=n.n(i),u=n(1),c=Object.assign||function(t){for(var e=1;ea.AVG_CODE_ERROR?null:f}s++,i[s]=1,c=!c}return null},r.prototype._findPattern=function(t,e,n,r,o){var i,a,u,c,s=[],f=this,l=0,d={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(e||(e=f._nextSet(f._row)),void 0===n&&(n=!1),void 0===r&&(r=!0),void 0===o&&(o=f.AVG_CODE_ERROR),i=0;i=0&&n._matchRange(t,e.start,0))return e;r=e.end,e=null}},r.prototype._verifyTrailingWhitespace=function(t){var e,n=this;return e=t.end+(t.end-t.start),e=i.CODE_G_START?(t.code=t.code-i.CODE_G_START,a|=1<<5-r):a|=0<<5-r,e.push(t.code),n.push(t)}if(null===(o=i._calculateFirstDigit(a)))return null;if(e.unshift(o),null===(t=i._findPattern(i.MIDDLE_PATTERN,t.end,!0,!1)))return null;for(n.push(t),r=0;r<6;r++){if(!(t=i._decodeCode(t.end,i.CODE_G_START)))return null;n.push(t),e.push(t.code)}return t},r.prototype._decode=function(){var t,e,n=this,r=[],o=[],i={};if(!(t=n._findStart()))return null;if(e={code:t.code,start:t.start,end:t.end},o.push(e),!(e=n._decodePayload(e,r,o)))return null;if(!(e=n._findEnd(e.end,!1)))return null;if(o.push(e),!n._checksum(r))return null;if(this.supplements.length>0){var a=this._decodeExtensions(e.end);if(!a)return null;var u=a.decodedCodes[a.decodedCodes.length-1],s={start:u.start+((u.end-u.start)/2|0),end:u.end};if(!n._verifyTrailingWhitespace(s))return null;i={supplement:a,code:r.join("")+a.code}}return c({code:r.join(""),start:t.start,end:e.end,codeset:"",startInfo:t,decodedCodes:o},i)},r.prototype._decodeExtensions=function(t){var e,n,r=this._nextSet(this._row,t),o=this._findPattern(this.EXTENSION_START_PATTERN,r,!1,!1);if(null===o)return null;for(e=0;e=0;e-=2)n+=t[e];for(n*=3,e=t.length-1;e>=0;e-=2)n+=t[e];return n%10==0},r.CONFIG_KEYS={supplements:{type:"arrayOf(string)",default:[],description:"Allowed extensions to be decoded (2 and/or 5)"}},e.a=r},function(t,e,n){var r=n(38),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},function(t,e){function n(t){var e=new Float32Array(2);return e[0]=t[0],e[1]=t[1],e}t.exports=n},function(t,e,n){function r(t){return null==t?void 0===t?c:u:s&&s in Object(t)?i(t):a(t)}var o=n(11),i=n(119),a=n(146),u="[object Null]",c="[object Undefined]",s=o?o.toStringTag:void 0;t.exports=r},function(t,e,n){"use strict";e.a={drawRect:function(t,e,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=1,n.beginPath(),n.strokeRect(t.x,t.y,e.x,e.y)},drawPath:function(t,e,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth,n.beginPath(),n.moveTo(t[0][e.x],t[0][e.y]);for(var o=1;o-1&&t%1==0&&t0?Math.floor(this.x+.5):Math.floor(this.x-.5),this.y=this.y>0?Math.floor(this.y+.5):Math.floor(this.y-.5),this}}}function o(t,e,n){n||(n=t);for(var r=t.data,o=r.length,i=n.data;o--;)i[o]=r[o]>o]++;return a}function a(t,e){function n(t,e){var n,r=0;for(n=t;n<=e;n++)r+=a[n];return r}function r(t,e){var n,r=0;for(n=t;n<=e;n++)r+=n*a[n];return r}function o(){var o,u,c,s,f,l,d,h=[0],p=(1<c)for(i=s[u],i.score=o,i.item=t[r],c=Number.MAX_VALUE,a=0;ae[r]?r++:n++;return o}function _(t,e){function n(t){for(var e=0,n=t[Math.floor(t.length/2)];e0&&(n=Math.abs(t[e]-d)>Math.abs(t[e-1]-d)?t[e-1]:t[e]),d/nc[f-1]/c[f]?{x:n,y:n}:null}var r,o=p(e.x),i=p(e.y),a=Math.max(e.x,e.y),u=v(o,i),c=[8,10,15,20,32,60,80],s={"x-small":5,small:4,medium:3,large:2,"x-large":1},f=s[t]||s.medium,l=c[f],d=Math.floor(a/l);return r=n(u),r||(r=n(p(a)))||(r=n(p(d*l))),r}function g(t){return{value:parseFloat(t),unit:(t.indexOf("%"),t.length,"%")}}function y(t,e,n){var r={width:t,height:e},o=Object.keys(n).reduce(function(t,e){var o=n[e],i=g(o),a=C[e](i,r);return t[e]=a,t},{});return{sx:o.left,sy:o.top,sw:o.right-o.left,sh:o.bottom-o.top}}var m=n(50),x=n(3);e.b=r,e.f=u,e.g=c,e.h=s,e.c=f,e.d=l,e.i=d,e.a=h,e.e=_,e.j=y;var b={clone:n(7)},E={clone:n(83)},C={top:function(t,e){if("%"===t.unit)return Math.floor(e.height*(t.value/100))},right:function(t,e){if("%"===t.unit)return Math.floor(e.width-e.width*(t.value/100))},bottom:function(t,e){if("%"===t.unit)return Math.floor(e.height-e.height*(t.value/100))},left:function(t,e){if("%"===t.unit)return Math.floor(e.width*(t.value/100))}}},function(t,e,n){"use strict";function r(t,e,n,r){e?this.data=e:n?(this.data=new n(t.x*t.y),n===Array&&r&&a.a.init(this.data,0)):(this.data=new Uint8Array(t.x*t.y),Uint8Array===Array&&r&&a.a.init(this.data,0)),this.size=t}var o=n(53),i=n(19),a=n(3),u={clone:n(7)};r.prototype.inImageWithBorder=function(t,e){return t.x>=e&&t.y>=e&&t.x0&&(a=g[r-1],a.m00+=1,a.m01+=n,a.m10+=e,a.m11+=e*n,a.m02+=o,a.m20+=e*e);for(i=0;i=0?x:-x)+m,a.theta=(180*h/m+90)%180-90,a.theta<0&&(a.theta+=180),a.rad=h>m?h-m:h,a.vec=u.clone([Math.cos(h),Math.sin(h)]),y.push(a));return y},r.prototype.show=function(t,e){var n,r,o,i,a,u,c;for(e||(e=1),n=t.getContext("2d"),t.width=this.size.x,t.height=this.size.y,r=n.getImageData(0,0,t.width,t.height),o=r.data,i=0,c=0;c360)&&(e=360);for(var o=[0,1,1],a=[0,0,0],u=[255,255,255],c=[0,0,0],s=[],f=t.getContext("2d"),l=f.getImageData(r.x,r.y,this.size.x,this.size.y),d=l.data,h=this.data.length;h--;)o[0]=this.data[h]*e,s=o[0]<=0?u:o[0]>=360?c:n.i(i.a)(o,a),d[4*h+0]=s[0],d[4*h+1]=s[1],d[4*h+2]=s[2],d[4*h+3]=255;f.putImageData(l,r.x,r.y)},e.a=r},function(t,e,n){function r(t,e,n){"__proto__"==e&&o?o(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}var o=n(37);t.exports=r},function(t,e,n){function r(t,e){var n=i(t,e);return o(n)?n:void 0}var o=n(97),i=n(120);t.exports=r},function(t,e,n){function r(t){if("string"==typeof t||o(t))return t;var e=t+"";return"0"==e&&1/t==-i?"-0":e}var o=n(27),i=1/0;t.exports=r},function(t,e,n){function r(t){return null!=t&&i(t.length)&&!o(t)}var o=n(25),i=n(26);t.exports=r},function(t,e,n){function r(t){if(!i(t))return!1;var e=o(t);return e==u||e==c||e==a||e==s}var o=n(8),i=n(0),a="[object AsyncFunction]",u="[object Function]",c="[object GeneratorFunction]",s="[object Proxy]";t.exports=r},function(t,e){function n(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=r}var r=9007199254740991;t.exports=n},function(t,e,n){function r(t){return"symbol"==typeof t||i(t)&&o(t)==a}var o=n(8),i=n(6),a="[object Symbol]";t.exports=r},function(t,e,n){var r=n(100),o=n(116),i=o(function(t,e,n){r(t,e,n)});t.exports=i},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(t,e){function n(t,e,n,r){var o,f,l;for(o=0;o<7;o++){if(f=t.cy+c[t.dir][0],l=t.cx+c[t.dir][1],i=f*s+l,a[i]===e&&(0===u[i]||u[i]===n))return u[i]=n,t.cy=f,t.cx=l,!0;0===u[i]&&(u[i]=r),t.dir=(t.dir+1)%8}return!1}function r(t,e,n){return{dir:n,x:t,y:e,next:null,prev:null}}function o(t,e,o,i,a){var u,c,s,f=null,l={cx:e,cy:t,dir:0};if(n(l,i,o,a)){f=r(e,t,l.dir),u=f,s=l.dir,c=r(l.cx,l.cy,0),c.prev=u,u.next=c,c.next=null,u=c;do l.dir=(l.dir+6)%8,n(l,i,o,a),s!==l.dir?(u.dir=l.dir,c=r(l.cx,l.cy,0),c.prev=u,u.next=c,c.next=null,u=c):(u.dir=s,u.x=l.cx,u.y=l.cy),s=l.dir;while(l.cx!==e||l.cy!==t);f.prev=u.prev,u.prev.next=f}return f}var i,a=t.data,u=e.data,c=this.searchDirections,s=t.size.x;return{trace:function(t,e,r,o){return n(t,e,r,o)},contourTracing:function(t,e,n,r,i){return o(t,e,n,r,i)}}}};e.a=r},function(t,e,n){"use strict";function r(){o.a.call(this)}var o=n(1),i=n(3),a={ALPHABETH_STRING:{value:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,45,46,32,42,36,47,43,37]},CHARACTER_ENCODINGS:{value:[52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,148,168,162,138,42]},ASTERISK:{value:148},FORMAT:{value:"code_39",writeable:!1}};r.prototype=Object.create(o.a.prototype,a),r.prototype.constructor=r,r.prototype._decode=function(){var t,e,n,r,o=this,a=[0,0,0,0,0,0,0,0,0],u=[],c=o._findStart();if(!c)return null;r=o._nextSet(o._row,c.end);do{if(a=o._toCounters(r,a),(n=o._toPattern(a))<0)return null;if((t=o._patternToChar(n))<0)return null;u.push(t),e=r,r+=i.a.sum(a),r=o._nextSet(o._row,r)}while("*"!==t);return u.pop(),u.length&&o._verifyTrailingWhitespace(e,r,a)?{code:u.join(""),start:c.start,end:r,startInfo:c,decodedCodes:u}:null},r.prototype._verifyTrailingWhitespace=function(t,e,n){var r=i.a.sum(n);return 3*(e-t-r)>=r},r.prototype._patternToChar=function(t){var e,n=this;for(e=0;ee&&(r=t[n]);return r},r.prototype._toPattern=function(t){for(var e,n,r=t.length,o=0,i=r,a=0,u=this;i>3;){for(o=u._findNextWidth(t,o),i=0,e=0,n=0;no&&(e|=1<0;n++)if(t[n]>o&&(i--,2*t[n]>=a))return-1;return e}}return-1},r.prototype._findStart=function(){var t,e,n,r=this,o=r._nextSet(r._row),i=o,a=[0,0,0,0,0,0,0,0,0],u=0,c=!1;for(t=o;t0)for(r=0;r0){if(!(t=Y.filter(function(t){return!t.busy})[0]))return;w.attachData(t.imageData)}else w.attachData(S.data);w.grab()&&(t?(t.busy=!0,t.worker.postMessage({cmd:"process",imageData:t.imageData},[t.imageData.buffer])):_())}else _()}function y(){var t=null,e=1e3/($.frequency||60);T=!1,function n(r){t=t||r,T||(r>=t&&(t+=e,g()),window.requestAnimFrame(n))}(performance.now())}function m(){Q&&"LiveStream"===$.inputStream.type?y():g()}function x(t){var e,n={worker:void 0,imageData:new Uint8Array(R.getWidth()*R.getHeight()),busy:!0};e=C(),n.worker=new Worker(e),n.worker.onmessage=function(r){if("initialized"===r.data.event)return URL.revokeObjectURL(e),n.busy=!1,n.imageData=new Uint8Array(r.data.imageData),t(n);"processed"===r.data.event?(n.imageData=new Uint8Array(r.data.imageData),n.busy=!1,v(r.data.result,n.imageData)):r.data.event},n.worker.postMessage({cmd:"init",size:{x:R.getWidth(),y:R.getHeight()},imageData:n.imageData,config:b($)},[n.imageData.buffer])}function b(t){return X({},t,{inputStream:X({},t.inputStream,{target:null})})}function E(t){function e(t){self.postMessage({event:"processed",imageData:o.data,result:t},[o.data.buffer])}function n(){self.postMessage({event:"initialized",imageData:o.data},[o.data.buffer])}if(t){var r=t().default;if(!r)return void self.postMessage({event:"error",message:"Quagga could not be created"})}var o;self.onmessage=function(t){if("init"===t.data.cmd){var i=t.data.config;i.numOfWorkers=0,o=new r.ImageWrapper({x:t.data.size.x,y:t.data.size.y},new Uint8Array(t.data.imageData)),r.init(i,n,o),r.onProcessed(e)}else"process"===t.data.cmd?(o.data=new Uint8Array(t.data.imageData),r.start()):"setReaders"===t.data.cmd&&r.setReaders(t.data.readers)}}function C(){var e,n;return void 0!==t&&(n=t),e=new Blob(["("+E.toString()+")("+n+");"],{type:"text/javascript"}),window.URL.createObjectURL(e)}function O(t){P?P.setReaders(t):Q&&Y.length>0&&Y.forEach(function(e){e.worker.postMessage({cmd:"setReaders",readers:t})})}function A(t,e){var n=t-Y.length;if(0===n)return e&&e();if(n<0){return Y.slice(n).forEach(function(t){t.worker.terminate()}),Y=Y.slice(0,n),e&&e()}for(var r=function(n){Y.push(n),Y.length>=t&&e&&e()},o=0;oe},getPoints:function(){return a},getCenter:function(){return u}}},createPoint:function(t,e,n){return{rad:t[n],point:t,id:e}}}},function(t,e,n){"use strict";e.a=function(){function t(t){return o[t]||(o[t]={subscribers:[]}),o[t]}function e(){o={}}function n(t,e){t.async?setTimeout(function(){t.callback(e)},4):t.callback(e)}function r(e,n,r){var o;if("function"==typeof n)o={callback:n,async:r};else if(o=n,!o.callback)throw"Callback was not specified on options";t(e).subscribers.push(o)}var o={};return{subscribe:function(t,e,n){return r(t,e,n)},publish:function(e,r){var o=t(e),i=o.subscribers;i.filter(function(t){return!!t.once}).forEach(function(t){n(t,r)}),o.subscribers=i.filter(function(t){return!t.once}),o.subscribers.forEach(function(t){n(t,r)})},once:function(t,e,n){r(t,{callback:e,async:n,once:!0})},unsubscribe:function(n,r){var o;n?(o=t(n),o.subscribers=o&&r?o.subscribers.filter(function(t){return t.callback!==r}):[]):e()}}}()},function(t,e,n){"use strict";function r(){return navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.enumerateDevices?navigator.mediaDevices.enumerateDevices():Promise.reject(new Error("enumerateDevices is not defined"))}function o(t){return navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia?navigator.mediaDevices.getUserMedia(t):Promise.reject(new Error("getUserMedia is not defined"))}e.b=r,e.a=o},function(t,e,n){"use strict";function r(t,e,n){n||(n={data:null,size:e}),this.data=n.data,this.originalSize=n.size,this.I=n,this.from=t,this.size=e}r.prototype.show=function(t,e){var n,r,o,i,a,u,c;for(e||(e=1),n=t.getContext("2d"),t.width=this.size.x,t.height=this.size.y,r=n.getImageData(0,0,t.width,t.height),o=r.data,i=0,a=0;a>>16&65535,r=65535&t,o=e>>>16&65535,i=65535&e;return r*i+(n*i+r*o<<16>>>0)|0},"function"!=typeof Object.assign&&(Object.assign=function(t){"use strict";if(null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n1&&(!e.inImageWithBorder(t[0],0)||!e.inImageWithBorder(t[1],0));)r-=Math.ceil(r/2),o(-r);return t}function u(t){return[{x:(t[1][0]-t[0][0])/2+t[0][0],y:(t[1][1]-t[0][1])/2+t[0][1]},{x:(t[3][0]-t[2][0])/2+t[2][0],y:(t[3][1]-t[2][1])/2+t[2][1]}]}function c(t){var n,o=null,i=r.a.getBarcodeLine(e,t[0],t[1]);for(r.a.toBinaryLine(i),n=0;nE?l:E,g.push(l)}var o,i,a,u,c,s,f,l,d=0|e.x,h=0|e.y,p=0|n.x,v=0|n.y,_=Math.abs(v-h)>Math.abs(p-d),g=[],y=t.data,m=t.size.x,x=0,b=255,E=0;for(_&&(s=d,d=h,h=s,s=p,p=v,v=s),d>p&&(s=d,d=p,p=s,s=h,h=v,v=s),o=p-d,i=Math.abs(v-h),a=o/2|0,c=h,u=hl?o.DIR.UP:o.DIR.DOWN,d.push({pos:0,val:f[0]}),a=0;ah&&f[a+1]>.5*l?o.DIR.UP:r,r!==i&&(d.push({pos:a,val:f[a]}),r=i);for(d.push({pos:f.length,val:f[f.length-1]}),u=d[0].pos;ul?0:1;for(a=1;ad[a].val?d[a].val+(d[a+1].val-d[a].val)/3*2|0:d[a+1].val+(d[a].val-d[a+1].val)/3|0,u=d[a].pos;uh?0:1;return{line:f,threshold:h}},r.debug={printFrequency:function(t,e){var n,r=e.getContext("2d");for(e.width=t.length,e.height=256,r.beginPath(),r.strokeStyle="blue",n=0;n0?t.videoWidth>10&&t.videoHeight>10?e():window.setTimeout(r,500):n("Unable to play video stream. Is webcam working?"),o--}var o=10;r()})}function o(t,e){return n.i(d.a)(e).then(function(e){return new Promise(function(n){s=e,t.setAttribute("autoplay",!0),t.setAttribute("muted",!0),t.setAttribute("playsinline",!0),t.srcObject=e,t.addEventListener("loadedmetadata",function(){t.play(),n()})})}).then(r.bind(null,t))}function i(t){var e=l()(t,["width","height","facingMode","aspectRatio","deviceId"]);return void 0!==t.minAspectRatio&&t.minAspectRatio>0&&(e.aspectRatio=t.minAspectRatio,console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead")),void 0!==t.facing&&(e.facingMode=t.facing,console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'")),e}function a(t){var e={audio:!1,video:i(t)};return e.video.deviceId&&e.video.facingMode&&delete e.video.facingMode,Promise.resolve(e)}function u(){return n.i(d.b)().then(function(t){return t.filter(function(t){return"videoinput"===t.kind})})}function c(){if(s){var t=s.getVideoTracks();if(t&&t.length)return t[0]}}var s,f=n(162),l=n.n(f),d=n(52);e.a={request:function(t,e){return a(e).then(o.bind(null,t))},release:function(){var t=s&&s.getVideoTracks();t&&t.length&&t[0].stop(),s=null},enumerateVideoDevices:u,getActiveStreamLabel:function(){var t=c();return t?t.label:""},getActiveTrack:c}},function(t,e,n){"use strict";function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d;return/^blob\:/i.test(t)?i(t).then(o).then(function(t){return a(t,e)}):Promise.resolve(null)}function o(t){return new Promise(function(e){var n=new FileReader;n.onload=function(t){return e(t.target.result)},n.readAsArrayBuffer(t)})}function i(t){return new Promise(function(e,n){var r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="blob",r.onreadystatechange=function(){r.readyState!==XMLHttpRequest.DONE||200!==r.status&&0!==r.status||e(this.response)},r.onerror=n,r.send()})}function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d,n=new DataView(t),r=t.byteLength,o=e.reduce(function(t,e){var n=Object.keys(l).filter(function(t){return l[t]===e})[0];return n&&(t[n]=e),t},{}),i=2;if(255!==n.getUint8(0)||216!==n.getUint8(1))return!1;for(;i1?i.size:Math.floor(e/o*i.size):e,r=i.size?e/o>1?Math.floor(o/e*i.size):i.size:o,s.x=n,s.y=r}var n,r,o={},i=null,a=["canrecord","ended"],u={},c={x:0,y:0},s={x:0,y:0};return o.getRealWidth=function(){return t.videoWidth},o.getRealHeight=function(){return t.videoHeight},o.getWidth=function(){return n},o.getHeight=function(){return r},o.setWidth=function(t){n=t},o.setHeight=function(t){r=t},o.setInputStream=function(e){i=e,t.src=void 0!==e.src?e.src:""},o.ended=function(){return t.ended},o.getConfig=function(){return i},o.setAttribute=function(e,n){t.setAttribute(e,n)},o.pause=function(){t.pause()},o.play=function(){t.play()},o.setCurrentTime=function(e){"LiveStream"!==i.type&&(t.currentTime=e)},o.addEventListener=function(e,n,r){a.indexOf(e)!==-1?(u[e]||(u[e]=[]),u[e].push(n)):t.addEventListener(e,n,r)},o.clearEventHandlers=function(){a.forEach(function(e){var n=u[e];n&&n.length>0&&n.forEach(function(n){t.removeEventListener(e,n)})})},o.trigger=function(t,n){var r,i=u[t];if("canrecord"===t&&e(),i&&i.length>0)for(r=0;r1?a.size:Math.floor(u/c*a.size):u,o=a.size?u/c>1?Math.floor(c/u*a.size):a.size:c,x.x=n,x.y=o,l=!0,s=0,setTimeout(function(){e("canrecord",[])},0)},p,h,a.sequence)}function e(t,e){var n,r=y[t];if(r&&r.length>0)for(n=0;nf&&(f=o.box[r][0]),o.box[r][1]l&&(l=o.box[r][1]);for(a=[[c,s],[f,s],[f,l],[c,l]],u=p.halfSample?2:1,i=M.invert(i,i),r=0;r<4;r++)I.transformMat2(a[r],a[r],i);for(r=0;r<4;r++)I.scale(a[r],a[r],u);return a}function a(){n.i(w.f)(v,E),E.zeroBorder()}function u(){var t,e,n,r,o,i,a,u=[];for(t=0;t0&&r[x.data[n]-1]++;return r=r.map(function(t,e){return{val:t,label:e+1}}),r.sort(function(t,e){return e.val-t.val}),r.filter(function(t){return t.val>=5})}function s(t,e){var n,r,o,a,u=[],c=[];for(n=0;n=2){for(o=0;ol&&c.push(t[o]);if(c.length>=2){for(a=f(c),i=0,o=0;o1&&a.length>=c.length/4*3&&a.length>t.length/4&&(i/=a.length,u={index:e[1]*z.x+e[0],pos:{x:n,y:r},box:[I.clone([n,r]),I.clone([n+g.size.x,r]),I.clone([n+g.size.x,r+g.size.y]),I.clone([n,r+g.size.y])],moments:a,rad:i,vec:I.clone([Math.cos(i),Math.sin(i)])},s.push(u))}}return s}function h(t){function e(){var t;for(t=0;ta&&n(u):x.data[u]=Number.MAX_VALUE}var r,o,i=0,a=.95,u=0;for(T.a.init(m.data,0),T.a.init(x.data,0),T.a.init(b.data,null),r=0;r0) {length=length - 1|0;images[outImagePtr+length|0]=(images[aImagePtr+length|0]|0) - (images[bImagePtr+length|0]|0)|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=images[aImagePtr+length|0]|0|(images[bImagePtr+length|0]|0)|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;sum=(sum|0)+(images[imagePtr+length|0]|0)|0;}return sum|0;}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[imagePtr+length|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0)>(0|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[dstImagePtr+length|0]=images[srcImagePtr+length|0]|0;}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for (x=0; (x|0)<(size - 1|0); x=x+1|0) {images[imagePtr+x|0]=0;images[imagePtr+y|0]=0;y=y+size - 1|0;images[imagePtr+y|0]=0;y=y+1|0;}for (x=0; (x|0)<(size|0); x=x+1|0) {images[imagePtr+y|0]=0;y=y+1|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=erodedImagePtr+erodedImagePtr|0;skelImagePtr=tempImagePtr+erodedImagePtr|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=(sum|0) == 0|0;} while (!done);}return {skeletonize: skeletonize};} __webpack_exports__["a"]=Skeletonizer; },function(t,e,n){"use strict";function r(t){o.a.call(this,t),this.barSpaceRatio=[1,1]}var o=n(1),i=1,a=3,u={START_PATTERN:{value:[a,i,a,i,i,i]},STOP_PATTERN:{value:[a,i,i,i,a]},CODE_PATTERN:{value:[[i,i,a,a,i],[a,i,i,i,a],[i,a,i,i,a],[a,a,i,i,i],[i,i,a,i,a],[a,i,a,i,i],[i,a,a,i,i],[i,i,i,a,a],[a,i,i,a,i],[i,a,i,a,i]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.3,writable:!0},FORMAT:{value:"2of5"}},c=u.START_PATTERN.value.reduce(function(t,e){return t+e},0);r.prototype=Object.create(o.a.prototype,u),r.prototype.constructor=r,r.prototype._findPattern=function(t,e,n,r){var o,i,a,u,c=[],s=this,f=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0},d=s.AVG_CODE_ERROR;for(n=n||!1,r=r||!1,e||(e=s._nextSet(s._row)),o=0;o=0&&n._matchRange(t,e.start,0))return e;r=e.end,e=null}},r.prototype._verifyTrailingWhitespace=function(t){var e,n=this;return e=t.end+(t.end-t.start)/2,e1&&i._isStartEnd(n))break}while(ri._counters.length?i._counters.length:r,o=t.start+i._sumCounters(t.startCounter,r-8),{code:a.join(""),start:t.start,end:o,startInfo:t,decodedCodes:a}):null},r.prototype._verifyWhitespace=function(t,e){return(t-1<=0||this._counters[t-1]>=this._calculatePatternLength(t)/2)&&(e+8>=this._counters.length||this._counters[e+7]>=this._calculatePatternLength(e)/2)},r.prototype._calculatePatternLength=function(t){var e,n=0;for(e=t;e=0;i--)n=2==(1&i)?c.bar:c.space,r=1==(1&a)?n.wide:n.narrow,r.size+=u._counters[s+i],r.counts++,a>>=1;s+=8}return["space","bar"].forEach(function(t){var e=c[t];e.wide.min=Math.floor((e.narrow.size/e.narrow.counts+e.wide.size/e.wide.counts)/2),e.narrow.max=Math.ceil(e.wide.min),e.wide.max=Math.ceil((e.wide.size*u.MAX_ACCEPTABLE+u.PADDING)/e.wide.counts)}),c},r.prototype._charToPattern=function(t){var e,n=this,r=t.charCodeAt(0);for(e=0;e=0;r--){if(o=0==(1&r)?s.bar:s.space,i=1==(1&u)?o.wide:o.narrow,(a=c._counters[f+r])i.max)return!1;u>>=1}f+=8}return!0},r.prototype._patternToChar=function(t){var e,n=this;for(e=0;ei&&(i=r),rthis._counters.length)return-1;for(e=this._computeAlternatingThreshold(t,a),n=this._computeAlternatingThreshold(t+1,a),r=0;ro&&(c|=u),u>>=1;return c},r.prototype._isStartEnd=function(t){var e;for(e=0;eu.AVG_CODE_ERROR?null:(u.CODE_PATTERN[l.code]&&(l.correction.bar=o(u.CODE_PATTERN[l.code],a,this.MODULE_INDICES.bar),l.correction.space=o(u.CODE_PATTERN[l.code],a,this.MODULE_INDICES.space)),l)}f++,a[f]=1,s=!s}return null},r.prototype._correct=function(t,e){this._correctBars(t,e.bar,this.MODULE_INDICES.bar),this._correctBars(t,e.space,this.MODULE_INDICES.space)},r.prototype._findStart=function(){var t,e,n,r,i,a=[0,0,0,0,0,0],u=this,c=u._nextSet(u._row),s=!1,f=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0,correction:{bar:1,space:1}};for(t=c;t4)return-1;if(0==(1&i))for(var u=0;u="a"&&o<="d"){if(r>e-2)return null;var i=t[++r],a=i.charCodeAt(0),u=void 0;switch(o){case"a":if(!(i>="A"&&i<="Z"))return null;u=String.fromCharCode(a-64);break;case"b":if(i>="A"&&i<="E")u=String.fromCharCode(a-38);else if(i>="F"&&i<="J")u=String.fromCharCode(a-11);else if(i>="K"&&i<="O")u=String.fromCharCode(a+16);else if(i>="P"&&i<="S")u=String.fromCharCode(a+43);else{if(!(i>="T"&&i<="Z"))return null;u=String.fromCharCode(127)}break;case"c":if(i>="A"&&i<="O")u=String.fromCharCode(a-32);else{if("Z"!==i)return null;u=":"}break;case"d":if(!(i>="A"&&i<="Z"))return null;u=String.fromCharCode(a+32)}n.push(u)}else n.push(o)}return n},r.prototype._verifyChecksums=function(t){return this._matchCheckChar(t,t.length-2,20)&&this._matchCheckChar(t,t.length-1,15)},r.prototype._matchCheckChar=function(t,e,n){var r=this,o=t.slice(0,e),i=o.length,a=o.reduce(function(t,e,o){return t+((o*-1+(i-1))%n+1)*r.ALPHABET.indexOf(e.charCodeAt(0))},0);return this.ALPHABET[a%47]===t[e].charCodeAt(0)},e.a=r},function(t,e,n){"use strict";function r(){o.a.call(this)}var o=n(4),i={FORMAT:{value:"ean_2",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype.decode=function(t,e){this._row=t;var n,r=0,o=0,i=e,a=this._row.length,u=[],c=[];for(o=0;o<2&&i=this.CODE_G_START&&(r|=1<<1-o),1!=o&&(i=this._nextSet(this._row,n.end),i=this._nextUnset(this._row,i))}return 2!=u.length||parseInt(u.join(""))%4!==r?null:{code:u.join(""),decodedCodes:c,end:n.end}},e.a=r},function(t,e,n){"use strict";function r(){a.a.call(this)}function o(t){var e;for(e=0;e<10;e++)if(t===c[e])return e;return null}function i(t){var e,n=t.length,r=0;for(e=n-2;e>=0;e-=2)r+=t[e];for(r*=3,e=n-1;e>=0;e-=2)r+=t[e];return(r*=3)%10}var a=n(4),u={FORMAT:{value:"ean_5",writeable:!1}},c=[24,20,18,17,12,6,3,10,9,5];r.prototype=Object.create(a.a.prototype,u),r.prototype.constructor=r,r.prototype.decode=function(t,e){this._row=t;var n,r=0,a=0,u=e,c=this._row.length,s=[],f=[];for(a=0;a<5&&u=this.CODE_G_START&&(r|=1<<4-a),4!=a&&(u=this._nextSet(this._row,n.end),u=this._nextUnset(this._row,u))}return 5!=s.length?null:i(s)!==o(r)?null:{code:s.join(""),decodedCodes:f,end:n.end}},e.a=r},function(t,e,n){"use strict";function r(t,e){o.a.call(this,t,e)}var o=n(4),i={FORMAT:{value:"ean_8",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decodePayload=function(t,e,n){var r,o=this;for(r=0;r<4;r++){if(!(t=o._decodeCode(t.end,o.CODE_G_START)))return null;e.push(t.code),n.push(t)}if(null===(t=o._findPattern(o.MIDDLE_PATTERN,t.end,!0,!1)))return null;for(n.push(t),r=0;r<4;r++){if(!(t=o._decodeCode(t.end,o.CODE_G_START)))return null;n.push(t),e.push(t.code)}return t},e.a=r},function(t,e,n){"use strict";function r(t){t=a()(o(),t),u.a.call(this,t),this.barSpaceRatio=[1,1],t.normalizeBarSpaceWidth&&(this.SINGLE_CODE_ERROR=.38,this.AVG_CODE_ERROR=.09)}function o(){var t={};return Object.keys(r.CONFIG_KEYS).forEach(function(e){t[e]=r.CONFIG_KEYS[e].default}),t}var i=n(28),a=n.n(i),u=n(1),c=1,s=3,f={START_PATTERN:{value:[c,c,c,c]},STOP_PATTERN:{value:[c,c,s]},CODE_PATTERN:{value:[[c,c,s,s,c],[s,c,c,c,s],[c,s,c,c,s],[s,s,c,c,c],[c,c,s,c,s],[s,c,s,c,c],[c,s,s,c,c],[c,c,c,s,s],[s,c,c,s,c],[c,s,c,s,c]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.38,writable:!0},MAX_CORRECTION_FACTOR:{value:5},FORMAT:{value:"i2of5"}};r.prototype=Object.create(u.a.prototype,f),r.prototype.constructor=r,r.prototype._matchPattern=function(t,e){if(this.config.normalizeBarSpaceWidth){var n,r=[0,0],o=[0,0],i=[0,0],a=this.MAX_CORRECTION_FACTOR,c=1/a;for(n=0;n=0&&n._matchRange(t,e.start,0))return e;r=e.end,e=null}},r.prototype._verifyTrailingWhitespace=function(t){var e,n=this;return e=t.end+(t.end-t.start)/2,e=o.CODE_G_START&&(t.code=t.code-o.CODE_G_START,i|=1<<5-r),e.push(t.code),n.push(t)}return o._determineParity(i,e)?t:null},r.prototype._determineParity=function(t,e){var n,r;for(r=0;r0&&n(f)?e>1?r(f,e-1,n,a,u):o(u,f):a||(u[u.length]=f)}return u}var o=n(90),i=n(128);t.exports=r},function(t,e,n){var r=n(117),o=r();t.exports=o},function(t,e,n){function r(t,e){e=o(e,t);for(var n=0,r=e.length;null!=t&&n1?n[o-1]:void 0,u=o>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(o--,a):void 0,u&&i(n[0],n[1],u)&&(a=o<3?void 0:a,o=1),e=Object(e);++r-1}var o=n(12);t.exports=r},function(t,e,n){function r(t,e){var n=this.__data__,r=o(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}var o=n(12);t.exports=r},function(t,e,n){function r(){this.size=0,this.__data__={hash:new o,map:new(a||i),string:new o}}var o=n(84),i=n(10),a=n(33);t.exports=r},function(t,e,n){function r(t){var e=o(this,t).delete(t);return this.size-=e?1:0,e}var o=n(14);t.exports=r},function(t,e,n){function r(t){return o(this,t).get(t)}var o=n(14);t.exports=r},function(t,e,n){function r(t){return o(this,t).has(t)}var o=n(14);t.exports=r},function(t,e,n){function r(t,e){var n=o(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}var o=n(14);t.exports=r},function(t,e,n){function r(t){var e=o(t,function(t){return n.size===i&&n.clear(),t}),n=e.cache;return e}var o=n(161),i=500;t.exports=r},function(t,e){function n(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}t.exports=n},function(t,e,n){(function(t){var r=n(38),o="object"==typeof e&&e&&!e.nodeType&&e,i=o&&"object"==typeof t&&t&&!t.nodeType&&t,a=i&&i.exports===o,u=a&&r.process,c=function(){try{return u&&u.binding&&u.binding("util")}catch(t){}}();t.exports=c}).call(e,n(29)(t))},function(t,e){function n(t){return o.call(t)}var r=Object.prototype,o=r.toString;t.exports=n},function(t,e){function n(t,e){return function(n){return t(e(n))}}t.exports=n},function(t,e){function n(t){var e=0,n=0;return function(){var a=i(),u=o-(a-n);if(n=a,u>0){if(++e>=r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var r=800,o=16,i=Date.now;t.exports=n},function(t,e,n){function r(){this.__data__=new o,this.size=0}var o=n(10);t.exports=r},function(t,e){function n(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}t.exports=n},function(t,e){function n(t){return this.__data__.get(t)}t.exports=n},function(t,e){function n(t){return this.__data__.has(t)}t.exports=n},function(t,e,n){function r(t,e){var n=this.__data__;if(n instanceof o){var r=n.__data__;if(!i||r.length{% trans "Search" %} + + {% include "search/barcode_modal.html" with id="barcode_scanner_modal" %} - {% endblock %} From 82cb170a9112193ed8040f5f0a47bae63e7ffeff Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Tue, 15 Feb 2022 02:39:16 -0800 Subject: [PATCH 003/132] Switch version of quagga to new fork quagga2 --- bookwyrm/static/js/vendor/quagga.min.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bookwyrm/static/js/vendor/quagga.min.js b/bookwyrm/static/js/vendor/quagga.min.js index f7a30f41b..84ccb74fc 100644 --- a/bookwyrm/static/js/vendor/quagga.min.js +++ b/bookwyrm/static/js/vendor/quagga.min.js @@ -1 +1,3 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(e.toString()).default:"object"==typeof exports?exports.Quagga=e(e.toString()).default:t.Quagga=e(e.toString()).default}(this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=166)}([function(t,e){function n(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}t.exports=n},function(t,e,n){"use strict";function r(t,e){return this._row=[],this.config=t||{},this.supplements=e,this}var o=n(3);r.prototype._nextUnset=function(t,e){var n;for(void 0===e&&(e=0),n=e;nn)return Number.MAX_VALUE;u+=c}return u/f},r.prototype._nextSet=function(t,e){var n;for(e=e||0,n=e;n1&&(t[n[r]]=o)},r.prototype._matchTrace=function(t,e){var n,r,o=[],i=this,a=i._nextSet(i._row),u=!i._row[a],c=0,s={error:Number.MAX_VALUE,code:-1,start:0};if(t){for(n=0;n=0;r--)e=Math.floor(Math.random()*r),n=t[r],t[r]=t[e],t[e]=n;return t},toPointList:function(t){var e,n,r=[],o=[];for(e=0;e=e&&o.push(t[r]);return o},maxIndex:function(t){var e,n=0;for(e=0;et[n]&&(n=e);return n},max:function t(e){var n,t=0;for(n=0;nt&&(t=e[n]);return t},sum:function t(e){for(var n=e.length,t=0;n--;)t+=e[n];return t}}},function(t,e,n){"use strict";function r(t,e){t=a()(o(),t),u.a.call(this,t,e)}function o(){var t={};return Object.keys(r.CONFIG_KEYS).forEach(function(e){t[e]=r.CONFIG_KEYS[e].default}),t}var i=n(28),a=n.n(i),u=n(1),c=Object.assign||function(t){for(var e=1;ea.AVG_CODE_ERROR?null:f}s++,i[s]=1,c=!c}return null},r.prototype._findPattern=function(t,e,n,r,o){var i,a,u,c,s=[],f=this,l=0,d={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(e||(e=f._nextSet(f._row)),void 0===n&&(n=!1),void 0===r&&(r=!0),void 0===o&&(o=f.AVG_CODE_ERROR),i=0;i=0&&n._matchRange(t,e.start,0))return e;r=e.end,e=null}},r.prototype._verifyTrailingWhitespace=function(t){var e,n=this;return e=t.end+(t.end-t.start),e=i.CODE_G_START?(t.code=t.code-i.CODE_G_START,a|=1<<5-r):a|=0<<5-r,e.push(t.code),n.push(t)}if(null===(o=i._calculateFirstDigit(a)))return null;if(e.unshift(o),null===(t=i._findPattern(i.MIDDLE_PATTERN,t.end,!0,!1)))return null;for(n.push(t),r=0;r<6;r++){if(!(t=i._decodeCode(t.end,i.CODE_G_START)))return null;n.push(t),e.push(t.code)}return t},r.prototype._decode=function(){var t,e,n=this,r=[],o=[],i={};if(!(t=n._findStart()))return null;if(e={code:t.code,start:t.start,end:t.end},o.push(e),!(e=n._decodePayload(e,r,o)))return null;if(!(e=n._findEnd(e.end,!1)))return null;if(o.push(e),!n._checksum(r))return null;if(this.supplements.length>0){var a=this._decodeExtensions(e.end);if(!a)return null;var u=a.decodedCodes[a.decodedCodes.length-1],s={start:u.start+((u.end-u.start)/2|0),end:u.end};if(!n._verifyTrailingWhitespace(s))return null;i={supplement:a,code:r.join("")+a.code}}return c({code:r.join(""),start:t.start,end:e.end,codeset:"",startInfo:t,decodedCodes:o},i)},r.prototype._decodeExtensions=function(t){var e,n,r=this._nextSet(this._row,t),o=this._findPattern(this.EXTENSION_START_PATTERN,r,!1,!1);if(null===o)return null;for(e=0;e=0;e-=2)n+=t[e];for(n*=3,e=t.length-1;e>=0;e-=2)n+=t[e];return n%10==0},r.CONFIG_KEYS={supplements:{type:"arrayOf(string)",default:[],description:"Allowed extensions to be decoded (2 and/or 5)"}},e.a=r},function(t,e,n){var r=n(38),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},function(t,e){function n(t){var e=new Float32Array(2);return e[0]=t[0],e[1]=t[1],e}t.exports=n},function(t,e,n){function r(t){return null==t?void 0===t?c:u:s&&s in Object(t)?i(t):a(t)}var o=n(11),i=n(119),a=n(146),u="[object Null]",c="[object Undefined]",s=o?o.toStringTag:void 0;t.exports=r},function(t,e,n){"use strict";e.a={drawRect:function(t,e,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=1,n.beginPath(),n.strokeRect(t.x,t.y,e.x,e.y)},drawPath:function(t,e,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth,n.beginPath(),n.moveTo(t[0][e.x],t[0][e.y]);for(var o=1;o-1&&t%1==0&&t0?Math.floor(this.x+.5):Math.floor(this.x-.5),this.y=this.y>0?Math.floor(this.y+.5):Math.floor(this.y-.5),this}}}function o(t,e,n){n||(n=t);for(var r=t.data,o=r.length,i=n.data;o--;)i[o]=r[o]>o]++;return a}function a(t,e){function n(t,e){var n,r=0;for(n=t;n<=e;n++)r+=a[n];return r}function r(t,e){var n,r=0;for(n=t;n<=e;n++)r+=n*a[n];return r}function o(){var o,u,c,s,f,l,d,h=[0],p=(1<c)for(i=s[u],i.score=o,i.item=t[r],c=Number.MAX_VALUE,a=0;ae[r]?r++:n++;return o}function _(t,e){function n(t){for(var e=0,n=t[Math.floor(t.length/2)];e0&&(n=Math.abs(t[e]-d)>Math.abs(t[e-1]-d)?t[e-1]:t[e]),d/nc[f-1]/c[f]?{x:n,y:n}:null}var r,o=p(e.x),i=p(e.y),a=Math.max(e.x,e.y),u=v(o,i),c=[8,10,15,20,32,60,80],s={"x-small":5,small:4,medium:3,large:2,"x-large":1},f=s[t]||s.medium,l=c[f],d=Math.floor(a/l);return r=n(u),r||(r=n(p(a)))||(r=n(p(d*l))),r}function g(t){return{value:parseFloat(t),unit:(t.indexOf("%"),t.length,"%")}}function y(t,e,n){var r={width:t,height:e},o=Object.keys(n).reduce(function(t,e){var o=n[e],i=g(o),a=C[e](i,r);return t[e]=a,t},{});return{sx:o.left,sy:o.top,sw:o.right-o.left,sh:o.bottom-o.top}}var m=n(50),x=n(3);e.b=r,e.f=u,e.g=c,e.h=s,e.c=f,e.d=l,e.i=d,e.a=h,e.e=_,e.j=y;var b={clone:n(7)},E={clone:n(83)},C={top:function(t,e){if("%"===t.unit)return Math.floor(e.height*(t.value/100))},right:function(t,e){if("%"===t.unit)return Math.floor(e.width-e.width*(t.value/100))},bottom:function(t,e){if("%"===t.unit)return Math.floor(e.height-e.height*(t.value/100))},left:function(t,e){if("%"===t.unit)return Math.floor(e.width*(t.value/100))}}},function(t,e,n){"use strict";function r(t,e,n,r){e?this.data=e:n?(this.data=new n(t.x*t.y),n===Array&&r&&a.a.init(this.data,0)):(this.data=new Uint8Array(t.x*t.y),Uint8Array===Array&&r&&a.a.init(this.data,0)),this.size=t}var o=n(53),i=n(19),a=n(3),u={clone:n(7)};r.prototype.inImageWithBorder=function(t,e){return t.x>=e&&t.y>=e&&t.x0&&(a=g[r-1],a.m00+=1,a.m01+=n,a.m10+=e,a.m11+=e*n,a.m02+=o,a.m20+=e*e);for(i=0;i=0?x:-x)+m,a.theta=(180*h/m+90)%180-90,a.theta<0&&(a.theta+=180),a.rad=h>m?h-m:h,a.vec=u.clone([Math.cos(h),Math.sin(h)]),y.push(a));return y},r.prototype.show=function(t,e){var n,r,o,i,a,u,c;for(e||(e=1),n=t.getContext("2d"),t.width=this.size.x,t.height=this.size.y,r=n.getImageData(0,0,t.width,t.height),o=r.data,i=0,c=0;c360)&&(e=360);for(var o=[0,1,1],a=[0,0,0],u=[255,255,255],c=[0,0,0],s=[],f=t.getContext("2d"),l=f.getImageData(r.x,r.y,this.size.x,this.size.y),d=l.data,h=this.data.length;h--;)o[0]=this.data[h]*e,s=o[0]<=0?u:o[0]>=360?c:n.i(i.a)(o,a),d[4*h+0]=s[0],d[4*h+1]=s[1],d[4*h+2]=s[2],d[4*h+3]=255;f.putImageData(l,r.x,r.y)},e.a=r},function(t,e,n){function r(t,e,n){"__proto__"==e&&o?o(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}var o=n(37);t.exports=r},function(t,e,n){function r(t,e){var n=i(t,e);return o(n)?n:void 0}var o=n(97),i=n(120);t.exports=r},function(t,e,n){function r(t){if("string"==typeof t||o(t))return t;var e=t+"";return"0"==e&&1/t==-i?"-0":e}var o=n(27),i=1/0;t.exports=r},function(t,e,n){function r(t){return null!=t&&i(t.length)&&!o(t)}var o=n(25),i=n(26);t.exports=r},function(t,e,n){function r(t){if(!i(t))return!1;var e=o(t);return e==u||e==c||e==a||e==s}var o=n(8),i=n(0),a="[object AsyncFunction]",u="[object Function]",c="[object GeneratorFunction]",s="[object Proxy]";t.exports=r},function(t,e){function n(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=r}var r=9007199254740991;t.exports=n},function(t,e,n){function r(t){return"symbol"==typeof t||i(t)&&o(t)==a}var o=n(8),i=n(6),a="[object Symbol]";t.exports=r},function(t,e,n){var r=n(100),o=n(116),i=o(function(t,e,n){r(t,e,n)});t.exports=i},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(t,e){function n(t,e,n,r){var o,f,l;for(o=0;o<7;o++){if(f=t.cy+c[t.dir][0],l=t.cx+c[t.dir][1],i=f*s+l,a[i]===e&&(0===u[i]||u[i]===n))return u[i]=n,t.cy=f,t.cx=l,!0;0===u[i]&&(u[i]=r),t.dir=(t.dir+1)%8}return!1}function r(t,e,n){return{dir:n,x:t,y:e,next:null,prev:null}}function o(t,e,o,i,a){var u,c,s,f=null,l={cx:e,cy:t,dir:0};if(n(l,i,o,a)){f=r(e,t,l.dir),u=f,s=l.dir,c=r(l.cx,l.cy,0),c.prev=u,u.next=c,c.next=null,u=c;do l.dir=(l.dir+6)%8,n(l,i,o,a),s!==l.dir?(u.dir=l.dir,c=r(l.cx,l.cy,0),c.prev=u,u.next=c,c.next=null,u=c):(u.dir=s,u.x=l.cx,u.y=l.cy),s=l.dir;while(l.cx!==e||l.cy!==t);f.prev=u.prev,u.prev.next=f}return f}var i,a=t.data,u=e.data,c=this.searchDirections,s=t.size.x;return{trace:function(t,e,r,o){return n(t,e,r,o)},contourTracing:function(t,e,n,r,i){return o(t,e,n,r,i)}}}};e.a=r},function(t,e,n){"use strict";function r(){o.a.call(this)}var o=n(1),i=n(3),a={ALPHABETH_STRING:{value:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,45,46,32,42,36,47,43,37]},CHARACTER_ENCODINGS:{value:[52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,148,168,162,138,42]},ASTERISK:{value:148},FORMAT:{value:"code_39",writeable:!1}};r.prototype=Object.create(o.a.prototype,a),r.prototype.constructor=r,r.prototype._decode=function(){var t,e,n,r,o=this,a=[0,0,0,0,0,0,0,0,0],u=[],c=o._findStart();if(!c)return null;r=o._nextSet(o._row,c.end);do{if(a=o._toCounters(r,a),(n=o._toPattern(a))<0)return null;if((t=o._patternToChar(n))<0)return null;u.push(t),e=r,r+=i.a.sum(a),r=o._nextSet(o._row,r)}while("*"!==t);return u.pop(),u.length&&o._verifyTrailingWhitespace(e,r,a)?{code:u.join(""),start:c.start,end:r,startInfo:c,decodedCodes:u}:null},r.prototype._verifyTrailingWhitespace=function(t,e,n){var r=i.a.sum(n);return 3*(e-t-r)>=r},r.prototype._patternToChar=function(t){var e,n=this;for(e=0;ee&&(r=t[n]);return r},r.prototype._toPattern=function(t){for(var e,n,r=t.length,o=0,i=r,a=0,u=this;i>3;){for(o=u._findNextWidth(t,o),i=0,e=0,n=0;no&&(e|=1<0;n++)if(t[n]>o&&(i--,2*t[n]>=a))return-1;return e}}return-1},r.prototype._findStart=function(){var t,e,n,r=this,o=r._nextSet(r._row),i=o,a=[0,0,0,0,0,0,0,0,0],u=0,c=!1;for(t=o;t0)for(r=0;r0){if(!(t=Y.filter(function(t){return!t.busy})[0]))return;w.attachData(t.imageData)}else w.attachData(S.data);w.grab()&&(t?(t.busy=!0,t.worker.postMessage({cmd:"process",imageData:t.imageData},[t.imageData.buffer])):_())}else _()}function y(){var t=null,e=1e3/($.frequency||60);T=!1,function n(r){t=t||r,T||(r>=t&&(t+=e,g()),window.requestAnimFrame(n))}(performance.now())}function m(){Q&&"LiveStream"===$.inputStream.type?y():g()}function x(t){var e,n={worker:void 0,imageData:new Uint8Array(R.getWidth()*R.getHeight()),busy:!0};e=C(),n.worker=new Worker(e),n.worker.onmessage=function(r){if("initialized"===r.data.event)return URL.revokeObjectURL(e),n.busy=!1,n.imageData=new Uint8Array(r.data.imageData),t(n);"processed"===r.data.event?(n.imageData=new Uint8Array(r.data.imageData),n.busy=!1,v(r.data.result,n.imageData)):r.data.event},n.worker.postMessage({cmd:"init",size:{x:R.getWidth(),y:R.getHeight()},imageData:n.imageData,config:b($)},[n.imageData.buffer])}function b(t){return X({},t,{inputStream:X({},t.inputStream,{target:null})})}function E(t){function e(t){self.postMessage({event:"processed",imageData:o.data,result:t},[o.data.buffer])}function n(){self.postMessage({event:"initialized",imageData:o.data},[o.data.buffer])}if(t){var r=t().default;if(!r)return void self.postMessage({event:"error",message:"Quagga could not be created"})}var o;self.onmessage=function(t){if("init"===t.data.cmd){var i=t.data.config;i.numOfWorkers=0,o=new r.ImageWrapper({x:t.data.size.x,y:t.data.size.y},new Uint8Array(t.data.imageData)),r.init(i,n,o),r.onProcessed(e)}else"process"===t.data.cmd?(o.data=new Uint8Array(t.data.imageData),r.start()):"setReaders"===t.data.cmd&&r.setReaders(t.data.readers)}}function C(){var e,n;return void 0!==t&&(n=t),e=new Blob(["("+E.toString()+")("+n+");"],{type:"text/javascript"}),window.URL.createObjectURL(e)}function O(t){P?P.setReaders(t):Q&&Y.length>0&&Y.forEach(function(e){e.worker.postMessage({cmd:"setReaders",readers:t})})}function A(t,e){var n=t-Y.length;if(0===n)return e&&e();if(n<0){return Y.slice(n).forEach(function(t){t.worker.terminate()}),Y=Y.slice(0,n),e&&e()}for(var r=function(n){Y.push(n),Y.length>=t&&e&&e()},o=0;oe},getPoints:function(){return a},getCenter:function(){return u}}},createPoint:function(t,e,n){return{rad:t[n],point:t,id:e}}}},function(t,e,n){"use strict";e.a=function(){function t(t){return o[t]||(o[t]={subscribers:[]}),o[t]}function e(){o={}}function n(t,e){t.async?setTimeout(function(){t.callback(e)},4):t.callback(e)}function r(e,n,r){var o;if("function"==typeof n)o={callback:n,async:r};else if(o=n,!o.callback)throw"Callback was not specified on options";t(e).subscribers.push(o)}var o={};return{subscribe:function(t,e,n){return r(t,e,n)},publish:function(e,r){var o=t(e),i=o.subscribers;i.filter(function(t){return!!t.once}).forEach(function(t){n(t,r)}),o.subscribers=i.filter(function(t){return!t.once}),o.subscribers.forEach(function(t){n(t,r)})},once:function(t,e,n){r(t,{callback:e,async:n,once:!0})},unsubscribe:function(n,r){var o;n?(o=t(n),o.subscribers=o&&r?o.subscribers.filter(function(t){return t.callback!==r}):[]):e()}}}()},function(t,e,n){"use strict";function r(){return navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.enumerateDevices?navigator.mediaDevices.enumerateDevices():Promise.reject(new Error("enumerateDevices is not defined"))}function o(t){return navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia?navigator.mediaDevices.getUserMedia(t):Promise.reject(new Error("getUserMedia is not defined"))}e.b=r,e.a=o},function(t,e,n){"use strict";function r(t,e,n){n||(n={data:null,size:e}),this.data=n.data,this.originalSize=n.size,this.I=n,this.from=t,this.size=e}r.prototype.show=function(t,e){var n,r,o,i,a,u,c;for(e||(e=1),n=t.getContext("2d"),t.width=this.size.x,t.height=this.size.y,r=n.getImageData(0,0,t.width,t.height),o=r.data,i=0,a=0;a>>16&65535,r=65535&t,o=e>>>16&65535,i=65535&e;return r*i+(n*i+r*o<<16>>>0)|0},"function"!=typeof Object.assign&&(Object.assign=function(t){"use strict";if(null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n1&&(!e.inImageWithBorder(t[0],0)||!e.inImageWithBorder(t[1],0));)r-=Math.ceil(r/2),o(-r);return t}function u(t){return[{x:(t[1][0]-t[0][0])/2+t[0][0],y:(t[1][1]-t[0][1])/2+t[0][1]},{x:(t[3][0]-t[2][0])/2+t[2][0],y:(t[3][1]-t[2][1])/2+t[2][1]}]}function c(t){var n,o=null,i=r.a.getBarcodeLine(e,t[0],t[1]);for(r.a.toBinaryLine(i),n=0;nE?l:E,g.push(l)}var o,i,a,u,c,s,f,l,d=0|e.x,h=0|e.y,p=0|n.x,v=0|n.y,_=Math.abs(v-h)>Math.abs(p-d),g=[],y=t.data,m=t.size.x,x=0,b=255,E=0;for(_&&(s=d,d=h,h=s,s=p,p=v,v=s),d>p&&(s=d,d=p,p=s,s=h,h=v,v=s),o=p-d,i=Math.abs(v-h),a=o/2|0,c=h,u=hl?o.DIR.UP:o.DIR.DOWN,d.push({pos:0,val:f[0]}),a=0;ah&&f[a+1]>.5*l?o.DIR.UP:r,r!==i&&(d.push({pos:a,val:f[a]}),r=i);for(d.push({pos:f.length,val:f[f.length-1]}),u=d[0].pos;ul?0:1;for(a=1;ad[a].val?d[a].val+(d[a+1].val-d[a].val)/3*2|0:d[a+1].val+(d[a].val-d[a+1].val)/3|0,u=d[a].pos;uh?0:1;return{line:f,threshold:h}},r.debug={printFrequency:function(t,e){var n,r=e.getContext("2d");for(e.width=t.length,e.height=256,r.beginPath(),r.strokeStyle="blue",n=0;n0?t.videoWidth>10&&t.videoHeight>10?e():window.setTimeout(r,500):n("Unable to play video stream. Is webcam working?"),o--}var o=10;r()})}function o(t,e){return n.i(d.a)(e).then(function(e){return new Promise(function(n){s=e,t.setAttribute("autoplay",!0),t.setAttribute("muted",!0),t.setAttribute("playsinline",!0),t.srcObject=e,t.addEventListener("loadedmetadata",function(){t.play(),n()})})}).then(r.bind(null,t))}function i(t){var e=l()(t,["width","height","facingMode","aspectRatio","deviceId"]);return void 0!==t.minAspectRatio&&t.minAspectRatio>0&&(e.aspectRatio=t.minAspectRatio,console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead")),void 0!==t.facing&&(e.facingMode=t.facing,console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'")),e}function a(t){var e={audio:!1,video:i(t)};return e.video.deviceId&&e.video.facingMode&&delete e.video.facingMode,Promise.resolve(e)}function u(){return n.i(d.b)().then(function(t){return t.filter(function(t){return"videoinput"===t.kind})})}function c(){if(s){var t=s.getVideoTracks();if(t&&t.length)return t[0]}}var s,f=n(162),l=n.n(f),d=n(52);e.a={request:function(t,e){return a(e).then(o.bind(null,t))},release:function(){var t=s&&s.getVideoTracks();t&&t.length&&t[0].stop(),s=null},enumerateVideoDevices:u,getActiveStreamLabel:function(){var t=c();return t?t.label:""},getActiveTrack:c}},function(t,e,n){"use strict";function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d;return/^blob\:/i.test(t)?i(t).then(o).then(function(t){return a(t,e)}):Promise.resolve(null)}function o(t){return new Promise(function(e){var n=new FileReader;n.onload=function(t){return e(t.target.result)},n.readAsArrayBuffer(t)})}function i(t){return new Promise(function(e,n){var r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="blob",r.onreadystatechange=function(){r.readyState!==XMLHttpRequest.DONE||200!==r.status&&0!==r.status||e(this.response)},r.onerror=n,r.send()})}function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d,n=new DataView(t),r=t.byteLength,o=e.reduce(function(t,e){var n=Object.keys(l).filter(function(t){return l[t]===e})[0];return n&&(t[n]=e),t},{}),i=2;if(255!==n.getUint8(0)||216!==n.getUint8(1))return!1;for(;i1?i.size:Math.floor(e/o*i.size):e,r=i.size?e/o>1?Math.floor(o/e*i.size):i.size:o,s.x=n,s.y=r}var n,r,o={},i=null,a=["canrecord","ended"],u={},c={x:0,y:0},s={x:0,y:0};return o.getRealWidth=function(){return t.videoWidth},o.getRealHeight=function(){return t.videoHeight},o.getWidth=function(){return n},o.getHeight=function(){return r},o.setWidth=function(t){n=t},o.setHeight=function(t){r=t},o.setInputStream=function(e){i=e,t.src=void 0!==e.src?e.src:""},o.ended=function(){return t.ended},o.getConfig=function(){return i},o.setAttribute=function(e,n){t.setAttribute(e,n)},o.pause=function(){t.pause()},o.play=function(){t.play()},o.setCurrentTime=function(e){"LiveStream"!==i.type&&(t.currentTime=e)},o.addEventListener=function(e,n,r){a.indexOf(e)!==-1?(u[e]||(u[e]=[]),u[e].push(n)):t.addEventListener(e,n,r)},o.clearEventHandlers=function(){a.forEach(function(e){var n=u[e];n&&n.length>0&&n.forEach(function(n){t.removeEventListener(e,n)})})},o.trigger=function(t,n){var r,i=u[t];if("canrecord"===t&&e(),i&&i.length>0)for(r=0;r1?a.size:Math.floor(u/c*a.size):u,o=a.size?u/c>1?Math.floor(c/u*a.size):a.size:c,x.x=n,x.y=o,l=!0,s=0,setTimeout(function(){e("canrecord",[])},0)},p,h,a.sequence)}function e(t,e){var n,r=y[t];if(r&&r.length>0)for(n=0;nf&&(f=o.box[r][0]),o.box[r][1]l&&(l=o.box[r][1]);for(a=[[c,s],[f,s],[f,l],[c,l]],u=p.halfSample?2:1,i=M.invert(i,i),r=0;r<4;r++)I.transformMat2(a[r],a[r],i);for(r=0;r<4;r++)I.scale(a[r],a[r],u);return a}function a(){n.i(w.f)(v,E),E.zeroBorder()}function u(){var t,e,n,r,o,i,a,u=[];for(t=0;t0&&r[x.data[n]-1]++;return r=r.map(function(t,e){return{val:t,label:e+1}}),r.sort(function(t,e){return e.val-t.val}),r.filter(function(t){return t.val>=5})}function s(t,e){var n,r,o,a,u=[],c=[];for(n=0;n=2){for(o=0;ol&&c.push(t[o]);if(c.length>=2){for(a=f(c),i=0,o=0;o1&&a.length>=c.length/4*3&&a.length>t.length/4&&(i/=a.length,u={index:e[1]*z.x+e[0],pos:{x:n,y:r},box:[I.clone([n,r]),I.clone([n+g.size.x,r]),I.clone([n+g.size.x,r+g.size.y]),I.clone([n,r+g.size.y])],moments:a,rad:i,vec:I.clone([Math.cos(i),Math.sin(i)])},s.push(u))}}return s}function h(t){function e(){var t;for(t=0;ta&&n(u):x.data[u]=Number.MAX_VALUE}var r,o,i=0,a=.95,u=0;for(T.a.init(m.data,0),T.a.init(x.data,0),T.a.init(b.data,null),r=0;r0) {length=length - 1|0;images[outImagePtr+length|0]=(images[aImagePtr+length|0]|0) - (images[bImagePtr+length|0]|0)|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=images[aImagePtr+length|0]|0|(images[bImagePtr+length|0]|0)|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;sum=(sum|0)+(images[imagePtr+length|0]|0)|0;}return sum|0;}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[imagePtr+length|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0)>(0|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[dstImagePtr+length|0]=images[srcImagePtr+length|0]|0;}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for (x=0; (x|0)<(size - 1|0); x=x+1|0) {images[imagePtr+x|0]=0;images[imagePtr+y|0]=0;y=y+size - 1|0;images[imagePtr+y|0]=0;y=y+1|0;}for (x=0; (x|0)<(size|0); x=x+1|0) {images[imagePtr+y|0]=0;y=y+1|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=erodedImagePtr+erodedImagePtr|0;skelImagePtr=tempImagePtr+erodedImagePtr|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=(sum|0) == 0|0;} while (!done);}return {skeletonize: skeletonize};} __webpack_exports__["a"]=Skeletonizer; },function(t,e,n){"use strict";function r(t){o.a.call(this,t),this.barSpaceRatio=[1,1]}var o=n(1),i=1,a=3,u={START_PATTERN:{value:[a,i,a,i,i,i]},STOP_PATTERN:{value:[a,i,i,i,a]},CODE_PATTERN:{value:[[i,i,a,a,i],[a,i,i,i,a],[i,a,i,i,a],[a,a,i,i,i],[i,i,a,i,a],[a,i,a,i,i],[i,a,a,i,i],[i,i,i,a,a],[a,i,i,a,i],[i,a,i,a,i]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.3,writable:!0},FORMAT:{value:"2of5"}},c=u.START_PATTERN.value.reduce(function(t,e){return t+e},0);r.prototype=Object.create(o.a.prototype,u),r.prototype.constructor=r,r.prototype._findPattern=function(t,e,n,r){var o,i,a,u,c=[],s=this,f=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0},d=s.AVG_CODE_ERROR;for(n=n||!1,r=r||!1,e||(e=s._nextSet(s._row)),o=0;o=0&&n._matchRange(t,e.start,0))return e;r=e.end,e=null}},r.prototype._verifyTrailingWhitespace=function(t){var e,n=this;return e=t.end+(t.end-t.start)/2,e1&&i._isStartEnd(n))break}while(ri._counters.length?i._counters.length:r,o=t.start+i._sumCounters(t.startCounter,r-8),{code:a.join(""),start:t.start,end:o,startInfo:t,decodedCodes:a}):null},r.prototype._verifyWhitespace=function(t,e){return(t-1<=0||this._counters[t-1]>=this._calculatePatternLength(t)/2)&&(e+8>=this._counters.length||this._counters[e+7]>=this._calculatePatternLength(e)/2)},r.prototype._calculatePatternLength=function(t){var e,n=0;for(e=t;e=0;i--)n=2==(1&i)?c.bar:c.space,r=1==(1&a)?n.wide:n.narrow,r.size+=u._counters[s+i],r.counts++,a>>=1;s+=8}return["space","bar"].forEach(function(t){var e=c[t];e.wide.min=Math.floor((e.narrow.size/e.narrow.counts+e.wide.size/e.wide.counts)/2),e.narrow.max=Math.ceil(e.wide.min),e.wide.max=Math.ceil((e.wide.size*u.MAX_ACCEPTABLE+u.PADDING)/e.wide.counts)}),c},r.prototype._charToPattern=function(t){var e,n=this,r=t.charCodeAt(0);for(e=0;e=0;r--){if(o=0==(1&r)?s.bar:s.space,i=1==(1&u)?o.wide:o.narrow,(a=c._counters[f+r])i.max)return!1;u>>=1}f+=8}return!0},r.prototype._patternToChar=function(t){var e,n=this;for(e=0;ei&&(i=r),rthis._counters.length)return-1;for(e=this._computeAlternatingThreshold(t,a),n=this._computeAlternatingThreshold(t+1,a),r=0;ro&&(c|=u),u>>=1;return c},r.prototype._isStartEnd=function(t){var e;for(e=0;eu.AVG_CODE_ERROR?null:(u.CODE_PATTERN[l.code]&&(l.correction.bar=o(u.CODE_PATTERN[l.code],a,this.MODULE_INDICES.bar),l.correction.space=o(u.CODE_PATTERN[l.code],a,this.MODULE_INDICES.space)),l)}f++,a[f]=1,s=!s}return null},r.prototype._correct=function(t,e){this._correctBars(t,e.bar,this.MODULE_INDICES.bar),this._correctBars(t,e.space,this.MODULE_INDICES.space)},r.prototype._findStart=function(){var t,e,n,r,i,a=[0,0,0,0,0,0],u=this,c=u._nextSet(u._row),s=!1,f=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0,correction:{bar:1,space:1}};for(t=c;t4)return-1;if(0==(1&i))for(var u=0;u="a"&&o<="d"){if(r>e-2)return null;var i=t[++r],a=i.charCodeAt(0),u=void 0;switch(o){case"a":if(!(i>="A"&&i<="Z"))return null;u=String.fromCharCode(a-64);break;case"b":if(i>="A"&&i<="E")u=String.fromCharCode(a-38);else if(i>="F"&&i<="J")u=String.fromCharCode(a-11);else if(i>="K"&&i<="O")u=String.fromCharCode(a+16);else if(i>="P"&&i<="S")u=String.fromCharCode(a+43);else{if(!(i>="T"&&i<="Z"))return null;u=String.fromCharCode(127)}break;case"c":if(i>="A"&&i<="O")u=String.fromCharCode(a-32);else{if("Z"!==i)return null;u=":"}break;case"d":if(!(i>="A"&&i<="Z"))return null;u=String.fromCharCode(a+32)}n.push(u)}else n.push(o)}return n},r.prototype._verifyChecksums=function(t){return this._matchCheckChar(t,t.length-2,20)&&this._matchCheckChar(t,t.length-1,15)},r.prototype._matchCheckChar=function(t,e,n){var r=this,o=t.slice(0,e),i=o.length,a=o.reduce(function(t,e,o){return t+((o*-1+(i-1))%n+1)*r.ALPHABET.indexOf(e.charCodeAt(0))},0);return this.ALPHABET[a%47]===t[e].charCodeAt(0)},e.a=r},function(t,e,n){"use strict";function r(){o.a.call(this)}var o=n(4),i={FORMAT:{value:"ean_2",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype.decode=function(t,e){this._row=t;var n,r=0,o=0,i=e,a=this._row.length,u=[],c=[];for(o=0;o<2&&i=this.CODE_G_START&&(r|=1<<1-o),1!=o&&(i=this._nextSet(this._row,n.end),i=this._nextUnset(this._row,i))}return 2!=u.length||parseInt(u.join(""))%4!==r?null:{code:u.join(""),decodedCodes:c,end:n.end}},e.a=r},function(t,e,n){"use strict";function r(){a.a.call(this)}function o(t){var e;for(e=0;e<10;e++)if(t===c[e])return e;return null}function i(t){var e,n=t.length,r=0;for(e=n-2;e>=0;e-=2)r+=t[e];for(r*=3,e=n-1;e>=0;e-=2)r+=t[e];return(r*=3)%10}var a=n(4),u={FORMAT:{value:"ean_5",writeable:!1}},c=[24,20,18,17,12,6,3,10,9,5];r.prototype=Object.create(a.a.prototype,u),r.prototype.constructor=r,r.prototype.decode=function(t,e){this._row=t;var n,r=0,a=0,u=e,c=this._row.length,s=[],f=[];for(a=0;a<5&&u=this.CODE_G_START&&(r|=1<<4-a),4!=a&&(u=this._nextSet(this._row,n.end),u=this._nextUnset(this._row,u))}return 5!=s.length?null:i(s)!==o(r)?null:{code:s.join(""),decodedCodes:f,end:n.end}},e.a=r},function(t,e,n){"use strict";function r(t,e){o.a.call(this,t,e)}var o=n(4),i={FORMAT:{value:"ean_8",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decodePayload=function(t,e,n){var r,o=this;for(r=0;r<4;r++){if(!(t=o._decodeCode(t.end,o.CODE_G_START)))return null;e.push(t.code),n.push(t)}if(null===(t=o._findPattern(o.MIDDLE_PATTERN,t.end,!0,!1)))return null;for(n.push(t),r=0;r<4;r++){if(!(t=o._decodeCode(t.end,o.CODE_G_START)))return null;n.push(t),e.push(t.code)}return t},e.a=r},function(t,e,n){"use strict";function r(t){t=a()(o(),t),u.a.call(this,t),this.barSpaceRatio=[1,1],t.normalizeBarSpaceWidth&&(this.SINGLE_CODE_ERROR=.38,this.AVG_CODE_ERROR=.09)}function o(){var t={};return Object.keys(r.CONFIG_KEYS).forEach(function(e){t[e]=r.CONFIG_KEYS[e].default}),t}var i=n(28),a=n.n(i),u=n(1),c=1,s=3,f={START_PATTERN:{value:[c,c,c,c]},STOP_PATTERN:{value:[c,c,s]},CODE_PATTERN:{value:[[c,c,s,s,c],[s,c,c,c,s],[c,s,c,c,s],[s,s,c,c,c],[c,c,s,c,s],[s,c,s,c,c],[c,s,s,c,c],[c,c,c,s,s],[s,c,c,s,c],[c,s,c,s,c]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.38,writable:!0},MAX_CORRECTION_FACTOR:{value:5},FORMAT:{value:"i2of5"}};r.prototype=Object.create(u.a.prototype,f),r.prototype.constructor=r,r.prototype._matchPattern=function(t,e){if(this.config.normalizeBarSpaceWidth){var n,r=[0,0],o=[0,0],i=[0,0],a=this.MAX_CORRECTION_FACTOR,c=1/a;for(n=0;n=0&&n._matchRange(t,e.start,0))return e;r=e.end,e=null}},r.prototype._verifyTrailingWhitespace=function(t){var e,n=this;return e=t.end+(t.end-t.start)/2,e=o.CODE_G_START&&(t.code=t.code-o.CODE_G_START,i|=1<<5-r),e.push(t.code),n.push(t)}return o._determineParity(i,e)?t:null},r.prototype._determineParity=function(t,e){var n,r;for(r=0;r0&&n(f)?e>1?r(f,e-1,n,a,u):o(u,f):a||(u[u.length]=f)}return u}var o=n(90),i=n(128);t.exports=r},function(t,e,n){var r=n(117),o=r();t.exports=o},function(t,e,n){function r(t,e){e=o(e,t);for(var n=0,r=e.length;null!=t&&n1?n[o-1]:void 0,u=o>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(o--,a):void 0,u&&i(n[0],n[1],u)&&(a=o<3?void 0:a,o=1),e=Object(e);++r-1}var o=n(12);t.exports=r},function(t,e,n){function r(t,e){var n=this.__data__,r=o(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}var o=n(12);t.exports=r},function(t,e,n){function r(){this.size=0,this.__data__={hash:new o,map:new(a||i),string:new o}}var o=n(84),i=n(10),a=n(33);t.exports=r},function(t,e,n){function r(t){var e=o(this,t).delete(t);return this.size-=e?1:0,e}var o=n(14);t.exports=r},function(t,e,n){function r(t){return o(this,t).get(t)}var o=n(14);t.exports=r},function(t,e,n){function r(t){return o(this,t).has(t)}var o=n(14);t.exports=r},function(t,e,n){function r(t,e){var n=o(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}var o=n(14);t.exports=r},function(t,e,n){function r(t){var e=o(t,function(t){return n.size===i&&n.clear(),t}),n=e.cache;return e}var o=n(161),i=500;t.exports=r},function(t,e){function n(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}t.exports=n},function(t,e,n){(function(t){var r=n(38),o="object"==typeof e&&e&&!e.nodeType&&e,i=o&&"object"==typeof t&&t&&!t.nodeType&&t,a=i&&i.exports===o,u=a&&r.process,c=function(){try{return u&&u.binding&&u.binding("util")}catch(t){}}();t.exports=c}).call(e,n(29)(t))},function(t,e){function n(t){return o.call(t)}var r=Object.prototype,o=r.toString;t.exports=n},function(t,e){function n(t,e){return function(n){return t(e(n))}}t.exports=n},function(t,e){function n(t){var e=0,n=0;return function(){var a=i(),u=o-(a-n);if(n=a,u>0){if(++e>=r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var r=800,o=16,i=Date.now;t.exports=n},function(t,e,n){function r(){this.__data__=new o,this.size=0}var o=n(10);t.exports=r},function(t,e){function n(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}t.exports=n},function(t,e){function n(t){return this.__data__.get(t)}t.exports=n},function(t,e){function n(t){return this.__data__.has(t)}t.exports=n},function(t,e,n){function r(t,e){var n=this.__data__;if(n instanceof o){var r=n.__data__;if(!i||r.length=0;e--){var n=Math.floor(Math.random()*e),r=t[e];t[e]=t[n],t[n]=r}return t},toPointList:function(t){var e=t.reduce((function(t,e){var n="[".concat(e.join(","),"]");return t.push(n),t}),[]);return"[".concat(e.join(",\r\n"),"]")},threshold:function(t,e,n){return t.reduce((function(r,o){return n.apply(t,[o])>=e&&r.push(o),r}),[])},maxIndex:function(t){for(var e=0,n=0;nt[e]&&(e=n);return e},max:function(t){for(var e=0,n=0;ne&&(e=t[n]);return e},sum:function(t){for(var e=t.length,n=0;e--;)n+=t[e];return n}}},function(t,e,n){"use strict";n.d(e,"h",(function(){return l})),n.d(e,"i",(function(){return d})),n.d(e,"b",(function(){return p})),n.d(e,"j",(function(){return v})),n.d(e,"e",(function(){return y})),n.d(e,"c",(function(){return g})),n.d(e,"f",(function(){return x})),n.d(e,"g",(function(){return _})),n.d(e,"a",(function(){return b})),n.d(e,"d",(function(){return O}));var r=n(7),o=n(84),i={clone:r.clone,dot:r.dot},a=function(t,e){var n=[],r={rad:0,vec:i.clone([0,0])},o={};function a(t){o[t.id]=t,n.push(t)}function u(){var t,e=0;for(t=0;te},getPoints:function(){return n},getCenter:function(){return r}}},u=function(t,e,n){return{rad:t[n],point:t,id:e}},c=n(8),s={clone:r.clone},f={clone:o.clone};function l(t,e){return{x:t,y:e,toVec2:function(){return s.clone([this.x,this.y])},toVec3:function(){return f.clone([this.x,this.y,1])},round:function(){return this.x=this.x>0?Math.floor(this.x+.5):Math.floor(this.x-.5),this.y=this.y>0?Math.floor(this.y+.5):Math.floor(this.y-.5),this}}}function h(t,e){e||(e=8);for(var n=t.data,r=n.length,o=8-e,i=new Int32Array(1<>o]++;return i}function d(t,e){var n=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,r=8-n;function o(t,n){for(var r=0,o=t;o<=n;o++)r+=e[o];return r}function i(t,n){for(var r=0,o=t;o<=n;o++)r+=o*e[o];return r}function a(){var r,a,u,s,f=[0],l=(1<c)for((i=s[u]).score=o,i.item=t[r],c=Number.MAX_VALUE,a=0;a1&&void 0!==arguments[1]?arguments[1]:[0,0,0],n=t[0],r=t[1],o=t[2],i=o*r,a=i*(1-Math.abs(n/60%2-1)),u=o-i,c=0,s=0,f=0;return n<60?(c=i,s=a):n<120?(c=a,s=i):n<180?(s=i,f=a):n<240?(s=a,f=i):n<300?(c=a,f=i):n<360&&(c=i,f=a),e[0]=255*(c+u)|0,e[1]=255*(s+u)|0,e[2]=255*(f+u)|0,e}function m(t){for(var e=[],n=[],r=1;re[r]?r++:n++;return o}(r,o),u=[8,10,15,20,32,60,80],c={"x-small":5,small:4,medium:3,large:2,"x-large":1},s=c[t]||c.medium,f=u[s],l=Math.floor(i/f);function h(t){for(var e=0,n=t[Math.floor(t.length/2)];e0&&(n=Math.abs(t[e]-l)>Math.abs(t[e-1]-l)?t[e-1]:t[e]),l/nu[s-1]/u[s]?{x:n,y:n}:null}return(n=h(a))||(n=h(m(i)))||(n=h(m(l*f))),n}var w={top:function(t,e){return"%"===t.unit?Math.floor(e.height*(t.value/100)):null},right:function(t,e){return"%"===t.unit?Math.floor(e.width-e.width*(t.value/100)):null},bottom:function(t,e){return"%"===t.unit?Math.floor(e.height-e.height*(t.value/100)):null},left:function(t,e){return"%"===t.unit?Math.floor(e.width*(t.value/100)):null}};function O(t,e,n){var r={width:t,height:e},o=Object.keys(n).reduce((function(t,e){var o=function(t){return{value:parseFloat(t),unit:(t.indexOf("%"),t.length,"%")}}(n[e]),i=w[e](o,r);return t[e]=i,t}),{});return{sx:o.left,sy:o.top,sw:o.right-o.left,sh:o.bottom-o.top}}},function(t,e,n){"use strict";var r=n(83),o=n.n(r),i=n(3),a=n.n(i),u=n(4),c=n.n(u),s=n(0),f=n.n(s),l=n(7),h=n(9),d=n(8),p={clone:l.clone};function v(t){if(t<0)throw new Error("expected positive number, received ".concat(t))}var y=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Uint8Array,o=arguments.length>3?arguments[3]:void 0;a()(this,t),f()(this,"data",void 0),f()(this,"size",void 0),f()(this,"indexMapping",void 0),n?this.data=n:(this.data=new r(e.x*e.y),o&&d.a.init(this.data,0)),this.size=e}return c()(t,[{key:"inImageWithBorder",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return v(e),t.x>=0&&t.y>=0&&t.x0&&((a=v[r-1]).m00+=1,a.m01+=n,a.m10+=e,a.m11+=e*n,a.m02+=o,a.m20+=e*e);for(i=0;i=0?x:-x)+g,a.theta=(180*f/g+90)%180-90,a.theta<0&&(a.theta+=180),a.rad=f>g?f-g:f,a.vec=p.clone([Math.cos(f),Math.sin(f)]),y.push(a));return y}},{key:"getAsRGBA",value:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=new Uint8ClampedArray(4*this.size.x*this.size.y),n=0;n1&&void 0!==arguments[1]?arguments[1]:1,n=t.getContext("2d");if(!n)throw new Error("Unable to get canvas context");var r=n.getImageData(0,0,t.width,t.height),o=this.getAsRGBA(e);t.width=this.size.x,t.height=this.size.y;var i=new ImageData(o,r.width,r.height);n.putImageData(i,0,0)}},{key:"overlay",value:function(t,e,n){var r=e<0||e>360?360:e,i=[0,1,1],a=[0,0,0],u=[255,255,255],c=[0,0,0],s=t.getContext("2d");if(!s)throw new Error("Unable to get canvas context");for(var f=s.getImageData(n.x,n.y,this.size.x,this.size.y),l=f.data,d=this.data.length;d--;){i[0]=this.data[d]*r;var p=4*d,v=i[0]<=0?u:i[0]>=360?c:Object(h.g)(i,a),y=o()(v,3);l[p]=y[0],l[p+1]=y[1],l[p+2]=y[2],l[p+3]=255}s.putImageData(f,n.x,n.y)}}]),t}();e.a=y},function(t,e,n){t.exports=n(228)},function(t,e,n){var r=n(227);function o(e,n,i){return"undefined"!=typeof Reflect&&Reflect.get?(t.exports=o=Reflect.get,t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=o=function(t,e,n){var o=r(t,e);if(o){var i=Object.getOwnPropertyDescriptor(o,e);return i.get?i.get.call(n):i.value}},t.exports.default=t.exports,t.exports.__esModule=!0),o(e,n,i||e)}t.exports=o,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){"use strict";e.a={drawRect:function(t,e,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth||1,n.beginPath(),n.strokeRect(t.x,t.y,e.x,e.y)},drawPath:function(t,e,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth,n.beginPath(),n.moveTo(t[0][e.x],t[0][e.y]);for(var o=1;oh&&(h=i.box[o][0]),i.box[o][1]d&&(d=i.box[o][1]);for(u=[[s,f],[h,f],[h,d],[s,d]],c=r.halfSample?2:1,a=y.invert(a,a),o=0;o<4;o++)v.transformMat2(u[o],u[o],a);for(o=0;o<4;o++)v.scale(u[o],u[o],c);return u}function E(t,e){l.subImageAsCopy(a,Object(x.h)(t,e)),p.skeletonize()}function M(t,e,n,r){var o,i,u,c,s=[],f=[],l=Math.ceil(h.x/3);if(t.length>=2){for(o=0;ol&&s.push(t[o]);if(s.length>=2){for(u=function(t){var e=Object(x.b)(t,.9),n=Object(x.j)(e,1,(function(t){return t.getPoints().length})),r=[],o=[];if(1===n.length){r=n[0].item.getPoints();for(var i=0;i1&&u.length>=s.length/4*3&&u.length>t.length/4&&(i/=u.length,c={index:e[1]*R.x+e[0],pos:{x:n,y:r},box:[v.clone([n,r]),v.clone([n+a.size.x,r]),v.clone([n+a.size.x,r+a.size.y]),v.clone([n,r+a.size.y])],moments:u,rad:i,vec:v.clone([Math.cos(i),Math.sin(i)])},f.push(c))}}return f}e.a={init:function(e,n){r=n,d=e,function(){o=r.halfSample?new g.a({x:d.size.x/2|0,y:d.size.y/2|0}):d,h=Object(x.a)(r.patchSize,o.size),R.x=o.size.x/h.x|0,R.y=o.size.y/h.y|0,l=new g.a(o.size,void 0,Uint8Array,!1),u=new g.a(h,void 0,Array,!0);var e=new ArrayBuffer(65536);a=new g.a(h,new Uint8Array(e,0,h.x*h.y)),i=new g.a(h,new Uint8Array(e,h.x*h.y*3,h.x*h.y),void 0,!0),p=Object(w.a)("undefined"!=typeof window?window:"undefined"!=typeof self?self:t,{size:h.x},e),f=new g.a({x:o.size.x/a.size.x|0,y:o.size.y/a.size.y|0},void 0,Array,!0),c=new g.a(f.size,void 0,void 0,!0),s=new g.a(f.size,void 0,Int32Array,!0)}(),r.useWorker||"undefined"==typeof document||(O.dom.binary=document.createElement("canvas"),O.dom.binary.className="binaryBuffer",O.ctx.binary=O.dom.binary.getContext("2d"),O.dom.binary.width=l.size.x,O.dom.binary.height=l.size.y)},locate:function(){r.halfSample&&Object(x.f)(d,o),Object(x.i)(o,l),l.zeroBorder();var t=function(){var t,e,n,r,o,c,s=[];for(t=0;t.95&&a(i):s.data[i]=Number.MAX_VALUE}for(_.a.init(c.data,0),_.a.init(s.data,0),_.a.init(f.data,null),e=0;e0&&r[s.data[n]-1]++;return(r=r.map((function(t,e){return{val:t,label:e+1}}))).sort((function(t,e){return e.val-t.val})),r.filter((function(t){return t.val>=5}))}(e);return 0===n.length?null:function(t,e){var n,r,o,i,a=[],u=[];for(n=0;n-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991}},function(t,e){function n(e,r){return t.exports=n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,n(e,r)}t.exports=n,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){var r=n(22),o=n(18);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},function(t,e,n){var r=n(42);t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},function(t,e,n){var r=n(35)(n(17),"Map");t.exports=r},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(46))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(109),o=n(116),i=n(118),a=n(119),u=n(120);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++et.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&(i=1/Math.sqrt(i),t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i);return t}},function(t,e){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},function(t,e){t.exports=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}},function(t,e){t.exports=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}},function(t,e){t.exports=function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}},function(t,e){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(n*n+r*r+o*o)}},function(t,e){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return n*n+r*r+o*o}},function(t,e){t.exports=function(t){var e=t[0],n=t[1],r=t[2];return Math.sqrt(e*e+n*n+r*r)}},function(t,e){t.exports=function(t){var e=t[0],n=t[1],r=t[2];return e*e+n*n+r*r}},function(t,e,n){var r=n(153),o=n(154),i=n(60),a=n(155);t.exports=function(t,e){return r(t)||o(t,e)||i(t,e)||a()},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){t.exports={EPSILON:n(71),create:n(72),clone:n(191),angle:n(192),fromValues:n(73),copy:n(193),set:n(194),equals:n(195),exactEquals:n(196),add:n(197),subtract:n(76),sub:n(198),multiply:n(77),mul:n(199),divide:n(78),div:n(200),min:n(201),max:n(202),floor:n(203),ceil:n(204),round:n(205),scale:n(206),scaleAndAdd:n(207),distance:n(79),dist:n(208),squaredDistance:n(80),sqrDist:n(209),length:n(81),len:n(210),squaredLength:n(82),sqrLen:n(211),negate:n(212),inverse:n(213),normalize:n(74),dot:n(75),cross:n(214),lerp:n(215),random:n(216),transformMat4:n(217),transformMat3:n(218),transformQuat:n(219),rotateX:n(220),rotateY:n(221),rotateZ:n(222),forEach:n(223)}},function(t,e,n){var r=n(229),o=n(243)((function(t,e){return null==t?{}:r(t,e)}));t.exports=o},function(t,e,n){var r=n(2),o=n(41),i=n(248),a=n(249);function u(e){var n="function"==typeof Map?new Map:void 0;return t.exports=u=function(t){if(null===t||!i(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,e)}function e(){return a(t,arguments,r(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),o(e,t)},t.exports.default=t.exports,t.exports.__esModule=!0,u(e)}t.exports=u,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){"use strict";var r=n(21),o={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(t,e){var n=t.data,i=e.data,a=t.size.x,u=t.size.y,c=r.a.create(t,e);return{rasterize:function(t){var e,r,s,f,l,h,d,p,v,y,g,x,_=[],m=0;for(x=0;x<400;x++)_[x]=0;for(_[0]=n[0],v=null,h=1;h0){a=a-1|0;r[n+a|0]=(r[t+a|0]|0)-(r[e+a|0]|0)|0}}function c(t,e,n){t|=0;e|=0;n|=0;var a=0;a=i(o,o)|0;while((a|0)>0){a=a-1|0;r[n+a|0]=r[t+a|0]|0|(r[e+a|0]|0)|0}}function s(t){t|=0;var e=0;var n=0;n=i(o,o)|0;while((n|0)>0){n=n-1|0;e=(e|0)+(r[t+n|0]|0)|0}return e|0}function f(t,e){t|=0;e|=0;var n=0;n=i(o,o)|0;while((n|0)>0){n=n-1|0;r[t+n|0]=e}}function l(t,e){t|=0;e|=0;var n=0;var i=0;var a=0;var u=0;var c=0;var s=0;var f=0;var l=0;for(n=1;(n|0)<(o-1|0);n=n+1|0){l=l+o|0;for(i=1;(i|0)<(o-1|0);i=i+1|0){u=l-o|0;c=l+o|0;s=i-1|0;f=i+1|0;a=(r[t+u+s|0]|0)+(r[t+u+f|0]|0)+(r[t+l+i|0]|0)+(r[t+c+s|0]|0)+(r[t+c+f|0]|0)|0;if((a|0)>(0|0)){r[e+l+i|0]=1}else{r[e+l+i|0]=0}}}}function h(t,e){t|=0;e|=0;var n=0;n=i(o,o)|0;while((n|0)>0){n=n-1|0;r[e+n|0]=r[t+n|0]|0}}function d(t){t|=0;var e=0;var n=0;for(e=0;(e|0)<(o-1|0);e=e+1|0){r[t+e|0]=0;r[t+n|0]=0;n=n+o-1|0;r[t+n|0]=0;n=n+1|0}for(e=0;(e|0)<(o|0);e=e+1|0){r[t+n|0]=0;n=n+1|0}}function p(){var t=0;var e=0;var n=0;var r=0;var p=0;var v=0;e=i(o,o)|0;n=e+e|0;r=n+e|0;f(r,0);d(t);do{a(t,e);l(e,n);u(t,n,n);c(r,n,r);h(e,t);p=s(t)|0;v=(p|0)==0|0}while(!v)}return{skeletonize:p}}},function(t,e,n){t.exports=n(263)},function(t,e,n){var r=n(91),o=n(48),i=n(121),a=n(123),u=n(13),c=n(56),s=n(54);t.exports=function t(e,n,f,l,h){e!==n&&i(n,(function(i,c){if(h||(h=new r),u(i))a(e,n,c,f,t,l,h);else{var d=l?l(s(e,c),i,c+"",e,n,h):void 0;void 0===d&&(d=i),o(e,c,d)}}),c)}},function(t,e,n){var r=n(24),o=n(97),i=n(98),a=n(99),u=n(100),c=n(101);function s(t){var e=this.__data__=new r(t);this.size=e.size}s.prototype.clear=o,s.prototype.delete=i,s.prototype.get=a,s.prototype.has=u,s.prototype.set=c,t.exports=s},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,n){var r=n(25),o=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():o.call(e,n,1),--this.size,!0)}},function(t,e,n){var r=n(25);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},function(t,e,n){var r=n(25);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,e,n){var r=n(25);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(24);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(24),o=n(44),i=n(47);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(36),o=n(105),i=n(13),a=n(107),u=/^\[object .+?Constructor\]$/,c=Function.prototype,s=Object.prototype,f=c.toString,l=s.hasOwnProperty,h=RegExp("^"+f.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?h:u).test(a(t))}},function(t,e,n){var r=n(27),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),n=t[u];try{t[u]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[u]=n:delete t[u]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r,o=n(106),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(17)["__core-js_shared__"];t.exports=r},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(110),o=n(24),i=n(44);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(111),o=n(112),i=n(113),a=n(114),u=n(115);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e1?n[i-1]:void 0,u=i>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(i--,a):void 0,u&&o(n[0],n[1],u)&&(a=i<3?void 0:a,i=1),e=Object(e);++r0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(26),o=n(39),i=n(31),a=n(13);t.exports=function(t,e,n){if(!a(n))return!1;var u=typeof e;return!!("number"==u?o(n)&&i(e,n.length):"string"==u&&e in n)&&r(n[e],t)}},function(t,e){"undefined"!=typeof window&&(window.requestAnimationFrame||(window.requestAnimationFrame=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)})),"function"!=typeof Math.imul&&(Math.imul=function(t,e){var n=65535&t,r=65535&e;return n*r+((t>>>16&65535)*r+n*(e>>>16&65535)<<16>>>0)|0}),"function"!=typeof Object.assign&&(Object.assign=function(t){"use strict";if(null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n0&&(o=1/Math.sqrt(o),t[0]=e[0]*o,t[1]=e[1]*o);return t}},function(t,e){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]}},function(t,e){t.exports=function(t,e,n){var r=e[0]*n[1]-e[1]*n[0];return t[0]=t[1]=0,t[2]=r,t}},function(t,e){t.exports=function(t,e,n,r){var o=e[0],i=e[1];return t[0]=o+r*(n[0]-o),t[1]=i+r*(n[1]-i),t}},function(t,e){t.exports=function(t,e){e=e||1;var n=2*Math.random()*Math.PI;return t[0]=Math.cos(n)*e,t[1]=Math.sin(n)*e,t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[2]*o,t[1]=n[1]*r+n[3]*o,t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[2]*o+n[4],t[1]=n[1]*r+n[3]*o+n[5],t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[3]*o+n[6],t[1]=n[1]*r+n[4]*o+n[7],t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[4]*o+n[12],t[1]=n[1]*r+n[5]*o+n[13],t}},function(t,e,n){t.exports=function(t,e,n,o,i,a){var u,c;e||(e=2);n||(n=0);c=o?Math.min(o*e+n,t.length):t.length;for(u=n;un*n){var o=Math.sqrt(r);t[0]=e[0]/o*n,t[1]=e[1]/o*n}else t[0]=e[0],t[1]=e[1];return t}},function(t,e){t.exports=function(t){var e=new Float32Array(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},function(t,e,n){t.exports=function(t,e){var n=r(t[0],t[1],t[2]),a=r(e[0],e[1],e[2]);o(n,n),o(a,a);var u=i(n,a);return u>1?0:Math.acos(u)};var r=n(73),o=n(74),i=n(75)},function(t,e){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},function(t,e){t.exports=function(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}},function(t,e,n){t.exports=function(t,e){var n=t[0],o=t[1],i=t[2],a=e[0],u=e[1],c=e[2];return Math.abs(n-a)<=r*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(o-u)<=r*Math.max(1,Math.abs(o),Math.abs(u))&&Math.abs(i-c)<=r*Math.max(1,Math.abs(i),Math.abs(c))};var r=n(71)},function(t,e){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},function(t,e){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}},function(t,e,n){t.exports=n(76)},function(t,e,n){t.exports=n(77)},function(t,e,n){t.exports=n(78)},function(t,e){t.exports=function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t}},function(t,e){t.exports=function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t}},function(t,e){t.exports=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}},function(t,e){t.exports=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}},function(t,e){t.exports=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}},function(t,e){t.exports=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}},function(t,e){t.exports=function(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t}},function(t,e,n){t.exports=n(79)},function(t,e,n){t.exports=n(80)},function(t,e,n){t.exports=n(81)},function(t,e,n){t.exports=n(82)},function(t,e){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}},function(t,e){t.exports=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1],i=e[2],a=n[0],u=n[1],c=n[2];return t[0]=o*c-i*u,t[1]=i*a-r*c,t[2]=r*u-o*a,t}},function(t,e){t.exports=function(t,e,n,r){var o=e[0],i=e[1],a=e[2];return t[0]=o+r*(n[0]-o),t[1]=i+r*(n[1]-i),t[2]=a+r*(n[2]-a),t}},function(t,e){t.exports=function(t,e){e=e||1;var n=2*Math.random()*Math.PI,r=2*Math.random()-1,o=Math.sqrt(1-r*r)*e;return t[0]=Math.cos(n)*o,t[1]=Math.sin(n)*o,t[2]=r*e,t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1],i=e[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,t[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,t[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,t[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1],i=e[2];return t[0]=r*n[0]+o*n[3]+i*n[6],t[1]=r*n[1]+o*n[4]+i*n[7],t[2]=r*n[2]+o*n[5]+i*n[8],t}},function(t,e){t.exports=function(t,e,n){var r=e[0],o=e[1],i=e[2],a=n[0],u=n[1],c=n[2],s=n[3],f=s*r+u*i-c*o,l=s*o+c*r-a*i,h=s*i+a*o-u*r,d=-a*r-u*o-c*i;return t[0]=f*s+d*-a+l*-c-h*-u,t[1]=l*s+d*-u+h*-a-f*-c,t[2]=h*s+d*-c+f*-u-l*-a,t}},function(t,e){t.exports=function(t,e,n,r){var o=n[1],i=n[2],a=e[1]-o,u=e[2]-i,c=Math.sin(r),s=Math.cos(r);return t[0]=e[0],t[1]=o+a*s-u*c,t[2]=i+a*c+u*s,t}},function(t,e){t.exports=function(t,e,n,r){var o=n[0],i=n[2],a=e[0]-o,u=e[2]-i,c=Math.sin(r),s=Math.cos(r);return t[0]=o+u*c+a*s,t[1]=e[1],t[2]=i+u*s-a*c,t}},function(t,e){t.exports=function(t,e,n,r){var o=n[0],i=n[1],a=e[0]-o,u=e[1]-i,c=Math.sin(r),s=Math.cos(r);return t[0]=o+a*s-u*c,t[1]=i+a*c+u*s,t[2]=e[2],t}},function(t,e,n){t.exports=function(t,e,n,o,i,a){var u,c;e||(e=3);n||(n=0);c=o?Math.min(o*e+n,t.length):t.length;for(u=n;u=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),b(n),s}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;b(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:O(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){var r=n(230),o=n(240);t.exports=function(t,e){return r(t,e,(function(e,n){return o(t,n)}))}},function(t,e,n){var r=n(231),o=n(239),i=n(32);t.exports=function(t,e,n){for(var a=-1,u=e.length,c={};++a0&&i(f)?n>1?t(f,n-1,i,a,u):r(u,f):a||(u[u.length]=f)}return u}},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,o=t.length;++nMath.abs(f-c),d=[],p=t.data,v=t.size.x,y=255,g=0;function x(t,e){u=p[e*v+t],y=ug?u:g,d.push(u)}h&&(i=c,c=s,s=i,i=f,f=l,l=i),c>f&&(i=c,c=f,f=i,i=s,s=l,l=i);var _=f-c,m=Math.abs(l-s);r=_/2|0,o=s;var b=sl?f.UP:f.DOWN,h.push({pos:0,val:s[0]}),i=0;id&&s[i+1]>.5*l?f.UP:r)&&(h.push({pos:i,val:s[i]}),r=o);for(h.push({pos:s.length,val:s[s.length-1]}),a=h[0].pos;al?0:1;for(i=1;ih[i].val?h[i].val+(h[i+1].val-h[i].val)/3*2|0:h[i+1].val+(h[i].val-h[i+1].val)/3|0,a=h[i].pos;ad?0:1;return{line:s,threshold:d}},s.debug={printFrequency:function(t,e){var n,r=e.getContext("2d");for(e.width=t.length,e.height=256,r.beginPath(),r.strokeStyle="blue",n=0;n1&&void 0!==arguments[1]?arguments[1]:0,n=e;nn)return Number.MAX_VALUE;o+=i}return o/u}},{key:"_nextSet",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=e;n1&&(t[n[r]]=o)}},{key:"decodePattern",value:function(t){this._row=t;var e=this.decode();return null===e?(this._row.reverse(),(e=this.decode())&&(e.direction=l.Reverse,e.start=this._row.length-e.start,e.end=this._row.length-e.end)):e.direction=l.Forward,e&&(e.format=this.FORMAT),e}},{key:"_matchRange",value:function(t,e,n){var r;for(r=t=t<0?0:t;r0&&void 0!==arguments[0]?arguments[0]:this._nextUnset(this._row),e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._row.length,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=[],o=0;r[o]=0;for(var i=t;ithis.AVG_CODE_ERROR?null:(this.CODE_PATTERN[n.code]&&(n.correction.bar=this.calculateCorrection(this.CODE_PATTERN[n.code],r,this.MODULE_INDICES.bar),n.correction.space=this.calculateCorrection(this.CODE_PATTERN[n.code],r,this.MODULE_INDICES.space)),n)}r[++a]=1,i=!i}return null}},{key:"_correct",value:function(t,e){this._correctBars(t,e.bar,this.MODULE_INDICES.bar),this._correctBars(t,e.space,this.MODULE_INDICES.space)}},{key:"_findStart",value:function(){for(var t=[0,0,0,0,0,0],e=this._nextSet(this._row),n={error:Number.MAX_VALUE,code:-1,start:0,end:0,correction:{bar:1,space:1}},r=!1,o=0,i=e;i.48?null:o}n[++a]=1,i=!i}return null}},{key:"_findStart",value:function(){for(var t=this._nextSet(this._row),e=null;!e;){if(!(e=this._findPattern(I,t,!1,!0)))return null;var n=e.start-(e.end-e.start);if(n>=0&&this._matchRange(n,e.start,0))return e;t=e.end,e=null}return null}},{key:"_calculateFirstDigit",value:function(t){for(var e=0;e=10?(r.code-=10,o|=1<<5-i):o|=0<<5-i,e.push(r.code),n.push(r)}var a=this._calculateFirstDigit(o);if(null===a)return null;e.unshift(a);var u=this._findPattern(z,r.end,!0,!1);if(null===u||!u.end)return null;n.push(u);for(var c=0;c<6;c++){if(!(u=this._decodeCode(u.end,10)))return null;n.push(u),e.push(u.code)}return u}},{key:"_verifyTrailingWhitespace",value:function(t){var e=t.end+(t.end-t.start);return e=0;n-=2)e+=t[n];e*=3;for(var r=t.length-1;r>=0;r-=2)e+=t[r];return e%10==0}},{key:"_decodeExtensions",value:function(t){var e=this._nextSet(this._row,t),n=this._findPattern(U,e,!1,!1);if(null===n)return null;for(var r=0;r0){var u=this._decodeExtensions(a.end);if(!u)return null;if(!u.decodedCodes)return null;var c=u.decodedCodes[u.decodedCodes.length-1],s={start:c.start+((c.end-c.start)/2|0),end:c.end};if(!this._verifyTrailingWhitespace(s))return null;o={supplement:u,code:n.join("")+u.code}}return T(T({code:n.join(""),start:i.start,end:a.end,startInfo:i,decodedCodes:r},o),{},{format:this.FORMAT})}}]),n}(A),W=n(33),F=n.n(W);function V(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=C()(t);if(e){var o=C()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O()(this,n)}}var q=new Uint16Array(F()("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%").map((function(t){return t.charCodeAt(0)}))),G=new Uint16Array([52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,148,168,162,138,42]),H=function(t){b()(n,t);var e=V(n);function n(){var t;v()(this,n);for(var r=arguments.length,o=new Array(r),i=0;i3;){n=this._findNextWidth(t,n),r=0;for(var i=0,a=0;an&&(i|=1<0;u++)if(t[u]>n&&(r--,2*t[u]>=o))return-1;return i}}return-1}},{key:"_findNextWidth",value:function(t,e){for(var n=Number.MAX_VALUE,r=0;re&&(n=t[r]);return n}},{key:"_patternToChar",value:function(t){for(var e=0;e=r}},{key:"decode",value:function(t,e){var n=new Uint16Array([0,0,0,0,0,0,0,0,0]),r=[];if(!(e=this._findStart()))return null;var o,i,a=this._nextSet(this._row,e.end);do{n=this._toCounters(a,n);var u=this._toPattern(n);if(u<0)return null;if(null===(o=this._patternToChar(u)))return null;r.push(o),i=a,a+=S.a.sum(n),a=this._nextSet(this._row,a)}while("*"!==o);return r.pop(),r.length&&this._verifyTrailingWhitespace(i,a,n)?{code:r.join(""),start:e.start,end:a,startInfo:e,decodedCodes:r,format:this.FORMAT}:null}}]),n}(A),X=n(12),Q=n.n(X);function Y(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=C()(t);if(e){var o=C()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O()(this,n)}}var $=/[IOQ]/g,Z=/[A-Z0-9]{17}/,K=function(t){b()(n,t);var e=Y(n);function n(){var t;v()(this,n);for(var r=arguments.length,o=new Array(r),i=0;ir&&(r=o),othis._counters.length)return-1;for(var n=this._computeAlternatingThreshold(t,e),r=this._computeAlternatingThreshold(t+1,e),o=64,i=0,a=0,u=0;u<7;u++)i=0==(1&u)?n:r,this._counters[t+u]>i&&(a|=o),o>>=1;return a}},{key:"_isStartEnd",value:function(t){for(var e=0;e=this._calculatePatternLength(t)/2)&&(e+8>=this._counters.length||this._counters[e+7]>=this._calculatePatternLength(e)/2)}},{key:"_charToPattern",value:function(t){for(var e=t.charCodeAt(0),n=0;n=0;a--){var u=2==(1&a)?r.bar:r.space,c=1==(1&n)?u.wide:u.narrow;c.size+=this._counters[o+a],c.counts++,n>>=1}o+=8}return["space","bar"].forEach((function(t){var e=r[t];e.wide.min=Math.floor((e.narrow.size/e.narrow.counts+e.wide.size/e.wide.counts)/2),e.narrow.max=Math.ceil(e.wide.min),e.wide.max=Math.ceil((2*e.wide.size+1.5)/e.wide.counts)})),r}},{key:"_validateResult",value:function(t,e){for(var n,r=this._thresholdResultPattern(t,e),o=e,i=0;i=0;a--){var u=0==(1&a)?r.bar:r.space,c=1==(1&n)?u.wide:u.narrow,s=this._counters[o+a];if(sc.max)return!1;n>>=1}o+=8}return!0}},{key:"decode",value:function(t,e){if(this._counters=this._fillCounters(),!(e=this._findStart()))return null;var n,r=e.startCounter,o=[];do{if((n=this._toPattern(r))<0)return null;var i=this._patternToChar(n);if(null===i)return null;if(o.push(i),r+=8,o.length>1&&this._isStartEnd(n))break}while(rthis._counters.length?this._counters.length:r;var a=e.start+this._sumCounters(e.startCounter,r-8);return{code:o.join(""),start:e.start,end:a,startInfo:e,decodedCodes:o,format:this.FORMAT}}}]),n}(A);function ot(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=C()(t);if(e){var o=C()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O()(this,n)}}var it=function(t){b()(n,t);var e=ot(n);function n(){var t;v()(this,n);for(var r=arguments.length,o=new Array(r),i=0;i=10&&(n|=1<<1-c),1!==c&&(r=this._nextSet(this._row,u.end),r=this._nextUnset(this._row,r))}if(2!==i.length||parseInt(i.join(""))%4!==n)return null;var s=this._findStart();return{code:i.join(""),decodedCodes:a,end:u.end,format:this.FORMAT,startInfo:s,start:s.start}}}]),n}(B);function ft(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=C()(t);if(e){var o=C()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O()(this,n)}}var lt=[24,20,18,17,12,6,3,10,9,5];var ht=function(t){b()(n,t);var e=ft(n);function n(){var t;v()(this,n);for(var r=arguments.length,o=new Array(r),i=0;i=10&&(n|=1<<4-c),4!==c&&(r=this._nextSet(this._row,i.end),r=this._nextUnset(this._row,r))}if(5!==a.length)return null;if(function(t){for(var e=t.length,n=0,r=e-2;r>=0;r-=2)n+=t[r];n*=3;for(var o=e-1;o>=0;o-=2)n+=t[o];return(n*=3)%10}(a)!==function(t){for(var e=0;e<10;e++)if(t===lt[e])return e;return null}(n))return null;var s=this._findStart();return{code:a.join(""),decodedCodes:u,end:i.end,format:this.FORMAT,startInfo:s,start:s.start}}}]),n}(B);function dt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function pt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=C()(t);if(e){var o=C()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O()(this,n)}}var vt=function(t){b()(n,t);var e=pt(n);function n(){var t;v()(this,n);for(var r=arguments.length,o=new Array(r),i=0;i=10&&(r.code=r.code-10,o|=1<<5-i),e.push(r.code),n.push(r)}return this._determineParity(o,e)?r:null}},{key:"_determineParity",value:function(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=new Array(t.length).fill(0),i=0,a={error:Number.MAX_VALUE,start:0,end:0},u=this.AVG_CODE_ERROR;n=n||!1,r=r||!1,e||(e=this._nextSet(this._row));for(var c=e;c=0&&this._matchRange(t,n.start,0))return n;e=n.end,n=null}return null}},{key:"_verifyTrailingWhitespace",value:function(t){var e=t.end+(t.end-t.start)/2;return e2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=[],i=0,a={error:Number.MAX_VALUE,code:-1,start:0,end:0},u=0,c=0,s=this.AVG_CODE_ERROR;e||(e=this._nextSet(this._row));for(var f=0;f=0&&this._matchRange(r,t.start,0))return t;e=t.end,t=null}return t}},{key:"_verifyTrailingWhitespace",value:function(t){var e=t.end+(t.end-t.start)/2;return e4)return-1;if(0==(1&o))for(var a=0;a="a"&&o<="d"){if(r>e-2)return null;var i=t[++r],a=i.charCodeAt(0),u=void 0;switch(o){case"a":if(!(i>="A"&&i<="Z"))return null;u=String.fromCharCode(a-64);break;case"b":if(i>="A"&&i<="E")u=String.fromCharCode(a-38);else if(i>="F"&&i<="J")u=String.fromCharCode(a-11);else if(i>="K"&&i<="O")u=String.fromCharCode(a+16);else if(i>="P"&&i<="S")u=String.fromCharCode(a+43);else{if(!(i>="T"&&i<="Z"))return null;u=String.fromCharCode(127)}break;case"c":if(i>="A"&&i<="O")u=String.fromCharCode(a-32);else{if("Z"!==i)return null;u=":"}break;case"d":if(!(i>="A"&&i<="Z"))return null;u=String.fromCharCode(a+32);break;default:return console.warn("* code_93_reader _decodeExtended hit default case, this may be an error",u),null}n.push(u)}else n.push(o)}return n}},{key:"_matchCheckChar",value:function(t,e,n){var r=t.slice(0,e),o=r.length,i=r.reduce((function(t,e,r){return t+((-1*r+(o-1))%n+1)*Ct.indexOf(e.charCodeAt(0))}),0);return Ct[i%47]===t[e].charCodeAt(0)}},{key:"_verifyChecksums",value:function(t){return this._matchCheckChar(t,t.length-2,20)&&this._matchCheckChar(t,t.length-1,15)}},{key:"decode",value:function(t,e){if(!(e=this._findStart()))return null;var n,r,o=new Uint16Array([0,0,0,0,0,0]),i=[],a=this._nextSet(this._row,e.end);do{o=this._toCounters(a,o);var u=this._toPattern(o);if(u<0)return null;if(null===(r=this._patternToChar(u)))return null;i.push(r),n=a,a+=S.a.sum(o),a=this._nextSet(this._row,a)}while("*"!==r);return i.pop(),i.length&&this._verifyEnd(n,a)&&this._verifyChecksums(i)?(i=i.slice(0,i.length-2),null===(i=this._decodeExtended(i))?null:{code:i.join(""),start:e.start,end:a,startInfo:e,decodedCodes:i,format:this.FORMAT}):null}}]),n}(A);function St(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=C()(t);if(e){var o=C()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O()(this,n)}}var At=/[AEIO]/g,kt=function(t){b()(n,t);var e=St(n);function n(){var t;v()(this,n);for(var r=arguments.length,o=new Array(r),i=0;i1&&(!e.inImageWithBorder(t[0])||!e.inImageWithBorder(t[1]));)o(-(r-=Math.ceil(r/2)));return t}(r,u,Math.floor(.1*i)))?null:(null===(o=a(r))&&(o=function(t,e,n){var r,o,i,u=Math.sqrt(Math.pow(t[1][0]-t[0][0],2)+Math.pow(t[1][1]-t[0][1],2)),c=null,s=Math.sin(n),f=Math.cos(n);for(r=1;r<16&&null===c;r++)i={y:(o=u/16*r*(r%2==0?-1:1))*s,x:o*f},e[0].y+=i.x,e[0].x-=i.y,e[1].y+=i.x,e[1].x-=i.y,c=a(e);return c}(t,r,u)),null===o?null:{codeResult:o.codeResult,line:r,angle:u,pattern:o.barcodeLine.line,threshold:o.barcodeLine.threshold})}return o(),{decodeFromBoundingBox:function(t){return u(t)},decodeFromBoundingBoxes:function(e){var n,r,o=[],i=t.multiple;for(n=0;n2&&void 0!==arguments[2]&&arguments[2];r(t,{callback:e,async:n,once:!0})},unsubscribe:function(n,r){if(n){var o=e(n);o.subscribers=o&&r?o.subscribers.filter((function(t){return t.callback!==r})):[]}else t={}}}}(),jt=n(20),It=n.n(jt),zt=n(11),Ut=n.n(zt),Lt=n(85),Nt=n.n(Lt),Bt=n(86);function Wt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=C()(t);if(e){var o=C()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return O()(this,n)}}var Ft,Vt=function(t){b()(n,t);var e=Wt(n);function n(t,r){var o;return v()(this,n),o=e.call(this,t),M()(_()(o),"code",void 0),o.code=r,Object.setPrototypeOf(_()(o),n.prototype),o}return n}(n.n(Bt)()(Error)),qt="This may mean that the user has declined camera access, or the browser does not support media APIs. If you are running in iOS, you must use Safari.";function Gt(){try{return navigator.mediaDevices.enumerateDevices()}catch(e){var t=new Vt("enumerateDevices is not defined. ".concat(qt),-1);return Promise.reject(t)}}function Ht(t){try{return navigator.mediaDevices.getUserMedia(t)}catch(t){var e=new Vt("getUserMedia is not defined. ".concat(qt),-1);return Promise.reject(e)}}function Xt(t){return new Promise((function(e,n){var r=10;!function o(){r>0?t.videoWidth>10&&t.videoHeight>10?e():window.setTimeout(o,500):n(new Vt("Unable to play video stream. Is webcam working?",-1)),r--}()}))}function Qt(t,e){return Yt.apply(this,arguments)}function Yt(){return(Yt=It()(Ut.a.mark((function t(e,n){var r;return Ut.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Ht(n);case 2:if(r=t.sent,Ft=r,!e){t.next=11;break}return e.setAttribute("autoplay","true"),e.setAttribute("muted","true"),e.setAttribute("playsinline","true"),e.srcObject=r,e.addEventListener("loadedmetadata",(function(){e.play()})),t.abrupt("return",Xt(e));case 11:return t.abrupt("return",Promise.resolve());case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function $t(t){var e=Nt()(t,["width","height","facingMode","aspectRatio","deviceId"]);return void 0!==t.minAspectRatio&&t.minAspectRatio>0&&(e.aspectRatio=t.minAspectRatio,console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead")),void 0!==t.facing&&(e.facingMode=t.facing,console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'")),e}function Zt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=$t(t);return e&&e.deviceId&&e.facingMode&&delete e.facingMode,Promise.resolve({audio:!1,video:e})}function Kt(){return(Kt=It()(Ut.a.mark((function t(){var e;return Ut.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Gt();case 2:return e=t.sent,t.abrupt("return",e.filter((function(t){return"videoinput"===t.kind})));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Jt(){if(!Ft)return null;var t=Ft.getVideoTracks();return t&&null!=t&&t.length?t[0]:null}var te={requestedVideoElement:null,request:function(t,e){return It()(Ut.a.mark((function n(){var r;return Ut.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return te.requestedVideoElement=t,n.next=3,Zt(e);case 3:return r=n.sent,n.abrupt("return",Qt(t,r));case 5:case"end":return n.stop()}}),n)})))()},release:function(){var t=Ft&&Ft.getVideoTracks();return null!==te.requestedVideoElement&&te.requestedVideoElement.pause(),new Promise((function(e){setTimeout((function(){t&&t.length&&t[0].stop(),Ft=null,te.requestedVideoElement=null,e()}),0)}))},enumerateVideoDevices:function(){return Kt.apply(this,arguments)},getActiveStreamLabel:function(){var t=Jt();return t?t.label:""},getActiveTrack:Jt},ee=te;var ne={create:function(t){var e,n=document.createElement("canvas"),r=n.getContext("2d"),o=[],i=null!==(e=t.capacity)&&void 0!==e?e:20,a=!0===t.capture;function u(e){return!!i&&e&&!function(t,e){return e&&e.some((function(e){return Object.keys(e).every((function(n){return e[n]===t[n]}))}))}(e,t.blacklist)&&function(t,e){return"function"!=typeof e||e(t)}(e,t.filter)}return{addResult:function(t,e,c){var s={};u(c)&&(i--,s.codeResult=c,a&&(n.width=e.x,n.height=e.y,d.a.drawImage(t,e,r),s.frame=n.toDataURL()),o.push(s))},getResults:function(){return o}}}},re={inputStream:{name:"Live",type:"LiveStream",constraints:{width:640,height:480,facingMode:"environment"},area:{top:"0%",right:"0%",left:"0%",bottom:"0%"},singleChannel:!1},locate:!0,numOfWorkers:4,decoder:{readers:["code_128_reader"]},locator:{halfSample:!0,patchSize:"medium"}},oe=n(7),ie=function t(){v()(this,t),M()(this,"config",void 0),M()(this,"inputStream",void 0),M()(this,"framegrabber",void 0),M()(this,"inputImageWrapper",void 0),M()(this,"stopped",!1),M()(this,"boxSize",void 0),M()(this,"resultCollector",void 0),M()(this,"decoder",void 0),M()(this,"workerPool",[]),M()(this,"onUIThread",!0),M()(this,"canvasContainer",new ue)},ae=function t(){v()(this,t),M()(this,"image",void 0),M()(this,"overlay",void 0)},ue=function t(){v()(this,t),M()(this,"ctx",void 0),M()(this,"dom",void 0),this.ctx=new ae,this.dom=new ae},ce=n(23);function se(t){if("undefined"==typeof document)return null;if(t instanceof HTMLElement&&t.nodeName&&1===t.nodeType)return t;var e="string"==typeof t?t:"#interactive.viewport";return document.querySelector(e)}function fe(t,e){var n=function(t,e){var n=document.querySelector(t);return n||((n=document.createElement("canvas")).className=e),n}(t,e),r=n.getContext("2d");return{canvas:n,context:r}}function le(t){var e,n,r,o,i=se(null==t||null===(e=t.config)||void 0===e||null===(n=e.inputStream)||void 0===n?void 0:n.target),a=null==t||null===(r=t.config)||void 0===r||null===(o=r.inputStream)||void 0===o?void 0:o.type;if(!a)return null;var u=function(t){if("undefined"!=typeof document){var e=fe("canvas.imgBuffer","imgBuffer"),n=fe("canvas.drawingBuffer","drawingBuffer");return e.canvas.width=n.canvas.width=t.x,e.canvas.height=n.canvas.height=t.y,{dom:{image:e.canvas,overlay:n.canvas},ctx:{image:e.context,overlay:n.context}}}return null}(t.inputStream.getCanvasSize());if(!u)return{dom:{image:null,overlay:null},ctx:{image:null,overlay:null}};var c=u.dom;return"undefined"!=typeof document&&i&&("ImageStream"!==a||i.contains(c.image)||i.appendChild(c.image),i.contains(c.overlay)||i.appendChild(c.overlay)),u}var he={274:"orientation"},de=Object.keys(he).map((function(t){return he[t]}));function pe(t){return new Promise((function(e){var n=new FileReader;n.onload=function(t){return e(t.target.result)},n.readAsArrayBuffer(t)}))}function ve(t){return new Promise((function(e,n){var r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="blob",r.onreadystatechange=function(){r.readyState!==XMLHttpRequest.DONE||200!==r.status&&0!==r.status||e(this.response)},r.onerror=n,r.send()}))}function ye(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:de,n=new DataView(t),r=t.byteLength,o=e.reduce((function(t,e){var n=Object.keys(he).filter((function(t){return he[t]===e}))[0];return n&&(t[n]=e),t}),{}),i=2;if(255!==n.getUint8(0)||216!==n.getUint8(1))return!1;for(;i1&&void 0!==arguments[1]?arguments[1]:de;return/^blob:/i.test(t)?ve(t).then(pe).then((function(t){return ye(t,e)})):Promise.resolve(null)}(t,["orientation"]).then((function(t){s[0].tags=t,e(s)})).catch((function(t){console.log(t),e(s)})):e(s))},i=0;i0&&n.forEach((function(n){t.removeEventListener(e,n)}))}))},trigger:function(o,a){var s,f,l,h,d,p=i[o];if("canrecord"===o&&(h=t.videoWidth,d=t.videoHeight,e=null!==(f=r)&&void 0!==f&&f.size?h/d>1?r.size:Math.floor(h/d*r.size):h,n=null!==(l=r)&&void 0!==l&&l.size?h/d>1?Math.floor(d/h*r.size):r.size:d,u.x=e,u.y=n),p&&p.length>0)for(s=0;s0)for(n=0;n1?n.size:Math.floor(r/o*n.size):r,e=null!==(f=n)&&void 0!==f&&f.size?r/o>1?Math.floor(o/r*n.size):n.size:o,v.x=t,v.y=e,u=!0,i=0,setTimeout((function(){y("canrecord",[])}),0)}),1,s,null===(l=n)||void 0===l?void 0:l.sequence)},ended:function(){return l},setAttribute:function(){},getConfig:function(){return n},pause:function(){a=!0},play:function(){a=!1},setCurrentTime:function(t){i=t},addEventListener:function(t,e){-1!==h.indexOf(t)&&(d[t]||(d[t]=[]),d[t].push(e))},clearEventHandlers:function(){Object.keys(d).forEach((function(t){return delete d[t]}))},setTopRight:function(t){p.x=t.x,p.y=t.y},getTopRight:function(){return p},setCanvasSize:function(t){v.x=t.x,v.y=t.y},getCanvasSize:function(){return v},getFrame:function(){var t,e;if(!u)return null;a||(t=null===(e=c)||void 0===e?void 0:e[i],i=t&&r&&r()};if(e)for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:"LiveStream",e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;switch(t){case"VideoStream":var r=document.createElement("video");return{video:r,inputStream:n.createVideoStream(r)};case"ImageStream":return{inputStream:n.createImageStream()};case"LiveStream":var o=null;return e&&((o=e.querySelector("video"))||(o=document.createElement("video"),e.appendChild(o))),{video:o,inputStream:n.createLiveStream(o)};default:return console.error("* setupInputStream invalid type ".concat(t)),{video:null,inputStream:null}}}(n,this.getViewPort(),Oe),i=o.video,a=o.inputStream;"LiveStream"===n&&i&&ee.request(i,r).then((function(){return a.trigger("canrecord")})).catch((function(e){return t(e)})),a.setAttribute("preload","auto"),a.setInputStream(this.context.config.inputStream),a.addEventListener("canrecord",this.canRecord.bind(void 0,t)),this.context.inputStream=a}}},{key:"getBoundingBoxes",value:function(){var t;return null!==(t=this.context.config)&&void 0!==t&&t.locate?ce.a.locate():[[Object(oe.clone)(this.context.boxSize[0]),Object(oe.clone)(this.context.boxSize[1]),Object(oe.clone)(this.context.boxSize[2]),Object(oe.clone)(this.context.boxSize[3])]]}},{key:"transformResult",value:function(t){var e=this,n=this.context.inputStream.getTopRight(),r=n.x,o=n.y;if((0!==r||0!==o)&&(t.barcodes&&t.barcodes.forEach((function(t){return e.transformResult(t)})),t.line&&2===t.line.length&&function(t,e,n){t[0].x+=e,t[0].y+=n,t[1].x+=e,t[1].y+=n}(t.line,r,o),t.box&&Ie(t.box,r,o),t.boxes&&t.boxes.length>0))for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1?arguments[1]:void 0,n=t;t&&this.context.onUIThread&&(this.transformResult(t),this.addResult(t,e),n=t.barcodes||t),Tt.publish("processed",n),this.hasCodeResult(t)&&Tt.publish("detected",n)}},{key:"locateAndDecode",value:function(){var t=this.getBoundingBoxes();if(t){var e,n=this.context.decoder.decodeFromBoundingBoxes(t)||{};n.boxes=t,this.publishResult(n,null===(e=this.context.inputImageWrapper)||void 0===e?void 0:e.data)}else{var r,o=this.context.decoder.decodeFromImage(this.context.inputImageWrapper);if(o)this.publishResult(o,null===(r=this.context.inputImageWrapper)||void 0===r?void 0:r.data);else this.publishResult()}}},{key:"startContinuousUpdate",value:function(){var t,e=this,n=null,r=1e3/((null===(t=this.context.config)||void 0===t?void 0:t.frequency)||60);this.context.stopped=!1;var o=this.context;!function t(i){n=n||i,o.stopped||(i>=n&&(n+=r,e.update()),window.requestAnimationFrame(t))}(performance.now())}},{key:"start",value:function(){var t,e;this.context.onUIThread&&"LiveStream"===(null===(t=this.context.config)||void 0===t||null===(e=t.inputStream)||void 0===e?void 0:e.type)?this.startContinuousUpdate():this.update()}},{key:"stop",value:(e=It()(Ut.a.mark((function t(){var e;return Ut.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.context.stopped=!0,je(0),null===(e=this.context.config)||void 0===e||!e.inputStream||"LiveStream"!==this.context.config.inputStream.type){t.next=6;break}return t.next=5,ee.release();case 5:this.context.inputStream.clearEventHandlers();case 6:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"setReaders",value:function(t){this.context.decoder&&this.context.decoder.setReaders(t),function(t){ke.forEach((function(e){return e.worker.postMessage({cmd:"setReaders",readers:t})}))}(t)}},{key:"registerReader",value:function(t,e){Dt.registerReader(t,e),this.context.decoder&&this.context.decoder.registerReader(t,e),function(t,e){ke.forEach((function(n){return n.worker.postMessage({cmd:"registerReader",name:t,reader:e})}))}(t,e)}}]),t}(),Ue=new ze,Le=Ue.context,Ne={init:function(t,e,n){var r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Ue;return e||(r=new Promise((function(t,n){e=function(e){e?n(e):t()}}))),o.context.config=u()({},re,t),o.context.config.numOfWorkers>0&&(o.context.config.numOfWorkers=0),n?(o.context.onUIThread=!1,o.initializeData(n),e&&e()):o.initInputStream(e),r},start:function(){return Ue.start()},stop:function(){return Ue.stop()},pause:function(){Le.stopped=!0},onDetected:function(t){t&&("function"==typeof t||"object"===i()(t)&&t.callback)?Tt.subscribe("detected",t):console.trace("* warning: Quagga.onDetected called with invalid callback, ignoring")},offDetected:function(t){Tt.unsubscribe("detected",t)},onProcessed:function(t){t&&("function"==typeof t||"object"===i()(t)&&t.callback)?Tt.subscribe("processed",t):console.trace("* warning: Quagga.onProcessed called with invalid callback, ignoring")},offProcessed:function(t){Tt.unsubscribe("processed",t)},setReaders:function(t){t?Ue.setReaders(t):console.trace("* warning: Quagga.setReaders called with no readers, ignoring")},registerReader:function(t,e){t?e?Ue.registerReader(t,e):console.trace("* warning: Quagga.registerReader called with no reader, ignoring"):console.trace("* warning: Quagga.registerReader called with no name, ignoring")},registerResultCollector:function(t){t&&"function"==typeof t.addResult&&(Le.resultCollector=t)},get canvas(){return Le.canvasContainer},decodeSingle:function(t,e){var n=this,r=new ze;return(t=u()({inputStream:{type:"ImageStream",sequence:!1,size:800,src:t.src},numOfWorkers:1,locator:{halfSample:!1}},t)).numOfWorkers>0&&(t.numOfWorkers=0),t.numOfWorkers>0&&("undefined"==typeof Blob||"undefined"==typeof Worker)&&(console.warn("* no Worker and/or Blob support - forcing numOfWorkers to 0"),t.numOfWorkers=0),new Promise((function(o,i){try{n.init(t,(function(){Tt.once("processed",(function(t){r.stop(),e&&e.call(null,t),o(t)}),!0),r.start()}),null,r)}catch(t){i(t)}}))},get default(){return Ne},Readers:r,CameraAccess:ee,ImageDebug:d.a,ImageWrapper:c.a,ResultCollector:ne};e.default=Ne}]).default})); \ No newline at end of file From 8ca2b55e7ef17c8ca9bf152e701cebebba53961a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 25 Feb 2022 12:04:21 -0800 Subject: [PATCH 004/132] Sort author books by rating --- bookwyrm/views/author.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bookwyrm/views/author.py b/bookwyrm/views/author.py index b4eb7ef56..a2f5d03ba 100644 --- a/bookwyrm/views/author.py +++ b/bookwyrm/views/author.py @@ -1,7 +1,7 @@ """ the good people stuff! the authors! """ from django.contrib.auth.decorators import login_required, permission_required from django.core.paginator import Paginator -from django.db.models import Q +from django.db.models import Avg, Q from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator @@ -28,7 +28,8 @@ class Author(View): books = ( models.Work.objects.filter(Q(authors=author) | Q(editions__authors=author)) - .order_by("-published_date") + .annotate(Avg("editions__review__rating")) + .order_by("editions__review__rating__avg") .distinct() ) From ee8c1659abb394ab0b0ee1da741a4f412985fdc9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 25 Feb 2022 12:13:20 -0800 Subject: [PATCH 005/132] Updates locales --- locale/de_DE/LC_MESSAGES/django.mo | Bin 84130 -> 30883 bytes locale/de_DE/LC_MESSAGES/django.po | 375 +++++++++++++++------- locale/en_US/LC_MESSAGES/django.po | 136 +++++--- locale/es_ES/LC_MESSAGES/django.mo | Bin 83977 -> 83977 bytes locale/es_ES/LC_MESSAGES/django.po | 375 +++++++++++++++------- locale/fr_FR/LC_MESSAGES/django.mo | Bin 85996 -> 44850 bytes locale/fr_FR/LC_MESSAGES/django.po | 393 +++++++++++++++-------- locale/gl_ES/LC_MESSAGES/django.mo | Bin 82074 -> 86630 bytes locale/gl_ES/LC_MESSAGES/django.po | 411 ++++++++++++++++-------- locale/it_IT/LC_MESSAGES/django.mo | Bin 83701 -> 87959 bytes locale/it_IT/LC_MESSAGES/django.po | 375 +++++++++++++++------- locale/lt_LT/LC_MESSAGES/django.mo | Bin 85112 -> 85112 bytes locale/lt_LT/LC_MESSAGES/django.po | 375 +++++++++++++++------- locale/no_NO/LC_MESSAGES/django.mo | Bin 80093 -> 80093 bytes locale/no_NO/LC_MESSAGES/django.po | 375 +++++++++++++++------- locale/pt_BR/LC_MESSAGES/django.mo | Bin 83047 -> 87238 bytes locale/pt_BR/LC_MESSAGES/django.po | 375 +++++++++++++++------- locale/pt_PT/LC_MESSAGES/django.mo | Bin 72802 -> 72802 bytes locale/pt_PT/LC_MESSAGES/django.po | 375 +++++++++++++++------- locale/sv_SE/LC_MESSAGES/django.mo | Bin 82953 -> 87594 bytes locale/sv_SE/LC_MESSAGES/django.po | 393 +++++++++++++++-------- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 77673 -> 44096 bytes locale/zh_Hans/LC_MESSAGES/django.po | 463 +++++++++++++++++---------- locale/zh_Hant/LC_MESSAGES/django.mo | Bin 36376 -> 38839 bytes locale/zh_Hant/LC_MESSAGES/django.po | 375 +++++++++++++++------- 25 files changed, 3274 insertions(+), 1522 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index 08b0badf299ab5c5b0cb5a80147f667f3e3b2837..4ce83f72b3f3850c58528f13afcd23442a75a515 100644 GIT binary patch delta 16034 zcmZ29k#+G$#`=3gEK?a67#OBAGBC(6Ffd%*NGLHdXfZG_NGdTf zh%zuRxF|6&NHZ`nL@6;a7%(s}lqoSV@G~$lELUP+5NBXu*sjFDAj`nOa9)XlA%uZ} z;jIz_gBk+^gOf5uJX4v0L5YEZpo?(?T#Nac^3=AMUA1O01m@qIf{85G& zXsE)#pvu6&;Hd(!IA4W zVnLb~#0O`#-+K@DKOPhfqm4Sibn|3|Kq8J@W2xRI&e4MYtz+l0^z)-IPiTfQo5CK?)SdIuH*C>q7L&LupMYZLABi&sGAU`R27 zIK0^iVsSTA{d6M+26F}mhBZdupl5hu#K2GwDhNIrL9zw2F(jzup|plEB>x&3Lo9SL zhG>k0(rLz^AY@=DHimeh(HIhfZBTtPj3FLaZ47bPE@K7;T?Ph*n^1M^CJgo9qE*ra zqEXodVv(r{#6eyr5RGXjkf3Zef%vT71Y+@Y6NrPBLd7>h)$KBYc;tu)149-A1H)Mp z1_nI_1_ldLNJyreLL8iHS`R50icA?8j6s!(DWuZaZwfJh!3+|#oMsRQ2$(@EmNJ86 zPYp9jVs$oyL`}3A#3T7oej`->R5M7ToMQ&Dc$*o-;k)b2AU-}}2C?w286?P_nL!fM zS2IZM$7&Aoxi*wGHixLUHiuZ~Vh(X&m^sA33FZt8Dhvz^>E@7->@kO!x569}0z07Q z)bBHgSa{4F;Zf~j>!UIke~%bouUQAXL=S8^&S=w2ZUKbEQ+;Y zU{GdYU`V!rWV?0?h(qUEfZGN249hJbQE<)zl3JfzKpgZLN;6qPd@g7Sk(acDSfFaj zz@P)F4J{!KkA#ZHSwcc2)e;h=<(81#wAvC9Mcbg}oC52sXJEKy39;}t)S_3G3=Fvp z3=E$vAwisA1)(#oAPy`15+Y}TB;+Q*iG!3)%Ifzn59A=ysA4wA_2?I7hzh#jP@nQq5W&)~$sz|aC! zaNG_OS9k0niRZZ;#7A%KAaVS~4&t+)b`YO2+e2s`C@pFa(JyBYak!>E#AD|6kPvo( zs!O+rc&Na>9>S=%hXhTZJtXlgv4En*mhZGemkr^7jO9NZG#78&ZVs^o9iKRj7JHA4uio z=L1O_xjvBmKg9=RFayIbA4tJ=#)pBynt_4gsShNo6@3{P^g&VN%fKKBs{adp85n9n zm5(n2LpcKj1BV|2LoEXXLxUeAvHbI6V2A}pfj=b3cl$#e$Q{7IV9&t7AQQj<%K8j3 z0SpWp3=9l210ZSRPyi&Pt_48S#{B?Dl)Qqs0THRxdI_BRt|(jfoUKlv3LYR zQgs|uJSPwm67_))2h0wHMz0vQ-=K|T(IBwpnph{eW13=CUAX)Oq% z{%a6JJ-FHYF9;G>lEIK5Qw)Y!Y!wWN0*_!w{!a*o_$)OTQlL}@LwYoQP`-Q!M4w3r z#5|`ENP*=Q0x35VLm&>%4uK@nnvi-(&~%1CTsQ?Pu>i_n8v?OtX9y%j&V@ii=n2%o z?;#KeF@{2XDhj1lLm?KMLis*WIwllSE$4(n95k^$6k_pgsKD}2NYHEyg#`7kP)HD8 z3x)XXX(%LwK8He5J5Ly-WK#=cU?>6glEWbC_Ju(#I1>hm+G}A943-QG3@^eU9##s6 z*i)|?4)K9mI3!5C!XZHv9uBFuGr}Q0?g@uDWPUirr|Y2V_Ce*(L-~)wAr^iPhlCt! z1jIb42uS~5JA#413gplTuzB?iEfElflOrH5TM+?q`DUp2UWh`5OA(MX@DQr*Sp+28 zeT;xOP$ClIbL~io11%#V+1fJ_Qf{O{<#Qt;KCg}hIkcXEp(PTMSf)in44M}S36YJF z5C%D2UJdq96`g69tL# z%~1>t!l3-WKME4`m!lv-^&kq8*girHWRHe8NHQ8?pl&q8!4}aFhdDs$h-gSi7DPiV zXod18LiI0$itmbsRNKd*85rt8&Ek*IkbJ8U0|^1g7)TI?#6S#8iD6(!19h)sAQnG} zfduu77>EPD#X#x=zF0^|#K%HBlo|_hcu_3GLv67T^XJ4uLSlU^Lp`|PzAYAF(P^jw z4`Ly4^eh%qbiRl3wc{WmU=jy0&^`{*1`LgZL`hQ|BzMe=gT(!&IEcCD;~-J@Bo2~m z-a*xK#MeW7A|DS4GTnHH&n@F2F7%9tXb6ah7@QRkv8Xv7(uSKA4=KwJLFGR|&EZaf zgp7CsM4x^FB(ZuVKpdQ(08af3bLtZy4p^N437VY=kf1x0014`w2@sb*On~_ObpiuJ zDQM&(0n$#$NrdEzxrvaVUz7+*Y%3BO7~B~c7>+?{z9fi+VM!2kQpBtcU3l_W@k^ehQtAyYD>wqs9*M3rtbB*e^;Awh1N46!IE8Df4E zlrBhyG|Sr{>gySHK^P1NlOa)X0&2jOWJpN7go=MlhBPLbQXnOsVG1N@LsB3P$W4Jn zU0Djm18pe~2h4-YFH3>=czp^aBzC5Na$7wE!-*6~6x@W;&r=||;cE)SL1L*8jY_Ey z19eg%Ww=Qy#HW!^`Mgv}+*YJQ>iMOqkSINx3USblR7l$SkO~PY_A~|taZvu}ON018 zEe+C))=z_27@G!()ATfm#@sXp218J5ISt~|ZBX%JX&|34Fx-Wj^DYhIq3>xBi&)bk zZ9<-Oh==OaA@ben3=H+40mYf=5SOk=hZwXUs^CI8B*^cjL!yE=1Cl1BG9YoPmjOvL zE*X$0iO+yEt(r1GL#qr7>oOogeIo;6;d7|EuNjauC6Nj3|7&GJ3^vJxBr1=;RlTe}2NE0RJG(n95gEz5~3S(AyHeuD;E+JFLNOl z|I1}y*vP=Zz?lb03%m0m7M{t2G(KKPc`LlyifVPJ@2U|EVAu)L z0Gf7zngiw5Gt@IOFgQYaqDYdUNu*dPzm0)`;Tlv;3nL_jgGRS5fqc%$z#sut2Z}y+ zMo0w%QVyCIs$gJXxD6T=Wq{P2Y*4kJ1`TNbiQzbCHj9ygp$8Pi43Gv#6KDd70n)ih zVPs%XhH3)!+du}}GBPl@FhX(yXfg^E?;vpyp2@(#@P&ba;T~x6iGhJ(83O~uW02WU zGeBx!I2Gi3Aw~uUUq%Lo7zPH0l?)6F(x4~+jRi133a9xD3=Ba~&7khnECxt<9t{<1 zWn^G@!@$7M#>l`hk&%IcgOPzD2`X2}$iVOvY8xoKf|z$1AXzyF7XQ;37#PkmFfhz! zU|_fa8ZHH?g5qRGNcP+X<%6g!Mh1p<5Ce)qvt->23=CF`3=Gati=k3rN`Mhknu0hy zj0_BaL7@zaMn(ou`UeR!FgyZH7DAX{G8{}YFxWFf@-c{;$jHF3hk=2Ci;;mL0yO7` zWEp6X5u_%7k%55~Dt?`Tf#Dqkq^TCl$iTn?3L(%u5J(|ti~wZ6H&ii5EQx`E;SgxH z6Dp?1$iVP{0n#2YWrU1$R6ym9F)%Rf2Wf)h^-#Ks5mIh|xaEut482hGGK>ri!Ju5l zz`&r($iPqlnsWsCA2f|Rjgf(&m4Sg_0Vr-6A(aqlniXUS2!p0xBN-VOHZwqqm z!euc7q)h-)Qw$=Y*cmkA$-uzi0JR)6!?G7Nxyi`Dkk81#@DQr5eiZ{`1Pe4J3K9bq zoglglG*t?k{RD9s7#I?u27v}9%o!ONwt)&0s2pgD4m44z2&yrmVxT_W6et@+fo4!a zv!X_f3=ATS3=HCo;PIwj7~-dhIptvXnIeUv7Uip z0#slj0|Ubh2FR!vNbw{FND~?~Y5a$Qfgz2NfkBv&fgv5L9yGh13@Y6~iWwLfRxmIy zm_X$$p>!Z414B0>1H&Xn$b=(kxCW#gG+hgttgZsZKS-d5k%8e317v=ti4j~bF&qF@ zt5AdHF)%RnGB7Y4W?*1A!oa}rn}LDhKLe!k0n!h`CqU{!3@8Q-ID(jSKq1P=z|h42 z8R~n&z`)=IN~9orTp1Y{?lV9d8UBn63?86hXJlZ|VT3f9N}vt^8T6h3Qgi(PaTpjF z3K$s})KpG~$plr~5GiWdiG=c2}^5;IN1Za?OGL)SO zn#~3!5Jm=uPoQXEgmf@L(yELM43m)@rO(K~pw7qu9!CbrgGSImbSYHLPf!klvO(hC z85kI@f*4?2&%m&S0W#hXTD<@kLn2-?FfgnJO)@YrFsy@$7c(+2NHH=n)G{(KFhUK! z2$ci175SlTc}50?O$-bS#*7RMpd}W3jF1KlNE$TTUdG74a2gcS7409PE4GSojVG2|qh@Z#+Y4w2E zInbpYpz)#0AOS`O27X2chG`(XPJvph3=9k(86fSxsZc|9gE|_ZbsCJ2Ha)mi%gDgs z1~LGO)1fqoy2Zf25Dtn4P|?iDz|aATrph3f$(N6dO!g1sn7lRIa57tj#^iNTJ0{PI z7N0yR+H~@>X!XexV$4K6GD{SSQgiYXQxr<_6-oqrm1# zaUG1Cy;DUPC$CS_oXnjr!&Q=5mRVBC;Fyv!`9-??WQ7b-rJ~ft6a|pxVvulZiWP{; zEXmBzOUzNo%uCC+nw*s>FOZj)Uz(Sknwy$eQq16(S2;O1J9lzr&f>{7xsonUiOJav zAOhr+qSS)?qLN|;r_7>~46w;o3{E-u$=RtX3ZccRMa2wG`T5ykLcud7HLoNyEi<*K zc(Qf=vdQ1_g(mYA*eK+rCKf3arzRF9XD~SDgwN`N{Dmii|0fIZI_(a#BlDCufxAP5xb4#Zi=5 z0P>yHUd`0`VW75wr`6kIC`GK*3tZ!A}kR&XpW$;dBa za81c9Q2;v~%yQ39%$aOhp)t9tLVfbuiqOdtl`?i{jWlqO$AeRWX0bwM zNosDfoW^#rCL=L1S6YOn02A{;d^wPxiR4WFb#NrYK$K;aCved~TO}<7Y8JWcj znR&$}iFwJXHu{NndJI0PiDjt@i3&xDApbG=WM-#=35DX4#FEnD$=h4xCqHSCmPyVp zOD$4JE6UGRC@spdV(`gNPRwEO$xm0v%$qFMt}UCdP@J2XlVio;o0yrWke67NnVtwr zk_x%0d8Lzk+dU`qc4(@Bq$?Cki&Kjkd{avjQxZ!O8GQ4>X(qo&0h$qtCwF&BPd?l! zDg;Uv1&PJQ<@rS^Rt$cr6(y5>yEG^FcE#}J<(H%ugQBu5GbJ@;vVM<(AjHY3#R`zz znwm0sYmXg&iGo{xXsVKB37CeI@Kr(;?%qpg-mdAo~$`ZdUEL`lgS$=sY~R5L!>w(v!IwEC^a{~45X_dr*iU~ z$r3!O8l}alMUX@{`PY;_@%$XHd`VFyB*qznQp++^%O}5{Dm^`0j8RxNII%31AsAAi zKq!T@{33-!1yC-Symq<`b7D@;WbPRnB1M_0#R_?)xk;%-Rt&+ZAgG_E{ z48f@-pvW&~2+l~&DN9Y6ynUwjWR+R+lQU*%PTn?4XR_+-oXPuUi-EE-qtaxlIl7a} z<|s`*H7Ae{lIBuV7=laF(^Dts&y||Icy6m=d1gs+1}GH4DK0eyT=X)8I0kzwxH)?I zxVlVEou@b1ZGrye8w-w4?pUNX*!fxJO%gs{1i}4 zP(1m-O7Y2zt3)T8tWsx7%}LJBO`W`G)nsXKNdvVdJTp79AT=d3Q6VQYFWYLe&6=>u zyVh6%KXwIu#rKNjn*bjp1)R=FDNxJrC1>`8JscoCd;oYp1g6L=H$8S zr6=E7-!ZvwL-u6(jT6{m<@c|RuLVHv0T(2oT$x!?xp~qS8%B19w8XOfqRhz?wyI3# z+^x=r#MR%WhT!U_rGbmp)D#AYvr|(*?qbLRW%NXlk*N$|$J!JZB<6wYsYKm^{G1$H zrQ(vJ)WlqURgIFwr1{wJcR*VyenjuFcg84V`|Fe(tX`Zu(Zn%P?VpQnp~pmnW7t(T2!2w zpJ%0Dpl6_GIN9u=u8^Uwfw8WEk%FPQm7%4sfrWv=dAYCsQxK zDBX?=UW_TEq{h3rPCjw4&5l7;102?=MViG5ZuvRssd*`>T18le89?$S3P?I8UpTHX zx$~s?~=~mPc14b%}dwBCz+b3$)MqwT~eBu zlUbaZT9m4g7Ik<}kwR)_o&qEnC~7ijgyk0%Cuig&rl;m9q$TF$6f2};rYZ!bre_wH z6lJCsmFA@@rDzswZg#k+z{mn} z*YvXvj4G44FKICQu7qbON&xc zK~-f+=H%ZuLe+c|GjkGCK(%bDLV9X(azu$Qb z2S5t=lJZPY;~^upsJJ9GC#N(oy*MW`F9&LJRjERCYHng?PA$kdP_&mYxMZdlrxqzV zrRJ5ERHaVtyd|x9cn-*DRgL1zlGJ!mY-xfTc6q58xv6;!j@jU*;^8GF3?7r^?^v)p zgDSPj-FFlwOWzfnJnJrxsue?2Y4PDDB~>|@$r-5%o}i{8gJVukszOp~c4A&$Not;g z-{d*>@B;-Z$fP`w|4NfH7@SIzGti9!wH?bVi*hILe7baUCz7P{}Ov%m6Q^?NGD@n{Q0ZTEsPELDe>*@+gDyg7+fk>MSKAFWOsR}Sj zP>r0Pn4u8$`FdMnKVE#iwOFMOoQ;gVVe?i5UpeWxw%1WNox zshLTodFfUR?y1Ek`9(>od6Rd)^K}hNElSNy&dAFwW^hc(NzDL-v|l2~^yG{Zg|gJ5 z^3*dDNQR;$jbz&Nh~d%eDA%u38-*VNX!H0a75HAfNNfG zc!S~&i5r!fnlpLM2gk`fKL}1%`KYc6YW`>DgA#37ex8DYss^YH5nqy7l9Q@g4DKdm z=I2dr_-K`(;0Vdq46eGMOs?PxYEVKlY-%3Nb%~{5FC~_yrRIU!p(&suDm5bqToiyy zECx4Ju3u_q9)sKAZ7HDENl^&{xZ}X6GDigqEerjF{gJ)hwVor%dN-8ME@F$Gj^rWRGDmV$CzRB4d{I6*N4gF-whu_!w=vqT|f^1E*watt1s zIccd3zWJGXIt;M9Sz4Tw19D8>3luGY^#b%NXDl2&h;GxA-$tizaXWr8N2ZFUiS_zcqarTr=|^ zzDUhua0T~VQj1EEdo)R)bXQW0lnFBP>=`^kB~D^7I5R0g)5GMSzoqMa6Dt&aON&cV zi*gh5@^ln@6N@qvp(1HTiKPr7pvn&3?NLZd&4dbNrIu8cfcZ|Kx~HTl6;yz#!n#3G zrMZxZO-Y3YvO;k|Q6{KF)lmS|Ihmm9Dh$%afmflfnRz8ehnJ+M>L{du(zXILG}BTu zazG_XX}XR=Vrg+zY5CzL89AwWdJMq@MTyB7sSHu2Iba8YLvr$sKj9K7pejVc6Wk@L zg7k=j5=&C^Cg1$4G$}h6Y1l2*= zkODQaD0Lbeqr`M;HbyBiztqyyVg*=!uwn>L%`8bRn*N53(Q3L2JEID>lBz~wX=+iW zX0g)ra&|^lb0h(U^whM{Jdl^YK`jE%z(QtKYMw%3UV3VJY7!{8K@tizz_FA@QYb^qLm73a$8a-BYJ=Jou!c%zUP@{%sQv{NS3a3} z*$UY?naSD3CE$`KW%>a_Mw#iSxEZZ@KnXTIGYM3} zcmP!C^e$e;H0>l%H#9X5+@l30r_{3iqN>vLl2nDL)XWlaXBO5Hm~P0=C=NFYQ_@?H73wUKv(;PHT6rY)*S!|_%+yj`NE5fM20?M1y zXNxcvF)B{y6=jsr^Etc?3G! z7l3N`)S^5FaPw!njX0x(V{mdtVyTV-s4bkC2P(usjdDbbRRJ^(Qks`pQmK%aTB?v) zTmorUCYBaMi?r#U5{yP7;EsG=9ym=yyY*Jn?@BOQGZsykl4Mj81vj+Sixs>QGl~>4 za}^v*(^K`PPn2YouJ_C<2K5vYb3g$IYHyb?M1hKEP#-!K+Q%qn2v5z+OiwLBv@Cp6 zGmv=T1~{TmkeR1YmR|&^(m}EI~wM>hw-&MxE(5r5P3daxzoX6hIw> z)HFQ>*E~?`sx$}EuvTOU&MzveR8#<4R0OS_QGb!qjB@578K41R21i(S z3C$}>Eh@<@NzJiha4ky9&q-GV2Y<0bc1~iEq5`z#neL~+sLttDBHl^NZ6LB+pS5w!I?-Aa{Fary&QMr)=btLZXoj7m%;nbRHA7(vy3 zjzSW+Z&kt&0tycZX~p1`$N(Frfi!18xeVMHX9&$pPX&+Glz=ihtovGG#o&~hUX+?w z1uEabMwaHKqttugDmfF>&tZV}=VFTrit^JkbHJq?sOhT!8YhHTTMEUQc`2Z7Z*g)4 zIDQa`6e%IY3R8$s7^qbTX>d=!sLLolT}h8oOwlt>!M`9i&nGjfD6yzgAu+Ew6;#Lu zgX)u{#3D%YVN{yVug|E%nVFLVsZytR>N6(R!wP9==b}UplvF_(3#kiUo>`QlP@E5H zlYmVIH@h+pFDWTWRVdC(RY(JsCz<(qkUB3sHCG`oKRH7Il=4#Z>>1z#Q{Zta2A5K3 zJpk$+PERmo)Dyu{JnK#0XUOO&o03@s>9|7%uE4`pE}-@eC}B!`Q7I@tfEzt}(}Rr}1LcZSOF$JqI5rM1$xBHs%F_cmD+4qLl|B8T1*7ov z&&G_>(;t~Is!TU9Wt3%9nC@rF7~_!&>IdiKr>BEj2`;4yU>&L8JO=IvfvQdgaAO(V zs)sbrz>ROzf@Qk68DsqPrDlv$f}mz1s0{%xg{I#yW31DJx}L!WBnN4~=Yct}p0WZs zRx)#^9}s2~nQXO*cltkbMnzdrnV+YSnp=>T4{17r41npG?q|Vh38@yQSTL$ie`dkR z&jCwe(>GW%>P)|F#kdkNk}`drHKQvZB)x#@$dXhBh3VYZj9$|}Ixvb(U+KUo2Unb1 z?}*$R0FCdZgQB>Ip$fUx$^fcV6-XW4ONZ3OsS1$ZIYUMw$mrw@1xRxxHCMqVak`%) z<2AT*RHjdGWHg(8$C{CQdcPB++;m1~MhTxPa8+ND%8&#e#!4-LGg29#wIIZ3@K9AM zWQZ;?FRdss9n^aRmGYorpkPo6nttAuQI8eQRGhBv#wZ}-n3tZK25L(}S~;M6&j0`# CLl8~? literal 84130 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 diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 073f64110..5c76d2257 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-17 16:58+0000\n" -"PO-Revision-Date: 2022-02-17 19:39\n" +"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"PO-Revision-Date: 2022-02-18 05:32\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "" -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "" -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Es existiert bereits ein Benutzer*inkonto mit dieser E-Mail-Adresse." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Ein Tag" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Eine Woche" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Ein Monat" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Läuft nicht ab" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i}-mal verwendbar" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Unbegrenzt" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Reihenfolge der Liste" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Buchtitel" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Bewertung" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Sortieren nach" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Aufsteigend" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Absteigend" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "Enddatum darf nicht vor dem Startdatum liegen." @@ -139,23 +143,23 @@ msgstr "Moderator*in löschen" msgid "Domain block" msgstr "Domainsperrung" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Hörbuch" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "E-Book" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Graphic Novel" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Hardcover" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Taschenbuch" @@ -183,7 +187,7 @@ msgstr "%(value)s ist keine gültige remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s ist kein gültiger Benutzer*inname" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "Benutzer*inname" @@ -257,73 +261,73 @@ msgstr "Zitate" msgid "Everything else" msgstr "Alles andere" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Start-Zeitleiste" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Startseite" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Bücher-Zeitleiste" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bücher" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English (Englisch)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español (Spanisch)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Galizisch)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano (Italienisch)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français (Französisch)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisch)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk (Norwegisch)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (brasilianisches Portugiesisch)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugiesisch)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Schwedisch)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (vereinfachtes Chinesisch)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinesisch, traditionell)" @@ -395,7 +399,7 @@ msgstr "Die Moderator*innen und Administrator*innen von %(site_name)s halten die msgid "Moderator" msgstr "Moderator*in" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administration" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Veröffentlichte Statusmeldungen:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Softwareversion:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Über %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Orte" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Vorschau des Titelbilds" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Dieser Link führt zu: %(link_url)s.
Möchtest du dorthin wechseln?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Weiter" @@ -1284,7 +1290,7 @@ msgstr "Bestätigungscode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Absenden" @@ -1301,7 +1307,7 @@ msgstr "Bestätigungslink erneut senden" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "E-Mail-Adresse:" @@ -1323,7 +1329,7 @@ msgstr "Föderierte Gemeinschaft" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Verzeichnis" @@ -1443,7 +1449,7 @@ msgstr "%(username)s hat %(username)s" msgstr "Direktnachrichten mit %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Direktnachrichten" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Updates" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Deine Bücher" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "Was liest du gerade?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Nach einem Buch suchen" @@ -1703,8 +1710,8 @@ msgstr "Du kannst Bücher hinzufügen, wenn du %(site_name)s benutzt." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Regal" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Besprechen" @@ -2169,7 +2176,7 @@ msgid "Login" msgstr "Anmeldung" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Anmelden" @@ -2178,7 +2185,7 @@ msgstr "Anmelden" msgid "Success! Email address confirmed." msgstr "Alles klar! E-Mail-Adresse bestätigt." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Benutzer*inname:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Passwort:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Passwort vergessen?" @@ -2219,23 +2226,23 @@ msgstr "Passwort zurücksetzen" msgid "%(site_name)s search" msgstr "%(site_name)s-Suche" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Nach einem Buch, einem*r Benutzer*in oder einer Liste suchen" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Navigations-Hauptmenü" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Feed" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Einstellungen" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Einstellungen" msgid "Invites" msgstr "Einladungen" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Abmelden" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Benachrichtigungen" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "Passwort" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Beitreten" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Status veröffentlicht" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Fehler beim veröffentlichen des Status" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Handbuch" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "%(site_name)s auf %(support_title)s unterstützen" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm ist open source Software. Du kannst dich auf GitHub beteiligen oder etwas melden." @@ -2915,6 +2922,11 @@ msgstr "„%(book_title)s“ abschließen" msgid "Start \"%(book_title)s\"" msgstr "„%(book_title)s“ beginnen" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3067,13 +3079,13 @@ msgstr "Nein" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Startdatum:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Enddatum:" @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Übersicht" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Benutzer*innen insgesamt" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s offene Meldung" msgstr[1] "%(display_count)s offene Meldungen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s Domain muss überprüft werden" msgstr[1] "%(display_count)s Domains müssen überprüft werden" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s Einladungsanfrage" msgstr[1] "%(display_count)s Einladungsanfragen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Instanzaktivität" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Tage" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Wochen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Neuanmeldungen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Statusaktivitäten" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Erstellte Werke" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Moderator*innenkommentare" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Kommentieren" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "Keine Meldungen gefunden." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Instanzinformationen" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Bilder" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Inhalt der Fußzeile" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Registrierung" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Instanzname:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Motto:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Instanzbeschreibung:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Kurzbeschreibung:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Wird verwendet, wenn die Instanz auf joinbookwyrm.com in der Vorschau angezeigt wird. Unterstützt weder HTML noch Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Verhaltenskodex:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Datenschutzerklärung:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logo:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Kleines Logo:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Support-Link:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Support-Titel:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "E-Mail-Adresse des*r Administrator*in:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Zusätzliche Angaben:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Selbstregistrierung zulassen" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Einladungsanfragen zulassen" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Benutzer*innen müssen ihre E-Mail-Adresse bestätigen" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(empfohlen, falls Selbstregistrierung zulässig ist)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Hinweis, wenn Selbtregistrierung nicht erlaubt ist:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Hinweis für Einladungsanfragen:" @@ -3928,6 +3953,118 @@ msgstr "Vorläufige Sperre für Benutzer*in aufheben" msgid "Access level:" msgstr "Zugriffsstufe:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "" + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "" + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "" + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "" + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "" + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Regal erstellen" @@ -4019,7 +4156,7 @@ msgstr[1] "und %(remainder_count_display)s Andere" msgid "No cover" msgstr "Kein Titelbild" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s von" @@ -4034,7 +4171,7 @@ msgstr "Teilen" msgid "Un-boost" msgstr "Teilen zurücknehmen" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Zitieren" @@ -4324,7 +4461,11 @@ msgstr "„%(book_title)s“ beginnen" msgid "Want to Read \"%(book_title)s\"" msgstr "„%(book_title)s“ auf Leseliste setzen" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "" + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Registrieren" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 7997af3ea..ff6cef87f 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"POT-Creation-Date: 2022-02-25 20:12+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -122,6 +122,10 @@ msgstr "" msgid "Danger" msgstr "" +#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +msgid "Automatically generated report" +msgstr "" + #: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 @@ -262,73 +266,73 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:211 msgid "Home Timeline" msgstr "" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:211 msgid "Home" msgstr "" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:212 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:284 msgid "English" msgstr "" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:285 msgid "Deutsch (German)" msgstr "" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:286 msgid "Español (Spanish)" msgstr "" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:287 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:288 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:289 msgid "Français (French)" msgstr "" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:290 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:291 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:278 +#: bookwyrm/settings.py:292 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:279 +#: bookwyrm/settings.py:293 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:294 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:295 msgid "简体中文 (Simplified Chinese)" msgstr "" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:296 msgid "繁體中文 (Traditional Chinese)" msgstr "" @@ -2922,11 +2926,6 @@ msgstr "" msgid "Start \"%(book_title)s\"" msgstr "" -#: bookwyrm/templates/reading_progress/stop.html:5 -#, python-format -msgid "Stop \"%(book_title)s\"" -msgstr "" - #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3061,7 +3060,7 @@ msgstr "" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 #: bookwyrm/templates/settings/announcements/edit_announcement.html:15 -#: bookwyrm/templates/settings/layout.html:78 +#: bookwyrm/templates/settings/layout.html:82 msgid "Announcements" msgstr "" @@ -3152,6 +3151,67 @@ msgstr "" msgid "Color:" msgstr "" +#: bookwyrm/templates/settings/automod/rules.html:6 +#: bookwyrm/templates/settings/automod/rules.html:10 +#: bookwyrm/templates/settings/layout.html:61 +msgid "Auto-moderation rules" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:17 +msgid "Auto-moderation rules will create reports for any local user or status with fields matching the provided string." +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:18 +msgid "Users or statuses that have already been reported (regardless of whether the report was resolved) will not be flagged." +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:19 +msgid "At this time, reports are not being generated automatically, and you must manually trigger a scan." +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:23 +msgid "Run scan" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:31 +msgid "Successfully added rule" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:37 +msgid "Add Rule" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:46 +#: bookwyrm/templates/settings/automod/rules.html:90 +msgid "String match" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:56 +#: bookwyrm/templates/settings/automod/rules.html:93 +msgid "Flag users" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:63 +#: bookwyrm/templates/settings/automod/rules.html:96 +msgid "Flag statuses" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:70 +msgid "Add rule" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:77 +msgid "Current Rules" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:81 +msgid "Show rules" +msgstr "" + +#: bookwyrm/templates/settings/automod/rules.html:118 +msgid "Remove rule" +msgstr "" + #: bookwyrm/templates/settings/dashboard/dashboard.html:6 #: bookwyrm/templates/settings/dashboard/dashboard.html:8 #: bookwyrm/templates/settings/layout.html:28 @@ -3254,7 +3314,7 @@ msgstr "" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:5 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:7 -#: bookwyrm/templates/settings/layout.html:61 +#: bookwyrm/templates/settings/layout.html:65 msgid "Email Blocklist" msgstr "" @@ -3540,7 +3600,7 @@ msgstr "" #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:5 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:7 -#: bookwyrm/templates/settings/layout.html:65 +#: bookwyrm/templates/settings/layout.html:69 msgid "IP Address Blocklist" msgstr "" @@ -3578,17 +3638,17 @@ msgstr "" msgid "Reports" msgstr "" -#: bookwyrm/templates/settings/layout.html:69 +#: bookwyrm/templates/settings/layout.html:73 #: bookwyrm/templates/settings/link_domains/link_domains.html:5 #: bookwyrm/templates/settings/link_domains/link_domains.html:7 msgid "Link Domains" msgstr "" -#: bookwyrm/templates/settings/layout.html:74 +#: bookwyrm/templates/settings/layout.html:78 msgid "Instance Settings" msgstr "" -#: bookwyrm/templates/settings/layout.html:82 +#: bookwyrm/templates/settings/layout.html:86 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" @@ -3627,35 +3687,35 @@ msgstr "" msgid "No links available for this domain." msgstr "" -#: bookwyrm/templates/settings/reports/report.html:11 +#: bookwyrm/templates/settings/reports/report.html:12 msgid "Back to reports" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:23 +#: bookwyrm/templates/settings/reports/report.html:24 msgid "Message reporter" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:28 msgid "Update on your report:" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:35 -msgid "Reported statuses" +#: bookwyrm/templates/settings/reports/report.html:36 +msgid "Reported status" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:40 +#: bookwyrm/templates/settings/reports/report.html:38 msgid "Status has been deleted" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:52 +#: bookwyrm/templates/settings/reports/report.html:47 msgid "Reported links" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:68 +#: bookwyrm/templates/settings/reports/report.html:63 msgid "Moderator Comments" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:89 +#: bookwyrm/templates/settings/reports/report.html:84 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 41cd76156416160ccf923fab551a153add56fe07..23dbbc0fa596bd8dab2816d702703c73b8ab37a5 100644 GIT binary patch delta 22 ecmeC2z}h*1b;F!P>=p_JrdGyAn-?ESYXtydiwLm* delta 22 ecmeC2z}h*1b;F!P?B)uFmR81=n-?ESYXtyd*9g1- diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 3826ea65c..e5cac9b90 100644 --- a/locale/es_ES/LC_MESSAGES/django.po +++ b/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-17 16:58+0000\n" -"PO-Revision-Date: 2022-02-17 19:39\n" +"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"PO-Revision-Date: 2022-02-18 05:32\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "Este dominio está bloqueado. Póngase en contacto con su administrador si cree que esto es un error." -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "Este enlace con ese tipo de archivo ya ha sido añadido a este libro. Si no es visible es porque el dominio todavía está pendiente." -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Ya existe un usuario con ese correo electrónico." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Un día" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Una semana" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Un mes" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "No expira" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Sin límite" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Orden de la lista" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Título" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Valoración" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Ordenar por" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "La fecha final de lectura no puede ser anterior a la fecha de inicio." @@ -139,23 +143,23 @@ msgstr "Eliminación de moderador" msgid "Domain block" msgstr "Bloqueo de dominio" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Audio libro" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "Libro electrónico" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Tapa dura" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Tapa blanda" @@ -183,7 +187,7 @@ msgstr "%(value)s no es un remote_id válido" msgid "%(value)s is not a valid username" msgstr "%(value)s no es un usuario válido" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nombre de usuario" @@ -257,73 +261,73 @@ msgstr "Citas" msgid "Everything else" msgstr "Todo lo demás" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Línea de tiempo principal" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Línea temporal de libros" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch (Alemán)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Gallego)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français (Francés)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk (Noruego)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileño)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Sueco)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chino simplificado)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chino tradicional)" @@ -395,7 +399,7 @@ msgstr "Los moderadores y administradores de %(site_name)s mantienen el sitio en msgid "Moderator" msgstr "Moderador" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administrador" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Estados publicados:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Versión del software:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Sobre %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Lugares" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Vista previa de la portada del libro" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Este enlace te lleva a: %(link_url)s.
¿Es ahí adonde quieres ir?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuar" @@ -1284,7 +1290,7 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Enviar" @@ -1301,7 +1307,7 @@ msgstr "Reenviar enlace de confirmación" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "Dirección de correo electrónico:" @@ -1323,7 +1329,7 @@ msgstr "Comunidad federalizada" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Directorio" @@ -1443,7 +1449,7 @@ msgstr "%(username)s citó %(username)s" msgstr "Mensajes directos con %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Mensajes directos" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Actualizaciones" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Tus libros" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "¿Qué estás leyendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Buscar libros" @@ -1703,8 +1710,8 @@ msgstr "Puedes agregar libros cuando comiences a usar %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Estantería" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Reseña" @@ -2169,7 +2176,7 @@ msgid "Login" msgstr "Iniciar sesión" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Iniciar sesión" @@ -2178,7 +2185,7 @@ msgstr "Iniciar sesión" msgid "Success! Email address confirmed." msgstr "¡Éxito! Dirección de correo electrónico confirmada." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Nombre de usuario:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Contraseña:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "¿Olvidaste tu contraseña?" @@ -2219,23 +2226,23 @@ msgstr "Restablecer contraseña" msgid "%(site_name)s search" msgstr "Busqueda en %(site_name)s" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Buscar un libro o un usuario o una lista" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Menú de navigación central" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Actividad" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Configuración" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Configuración" msgid "Invites" msgstr "Invitaciones" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Cerrar sesión" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Notificaciones" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "contraseña" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Unirse" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Estado publicado con éxito" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Error al publicar el estado" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentación de Django" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Apoyar %(site_name)s en %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm es software de código abierto. Puedes contribuir o reportar problemas en GitHub." @@ -2915,6 +2922,11 @@ msgstr "Terminar \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Empezar \"%(book_title)s\"" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3067,13 +3079,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Fecha de inicio:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Fecha final:" @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Tablero" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Número de usuarios" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s informe abierto" msgstr[1] "%(display_count)s informes abiertos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s dominio necesita revisión" msgstr[1] "%(display_count)s dominios necesitan revisión" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s solicitación de invitado" msgstr[1] "%(display_count)s solicitaciones de invitado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Actividad de instancia" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Actividad de inscripciones de usuarios" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Actividad de estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Obras creadas" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Comentarios de moderador" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentario" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "No se encontró ningún informe." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Información de instancia" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Imagenes" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Contenido del pie de página" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Registración" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Nombre de instancia:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Lema:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Descripción de instancia:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Descripción corta:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Se utiliza cuando se obtiene una vista previa de la instancia en joinbookwyrm.com. No es compatible con HTML ni Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Código de conducta:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Política de privacidad:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logo:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Logo pequeño:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Enlace de apoyo:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Título de apoyo:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "Correo electrónico de administradorx:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Más informacion:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Permitir registración" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Permitir solicitudes de invitación" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Requerir a usuarios a confirmar dirección de correo electrónico" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Recomendado si la registración es abierta)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Texto de registración cerrada:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Texto de solicitud de invitación:" @@ -3928,6 +3953,118 @@ msgstr "Des-suspender usuario" msgid "Access level:" msgstr "Nivel de acceso:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "" + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "" + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "" + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "" + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "" + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Crear Estantería" @@ -4019,7 +4156,7 @@ msgstr[1] "y %(remainder_count_display)s otros" msgid "No cover" msgstr "Sin portada" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s por" @@ -4034,7 +4171,7 @@ msgstr "Difundir" msgid "Un-boost" msgstr "Deshacer difusión" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Cita" @@ -4324,7 +4461,11 @@ msgstr "Empezar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quiero leer \"%(book_title)s\"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "" + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Inscribirse" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index e3a6d8e8147ce082250d9e75f3969622823c20a1..4cdcbf8ea2a3ffdeed740317a055f435e5954b7c 100644 GIT binary patch delta 17775 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\n" "Language-Team: French\n" "Language: fr\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "Un compte du même nom existe déjà" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "Ce domaine est bloqué. Contactez l’admin de votre instance si vous pensez que c’est une erreur." -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "Le lien avec ce type de fichier a déjà été ajouté pour ce livre. S’il n’est pas visible, le domaine est encore en attente." -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Cet email est déjà associé à un compte." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Un jour" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Une semaine" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Un mois" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Sans expiration" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} utilisations" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Sans limite" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Ordre de la liste" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Titre du livre" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Note" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Trier par" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Ordre croissant" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Ordre décroissant" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "La date de fin de lecture ne peut pas être antérieure à la date de début." @@ -94,15 +98,15 @@ msgstr "Impossible de trouver une correspondance pour le livre" #: bookwyrm/models/announcement.py:11 msgid "None" -msgstr "" +msgstr "Aucun" #: bookwyrm/models/announcement.py:12 msgid "Primary" -msgstr "" +msgstr "Primaire" #: bookwyrm/models/announcement.py:13 msgid "Success" -msgstr "" +msgstr "Succès" #: bookwyrm/models/announcement.py:14 #: bookwyrm/templates/settings/invites/manage_invites.html:47 @@ -111,11 +115,11 @@ msgstr "Lien" #: bookwyrm/models/announcement.py:15 msgid "Warning" -msgstr "" +msgstr "Avertissement" #: bookwyrm/models/announcement.py:16 msgid "Danger" -msgstr "" +msgstr "Danger" #: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 @@ -139,23 +143,23 @@ msgstr "Suppression du modérateur" msgid "Domain block" msgstr "Blocage de domaine" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Livre audio" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Roman Graphique" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Couverture rigide" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Couverture souple" @@ -183,7 +187,7 @@ msgstr "%(value)s n’est pas une remote_id valide." msgid "%(value)s is not a valid username" msgstr "%(value)s n’est pas un nom de compte valide." -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nom du compte :" @@ -257,73 +261,73 @@ msgstr "Citations" msgid "Everything else" msgstr "Tout le reste" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Mon fil d’actualité" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Accueil" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Actualité de mes livres" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livres" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Galicien)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano (italien)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituanien)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk (norvégien)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugais brésilien)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugais européen)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Suédois)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简化字" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "Infos supplémentaires :" @@ -395,7 +399,7 @@ msgstr "L’administration et la modération de %(site_name)s maintiennent le si msgid "Moderator" msgstr "Modérateur/modératrice" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Statuts publiés :" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Version logicielle :" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "À propos de %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI :" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Lieux" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Aperçu de la couverture" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Ce lien vous amène à %(link_url)s.
Est-ce là que vous souhaitez aller ?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuer" @@ -1284,7 +1290,7 @@ msgstr "Code de confirmation :" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Valider" @@ -1301,7 +1307,7 @@ msgstr "Envoyer le lien de confirmation de nouveau" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "Adresse email :" @@ -1323,7 +1329,7 @@ msgstr "Communauté fédérée" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Répertoire" @@ -1443,7 +1449,7 @@ msgstr "%(username)s a cité un passage de %(username)s" msgstr "Messages directs avec %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Messages directs" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Mises à jour" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Vos Livres" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "Que lisez‑vous ?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Chercher un livre" @@ -1703,8 +1710,8 @@ msgstr "Vous pourrez ajouter des livres lorsque vous commencerez à utiliser %(s #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Étagère" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Critique" @@ -2169,7 +2176,7 @@ msgid "Login" msgstr "Connexion" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Se connecter" @@ -2178,7 +2185,7 @@ msgstr "Se connecter" msgid "Success! Email address confirmed." msgstr "Bravo ! L’adresse email a été confirmée." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Nom du compte :" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Mot de passe :" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Mot de passe oublié ?" @@ -2219,23 +2226,23 @@ msgstr "Changer de mot de passe" msgid "%(site_name)s search" msgstr "Recherche %(site_name)s" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Rechercher un livre, un utilisateur ou une liste" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Menu de navigation principal " -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Fil d’actualité" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Paramètres" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Paramètres" msgid "Invites" msgstr "Invitations" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Se déconnecter" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Notifications" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "Mot de passe" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Rejoindre" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Publié !" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Erreur lors de la publication" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentation" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Soutenez %(site_name)s avec %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via GitHub." @@ -2915,6 +2922,11 @@ msgstr "Terminer \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Commencer \"%(book_title)s\"" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "Arrêter \"%(book_title)s\"" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3067,13 +3079,13 @@ msgstr "Faux" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Date de début :" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Date de fin :" @@ -3122,11 +3134,11 @@ msgstr "Modifier l’annonce" #: bookwyrm/templates/settings/announcements/edit_announcement.html:45 msgid "Announcement content" -msgstr "" +msgstr "Contenu de l’annonce" #: bookwyrm/templates/settings/announcements/edit_announcement.html:57 msgid "Details:" -msgstr "" +msgstr "Détails :" #: bookwyrm/templates/settings/announcements/edit_announcement.html:65 msgid "Event date:" @@ -3134,11 +3146,11 @@ msgstr "Date de l'événement :" #: bookwyrm/templates/settings/announcements/edit_announcement.html:73 msgid "Display settings" -msgstr "" +msgstr "Paramètres d’affichage" #: bookwyrm/templates/settings/announcements/edit_announcement.html:98 msgid "Color:" -msgstr "" +msgstr "Couleur :" #: bookwyrm/templates/settings/dashboard/dashboard.html:6 #: bookwyrm/templates/settings/dashboard/dashboard.html:8 @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Tableau de bord" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Nombre total d'utilisateurs·rices" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s signalement ouvert" msgstr[1] "%(display_count)s signalements ouverts" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s domaine doit être vérifié" msgstr[1] "%(display_count)s domaines doivent être vérifiés" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s demande d'invitation" msgstr[1] "%(display_count)s demandes d'invitation" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "Une mise à jour est disponible ! Vous utilisez la version%(current)s et la dernière version est %(available)s." + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Activité de l'instance" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervalle :" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Jours" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Semaines" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Nouvelles inscriptions" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Nouveaux statuts" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Œuvres créées" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Commentaires de l’équipe de modération" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Commentaire" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "Aucun signalement trouvé." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Information sur l’instance" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Images" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Contenu du pied de page" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Inscription" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "Paramètres enregistrés" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "Impossible d’enregistrer les paramètres" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Nom de l’instance :" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Slogan :" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Description de l’instance :" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Description courte :" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Utilisé dans l'aperçu de l'instance sur joinbookwyrm.com. Ne prend pas en charge l'HTML ou le Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Code de conduite :" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Politique de vie privée :" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logo :" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Logo réduit :" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon :" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "URL pour soutenir l’instance :" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Titre pour soutenir l’instance :" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "Email de l’administrateur :" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Infos supplémentaires :" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Autoriser les inscriptions" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Autoriser les demandes d’invitation" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Demander aux utilisateurs et utilisatrices de confirmer leur adresse email" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Recommandé si les inscriptions sont ouvertes)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Texte affiché lorsque les inscriptions sont closes :" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Texte de la demande d'invitation :" @@ -3928,6 +3953,118 @@ msgstr "Rétablir le compte" msgid "Access level:" msgstr "Niveau d’accès :" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "Configurer BookWyrm" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "Votre compte en tant qu’utilisateur et admin" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "Créer votre compte" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "Clé admin :" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "Une clé admin a été créée lorsque vous avez installé BookWyrm. Vous pouvez obtenir votre clé admin en exécutant ./bw-dev admin_code depuis la ligne de commande sur votre serveur." + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "En tant qu’admin, vous serez en mesure de configurer le nom et les informations de l’instance et de modérer votre instance. Cela signifie que vous aurez accès à des informations privées sur les comptes de votre instance et que vous serez responsable de répondre aux signalements de mauvais comportements ou de spam." + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "Une fois l'instance configurée, vous pouvez promouvoir d'autres comptes en tant que mod ou admin depuis le panneau d'administration." + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "En savoir plus sur la modération" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "Configuration de l’instance" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "Assurez-vous que tout semble juste avant de continuer" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "Vous faites fonctionner BookWyrm en mode debug. Ce mode ne doit jamais être utilisé dans un environnement de production." + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "Votre domaine semble être mal configuré. Il ne doit pas inclure de protocole ou de slashs." + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "Vous utilisez BookWyrm en mode production sans https. USE_HTTPS doit être activé en production." + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "Domaine de l'instance :" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "Protocole :" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "Utilisation de S3 :" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "Affichage" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "Langue par défaut de l'interface :" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "Expéditeur de l'e-mail :" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "Activation des images d’aperçu :" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "Activation de la réduction de taille des images :" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "Est-ce que tout a l’air correct ?" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "C'est votre dernière chance de configurer votre domaine et votre protocole." + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "Vous pouvez modifier les paramètres de votre instance dans le fichier .env sur votre serveur." + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "Voir les instructions d'installation" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "Configuration de l’instance" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "Installation de BookWyrm" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "Besoin d’aide ?" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Créer une étagère" @@ -4019,7 +4156,7 @@ msgstr[1] "et %(remainder_count_display)s autres" msgid "No cover" msgstr "Pas de couverture" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s de" @@ -4034,7 +4171,7 @@ msgstr "Partager" msgid "Un-boost" msgstr "Annuler le partage" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Citation" @@ -4324,7 +4461,11 @@ msgstr "Commencer « %(book_title)s »" msgid "Want to Read \"%(book_title)s\"" msgstr "Ajouter « %(book_title)s » aux envies de lecture" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "Choisissez bien ! Votre nom d’utilisateur ne peut pas être changé." + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "S’enregistrer" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index e0feb3c82ddbf8276d49bf94469376dd47c0a8aa..2e70e150f45f91dcc68c61e87b1a1f6f7cea1be3 100644 GIT binary patch delta 26269 zcmbQ$$ogyvYyCYTmZ=O33=Hfn3=A?13=AO(3=FBP3=BOEAW;Seg)jyN0|o{L#V`g2 zEd~aLpfCmoQ3eKv+AszNSq27%$zco(-V6*38^ahFoER7w{)RCy*f20KID|7W=z-LQ zGcbfPFfgnMXJCkDU|?X5U|=}Jz`&3k!NBl}fuWv3Es}vjnt_2qFp7b}h=GAYHwt1= zLKFjo7y|=CcN7DI5(5Lnq9_IiV+IC>qfrbDAh-RDVqgehU|_I{hB&Z0nt?%{fq`L9 zGy?-a0|UdIXa)vx1_p*V(F_a<3=9k`F$@eo3=9maF%a=05Y1T6z|a-Lz#sy$AeMn) z3j+hg_E?C5oH&RNTjCfPLO}9y3=C=v3=H3);&Sm2eKzqB2L{G7FeoxGFqFhIFvu}5 zFieYwgw)n}1_nt628Pp6{?m8{h8PA0hTriF4E*&B3=9zo3=Ad=3=A0w3=CWh3=DG< zAU;@;z`&r&z`(F0fq{XKfq~&(0wko~CNMB$F)%Q2CNeNIgDgyBU{GdYVEB;;2|<}8 z28MhF1_pm9y+4V8A&-H9K|h&+A((-IVO}x=LjnT>!>42hhWZo+28Q4i28Jk*MJWsn zkqitB!l@7!=B7g8@Kh=TLox#c!_QO(hC~JihS)R)23-aQhW%*_41x>{3~$pI7)lu! z82+a*Fz7HaFqEc4JhUhs;?V2qkSK7Q042&S1_oXR1_ril1_pKp1_qIAh`da8Jw!kmDxjSW@sUwBM1u=d zLr^xvpr~vH24;{CvLR8Ep3T4@#K6GNn+=J&1=$P?JPZsBtD)+5WHT^uGB7Y4%!Wki z>1;?;-iC_5s)sVZKn?f@wU{#pVvu+a1A_nq1A_{bHqC(;=#~R9C?JP{L7jntAwGwJ zft!JWp*;uUfyp@#2QSTGU@&B0U|5#}@$mzwInQ$-9ieML3yT>TSQr=> zRu(fbh=TI}x?+eAk3bE$SPTi$S5O0fK{arcKpezd0*Nxo5{N$e5{QL5B@hcuN+4;# zsRZJ{kP?W6$t94qlu-h4aAgStLp>-iT1prgtQZ&=rk6nS|0SqKol*vd2@DJj)};^& z&y+$8yi^LY;2~7}b1B3jKcRfKGDuwWltDsFsSM&F%`yfCa|Q+m%Q6NA3kC*;!ZL<> zaAH|i266eVGKfJh${<1fwG857j&g_tB+DTN%9le7R4a$bn?c3h%ON4*R}P8eFen{g z4vE4HsC-d5!~<33^$?4D$|3YDsKknL1_mhx28Lbb5Qkia(l5#x82UkFH`Ji+3W!4{ zS3n%HxB_DFmI{bN_EtbVbQG%YQU#=vdQ<`N5L106q{QN=gea7$gg8XA5)#+uP;uu< zNYDpVLR=mX6)%LUtAp~ppyo}7(yJ>WQMZevgf^=&Y#Kn86 zAQl{fieIaO1l`>#NTPXO1###nDF1&I#KBzE5P6Aeh(ndDA&JhY8j@|zt05lpsfMVJ zs0LSN^$cm%ki^nd4ROc}r~&hhwm#1UsLB#!xOA*oir z77`*6P&%m=qCck=qQ9gTQUKM~LVP+Os(&q%zqb|=<)>>I7z9B1|2|aW161L^T8NAJ z>L4MaRR?k@1A}25#3H*oNaA#>g9LG69V7(P>L5O@se=S{A5`D0I*5apL+OomkPz5i z$G}hzs-2EO6<&Z!+=bFFp!8=b{ST^+vmO#6V)YP%)aoG?8rDM`W?K&lsfc<=2u_5m zpI#418_VkAFqe_^lCk%5qhT{5|=;gA?*R721w9qHb8u0)Bp(yn+8Zw zyEH)JJgote*eap?z6OZH7B)Z}ycVi&FO)vo0CmyX21pR!fg11=sBpU)}-%5rQ1Q=T{q+nCf1whbtq_a(S|J9= zv_dQ}Y=vmFZH2hp2}*mnLL3wVrK4II7(5sl7!q0`4q4d>iNXy~{s}03z7-O6*IF4E zctH98In?4Wt&r5t)CP$H$u@`swA&!%fq5GwN`l)U4oPlmm8{VkabsKSB-W?Sg2O>4NxFqYDy*mR%5o{JS7gmDmMwU(boTWyFl+#Izk3)M)-fX)5+d9BAldGCAEZt9s}JI1qkc$3!@eJ4ZeBk`Us*q- zZs_QTg!JNma8X~+u)iM?hj;oR20!fwcMKT5LB(|@K*UWaK-9TSfCQcY1V~6kO@O4C z6ewLj0pj4U2@DLG3=9nOp?uDXU<(=KCPEx)4W{cE7(6CI3<{kH34!>D5DQW#LZYBx zA|z^Bpax8u2#NFc6QM=+M2HWsO@uh)#Y9LD|DFg5dZ9^>pjMm&=`}k{f_Nlv5(9%Q zDF2sFg1Brdl-@K661V3kK?;yhlOP6jO@`32lOYxxOosIPgC;{9P&OIT_3D@m@z4&a z_#r5LWilj9Jev%uQ$9^*V5kR;=?G7O#EIP$h)biUKzvv^1!8dB6o`Qnra*#r))YwG zuAc%4vF%eJiEHl^NJt%-0tw?Z6_R*v zPK6lEF%9AnzG;x!N_ZM1pX)$rn`w}=;WG{5px9}UF{0FIknx0>(;yDGH4Wmx$I~Dd zzk1r{LZWIv)WD-NAr3z?6XN5mQ1M$cAs%};6XJoF zGrU5Rpg0>61%|UBA>sz*2hE1~FdeLcfgyJ`B+5!=Lkg

wISdSfp!`2~4#X$x=RksP`y5Cj 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 AQUCw| delta 21909 zcmaF1gmqRUYyCYTmZ=O33=DUf85m?37#LXO85q=A85rK!fX*~I)fM( zv=|r|b_Fpoh%zuRJPl%CkY!+C_#MQ+;LX6mAQ{ZS;KabdkQ&UuV8g(`up*d&K@X%Z zn1LaTfq_9Jgn=QRfq@}Agn{7@0|Ue95C(=<3=H)QeW45t(hLj?m0=7FMhpxLQ^Oz@ zod{!K5My9q_#DQ-pv1tyz!lEGV9db4pc~G>;K0DZkQmOu5Wv8|uqYhjz|Y|f4Dt*N z3@Q-}4EziX3@#B24B`w73?UH=3Kfx#^n5>lbD3=CNe3=D;_3=GX63u74=lo=Qp65=2s z*b>LUkk7!tupLUP$1^bGF)%Ppk7r;AW?*1oOJHC~U|?W~N?>59PhntS*qy+@5CyU* zk%1wSfq|hq5#qwDiI6xnN@8G01_gN%14AMM1H;iI1_oUQ1_t$H1_nU}28PgN28L1w z28Q%x1_m8aT1tj^h${u+Q2P`}6s$^NU~mD&eF_6Z6$1lJ~>mdT&P=U$m5FgEgYFGo+unTI? zp>zfYW{?lkAyIQaoq<7!fq~&`Iwa~iG8hP=i470t^fcJsAuPAbKuT{W_>YJ2Ds;)EO8Uj%P41a5FG4 zyw8Am;5XC(yqOFPh71f0VwsQ-@yLXjQBL&#)(p zfx!%vXtE#<5XpvwfMPbpA^O=62iRpZFk~|@FgRsHve~+9hy@p*>X~yOJ`&7k zFs#poSa2d2;=l_~_4lCSA9EQPSQr=>e&#}a{4W>kp*)Cw#XLxeS>-|Wd*v}Ouz>P^ zL>|ONv3ZcF$jpOi%+G^ZSOeA2k_U;~NqG}p&pcdWC|b>N(B%L3=1F*aV~&3#1qO7D}eYc zrT`LRMFkKaRTeNXn1kww0tN;P1_p+M1rQ(pg6iiegg8jF5aLjcLWud6g$(uJd}?0^ zF~|+7AgmDL^YlVUT;@aRib7DFF)%bj<+}?Z4xU^Hv2ZDr-V7B#SjfO2#lXOD8R~#{ zP@1ubfuSE%DHTEU|B@nz1J)ElT)3wQV)5A`h(oRwK|U94v!Q=isJvpkX)cw z0&&2s5=d0+DuFokURlx?KWE6HiMZ4*LM*|1E(yu%4q7qCl(^;xffjNGdic zh171Qr4S!@l|nRxl|s@$N-4zRDyY83Qiuf;pz7yB^{<4A?}O?;T?(mPZ6bAuq%trtc$YyOxUmdk!JaaRPfwOXqUvH9BnlptL89UVlXf;#8yCjnhxa` zK^4|O#XF(&6ev9(O0R;d+gbtfz#*vkC8&jWD;$LV|KZB_t?URf2+$fnif6Bnq!oLek80DF06-#K-(q z5Qj-uLG)=uY2zw}dT`6ex(X5`UR4kS!l4Rssvs^cse(A5stV$O<|;_k^g`){RgfUx zS_KKgT~(0WaTLmb3f2DsYVJ>{KE~>Lh{dAS5T7VjLwxR14N0Zm)!N{KwaoDM928M7328Mgp3=Ap^3=C#95RXOIKtiIR2AujC8tQ8x z8fMl&f@WL3n?fr=;Af%VrjWJ4v&>mU}_Kn>`EC}5Zmm0w*4arp)) zy|WJDphHmlL>&Wz2Ll7cxjKkL#OonZC|3{Rn?Y&YdPvl{fTO;ifg!XWVsTPEr14o$ z4+)y~daw%_X4XRrq^0$cpgmX*amYnz-Epg)f#Dbf1H&Vz`jrh3`K=8Q_4^tiQFE>V zV(ya$h<)E07#R3K`Jbf`A|c!eQK;GoaiMi1M4?Y3Bq*bxbV?&6YVsN(KC5knSk%%8 z3Hm9Gkhovj2Uv7O>JUe@MBp+tsNc*`5AIAl zG(!vsYlcKYMl&R_)I&A2K=~7zA=!0mGXukVP~Wc^()kQ(fwXYuwLl#9qXpst=2nQu zgjykKMWGdv*wtDY7_1o>7_3_BAwgEw3h`NYE2J+swUvQk1E|s1%D}LWfq@~j4Pt;q zJH!Wa?GOvJ+96S3*$#2ILp!AJ7v2tug0gmqzB;JB7ASv0JH*~;_3aR!uWp9~$=-HI zQ|eqh#HVZ>ka}OZ17e_42SmMB2c%4o>3}58@(xH*J-GuCWg9vm=I!i&G`CMd#Thyw z;+&ljb@fu6kRVg;goJ=zCnS+rKxywzh)d%-85lA_T`?&CZYRXTPn{5l@^?XKnJ$Pq znq3f|8+Sp1+_DQ26~0{%ebHUuD6VIy=zx*_Gj?rw;=m!b5tZjin83=BWJA=yN_2jT$x z9!O6num|FkMyPl{>jogPS3u=he7s@w}Pz;PDn2_BzqxI zS=`IOzzWL$)xD5J)YuCNqK;ljP)_TG_;4{)!y2eTTcG0mdLiBGGi}uMg4<|I`Pu*tj3!Fq?je51gU2 zZ$HEb;r$Q?$M-`LV{Shrs5|;0alW7*5&~PG{9{n_ZuLV(L>~4t)PuWLzxx>&G(hd~ z2@DL{pnm@Zh=rLGAU-Lc011%_DBU^%Qt3>Z0148g6Ce({H38!AM^OIj36Qk&c>*K^ zm?lEH?LreF>MbTh%W#K@5RD!aAubM_2ysC2L`VqaPK3mH$wWvZYM2PA*C$Ve#QBbi z5DTtMgyg0tQ1$Pj{NEEHQNuO~Vjj;Vh<(EKlOR5nfl4S&g1Ag$62#>OlOQFPJyc!w zBuGd!OoEJh^-h9B!9J+?8K}OSlOPUy0X6RjRGwinBGcVYohAoDLbl;G7N_8ReZ0iE^*$3=G1c{O>;5vfUnGPv%=0W-Ur$ZcgaXL6C8SX*#f1VD>&i|qE#xo#3c9;Q) zbN?BT>=`?QfuSBWXjC`@;-cCaknGU})v#g)#3$QlKrGrn1LBi2GZ+|hK?9aEAO(rt zOi0n|KNAviIZ(QECd31EGa=c#Zzd#ax6g!l_{B_ydhmGMyP1$|^=&4^K+ai^IFy3Y zDzhLy*P8_iA^%wrA4kuEWW$145Qk5l1#$51SrDHdo(1vw#aR%CJ(vXv$(K-bf6uCi zWCzySkkM=T*^s7E(ridU)HNGYiENt0t>Wo+I zKBjXZZ9jDf;w{^L|w%^NXWF#gM`TRc@PJ#n+LIH`#f;@ zP|xsa9>fCC`3ww}3=9ma^BEW}f`-|le8UBh{GGi3QtwY)0127HQ1ROfAZdejAp?UK z0|SE^lrCHdsTKDugp@C@7cwwJFfcH1E`sP!TExJxiJ_i>p=uE%G3hRbBtoafkkRna z#gMq)u$Y0N5HyIi7?R3emq5}=(h`WirAr`jylV+0RUcgfiGtHhAR&7RDt>DTBn>=R z!oX0*$iVPs33U8Fc^M@86)$682xVYks8|NcX6K;dmzF_-?mCoy0Ht3pgT(QtWe|)0 zKxvlckPzir4$0>-%OUy=mP4Y#63P!)&cIL)8l8@W3M4Ow#AOatVHMP%iOV5zwh*fB z%yNi@SE1_fE@xmk%D}+zdO0K{Hm+b`h-P45*s}tX79>_e%vD_p;TuC~hm{QV;JF`P zs6ggQNRXDTg!rs`CB)@ZS3;s<9#s6`N=Q(jUI_{6iz^}7_6Afv!zyU5SOw89wF;6L zl~+L$sp%?+c`mE!Ap+^EAlag96~qBOs~|33xC-K<^-u$Lt%9VHGf;K+S3!dK%PL6R za;%2XBC8=5Dy)V$z-Toj5n8W?War4$kdSDoUk$OKcQwREGgd=_cHU}8!L)2O#9;?k zLq;sGt!4n#OAKjiAP)Sy1`<--Yawwix)x%N>RO1r_FBm3y5(BPY+1otNJt%A3#pdt zU#^A3t^7I$hTWj4lXZ}3GPd;$3~>w$48iLmt=UcM!TFWp;(7)KM+OE4mJJLHL7+*g z4UlX(a|5KrJH7!@&^+G&nd9Ny2q{ThHbTn&4I3dIdbknn;ChDd8zE&k`zDABbvHrs zaor|J(4O1`saEf9f&>}YW=M#MZ-xZ55|ppEnSr5*fq}ttGbHh?fr@i%frNzc7D!Yp zZh`1C*aC7$Jp+Ty7KqD(wm>W>+5(yHtKR}iTvxV048FYu5;A^UAt5$Az6=ZuSGGcWze?L6{K9RJklVkFfq{vEf#K6O$dt_2Z43;cF$V_q?T|#(wH;#M z-0k3?VOYE!l6W?6hs4#M?Fc)t1H&Xx-LMa$amPML5q)qUB=O1Yha^_7{g5bIxgU~yHtdJYbe`G|i6ZR-kcmm- z1CX)hj05!y47H#^qXQ6weGWq6D)b;^#ktFOCq@Pa z-$M|GI2?f_*1RK-qIUKXNLtx+1QK$0k3bT+(NP8lR|W=#=K7-$7o9xH0G^}$ca(vl zn1O*I_ZS1i5e5c^hsPK|)8q`xjzhBH#1jzp8%{u?BqIZZ`)P=e z63;L&TmV&4XCV4K&q54LJPYwz<5@@uT{;VCnteG7(I3n^;qf_0KK^+Qk{d$LLz>U2=OOuj(Rqju)}Dv74-TA%sC#uDV&1Rw zkPwx)z`)SKz`)Rc0pcKmi;&i_=|xaT*E29=UW6#T3l?Bt@VNwus{@xHiBR-1149x6 z14GeeNQ>v{Wr)M{uP`uVfTq!|K;rz%70B$k;#CHQSWw(vg^VLSyb5us;5A4Qu5t}h z1aG;!9@!3=F@oGcbUr>8o!*rq3VT zfK)E3Hz9pP^P3PK72kwdy!wUiQL1$dlI;R-LF$U|Tac(ryanz5S3)HkZ$YZf zZm5Piw;HHYBl$ z+=1xRz60s|S>AzU>!3Rj^{saxAu#<8co3L@Vf`Iw5qk#`M4#?JEc|l^;&Yz6kRTMj z3lW!w(%N?+Az}@ccY=z0Kmg<5hD5QHS;}ic3^P02MMBt zdysj*e5m-Udyq=w)ICU){J95l7|VS~Nb%l>@D=Vu(vs$VNOqfdAJVEmav$RGfA=B! z`5r*j*NZ)1U|0%T_3{8RqtoSK@6Dl2+}%U z2NmD^2;%Z%k06QY{3A$|J$M93JFgx=%8!3gd6CBuhpRq@I7Is~M4!uJP#OS@|38Kl zmAQ{0`F+D~1cixr}QaWDSHOV6%EfI4xJ9Amp@}*s0S^P+WrhuKc9aFiQ5m)AgPw? zIb;ci`g4c__CAM%z|rRr18+ZvSn%mN#HW9rLo8r@0r80F3rGXS-~~i~(K;mj6RQ?c@J_nV*^#T%AFJ3?zAirKf`h3POAp;aiFTsh7 z;lfLZL*KoGgxHUlki^aWsvaUC^a>KRGOr*$(0>Jq68l$>p!RtMad`q%UEV85qH25v z39;pj61fAo?2OQ{C4P2iU!aWGBDZ zkf_Of4Y8mfN-ud0sYG_ZW?(1)wG&=Lf;8w2#NlyoAQor8fq1Os4J0kKzk!5U-y2A| zP`}^}BuH*S>8EcXA@TuA|9S%nQkJ(6apSiThuXe{_{i@qBm`oi{PMRD^V;4*;(X#; zhy!N6g*a%gyR8_CY1izJrYA-hKyZLVbS+iDUiu5FeVphxo+* zJtQiU-h+L>Q2riL-PXN_M8V?s5C^Y+4+-i$?;%C;x%ZG<^W{CnBitVt7=%Fezsv_n zoa=vpNZ5aX7##2cVqiE(A!xxMlrH-KaZu+6NDwdn0CDK*50D_<2&H#@fH?H<2S_5m z0af?r10)-N`oO?Y4_aQw@e$%uqmK{=xO{{d910bW{Rj!#{EtwdLgg2Kgaqa4kB~Os zVW|42A0ZC;4%Nr-2~r;Le}Z^S>l4IbhMySf!PDe!pCE0&d7mIbbnp|zhc}?~r%wH7?Ez{=0ix!iqF1;;-_ zQu!^Y#wVX4A@de0|Nk>2goM689H{&S;t<;}kSGlN0*Q*mFOVQk{{nGP?H2|Hd(bkz zFOU#8^9AC7%k^I%iRHx?h|j-54dD3-sr7`uLJSc93el+c6=JaNS4g?w{1u`<1**RA zE5zqzP`dsr#6cZUy6-Eb5}NWA5|Z^dpawmFTEO@XVgScChz|w7L42nD4dOuSZx9Cr zLFF^PK^)lh4blUe2vxWL8zdyJeS>7r2j3VNPB1Vqy!!@8)Z4#I9%u#WbFZi#xF=az3vyphf9A!f^^p}h=nJAL8{~1 zzaSR=fYSWGAr`3ph6J%blyCbRqR#C%WJo9WH>4Xc`GCVPk$f=vi^lQgzqmTu_*tA1bO;jh))~;LfZ9xe<9<3JN_~->}6nJsQU*=Y&QQP z7C1rap#P8%N%{{lC+k0?57_dbp&qAO$A3t* zD!{-9?jdP1FoKug7BDb^7ojvWFoNe3wlOd=fEKgwV_*cY9ly=M2wnsJkAV@qL|dMb z5!~-^WUPlM^k-yba0e|CXJiDg*WJR%2zJ;$DE}0ce+5cEU}OX@EPMl{*_jx@1DQ%p zj0`!T1<6c|;EB!EOb`o?FfoD`Iz5BZUzs50v(z&)f>$sLFhewmF*AafRO>S{GJqD5 zJ2EqZS1>0qLk!AfW&|%*?`CEM_lOoSGlJIzZ-9y)WM%{}IJ(Bn2wtN7n;Bw}CJV&D zrYsPL20;1sIV=zj?JSUxSi=Gd(vwgHcUTy~i_5>WFoG8nOS3|P&X<)Dylgj`6=K08 zR)_`jSRwj%vO*kqhLsV#EdLHGBY2AU4=cnTRW?S@!sU7fCpJd#I{z#-M)1<=Ql#RhT6O*V)Fp0h#X{xekFZ>TsEJ0o~pkdGabMjF{6 z=4@dHnOo1mu$vv?@`LOUm)~KB1o3-zM)2Yk77j=hNO3TN$83~27{Mc-nNaaP9FR0~ zlmp_B^BfS5+=j}(;DAKYM-E6xGjT!^r8*}ggCwZ__u_;oNa2K7T*?XYNf#$1Bqnh} z9JrAa9ApekiG0Tuts4RJU(4J51zY0i<^Fn-B z#tVs~dR~YF7D2_=K-F#Kg@nifUP#m(hsxjJg=F7{PzyfuLLAJ+2XT-XAH+OuC~aEL z#|YjoW6uY1X$>DEc-zblK1T5Nn&*6wC}HJ?WJ7s=h|it*8Ns_@g7_gmYvX4G?|hiU z53yhaKg2`3_#r`ml%Em2vf>d`9iITiVf9J^5QFptAU;kKfcT(Q0FsENL+SMbj0~W* z;&A~;2z`XozXTxJkXaC-PY_Bg3qqpI6w0?1WMr7bz`)=y$Ozs~^hOZufO-a5AuxkM zQwS3Grb3JipuI;{LXaS?5Q4;2y%5B}X+n@VoClR(Cj^Ottx)k}LXfil8kGMXO0x?? z60Nu}#KFeGpxjZ9O^J} zNQmwehnRm(91^nk#UUZ`QJk?JR0%L}NkCj|BmvRjC;>4bPy*thcql(Z0ut0^5|ALQ zm4HOiBngPmS4u!a>@JjkDggmvPNJ1PG zBMAwKY^Z#rB&6u=fXZ)`ggEesB*cejB_V0)o+QK}uO%758=O8%LLA~N1qp!!DG0x) zUJBylRw+n!n<@n<3D-(Nvg2kcM)2OSYf=ygaZ59TXUV0c85!<^cDG4G8ZJgMkhD`J z1Ig!0Wguzfq6{SNKgmGMla_@P?RK(^;MKDAg|d*i+a(KWV7!!t)Nb5zkn9pC#|WO= zt&)SpnS(rpj+BQKxkd623y#Y(GL$heFno}Qn3Jx+2;Q>QsQ^iYHx(cr{h|N~85Tuw z$kj9OC_)mMs3OGY@`{ikQdMMR*uu!bV6F%Wsy9jy`Tt6c;CX&lWk&E;tN>+5xe=la zF(*jJiu#nn7BkET%hxk7tWbso)ox`-HoF7mKUaphm_r3(pahgw zQGrC2feIvTc&I>p7^lJro&~E^fuw;=DiHnqRUlD!UWJk2F=$OVRQ!-CBSQoz|6fvt zq)u%$h=KNMkPrw}gNUcAK^#~O6`uoDw@wXW!4W8ZMGX?SPt+hj6<3G&R6`vSGKT7q zG-3_qr>QeC)Pwf#6+jg>sY4vltq!qxp*kcDY*mN&;G#ODGJ2p634vegkZdZX0ihK% zAQtOsKs;ct0Wl{~0}>Uf8jz5w(13(=s|F)v{qF<~h)b7gK!S3;2Bfw-r2%pIJE+DV z8j!@pstKWaH6e{lQB8=2rkaclJq!#C?wX7YQ$SO(nh=L&YC+5?*MfMk5z3#gRS(g) zPz%z!-K@n3p1XOf1#y70HY85dwISJXfi@#}_Uo!PBwsJnVFb?~GU!4IqB>nj`7u=& zQiSi-g=Ejqy3nB4gM?_B9wa+9)$1`bbb*#i>oJ12&l%`L;xIuU61S7}A&GCXJ|tVM z*JlLp;k>91=>e%4K%yka0OEl*14t0>Fn~naQ7C-{Ny8A22u zGlay|RYQmYFQMY!3?XsHYQ)F@+Keh;1Sxv$j2OYoX@ZR)Md=zNM(`fc%|?)dMbnrO zT+bI7L*y45L!w}nF(Y`d=@w%~&|;T*27VJrL6T|$X#wprf#mCNCJ+ODnJ_YdHlJ#n zLJaCRg_Hx+Od*MFjwvMVtTlzy0ozO&!LwzrpyK{!kf4t+gG5EM86#v9su`%|1=?z)`n=gjA6QBX~!1qXnddyI}$L34?|u$Up{$ zI!lQBZc9e+24x{DNLop@f~E;8NFw}f#mJxl%Kx0!5T9sSLlT{}HN@h0Ye?K@SVOW) zi8UlO*IPp>p>+i=3VTNIp6=`R5PjwjkhJ39 z0P#q$10t_Qh39_ zz#zoPz%Y%Gfx(KAf#C`x1H&GuW{_S`{sz(S7#SEoGBGf`W@2FY!U&l)2Z^6yWMEjs z%)sz~iGkrVBLl-zMg|56s4GC56I>Y?7$QOYzd?#$Fff2t#)5}OKztDX&&0q`%f!I2 zjgf&tA8IjZrVJzp+Gx%N+6W9P&lwmPCW5AKp@xIze(x|cFf>8+fTrD@T@5Cz(~Zp_30t_f?Pn$|NhFt{)>Ff3zWU|7Zo z8RG$|y~4!6Aj8POPz_ZF5>tdaQkxO7R0AaT94ep344GdBiGf!!fEZCs3=B++3=AAh z3=CXM44{=%3^7cQ8S=kO3=Gd17#JKtmNGLiEN6lY(}47Wusst4Loa9pJ0k;wDkB5K zRwf39ThLJ8fLgkZnStRNNHGN0GfZJ(U|7w>z@Ws$z~IHmz@W{{z@Wkm84pThW?<+B z?Tlk)U=V})q>YJzVHOhu!*{5`IZ*KwCI$vWW(J0bObiUcObiV5j0_A?%nS@QP<0^t zc%W<^Mh1q%j0_CNVev1|#K5qak%8e017yHSmXU#B6Eg$D8YTt?JthW*Hjr-69)3m! zh6V=6IAI3VFheE=hBQV724N-!P>Y+viiv@tfRTYghM9pu7wWjfph^jp2B3V9aiC4l z(?RhMTJf&H$iN`N#K7$XhN>xJW?=XRl>_aN zW@Tbvh+}48U}j=q@L^?G^z;Kt5fk6%AQ$_{`BSr>>J0M#a7#J*= z85k0n7#QrBAd4ARGJ}WmK;<6;!*>P-h6zlNRSbWa7#JKG85mYGGBBKBW?+zKhOB@A z9j)-32{KT*nTdhn0cdY1XfHq10&`HpVq#!8&&3-3RF;mN=jx1hR=))4DUg^CKwnP7K5@YND*kE3Y3OX zJxmM?ub3DZ+L;&_7BMm~C@?cH$bk|m12q3%VP;@h$Hc(E40ZWJW(EdMW(I}`W(J0j zj0_BYP)A&6W?%?rWB`wfbu%+CgfKENq(kLE3(np`+4hVK467I!7$!o^gE?d^69a=O z69YpPGXp~_Bt+^N1VM!aGXn!Z69dC!W(I~&P(#ch3cz~RLD`O(fx(86f#Dp84OKIn znSo&=lnqko$;`l@fW(huVqmCaWMH_@#K6$Z#J~{5$iT1y6bj4?4A&VM7}S~TA#3v1 zF)}dhVrF0{XJ%l?gc=~u$iNT^%0f&G3{lLGrMbq;3=C_b4)bMZV0aDE2ig_I%)oF3 zlpvWPi8j0_Cy%nS_fpn8Lufx(WMfx&=@ zfx(QCfnf)z;DI{Yml3ieh9AlYSsVxVXgy@d(+;R)E)xTT022elAtnZfbVddS6HqD# zwN@Az81^wUFzjPuV3@?jz;G4n$Vnj6pcu50;vm!<4p7+-RRfYf4XVf(AyayK%nS^j zP`Nx%{DTzqLIuF1_l)-28Ikq1_lF01_nze28MkM z3=G#8A63Mi<4kUR*BLLFKUI(P;oaGV*kn(ZwkWQOw# z69WS~69WSuBLl;41_lNrW(J0vAWN7T7?yyR*)l^`!)ZVbn##<;(8kEXz{JeJun1IP zff6mqU?}bbWm`rDh6&7&^@C=hDjXF52N@U`T%oSxVq{=A4QkmiF))~e%5Vk-hEixq zK+OTqdVtt@ObiTDpmL7P3=FQIEXT;eu#ky?;V7u!0-bsSI_(C;XJBBM1=7U8z+es4 z(*p7+sQ&*83R0+~A2S2P0!9V~R;aH)!Wp1u64ZepKIrHS5DmhLObiTXK@0{4hGS4Q z4;dL4RzfYQV`gB`WMW{jWn=(%yFlmuh%+%Td}d%^=wf7GI032*HZU_VG(j!A&%nSC z$;`l@!w6Y)IG>q;VFqX^Ju?HtPpF}wvwJ|N*?{bw2&y|khYf)^pn3pQ`$5gBVP;@h z$jHFZ$;iO4or!^=oRNWHKj_>bs5z>jR#GJs1H*g<28I$w28IMi25@JzkC}mC4=B4a zGcYhQF)(<8ib|*jFzP7Ow_Z>hBn}$i-2mnP0JVld&2o?g0|UbnsHIC885nY)>?% zRALgSb;`uRkjl)!zzAweLk(pFH5#BUZ->(Ij0_Bim>C!>m>3v@p<+fjJFI74AIOC3{{}EKd5*G9mxfX8b$_&my8SyDa;HEBFqd7 zQ`8l(B5ni(;pg#^PsN13o8FX1q^880jS{$S}D!Uz+lV7zz`2Lycm?qq3VA_#fqTx zE~t6E%nS_LU@@rwL8n>$WMW|81^E(WGidod=*TQkRScTXWn^H;XJlZ|0&8MmxCdGh z&B(wI$iTqxn~{NGI@CgtR#7Gfh9s!EOQ5oVfq}t?8L~A0F;sjF0|P@FGXnz;sQvdI z)FK5nHb9jPsAUUvC1_Kj2_pl;V@3vsnG6gJ0Z>ao=Q({~WMKFY>PRv$FuZ`O_Xm~v zpk6K$149#3Y#x-ZVq{>jhw29nLM{X?#Q@d+g-i?#+)!8PGBPj}Ff%Z`12v-=7#MCa zFfiyt4G;wdE68wAfdo}Q885sV791YcX8~}Z)OID70e6_=NTCo zDi|3UE`WRhIyjDzfk6%w6-*2a7oY|}wSg(n>35*h(Zrb<82&)@fOc1dBquUMmh*zx z>7X3M2w4fC0qXzFfhqz337=)M@7#yIMvVj_-pcW1j z1H*qt28O+i3=C_bW+*c=Fa$u^9!v}jKcMV(D18Ey4nSi>pdp8>K!R!{ zX2{YQ(DYjos1O3>ZzcwYZYBnXPEcxPU|=w1hHSk6xp5Pyr35t?#NWomz_1n6?+1+$ zFf%aBV`5;KzzA6b8UqRyPH3=HiI3=GbU3=BIN7#L7MF%5%u;3shB^iYhO>+e49h`!LFEq%GXp~y z69dD2P|$!1AgD%=JPd;lCM*Q?6+w+sP;@Xrj!^{3+b}RNlru3fd}Cx_aARU%kYZ$D zh-YMAILgSt5W>vB5D2Q!Kv4@SC7})h%^fWOHEb4uw$*@w3S<%#pJ8BNU}t1txX#4D za0x1=2^v}fwS<`=tD@FI#X);RK+Irf$SEkdpwR;oo5Re&V93b8aDb74AscG(ZcvCa zFfed~IxnF5e=BIbhY_+L=Qv0g17tA~h{+Ar4;~dIibBFlbL_GE^N% zEF0AMV1%sy1)T*55(8n-VU(a<6(II@P_6;huFRk!iGhK^59;b_W(J1MAQcP@3`d}b zx-l{^++YSRB;G6+_DgKDa;`n&WY+v}_PqSkyyVo}%~$gsm^Skk&tsl^yDV>WKzT6J z=Ixb=jFazI^>6N~PG_9_tLE9{kG1lfb?O!{PQF#IxLLa)fPHd*yV&GC?fR2{wX1J7 z>Nv!>S)gkV%jW-mSxlQtCbBb6ZkUp_IdrN6^W?cR8aAuXd2`zOYNp8?o6;v&ZdyIrdGnLa`di|dCbw=+-E6nx3(Mq_dqpN^ z?LD)(YhNiJhoQNGp{13vetm(+_Yky0a(e=cOi>ByQ*BWXxyLc82g6pmdQ!a(GOFR_1U2cr(fY^OxvE#$M}V5d%hr}AM^C1B8*+z?~5{KGID~f zsK`9LId8h3IHMPWyM3NGqYTsZBa)2kw%1BArg5@4R+JW(q;BU^VN_w6?xn#fw>?jT z(UoocPd!E#mhBP7jFQZbe)+kn3Mr`yrNyO*MVW~V{t9`hA`1DXAZM2pB^GDqCFUsP z<>x6B=jSOT=NA>FCYR(-KWD}mI9h^pG#`}!ZUpO)HO|Nreyt93)Gvh`+0O&pMkpKVy diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index f186499bc..0e29c152e 100644 --- a/locale/gl_ES/LC_MESSAGES/django.po +++ b/locale/gl_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-17 16:58+0000\n" -"PO-Revision-Date: 2022-02-17 19:39\n" +"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"PO-Revision-Date: 2022-02-22 05:34\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "Xa existe unha usuaria con este identificador" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "Este dominio está bloqueado. Contacta coa administración se cres que é un erro." -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "Esta ligazón co tipo de ficheiro xa foi engadida para este libro. Se non é visible, o dominio aínda está pendente." -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Xa existe unha usuaria con este email." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Un día" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Unha semana" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Un mes" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Non caduca" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Sen límite" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Orde da listaxe" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Título do libro" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Puntuación" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Ordenar por" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "A data final da lectura non pode ser anterior á de inicio." @@ -94,15 +98,15 @@ msgstr "Non se atopan coincidencias para o libro" #: bookwyrm/models/announcement.py:11 msgid "None" -msgstr "" +msgstr "Ningún" #: bookwyrm/models/announcement.py:12 msgid "Primary" -msgstr "" +msgstr "Principal" #: bookwyrm/models/announcement.py:13 msgid "Success" -msgstr "" +msgstr "Feito" #: bookwyrm/models/announcement.py:14 #: bookwyrm/templates/settings/invites/manage_invites.html:47 @@ -111,11 +115,11 @@ msgstr "Ligazón" #: bookwyrm/models/announcement.py:15 msgid "Warning" -msgstr "" +msgstr "Advertencia" #: bookwyrm/models/announcement.py:16 msgid "Danger" -msgstr "" +msgstr "Perigo" #: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 @@ -139,23 +143,23 @@ msgstr "Eliminado pola moderación" msgid "Domain block" msgstr "Bloqueo de dominio" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Audiolibro" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Portada dura" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "En rústica" @@ -183,7 +187,7 @@ msgstr "%(value)s non é un remote_id válido" msgid "%(value)s is not a valid username" msgstr "%(value)s non é un nome de usuaria válido" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome de usuaria" @@ -257,73 +261,73 @@ msgstr "Citas" msgid "Everything else" msgstr "As outras cousas" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Cronoloxía de Inicio" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Cronoloxía de libros" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Alemán (Alemaña)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español (España)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano (Italian)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Francés (Francia)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lithuanian)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Noruegués (Norwegian)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileiro)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Sueco (Swedish)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinés simplificado)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinés tradicional)" @@ -395,7 +399,7 @@ msgstr "A moderación e administración de %(site_name)s coidan e xestionan o si msgid "Moderator" msgstr "Moderación" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Estados publicados:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Versión do software:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Acerca de %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Lugares" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Vista previa da portada" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Esta ligazón vaite levar a: %(link_url)s.
É ahí a onde queres ir?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuar" @@ -1284,7 +1290,7 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Enviar" @@ -1301,7 +1307,7 @@ msgstr "Reenviar ligazón de confirmación" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "Enderezo de email:" @@ -1323,7 +1329,7 @@ msgstr "Comunidade federada" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Directorio" @@ -1443,7 +1449,7 @@ msgstr "%(username)s citou %(confirmation_code)s\" at login." -msgstr "Ou escribe o código \"%(confirmation_code)s\" na páxina de conexión." +msgstr "Ou escribe o código \"%(confirmation_code)s\" na páxina de acceso." #: bookwyrm/templates/email/confirm/subject.html:2 msgid "Please confirm your email" @@ -1479,7 +1485,7 @@ msgstr "Por favor confirma o teu email" #: bookwyrm/templates/email/confirm/text_content.html:10 #, python-format msgid "Or enter the code \"%(confirmation_code)s\" at login." -msgstr "Ou escribe o código \"%(confirmation_code)s\" na páxina de conexión." +msgstr "Ou escribe o código \"%(confirmation_code)s\" na páxina de acceso." #: bookwyrm/templates/email/html_layout.html:15 #: bookwyrm/templates/email/text_layout.html:2 @@ -1540,7 +1546,7 @@ msgstr "Nova denuncia en %(site_name)s" #: bookwyrm/templates/email/password_reset/text_content.html:4 #, python-format msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account." -msgstr "Solicitaches restablecer o contrasinal en %(site_name)s. Preme na ligazón para establecer un novo contrasinal e conectarte á túa conta." +msgstr "Solicitaches restablecer o contrasinal en %(site_name)s. Preme na ligazón para establecer un novo contrasinal e acceder á túa conta." #: bookwyrm/templates/email/password_reset/html_content.html:9 #: bookwyrm/templates/landing/password_reset.html:4 @@ -1560,12 +1566,13 @@ msgstr "Se non solicitaches cambiar o contrasinal podes ignorar este email." msgid "Reset your %(site_name)s password" msgstr "Restablece o contrasinal en %(site_name)s" -#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:39 +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:40 +#: bookwyrm/templates/setup/layout.html:12 #, python-format msgid "%(site_name)s home page" msgstr "Páxina de inicio de %(site_name)s" -#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:233 +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 msgid "Contact site admin" msgstr "Contacta coa administración" @@ -1579,7 +1586,7 @@ msgid "Direct Messages with %(username)s" msgstr "Mensaxes Directas con %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Mensaxes Directas" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Actualizacións" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Os teus libros" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "Que estás a ler?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Buscar un libro" @@ -1703,8 +1710,8 @@ msgstr "Podes engadir libros cando comeces a usar %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Estante" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Revisar" @@ -2166,19 +2173,19 @@ msgstr "A túa Conta" #: bookwyrm/templates/landing/login.html:4 msgid "Login" -msgstr "Conectar" +msgstr "Acceder" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" -msgstr "Conecta" +msgstr "Accede" #: bookwyrm/templates/landing/login.html:15 msgid "Success! Email address confirmed." msgstr "Correcto! Enderezo de email confirmado." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Nome de usuaria:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Contrasinal:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Esqueceches o contrasinal?" @@ -2219,23 +2226,23 @@ msgstr "Restablecer contrasinal" msgid "%(site_name)s search" msgstr "Busca en %(site_name)s" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Busca un libro, usuaria ou lista" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Menú principal de navegación" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Fonte" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Axustes" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Axustes" msgid "Invites" msgstr "Convites" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Desconectar" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Notificacións" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "contrasinal" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Únete" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Publicación correcta" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Erro ao publicar" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentación" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Axuda a %(site_name)s en %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "O código fonte de BookWyrm é público. Podes colaborar ou informar de problemas en GitHub." @@ -2778,7 +2785,7 @@ msgstr "Esta ligazón abre unha ventá emerxente" #: bookwyrm/templates/ostatus/subscribe.html:8 #, python-format msgid "Log in to %(sitename)s" -msgstr "Conectar con %(sitename)s" +msgstr "Entrar en %(sitename)s" #: bookwyrm/templates/ostatus/subscribe.html:10 #, python-format @@ -2797,7 +2804,7 @@ msgstr "Oioioi..." #: bookwyrm/templates/ostatus/subscribe.html:20 msgid "Let's log in first..." -msgstr "Primeiro hai que conectar..." +msgstr "Primeiro hai que acceder..." #: bookwyrm/templates/ostatus/subscribe.html:51 #, python-format @@ -2915,6 +2922,11 @@ msgstr "Acabei \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Comecei \"%(book_title)s\"" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "Deixar \"%(book_title)s\"" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3009,7 +3021,7 @@ msgstr "Engadir un libro manualmente" #: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." -msgstr "Conéctate para importar ou engadir libros." +msgstr "Accede para importar ou engadir libros." #: bookwyrm/templates/search/layout.html:16 msgid "Search query" @@ -3067,13 +3079,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Data de inicio:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Data de fin:" @@ -3122,11 +3134,11 @@ msgstr "Editar anuncio" #: bookwyrm/templates/settings/announcements/edit_announcement.html:45 msgid "Announcement content" -msgstr "" +msgstr "Contido do anuncio" #: bookwyrm/templates/settings/announcements/edit_announcement.html:57 msgid "Details:" -msgstr "" +msgstr "Detalles:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:65 msgid "Event date:" @@ -3134,11 +3146,11 @@ msgstr "Data do evento:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:73 msgid "Display settings" -msgstr "" +msgstr "Axustes da pantalla" #: bookwyrm/templates/settings/announcements/edit_announcement.html:98 msgid "Color:" -msgstr "" +msgstr "Cor:" #: bookwyrm/templates/settings/dashboard/dashboard.html:6 #: bookwyrm/templates/settings/dashboard/dashboard.html:8 @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Taboleiro" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Total de usuarias" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s denuncia aberta" msgstr[1] "%(display_count)s denuncias abertas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "hai que revisar %(display_count)s dominio" msgstr[1] "hai que revisar %(display_count)s dominios" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s solicitude de convite" msgstr[1] "%(display_count)s solicitudes de convite" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "Hai unha actualización dispoñible! Estás a executar v%(current)s e a última versión é %(available)s." + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Actividade na instancia" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Días" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Rexistros de usuarias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Actividade do estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Traballos creados" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Comentarios da moderación" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentario" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "Non hai denuncias." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Info da instancia" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Imaxes" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Contido web do pé" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Rexistro" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "Axustes gardados" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "Non se gardaron os axustes" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Nome da instancia:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Lema:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Descrición da instancia:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Descrición curta:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Utilizado na vista previa da instancia en joinbookwyrm.com. Non admite HTML ou Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Código de conduta:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Política de privacidade:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logo:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Logo pequeno:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Ligazón de axuda:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Título de axuda:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "Email de Admin:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Info adicional:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Abrir rexistro" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Permitir solicitudes de convite" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Requerir que a usuaria confirme o enderezo de email" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Recomendable se o rexistro está aberto)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Texto se o rexistro está pechado:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Texto para a solicitude do convite:" @@ -3928,6 +3953,118 @@ msgstr "Usuaria reactivada" msgid "Access level:" msgstr "Nivel de acceso:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "Configurar BookWyrm" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "A túa conta como admin e usuaria" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "Crea a túa conta" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "Chave de admin:" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "Creouse unha chave de Admin ao instalar BookWyrm. Podes obter a túa chave executando ./bw-dev admin_code desde a liña de comandos do teu servidor." + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "Como Admin, poderás configurar o nome da instancia e a descrición, así como moderar a instancia. Esto significa que terás acceso a información privada das usuarias e terás a responsabilidade de xestionar as denuncias e loitar contra malos comportamentos e spam." + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "Unha vez configurada a instancia, poderás conceder a outras usuarias o rol de administración ou moderación desde o panel de administración." + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "Aprende máis acerca da moderación" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "Configuración da Instancia" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "Comproba que todo é correcto antes de continuar" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "Estás executando BookWyrm en modo depuración. Esto non debería acontecer nunca nun entorno de produción." + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "Semella non está ben configurado o dominio. Non debería incluír o protocolo nin barras." + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "Estás executando BookWyrm en modo produción sen https. En produción, USE_HTTPS debería estar activado." + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "Dominio da instancia:" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "Protocolo:" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "Usando S3:" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "Idioma por defecto da interface:" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "Remitente do email:" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "Activar vista previa de imaxes:" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "Activar miniaturas das imaxes:" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "Está todo ben?" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "Esta é a última oportunidade para establecer o dominio e protocolo." + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "Podes cambiar os axustes da instancia no ficheiro .env no teu servidor." + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "Ver instruccións de instalación" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "Axustes da Instancia" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "Instalando BookWyrm" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "Precisas axuda?" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Crear Estante" @@ -4019,7 +4156,7 @@ msgstr[1] "e %(remainder_count_display)s outros" msgid "No cover" msgstr "Sen portada" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s por" @@ -4034,7 +4171,7 @@ msgstr "Promover" msgid "Un-boost" msgstr "Retirar promoción" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Cita" @@ -4324,7 +4461,11 @@ msgstr "Comecei a ler \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quero ler \"%(book_title)s\"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "Elixe ben! Non poderás cambiar o identificador de usuaria." + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Inscribirse" @@ -4694,7 +4835,7 @@ msgstr "Non é un ficheiro csv válido" #: bookwyrm/views/landing/login.py:70 msgid "Username or password are incorrect" -msgstr "O nome de usuaria ou contrasinal non son correctos" +msgstr "As credenciais non son correctas" #: bookwyrm/views/landing/password.py:32 msgid "No user with that email address was found." diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index 8cd0eb41eb2ef8b15702440005605ad51b8475ec..49d2321d5a6630f87c20e0871f26bcc5b0707c1a 100644 GIT binary patch delta 25999 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 d7#p_7J2F\n" "Language-Team: Italian\n" "Language: it\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "Esiste già un utente con questo nome utente" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "Questo dominio è bloccato. Per favore contatta l'amministratore se pensi che si tratti di un errore." -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "Questo collegamento è già stato aggiunto per questo libro. Se non è visibile, il dominio è ancora in sospeso." -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Esiste già un'utenza con questo indirizzo email." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Un giorno" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Una settimana" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Un mese" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Non scade" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} usi" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Illimitato" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Ordina Lista" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Titolo del libro" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Valutazione" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Ordina per" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Crescente" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Decrescente" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "La data di fine lettura non può essere precedente alla data di inizio." @@ -139,23 +143,23 @@ msgstr "Cancellazione del moderatore" msgid "Domain block" msgstr "Blocco del dominio" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Audiolibro" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Graphic novel" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Copertina rigida" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Brossura" @@ -183,7 +187,7 @@ msgstr "%(value)s non è un Id remoto valido" msgid "%(value)s is not a valid username" msgstr "%(value)s non è un nome utente valido" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome utente" @@ -257,73 +261,73 @@ msgstr "Citazioni" msgid "Everything else" msgstr "Tutto il resto" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "La tua timeline" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Home" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Timeline dei libri" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libri" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English (Inglese)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch (Tedesco)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español (Spagnolo)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Galiziano)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français (Francese)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk (Norvegese)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portoghese Brasiliano)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portoghese europeo)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Svedese)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Cinese Semplificato)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Cinese Tradizionale)" @@ -395,7 +399,7 @@ msgstr "I moderatori e gli amministratori di %(site_name)s mantengono il sito at msgid "Moderator" msgstr "Moderatori" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Stati pubblicati:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Versione del software:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Informazioni su %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Luoghi" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Anteprima copertina del libro" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Questo link ti sta portando a: %(link_url)s.
È qui che vuoi andare?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continua" @@ -1284,7 +1290,7 @@ msgstr "Codice di conferma:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Invia" @@ -1301,7 +1307,7 @@ msgstr "Invia di nuovo email di conferma" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "Indirizzo Email:" @@ -1323,7 +1329,7 @@ msgstr "Comunità federata" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Directory" @@ -1443,7 +1449,7 @@ msgstr "%(username)s ha citato %(username)s" msgstr "Messaggi diretti con %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Messaggi Diretti" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Aggiornamenti" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "I Tuoi Libri" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "Cosa stai leggendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Cerca un libro" @@ -1703,8 +1710,8 @@ msgstr "Puoi aggiungere libri quando inizi a usare %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Scaffale" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Recensione" @@ -2169,7 +2176,7 @@ msgid "Login" msgstr "Accedi" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Accedi" @@ -2178,7 +2185,7 @@ msgstr "Accedi" msgid "Success! Email address confirmed." msgstr "Indirizzo email confermato con successo." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Nome utente:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Password:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Hai dimenticato la tua password?" @@ -2219,23 +2226,23 @@ msgstr "Reimposta password" msgid "%(site_name)s search" msgstr "Ricerca %(site_name)s" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Cerca un libro, un utente o una lista" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Barra di navigazione principale" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Feed" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Impostazioni" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Impostazioni" msgid "Invites" msgstr "Inviti" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Esci" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Notifiche" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "password" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Entra" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Stato pubblicato correttamente" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Errore nel pubblicare lo stato" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentazione" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Supporta %(site_name)s su %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "Il codice sorgente di BookWyrm è disponibile liberamente. Puoi contribuire o segnalare problemi su GitHub." @@ -2915,6 +2922,11 @@ msgstr "Termina \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Inizia \"%(book_title)s\"" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "Termina \"%(book_title)s\"" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3067,13 +3079,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Data d'inizio:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Data di fine:" @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Dashboard" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Totale utenti" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s report aperto" msgstr[1] "%(display_count)s reports aperti" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s dominio necessita di una revisione" msgstr[1] "%(display_count)s domini necessitano di una revisione" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s richiesta d'invito" msgstr[1] "%(display_count)s richieste d'invito" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "È disponibile un aggiornamento! Stai eseguendo v%(current)s e l'ultima versione è %(available)s." + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Attività di Istanza" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervallo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Giorni" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Settimane" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Attività di registrazione dell'utente" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Attività di stato" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Opere create" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Commenti del moderatore" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Commenta" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "Nessun rapporto trovato." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Informazioni istanza" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Immagini" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Contenuto del footer" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Registrazione" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "Impostazioni salvate" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "Impossibile salvare le impostazioni" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Nome dell'istanza:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Tagline:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Descrizione dell'istanza:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Breve descrizione:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Usato quando l'istanza è visualizzata in anteprima su joinbookwyrm.com. Non supporta HTML o Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Codice di comportamento:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Informativa sulla privacy:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logo:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Logo piccolo:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Link supporto:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Titolo supporto:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "Email amministratore:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Informazioni aggiuntive:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Consenti registrazioni" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Consenti richieste di invito" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Richiedi agli utenti per confermare l'indirizzo email" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Raccomandato se la registrazione è aperta)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Registrazioni chiuse:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Testo della richiesta di invito:" @@ -3928,6 +3953,118 @@ msgstr "Annulla sospensione utente" msgid "Access level:" msgstr "Livello di accesso:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "Configura BookWyrm" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "Il tuo account come utente e amministratore" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "Crea il tuo account" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "Chiave amministratore:" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "Una chiave di amministrazione è stata creata quando hai installato BookWyrm. È possibile ottenere la chiave di amministrazione eseguendo ./bw-dev admin_code dalla riga di comando sul tuo server." + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "Come amministratore, potrai configurare il nome e le informazioni dell'istanza e moderare l'istanza. Questo significa che avrai accesso a informazioni private sui tuoi utenti e sarai responsabile di rispondere a segnalazioni di comportamento non idoneo o spam." + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "Una volta che l'istanza è configurata, è possibile promuovere altri utenti a moderatore o ruoli di amministratore dal pannello di amministrazione." + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "Scopri di più sulla moderazione" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "Configurazione Istanza" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "Assicurati che tutto sia corretto prima di procedere" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "Stai eseguendo BookWyrm in modalità debug. Questa modalità non dovrebbe mai essere utilizzata in un ambiente di produzione." + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "Il tuo dominio sembra essere mal configurato. Non dovrebbe includere protocollo o slash." + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "Stai eseguendo BookWyrm in modalità di produzione senza https. USE_HTTPS dovrebbe essere abilitato in produzione." + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "Dominio dell'istanza:" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "Protocollo:" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "Utilizzo S3:" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "Visualizzazione" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "Lingua predefinita dell'interfaccia:" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "Mittente email:" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "Abilita anteprima immagini:" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "Abilita miniature immagini:" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "Sembra tutto corretto?" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "Questa è la tua ultima possibilità d'impostare il tuo dominio e protocollo." + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "Puoi modificare le impostazioni dell'istanza nel file .env sul tuo server." + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "Visualizza le istruzioni di installazione" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "Configurazione Istanza" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "Installare BookWyrm" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "Hai bisogno di aiuto?" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Crea Scaffale" @@ -4019,7 +4156,7 @@ msgstr[1] "e %(remainder_count_display)s altri" msgid "No cover" msgstr "Nessuna copertina" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s da" @@ -4034,7 +4171,7 @@ msgstr "Boost" msgid "Un-boost" msgstr "Un-boost" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Citazione" @@ -4324,7 +4461,11 @@ msgstr "Inizia \"%(book_title)s \"" msgid "Want to Read \"%(book_title)s\"" msgstr "Vuoi leggere \"%(book_title)s \"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "Scegli con saggezza! Il tuo nome utente non può essere cambiato." + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Iscriviti" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index a51eac201557dc1ecf38e77eeb7661cf8c739dbd..a58ec0c8dda427b63ebbfedb462e1476a4ee5879 100644 GIT binary patch delta 22 ecmew{gZ0M@)(smEvRfz^m|7VdZr*Y5Ko\n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "" -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "" -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Vartotojas su šiuo el. pašto adresu jau yra." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Diena" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Savaitė" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Mėnuo" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Galiojimas nesibaigia" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} naudoja" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Neribota" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Kaip pridėta į sąrašą" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Knygos antraštė" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Įvertinimas" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Rūšiuoti pagal" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Didėjančia tvarka" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Mažėjančia tvarka" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "Skaitymo pabaigos data negali būti prieš skaitymo pradžios datą." @@ -139,23 +143,23 @@ msgstr "Moderatorius ištrynė" msgid "Domain block" msgstr "Blokuoti pagal domeną" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Audioknyga" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "Elektroninė knyga" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Grafinė novelė" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Knyga kietais viršeliais" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Knyga minkštais viršeliais" @@ -183,7 +187,7 @@ msgstr "%(value)s yra negaliojantis remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s yra negaliojantis naudotojo vardas" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "naudotojo vardas" @@ -257,73 +261,73 @@ msgstr "Citatos" msgid "Everything else" msgstr "Visa kita" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Pagrindinė siena" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Pagrindinis" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Knygų siena" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Knygos" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English (Anglų)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch (Vokiečių)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español (Ispanų)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (galisų)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italų (Italian)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français (Prancūzų)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norvegų (Norwegian)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português brasileiro (Brazilijos portugalų)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europos portugalų)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Švedų)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Supaprastinta kinų)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradicinė kinų)" @@ -395,7 +399,7 @@ msgstr "Svetainės %(site_name)s moderatoriai ir administratoriai nuolat atnauji msgid "Moderator" msgstr "Moderatorius" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administravimas" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Publikuotos būsenos:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Serverio programinės įrangos versija:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Apie %(site_name)s" @@ -741,7 +746,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -864,7 +869,7 @@ msgid "Places" msgstr "Vietos" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -923,7 +928,7 @@ msgstr "Peržiūrėti knygos viršelį" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1220,6 +1225,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Nuoroda veda į: %(link_url)s.
Ar tikrai norite ten nueiti?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Tęsti" @@ -1293,7 +1299,7 @@ msgstr "Patvirtinimo kodas:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Siųsti" @@ -1310,7 +1316,7 @@ msgstr "Dar kartą išsiųsti patvirtinimo nuorodą" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "El. pašto adresas:" @@ -1332,7 +1338,7 @@ msgstr "Sujungta bendruomenė" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Bendruomenė" @@ -1456,7 +1462,7 @@ msgstr "%(username)s citavo %(username)s" msgstr "Asmeninis susirašinėjimas su %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Asmeninės žinutės" @@ -1629,7 +1636,7 @@ msgid "Updates" msgstr "Atnaujinimai" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Jūsų knygos" @@ -1697,7 +1704,7 @@ msgid "What are you reading?" msgstr "Ką skaitome?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Ieškoti knygos" @@ -1716,8 +1723,8 @@ msgstr "Kai pradedate naudotis %(site_name)s, galite pridėti knygų." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2045,7 +2052,7 @@ msgstr "Lentyna" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Apžvalga" @@ -2190,7 +2197,7 @@ msgid "Login" msgstr "Prisijungti" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Prisijunkite" @@ -2199,7 +2206,7 @@ msgstr "Prisijunkite" msgid "Success! Email address confirmed." msgstr "Džiugu, el. pašto adresas patvirtintas." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2207,12 +2214,12 @@ msgstr "Naudotojo vardas:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Slaptažodis:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Pamiršote slaptažodį?" @@ -2240,23 +2247,23 @@ msgstr "Atstatyti slaptažodį" msgid "%(site_name)s search" msgstr "%(site_name)s paieška" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Ieškoti knygos, naudotojo arba sąrašo" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Pagrindinis navigacijos meniu" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Srautas" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Nustatymai" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2264,42 +2271,42 @@ msgstr "Nustatymai" msgid "Invites" msgstr "Pakvietimai" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Atsijungti" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Pranešimai" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "slaptažodis" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Prisijungti" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Būsena publikuota sėkmingai" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Klaida, publikuojant būseną" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Dokumentacija" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Paremkite %(site_name)s per %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "„BookWyrm“ šaltinio kodas yra laisvai prieinamas. Galite prisidėti arba pranešti apie klaidas per GitHub." @@ -2936,6 +2943,11 @@ msgstr "Užbaigti „%(book_title)s“" msgid "Start \"%(book_title)s\"" msgstr "Pradėti „%(book_title)s“" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3088,13 +3100,13 @@ msgstr "Netiesa" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Pradžios data:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Pabaigos data:" @@ -3168,7 +3180,7 @@ msgid "Dashboard" msgstr "Suvestinė" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Iš viso naudotojų" @@ -3195,7 +3207,7 @@ msgstr[1] "%(display_count)s atviros ataskaitos" msgstr[2] "%(display_count)s atviros ataskaitos" msgstr[3] "%(display_count)s atvirų ataskaitų" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" @@ -3204,7 +3216,7 @@ msgstr[1] "%(display_count)s domenus reikia peržiūrėti" msgstr[2] "%(display_count)s domenus reikia peržiūrėti" msgstr[3] "%(display_count)s domenus reikia peržiūrėti" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" @@ -3213,31 +3225,36 @@ msgstr[1] "%(display_count)s prašymai pakviesti" msgstr[2] "%(display_count)s prašymų pakviesti" msgstr[3] "%(display_count)s prašymai pakviesti" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Serverio statistika" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervalas:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Dienos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Savaitės" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Naudotojo prisijungimo veikla" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Būsenos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Darbai sukurti" @@ -3668,7 +3685,7 @@ msgid "Moderator Comments" msgstr "Moderatoriaus komentarai" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Komentuoti" @@ -3731,102 +3748,110 @@ msgid "No reports found." msgstr "Pranešimų nerasta." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Serverio informacija" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Paveikslėliai" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Poraštės turinys" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Registracija" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Serverio pavadinimas:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Žymos linija:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Serverio aprašymas:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Trumpas aprašymas:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Naudota, kai turinys buvo peržiūrimas per joinbookwyrm.com. Nepalaiko HTML arba „Markdown“." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Elgesio kodeksas:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Privatumo politika:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logotipas:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Mažas logotipas:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Puslapio ikonėlė:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Paramos nuoroda:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Paramos pavadinimas:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "Administratoriaus el. paštas:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Papildoma informacija:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Leisti registruotis" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Leisti prašyti kvietimų" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Reikalauti el. pašto patvirtinimo" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Rekomenduojama, jei leidžiama registruotis)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Užrakintos registracijos tekstas:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Kvietimo prašymo tekstas:" @@ -3957,6 +3982,118 @@ msgstr "Atblokuoti narį" msgid "Access level:" msgstr "Priėjimo lygis:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "" + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "" + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "" + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "" + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "" + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Sukurti lentyną" @@ -4052,7 +4189,7 @@ msgstr[3] "ir %(remainder_count_display)s kitų" msgid "No cover" msgstr "Nėra viršelio" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s" @@ -4067,7 +4204,7 @@ msgstr "Populiarinti" msgid "Un-boost" msgstr "Nepopuliarinti" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Citata" @@ -4367,7 +4504,11 @@ msgstr "Pradėti „%(book_title)s“" msgid "Want to Read \"%(book_title)s\"" msgstr "Noriu perskaityti „%(book_title)s“" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "" + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Registruotis" diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index 294ff6ad47735b6cbf782d6805a8eba343a54fbf..a37ff8fb7f43bbcdd5f1d0a30981940871a8c1d3 100644 GIT binary patch delta 22 ecmccnk>&13mJJ&ZvRfz^m|7VdZr*WFwHyF`i3#xl delta 22 ecmccnk>&13mJJ&ZvYRUyT3Q)fZr*WFwHyF`+X?*u diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po index 3cbb7b5fa..913913a00 100644 --- a/locale/no_NO/LC_MESSAGES/django.po +++ b/locale/no_NO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-17 16:58+0000\n" -"PO-Revision-Date: 2022-02-17 19:39\n" +"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"PO-Revision-Date: 2022-02-18 05:31\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Norwegian\n" "Language: no\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "" -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "" -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Den e-postadressen er allerede registrert." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Én dag" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Én uke" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Én måned" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Uendelig" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} ganger" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Ubegrenset" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Liste rekkefølge" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Boktittel" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Vurdering" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Sorter etter" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Stigende" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Synkende" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "Sluttdato kan ikke være før startdato." @@ -139,23 +143,23 @@ msgstr "Moderatør sletting" msgid "Domain block" msgstr "Domeneblokkering" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Lydbok" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "e-bok" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Tegneserie" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Innbundet" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Paperback" @@ -183,7 +187,7 @@ msgstr "%(value)s er en ugyldig remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s er et ugyldig brukernavn" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "brukernavn" @@ -257,73 +261,73 @@ msgstr "Sitater" msgid "Everything else" msgstr "Andre ting" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Lokal tidslinje" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Hjem" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Boktidslinja" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bøker" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English (Engelsk)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch (Tysk)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español (Spansk)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano (Italiensk)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français (Fransk)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisk)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk (Norsk)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português - Brasil (Brasiliansk portugisisk)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisisk)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Svensk)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Forenklet kinesisk)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradisjonelt kinesisk)" @@ -395,7 +399,7 @@ msgstr "%(site_name)s sine moderatorer og administratorer holder nettsida oppe o msgid "Moderator" msgstr "Moderator" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Statuser lagt ut:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Programvareversjon:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Om %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Steder" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Bokomslag forhåndsvisning" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Denne lenka sender deg til: %(link_url)s.
Er det dit du vil dra?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Fortsett" @@ -1284,7 +1290,7 @@ msgstr "Bekreftelseskode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Send inn" @@ -1301,7 +1307,7 @@ msgstr "Send e-post på nytt" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "E-post adresse:" @@ -1323,7 +1329,7 @@ msgstr "Føderte samfunn" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Katalog" @@ -1443,7 +1449,7 @@ msgstr "%(username)s siterte %(username)s" msgstr "Direktemeldinger med %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Direktemeldinger" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Oppdateringer" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Bøkene dine" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "Hva er det du leser nå?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Søk etter en bok" @@ -1703,8 +1710,8 @@ msgstr "Du kan legge til bøker når du begynner å bruke %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Hylle" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Anmeldelse" @@ -2169,7 +2176,7 @@ msgid "Login" msgstr "Logg inn" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Logg inn" @@ -2178,7 +2185,7 @@ msgstr "Logg inn" msgid "Success! Email address confirmed." msgstr "Vellykket! E-postadressen din er bekreftet." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Brukernavn:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Passord:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Glemt passord?" @@ -2219,23 +2226,23 @@ msgstr "Nullstill passordet" msgid "%(site_name)s search" msgstr "%(site_name)s søk" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Søk etter bok, medlem eller liste" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Hovednavigasjonsmeny" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Strøm" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Innstillinger" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Innstillinger" msgid "Invites" msgstr "Invitasjoner" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Logg ut" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Varsler" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "passord" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Delta" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Status ble opprettet" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Feil ved lagring av status" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Dokumentasjon" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Støtt %(site_name)s på %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrms kildekode er fritt tilgjengelig. Du kan bidra eller rapportere problemer på GitHub." @@ -2915,6 +2922,11 @@ msgstr "Fullfør \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Start \"%(book_title)s" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3067,13 +3079,13 @@ msgstr "Usant" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Startdato:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Sluttdato:" @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Kontrollpanel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Totalt antall brukere" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s åpen rapport" msgstr[1] "%(display_count)s åpne rapporter" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s domene må godkjennes" msgstr[1] "%(display_count)s domener må godkjennes" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s invitasjonsforespørsel" msgstr[1] "%(display_count)s invitasjonsforespørsler" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Instansaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Dager" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Uker" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Brukerregistreringsaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Statusaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Verker laget" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Moderatorkommentarer" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Kommentar" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "Ingen rapporter funnet." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Instansinformasjon" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Bilder" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Bunntekst Innhold" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Registrering" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Instansnavn:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Slagord:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Instansbeskrivelse:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Kort beskrivelse:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Brukes når instansen blir forhåndsvist på joinbookwyrm.com. Støtter ikke HTML eller Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Atferdsregler:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Personvernregler:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logo:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Logo liten:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Lenke til brukerstøtte:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Tittel på brukerstøtte:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "Admin e-post:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Ytterligere info:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Tillat registrering" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Tillat invitasjonsforespørsler" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Medlemmer må bekrefte e-postadresse" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(anbefales for åpen registrering)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Registrering lukket tekst:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Invitasjonsforespørsel tekst:" @@ -3928,6 +3953,118 @@ msgstr "Reaktivér bruker" msgid "Access level:" msgstr "Tilgangsnivå:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "" + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "" + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "" + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "" + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "" + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Lag hylle" @@ -4019,7 +4156,7 @@ msgstr[1] "og %(remainder_count_display)s andre" msgid "No cover" msgstr "Intet omslag" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s av" @@ -4034,7 +4171,7 @@ msgstr "Støtt" msgid "Un-boost" msgstr "Fjern støtte" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Sitat" @@ -4324,7 +4461,11 @@ msgstr "Start \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Har lyst til å lese \"%(book_title)s\"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "" + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Registrer deg" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index be5cb9652d35fe9b5b0b8a347999f58eb1855b75..f3b2856b74be2a1faa670b899c2e53777bf9c560 100644 GIT binary patch delta 25912 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 F9{>$WxTXLA delta 21967 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 co!evV8KYRIN4hfdP5\n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "Um usuário com este nome já existe" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "Este domínio está bloqueado. Entre em contato com a administração se você acha que isso é um engano." -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "Este link e tipo de arquivo já foram adicionados ao livro. Se não estiverem visíveis, o domínio ainda está em processo de análise." -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Já existe um usuário com este endereço de e-mail." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Um dia" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Uma semana" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Um mês" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Não expira" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Ilimitado" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Ordem de inserção" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Avaliação" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Organizar por" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Crescente" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Decrescente" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "A data de término da leitura não pode ser anterior a de início." @@ -139,23 +143,23 @@ msgstr "Exclusão de moderador" msgid "Domain block" msgstr "Bloqueio de domínio" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Audiolivro" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "e-book" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Graphic novel" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Capa dura" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Capa mole" @@ -183,7 +187,7 @@ msgstr "%(value)s não é um remote_id válido" msgid "%(value)s is not a valid username" msgstr "%(value)s não é um nome de usuário válido" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome de usuário" @@ -257,73 +261,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Todo o resto" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Linha do tempo" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Página inicial" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Linha do tempo dos livros" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English (Inglês)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Galego)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português do Brasil)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Português Europeu)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Sueco)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -395,7 +399,7 @@ msgstr "Moderadores/as e administradores/as de %(site_name)s mantêm o site func msgid "Moderator" msgstr "Moderador/a" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Publicações:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Versão do software:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Sobre %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Lugares" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Pré-visualização da capa" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Este link te levará a: %(link_url)s.
Você quer mesmo ir?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuar" @@ -1284,7 +1290,7 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Enviar" @@ -1301,7 +1307,7 @@ msgstr "Reenviar link de confirmação" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "Endereço de e-mail:" @@ -1323,7 +1329,7 @@ msgstr "Comunidade federada" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Diretório" @@ -1443,7 +1449,7 @@ msgstr "%(username)s citou %(username)s" msgstr "Mensagens diretas com %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Mensagens diretas" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Atualizações" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Seus livros" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "O que você está lendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Pesquisar livro" @@ -1703,8 +1710,8 @@ msgstr "Você pode adicionar livros quando começar a usar o %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Estante" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Resenhar" @@ -2169,7 +2176,7 @@ msgid "Login" msgstr "Entrar" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Entrar" @@ -2178,7 +2185,7 @@ msgstr "Entrar" msgid "Success! Email address confirmed." msgstr "Endereço de e-mail confirmado com sucesso." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Usuário:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Senha:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Esqueceu sua senha?" @@ -2219,23 +2226,23 @@ msgstr "Redefinir senha" msgid "%(site_name)s search" msgstr "Busca %(site_name)s" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Pesquisar livro, usuário ou lista" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Menu de navegação principal" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Novidades" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Configurações" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Configurações" msgid "Invites" msgstr "Convites" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Sair" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Notificações" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "senha" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Registrar" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Publicação feita com sucesso" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Erro ao publicar" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentação" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Apoie a instância %(site_name)s: %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "O código-fonte da BookWyrm está disponível gratuitamente. Você pode contribuir ou reportar problemas no GitHub." @@ -2915,6 +2922,11 @@ msgstr "Terminar \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Começar \"%(book_title)s\"" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "Parar \"%(book_title)s\"" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3067,13 +3079,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Data de início:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Data final:" @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Painel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Total de usuários" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s denúncia aberta" msgstr[1] "%(display_count)s denúncias abertas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s domínio precisa ser analisado" msgstr[1] "%(display_count)s domínios precisam ser analisados" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s pedido de convite" msgstr[1] "%(display_count)s pedidos de convite" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "Há uma atualização disponível! Você está usando a v%(current)s e o último lançamento é %(available)s." + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Atividade da instância" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Novos usuários" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Publicações" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Obras criadas" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Comentários da moderação" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentar" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "Nenhuma denúncia encontrada." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Informações da instância" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Imagens" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Conteúdo do rodapé" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Cadastro" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "Configurações salvas" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "Configurações não salvas" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Nome da instância:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Subtítulo:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Descrição da instância:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Descrição curta:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Mostrado quando a instância é vista em joinbookwyrm.com. Não é compatível com HTML ou Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Código de conduta:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Política de privacidade:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logo:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Logo pequeno:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Link de suporte:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Título de suporte:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "E-mail da administração:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Informações adicionais:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Permitir cadastro" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Permitir solicitação de convites" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Exigir que usuários confirmem o e-mail" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Recomendado se o cadastro estiver aberto)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Texto quando o cadastro está fechado:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Texto solicitação de convite:" @@ -3928,6 +3953,118 @@ msgstr "Reativar usuário" msgid "Access level:" msgstr "Nível de acesso:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "Configurar a BookWyrm" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "Sua conta enquanto usuário e administrador" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "Crie sua conta" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "Chave de administração:" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "Uma chave de administração foi criada quando você instalou a BookWyrm. Você pode consultar a sua executando ./bw-dev admin_code na linha de comando de seu servidor." + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "Como administrador/a você poderá configurar o nome da instância e a descrição, além de moderá-la. Isso quer dizer que você terá acesso a informações particulares de seus usuários e se tornará responsável por analisar denúncias de mau comportamento e spam." + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "Uma vez configurada a instância você poderá promover outros usuários a papeis de moderação ou administração no painel administrativo." + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "Aprenda mais sobre moderação" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "Configuração da instância" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "Certifique-se de que tudo está correto antes de prosseguir" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "Você está rodando a BookWyrm no modo debug, que nunca deve ser usado em um ambiente de produção." + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "Seu domínio parece estar mal configurado. Ele não deve incluir protocolo nem barras." + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "Você está rodando a BookWyrm em produção sem https. USE_HTTPS deve ser habilitado em produção." + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "Domínio da instância:" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "Protocolo:" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "Usar S3:" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "Exibir" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "Idioma padrão da interface:" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "Remetente dos emails:" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "Ativar imagens na pré-visualização:" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "Ativar miniaturas de imagens:" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "Tudo está correto?" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "Esta é sua última chance de configurar seu domínio e protocolo." + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "Você pode mudar as configurações da instância no arquivo .env em seu servidor." + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "Ver instruções da instalação" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "Configuração da instância" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "Instalando a BookWyrm" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "Precisa de ajuda?" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Criar estante" @@ -4019,7 +4156,7 @@ msgstr[1] "e %(remainder_count_display)s outros" msgid "No cover" msgstr "Sem capa" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s de" @@ -4034,7 +4171,7 @@ msgstr "Compartilhar" msgid "Un-boost" msgstr "Descompartilhar" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Citar" @@ -4324,7 +4461,11 @@ msgstr "Começar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quero ler \"%(book_title)s\"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "Escolha com sabedoria! Seu nome de usuário não poderá ser mudado." + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Cadastrar" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 8a538498b66539a828ab40519528909ae8649144..028fb43db5b68ed7f22fca449c4d668c4e447bc2 100644 GIT binary patch delta 22 ecmaE~gXPf\n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "" -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "" -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "Já existe um utilizador com este E-Mail." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "Um Dia" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "Uma Semana" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "Um Mês" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Não Expira" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} utilizações" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Ilimitado" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Ordem da Lista" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Classificação" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Ordenar Por" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "" @@ -139,23 +143,23 @@ msgstr "Exclusão do moderador" msgid "Domain block" msgstr "Bloqueio de domínio" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Livro-áudio" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Capa dura" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Capa mole" @@ -183,7 +187,7 @@ msgstr "%(value)s não é um remote_id válido" msgid "%(value)s is not a valid username" msgstr "%(value)s não é um nome de utilizador válido" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome de utilizador" @@ -257,73 +261,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Tudo o resto" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Cronograma Inicial" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Início" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Cronograma de Livros" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "Inglês" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (lituano)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português brasileiro)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português (Português Europeu)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -395,7 +399,7 @@ msgstr "" msgid "Moderator" msgstr "Moderador" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Estados publicados:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Versão do software:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Acerca de %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Lugares" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Visualização da capa" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1209,6 +1214,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "" @@ -1282,7 +1288,7 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Submeter" @@ -1299,7 +1305,7 @@ msgstr "Reenviar um E-Mail de confirmação" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "E-Mail:" @@ -1321,7 +1327,7 @@ msgstr "Comunidade federada" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Diretório" @@ -1441,7 +1447,7 @@ msgstr "%(username)s citou %(username)s" msgstr "Mensagens Diretas com %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Mensagens Diretas" @@ -1614,7 +1621,7 @@ msgid "Updates" msgstr "Atualizações" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Os teus Livros" @@ -1682,7 +1689,7 @@ msgid "What are you reading?" msgstr "O que andas a ler?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Pesquisar por um livro" @@ -1701,8 +1708,8 @@ msgstr "Podes adicionar livros quando começas a usar %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2022,7 +2029,7 @@ msgstr "Estante" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Critica" @@ -2167,7 +2174,7 @@ msgid "Login" msgstr "Login" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Iniciar sessão" @@ -2176,7 +2183,7 @@ msgstr "Iniciar sessão" msgid "Success! Email address confirmed." msgstr "Sucesso! O teu E-Mail está confirmado." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2184,12 +2191,12 @@ msgstr "Nome de utilizador:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Palavra-passe:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Esqueces-te a tua palavra-passe?" @@ -2217,23 +2224,23 @@ msgstr "Redefinir palavra-passe" msgid "%(site_name)s search" msgstr "%(site_name)s pesquisa" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Procurar por um livro, utilizador, ou lista" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Menu principal" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Feed" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Configurações" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2241,42 +2248,42 @@ msgstr "Configurações" msgid "Invites" msgstr "Convites" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Terminar sessão" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Notificações" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "palavra-passe" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Junta-te" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Estado publicado com sucesso" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Erro ao publicar estado" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentação" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Apoia %(site_name)s em %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "O código de fonte do BookWyrm está disponível gratuitamente. E também podes contribuir ou reportar problemas no GitHub." @@ -2913,6 +2920,11 @@ msgstr "Concluir \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Começar \"%(book_title)s\"" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3065,13 +3077,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Data de início:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Data de conclusão:" @@ -3145,7 +3157,7 @@ msgid "Dashboard" msgstr "Painel de controlo" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Total de utilizadores" @@ -3170,45 +3182,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s denúncia aberta" msgstr[1] "%(display_count)s denúncias abertas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s pedido de convite" msgstr[1] "%(display_count)s pedidos de convite" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Atividade do domínio" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Atividade de inscrição do utilizador" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Atividade de estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Obras criadas" @@ -3637,7 +3654,7 @@ msgid "Moderator Comments" msgstr "Comentários do Moderador" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentar" @@ -3700,102 +3717,110 @@ msgid "No reports found." msgstr "Nenhuma denúncia encontrada." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Informação do domínio" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Imagens" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Conteúdo do Rodapé" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Registo" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Nome do domínio:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Lema / Slogan:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Descrição do domínio:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Breve descrição:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Usado quando o domínio é pré-visualizado em joinbookwyrm.com. Não suporta HTML ou Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Código de Conduta:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Política de Privacidade:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logotipo:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Pequeno logótipo:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Links de suporte:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Título de suporte:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "E-Mail da administração:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Informação adicional:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Permitir novos registos" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Permitir solicitações de convite" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Requir utilizadores confirmarem o E-Mail" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Recomendado se o registo estiver aberto)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Mensagem caso o registo esteja fechado:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Texto da solicitação de convite:" @@ -3926,6 +3951,118 @@ msgstr "Retirar a suspensão do utilizador" msgid "Access level:" msgstr "Nível de acesso:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "" + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "" + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "" + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "" + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "" + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Criar prateleira" @@ -4017,7 +4154,7 @@ msgstr[1] "e %(remainder_count_display)s outros" msgid "No cover" msgstr "Sem capa" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s por" @@ -4032,7 +4169,7 @@ msgstr "Partilhar" msgid "Un-boost" msgstr "Despartilhar" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Citação" @@ -4322,7 +4459,11 @@ msgstr "Começar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Queres ler \"%(book_title)s\"\"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "" + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Criar conta" diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo index fb443cc375c3f7aa9e1d248a2d24911ba66981d0..b8312cdf4945f1be8572eece60e861eef9e600e9 100644 GIT binary patch delta 26112 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 E01^fCi~s-t delta 21771 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 diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index 570313515..8538850b0 100644 --- a/locale/sv_SE/LC_MESSAGES/django.po +++ b/locale/sv_SE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-17 16:58+0000\n" -"PO-Revision-Date: 2022-02-17 19:39\n" +"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"PO-Revision-Date: 2022-02-21 11:18\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Swedish\n" "Language: sv\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "En användare med det användarnamnet existerar redan" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "Den här domänen är blockerad. Vänligen kontakta din administratör om du tror att det här är felaktigt." -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "Denna länk med filtyp har redan lagts till för denna bok. Om den inte är synlig så är domänen fortfarande väntande." -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "En användare med den här e-postadressen existerar redan." -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "En dag" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "En vecka" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "En månad" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "Slutar inte gälla" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} använder" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "Obegränsad" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "Listordning" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "Bokens titel" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Betyg" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "Sortera efter" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "Stigande" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "Fallande" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "Slutdatum för läsning kan inte vara före startdatum." @@ -94,15 +98,15 @@ msgstr "Kunde inte hitta en träff för boken" #: bookwyrm/models/announcement.py:11 msgid "None" -msgstr "" +msgstr "Inget" #: bookwyrm/models/announcement.py:12 msgid "Primary" -msgstr "" +msgstr "Primär" #: bookwyrm/models/announcement.py:13 msgid "Success" -msgstr "" +msgstr "Klart" #: bookwyrm/models/announcement.py:14 #: bookwyrm/templates/settings/invites/manage_invites.html:47 @@ -111,11 +115,11 @@ msgstr "Länk" #: bookwyrm/models/announcement.py:15 msgid "Warning" -msgstr "" +msgstr "Varning" #: bookwyrm/models/announcement.py:16 msgid "Danger" -msgstr "" +msgstr "Observera" #: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 @@ -139,23 +143,23 @@ msgstr "Borttagning av moderator" msgid "Domain block" msgstr "Domänblockering" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "Ljudbok" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "eBok" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "Grafisk novell" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "Inbunden" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "Pocketbok" @@ -183,7 +187,7 @@ msgstr "%(value)s är inte ett giltigt remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s är inte ett giltigt användarnamn" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "användarnamn" @@ -257,73 +261,73 @@ msgstr "Citationer" msgid "Everything else" msgstr "Allt annat" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "Tidslinje för Hem" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "Hem" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "Tidslinjer för böcker" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Böcker" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "Engelska" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Tyska (Tysk)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Spanska (Spansk)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italienska (Italiensk)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Franska (Fransk)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Litauiska (Litauisk)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norska (Norska)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português d Brasil (Brasiliansk Portugisiska)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisiska)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska (Svenska)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Förenklad Kinesiska)" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Traditionell Kinesiska)" @@ -395,7 +399,7 @@ msgstr "%(site_name)s's moderatorer och administratörer håller hemsidan uppe o msgid "Moderator" msgstr "Moderator" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administratör" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "Utlagda statusar:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "Programvaruversion:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "Om %(site_name)s" @@ -733,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -854,7 +859,7 @@ msgid "Places" msgstr "Platser" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -913,7 +918,7 @@ msgstr "Förhandsvisning av bokomslag" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1211,6 +1216,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "Den här länken tar dig till: %(link_url)s.
Är det dit du vill åka?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Fortsätt" @@ -1284,7 +1290,7 @@ msgstr "Bekräftelsekod:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Skicka in" @@ -1301,7 +1307,7 @@ msgstr "Skicka bekräftelselänken igen" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "E-postadress:" @@ -1323,7 +1329,7 @@ msgstr "Federerad gemenskap" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "Mapp" @@ -1443,7 +1449,7 @@ msgstr "
%(username)s citerade %(username)s" msgstr "Direktmeddelanden med %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "Direktmeddelanden" @@ -1616,7 +1623,7 @@ msgid "Updates" msgstr "Uppdateringar" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "Dina böcker" @@ -1684,7 +1691,7 @@ msgid "What are you reading?" msgstr "Vad läser du?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "Sök efter en bok" @@ -1703,8 +1710,8 @@ msgstr "Du kan lägga till böcker när du börjar använda %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2024,7 +2031,7 @@ msgstr "Hylla" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "Recension" @@ -2169,7 +2176,7 @@ msgid "Login" msgstr "Inloggning" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "Logga in" @@ -2178,7 +2185,7 @@ msgstr "Logga in" msgid "Success! Email address confirmed." msgstr "Lyckades! E-postadressen bekräftades." -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2186,12 +2193,12 @@ msgstr "Användarnamn:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "Lösenord:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "Glömt ditt lösenord?" @@ -2219,23 +2226,23 @@ msgstr "Återställ lösenordet" msgid "%(site_name)s search" msgstr "%(site_name)s sök" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "Sök efter en bok, användare eller lista" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "Huvudsaklig navigeringsmeny" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "Flöde" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "Inställningar" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2243,42 +2250,42 @@ msgstr "Inställningar" msgid "Invites" msgstr "Inbjudningar" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "Logga ut" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "Aviseringar" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "lösenord" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "Gå med" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "Statusen har publicerats" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "Fel uppstod när statusen skulle publiceras" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Dokumentation" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Stötta %(site_name)s på %(support_title)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm's källkod är fritt tillgängligt. Du kan bidra eller rapportera problem på GitHub." @@ -2915,6 +2922,11 @@ msgstr "Avsluta \"%(book_title)s\"" msgid "Start \"%(book_title)s\"" msgstr "Påbörja \"%(book_title)s\"" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "Påbörja \"%(book_title)s\"" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3067,13 +3079,13 @@ msgstr "Falskt" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "Startdatum:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "Slutdatum:" @@ -3122,11 +3134,11 @@ msgstr "Redigera tillkännagivandet" #: bookwyrm/templates/settings/announcements/edit_announcement.html:45 msgid "Announcement content" -msgstr "" +msgstr "Fyll i meddelandeinnehåll" #: bookwyrm/templates/settings/announcements/edit_announcement.html:57 msgid "Details:" -msgstr "" +msgstr "Detaljer:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:65 msgid "Event date:" @@ -3134,11 +3146,11 @@ msgstr "Datum för evenemang:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:73 msgid "Display settings" -msgstr "" +msgstr "Visningsinställningar" #: bookwyrm/templates/settings/announcements/edit_announcement.html:98 msgid "Color:" -msgstr "" +msgstr "Färg:" #: bookwyrm/templates/settings/dashboard/dashboard.html:6 #: bookwyrm/templates/settings/dashboard/dashboard.html:8 @@ -3147,7 +3159,7 @@ msgid "Dashboard" msgstr "Översiktspanel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "Totalt antal användare" @@ -3172,45 +3184,50 @@ msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s öppen rapport" msgstr[1] "%(display_count)s öppna rapporter" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s domänen behöver granskning" msgstr[1] "%(display_count)s domänerna behöver granskning" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s inbjudningsförfrågning" msgstr[1] "%(display_count)s inbjudningsförfrågningar" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "En uppdatering är tillgänglig! Du kör v%(current)s och den senaste versionen är %(available)s." + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "Instansaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "Dagar" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "Veckor" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "Användarens registreringsaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "Statusaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "Skapade verk" @@ -3639,7 +3656,7 @@ msgid "Moderator Comments" msgstr "Moderatorns kommentarer" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Kommentar" @@ -3702,102 +3719,110 @@ msgid "No reports found." msgstr "Inga rapporter hittades." #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "Info om instans" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "Bilder" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "Sidfotens innehåll" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "Registrering" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "Inställningarna sparades" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "Det gick inte att spara inställningarna" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "Namn på instansen:" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "Tagglinje:" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "Beskrivning av instans:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "Kort beskrivning:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "Används när instansen förhandsgranskas på joinbookwyrm.com. Stödjer inte HTML eller Markdown." -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "Uppförandekod:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "Integritetspolicy:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "Logga:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "Liten logga:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favikon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "Länk för support:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "Supporttitel:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "Administratörens e-postadress:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "Ytterligare info:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "Tillåt registrering" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "Tillåt inbjudningsförfrågningar" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "Kräv att användarna ska bekräfta e-postadressen" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(Rekommenderas om registreringen är öppen)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "Text för stängd registrering:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "Text för inbjudningsförfrågning:" @@ -3928,6 +3953,118 @@ msgstr "Ta bort avstängning för användaren" msgid "Access level:" msgstr "Åtkomstnivå:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "Konfigurera BookWyrm" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "Ditt konto som användare och administratör" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "Skapa konto" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "Admin-nyckel:" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "En administratörsnyckel skapades när du installerade BookWyrm. Du kan få din administratörsnyckel genom att köra ./bw-dev admin_code från kommandotolken på din server." + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "Som administratör kommer du att kunna konfigurera instansens namn och information, samt moderera din instans. Det betyder att du har tillgång till privat information om dina användare och ansvarar för att svara på rapporter om dåligt beteende eller skräppost." + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "När instansen är konfigurerad kan du befordra andra användare till moderator eller administratörsroller från adminpanelen." + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "Lär dig mer om moderering" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "Instanskonfigurering" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "Se till att allt ser rätt ut innan du går vidare" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "Du kör BookWyrm i debug -läge. Detta bör aldrig användas i en produktionsmiljö." + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "Din domän verkar vara felkonfigurerad. Den bör inte inkludera protokoll eller snedstreck." + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "Du kör BookWyrm i produktionsläge utan https. USE_HTTPS bör aktiveras i konfigureringen." + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "Domän för instansen:" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "Protokoll:" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "Användning av S3:" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "Visa" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "Standardspråk för gränssnittet:" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "E-postavsändare:" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "Aktivera förhandsgranskning av bilder:" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "Aktivera bildminiatyrer:" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "Ser allt rätt ut?" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "Detta är din sista chans att ställa in din domän och protokoll." + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "Du kan ändra dina instansinställningar i filen .env på din server." + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "Visa installationsanvisningar" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "Instansinställningar" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "Installerar BookWyrm" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "Behöver du hjälp?" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "Skapa hylla" @@ -4019,7 +4156,7 @@ msgstr[1] "och %(remainder_count_display)s andra" msgid "No cover" msgstr "Inget omslag" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s av" @@ -4034,7 +4171,7 @@ msgstr "Öka" msgid "Un-boost" msgstr "Öka inte" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "Citat" @@ -4324,7 +4461,11 @@ msgstr "Börja \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Vill läsa \"%(book_title)s\"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "Observera! Ditt användarnamn kan inte ändras efter att kontot skapats." + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "Registrera" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 64ef00a88d95a9a80af82ef716f92a2a7fc59840..1d1227f8092b70c68bb692fb532759090142aa83 100644 GIT binary patch delta 18480 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 S#zkDur>uC^vHj_UUIqYAW}bQg literal 77673 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 n+rg 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 diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index faf2aa8c4..503da2590 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-17 16:58+0000\n" -"PO-Revision-Date: 2022-02-17 19:39\n" +"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"PO-Revision-Date: 2022-02-25 15:34\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "使用此用户名的用户已存在" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "此域名已被屏蔽。如果您认为这是一个错误,请联系您的管理员。" -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "此文件类型的链接已经被添加到这本书。如果不可见,域名仍在等待处理中。" -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "已经存在使用该邮箱的用户。" -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "一天" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "一周" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "一个月" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "永不失效" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "{i} 次使用" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "不受限" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "列表顺序" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "书名" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "评价" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "排序方式" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "升序" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "降序" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "阅读完成日期不能早于开始日期。" @@ -94,15 +98,15 @@ msgstr "找不到匹配的书" #: bookwyrm/models/announcement.py:11 msgid "None" -msgstr "" +msgstr "暂无" #: bookwyrm/models/announcement.py:12 msgid "Primary" -msgstr "" +msgstr "初级" #: bookwyrm/models/announcement.py:13 msgid "Success" -msgstr "" +msgstr "成功" #: bookwyrm/models/announcement.py:14 #: bookwyrm/templates/settings/invites/manage_invites.html:47 @@ -111,11 +115,11 @@ msgstr "链接" #: bookwyrm/models/announcement.py:15 msgid "Warning" -msgstr "" +msgstr "警告" #: bookwyrm/models/announcement.py:16 msgid "Danger" -msgstr "" +msgstr "危险" #: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 @@ -139,23 +143,23 @@ msgstr "仲裁员删除" msgid "Domain block" msgstr "域名屏蔽" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "有声书籍" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "电子书" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "图像小说" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "精装" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "平装" @@ -183,7 +187,7 @@ msgstr "%(value)s 不是有效的 remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s 不是有效的用户名" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "用户名" @@ -257,73 +261,73 @@ msgstr "引用" msgid "Everything else" msgstr "所有其它内容" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "主页时间线" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "主页" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "书目时间线" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "书目" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English(英语)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch(德语)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español(西班牙语)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "Galego(加利西亚语)" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "Italiano(意大利语)" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français(法语)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių(立陶宛语)" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "Norsk(挪威语)" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil(巴西葡萄牙语)" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu(欧洲葡萄牙语)" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "Svenska(瑞典语)" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文(繁体中文)" @@ -376,7 +380,7 @@ msgstr "%(site_name)s 上的最用户想读的书籍是 %(title)s has the most divisive ratings of any book on %(site_name)s." -msgstr "在 %(site_name)s 上,%(title)s 这本书有着分裂程度最大的评分。" +msgstr "在 %(site_name)s 上,对 %(title)s 这本书的评分争议较大。" #: bookwyrm/templates/about/about.html:89 msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, reach out and make yourself heard." @@ -395,7 +399,7 @@ msgstr "%(site_name)s 的仲裁员和管理员负责维持站点运行, 执行 msgid "Moderator" msgstr "仲裁员" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "管理员" @@ -414,18 +418,19 @@ msgstr "行为准则" #: bookwyrm/templates/about/layout.html:11 msgid "Active users:" -msgstr "活跃用户:" +msgstr "活跃用户:" #: bookwyrm/templates/about/layout.html:15 msgid "Statuses posted:" -msgstr "发布的状态:" +msgstr "发布的状态:" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" -msgstr "软件版本:" +msgstr "软件版本:" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "关于 %(site_name)s" @@ -566,7 +571,7 @@ msgstr "TA 评分最好的评论" #: bookwyrm/templates/annual_summary/layout.html:251 #, python-format msgid "Their rating: %(rating)s" -msgstr "TA 的评分:%(rating)s" +msgstr "他们的评分:%(rating)s" #: bookwyrm/templates/annual_summary/layout.html:268 #, python-format @@ -713,7 +718,7 @@ msgstr "Goodreads key:" #: bookwyrm/templates/author/edit_author.html:105 msgid "ISNI:" -msgstr "ISNI:" +msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 @@ -729,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -809,7 +814,7 @@ msgstr "%(count)s 个版本" #: bookwyrm/templates/book/book.html:211 msgid "You have shelved this edition in:" -msgstr "此版本已在你的书架上:" +msgstr "此版本已在你的书架上:" #: bookwyrm/templates/book/book.html:226 #, python-format @@ -849,7 +854,7 @@ msgid "Places" msgstr "地点" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -908,7 +913,7 @@ msgstr "书籍封面预览" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1050,7 +1055,7 @@ msgstr "格式:" #: bookwyrm/templates/book/edit/edit_book_form.html:211 msgid "Format details:" -msgstr "装订细节:" +msgstr "装订细节:" #: bookwyrm/templates/book/edit/edit_book_form.html:222 msgid "Pages:" @@ -1106,15 +1111,15 @@ msgstr "来自未知域名的链接在添加之前需要由仲裁员批准。" #: bookwyrm/templates/book/file_links/add_link_modal.html:24 msgid "URL:" -msgstr "URL:" +msgstr "URL:" #: bookwyrm/templates/book/file_links/add_link_modal.html:29 msgid "File type:" -msgstr "文件类型:" +msgstr "文件类型:" #: bookwyrm/templates/book/file_links/add_link_modal.html:48 msgid "Availability:" -msgstr "可用状态:" +msgstr "可用状态:" #: bookwyrm/templates/book/file_links/edit_links.html:5 #: bookwyrm/templates/book/file_links/edit_links.html:21 @@ -1203,9 +1208,10 @@ msgstr "离开 BookWyrm" #: bookwyrm/templates/book/file_links/verification_modal.html:11 #, python-format msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" -msgstr "此链接将会前往:%(link_url)s
这是您想前往的网址吗?" +msgstr "此链接将跳转至:%(link_url)s
这是您想跳转的网址吗?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "继续" @@ -1279,7 +1285,7 @@ msgstr "确认代码:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "提交" @@ -1296,7 +1302,7 @@ msgstr "重新发送确认链接" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "邮箱地址:" @@ -1318,7 +1324,7 @@ msgstr "跨站社区" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "目录" @@ -1436,7 +1442,7 @@ msgstr "%(username)s 引用了 %(username)s" msgstr "与 %(username)s 私信" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "私信" @@ -1609,7 +1616,7 @@ msgid "Updates" msgstr "更新" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "你的书目" @@ -1677,7 +1684,7 @@ msgid "What are you reading?" msgstr "你在阅读什么?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "搜索书目" @@ -1696,8 +1703,8 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。" #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1830,11 +1837,11 @@ msgstr "编辑群组" #: bookwyrm/templates/groups/form.html:8 msgid "Group Name:" -msgstr "群组名称:" +msgstr "群组名称:" #: bookwyrm/templates/groups/form.html:12 msgid "Group Description:" -msgstr "群组描述" +msgstr "群组描述:" #: bookwyrm/templates/groups/form.html:21 msgid "Delete group" @@ -2013,7 +2020,7 @@ msgstr "书架" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "书评" @@ -2158,7 +2165,7 @@ msgid "Login" msgstr "登录" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "登录" @@ -2167,7 +2174,7 @@ msgstr "登录" msgid "Success! Email address confirmed." msgstr "成功!邮箱地址已确认。" -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2175,12 +2182,12 @@ msgstr "用户名:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "密码:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "忘记了密码?" @@ -2208,23 +2215,23 @@ msgstr "重设密码" msgid "%(site_name)s search" msgstr "%(site_name)s 搜索" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "搜索书籍、用户或列表" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "主导航菜单" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "动态" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "设置" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2232,42 +2239,42 @@ msgstr "设置" msgid "Invites" msgstr "邀请" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "登出" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "通知" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "密码" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "加入" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "成功发布的状态" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "发布状态时出错" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "文档" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "在 %(support_title)s 上支持 %(site_name)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm 是开源软件。你可以在 GitHub 贡献或报告问题。" @@ -2750,7 +2757,7 @@ msgstr "从另一个联邦宇宙帐户关注 %(username)s ,如 BookWyrm、Mast #: bookwyrm/templates/ostatus/remote_follow.html:40 msgid "User handle to follow from:" -msgstr "要关注此用户的用户代号:" +msgstr "用来关注的用户代号:" #: bookwyrm/templates/ostatus/remote_follow.html:42 msgid "Follow!" @@ -2904,6 +2911,11 @@ msgstr "完成《%(book_title)s》" msgid "Start \"%(book_title)s\"" msgstr "开始《%(book_title)s》" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "停止《%(book_title)s》" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3056,13 +3068,13 @@ msgstr "否" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "开始日期:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "结束日期:" @@ -3111,23 +3123,23 @@ msgstr "编辑公告" #: bookwyrm/templates/settings/announcements/edit_announcement.html:45 msgid "Announcement content" -msgstr "" +msgstr "公告内容" #: bookwyrm/templates/settings/announcements/edit_announcement.html:57 msgid "Details:" -msgstr "" +msgstr "详细:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:65 msgid "Event date:" -msgstr "事件日期:" +msgstr "事件日期:" #: bookwyrm/templates/settings/announcements/edit_announcement.html:73 msgid "Display settings" -msgstr "" +msgstr "显示设置" #: bookwyrm/templates/settings/announcements/edit_announcement.html:98 msgid "Color:" -msgstr "" +msgstr "颜色:" #: bookwyrm/templates/settings/dashboard/dashboard.html:6 #: bookwyrm/templates/settings/dashboard/dashboard.html:8 @@ -3136,7 +3148,7 @@ msgid "Dashboard" msgstr "仪表盘" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "用户总数" @@ -3160,43 +3172,48 @@ msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s 条待处理报告" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s 个域名需要审核" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s 条邀请请求" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "有可用的更新!最新版本为:%(available)s,但你当前运行的版本为:%(current)s。" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "实例活动" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" -msgstr "区段:" +msgstr "区段:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "天" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "周" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "用户注册活动" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "状态动态" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "创建的作品" @@ -3219,7 +3236,7 @@ msgstr "添加域名" #: bookwyrm/templates/settings/email_blocklist/domain_form.html:11 msgid "Domain:" -msgstr "域名:" +msgstr "域名:" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:5 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:7 @@ -3504,7 +3521,7 @@ msgstr "请谨慎使用 IP 地址屏蔽,并尽可能只使用暂时的屏蔽 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:18 msgid "IP Address:" -msgstr "IP 地址:" +msgstr "IP 地址:" #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:5 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:7 @@ -3605,7 +3622,7 @@ msgstr "消息报告者" #: bookwyrm/templates/settings/reports/report.html:27 msgid "Update on your report:" -msgstr "您报告的更新:" +msgstr "您报告的更新:" #: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" @@ -3624,7 +3641,7 @@ msgid "Moderator Comments" msgstr "监察员评论" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "评论" @@ -3687,104 +3704,112 @@ msgid "No reports found." msgstr "没有找到报告" #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "实例信息" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "图像" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "页脚内容" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "注册" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "设置已保存" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "无法保存设置" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "实例名称" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "标语" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "实例描述:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" -msgstr "简要描述:" +msgstr "简要描述:" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "在 joinbookwyrm.com 上预览实例时使用。不支持 HTML 或 Markdown。" -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "行为准则:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "隐私政策:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "图标:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "小号图标:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "支持链接:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "支持标题:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "管理员邮件:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "附加信息:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "允许注册" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "允许请求邀请" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "要求用户确认邮箱地址" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "(当开放注册时推荐)" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "注册关闭文字:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" -msgstr "邀请请求文本:" +msgstr "邀请请求文本:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 #: bookwyrm/templates/settings/users/user_moderation_actions.html:32 @@ -3798,7 +3823,7 @@ msgstr "你确定要删除 %(username)s 的帐号吗?此操 #: bookwyrm/templates/settings/users/delete_user_form.html:17 msgid "Your password:" -msgstr "你的密码:" +msgstr "你的密码:" #: bookwyrm/templates/settings/users/user.html:7 msgid "Back to users" @@ -3859,7 +3884,7 @@ msgstr "用户详情" #: bookwyrm/templates/settings/users/user_info.html:51 msgid "Email:" -msgstr "邮箱:" +msgstr "邮箱:" #: bookwyrm/templates/settings/users/user_info.html:61 msgid "(View reports)" @@ -3867,23 +3892,23 @@ msgstr "(查看报告)" #: bookwyrm/templates/settings/users/user_info.html:67 msgid "Blocked by count:" -msgstr "被屏蔽次数:" +msgstr "被屏蔽次数:" #: bookwyrm/templates/settings/users/user_info.html:70 msgid "Last active date:" -msgstr "最后活跃日期:" +msgstr "最后活跃日期:" #: bookwyrm/templates/settings/users/user_info.html:73 msgid "Manually approved followers:" -msgstr "手动批准关注者:" +msgstr "手动通过的关注者:" #: bookwyrm/templates/settings/users/user_info.html:76 msgid "Discoverable:" -msgstr "可发现:" +msgstr "可发现:" #: bookwyrm/templates/settings/users/user_info.html:80 msgid "Deactivation reason:" -msgstr "停用原因:" +msgstr "停用原因:" #: bookwyrm/templates/settings/users/user_info.html:95 msgid "Instance details" @@ -3913,6 +3938,118 @@ msgstr "取消停用用户" msgid "Access level:" msgstr "访问级别:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "设置BookWyrm" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "您作为用户和管理员的账户" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "创建您的账号" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "管理员密钥:" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "当您安装BookWyrm后会创建一个管理员密钥。您可以通过来自你的服务器上的命令行运行bw-dev admin_code获取你的管理员密钥。" + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "作为管理员,您能够配置实例的名称和信息,并管理您的实例。 这意味着您可以访问有关您的用户的私密信息,并且有责任应对不良行为或垃圾信息。" + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "一旦实例设置后,您可以从管理面板中提升其他用户到仲裁员或管理员权限。" + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "进一步了解仲裁员" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "实例配置" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "在进行之前,请确保一切都没问题" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "您在调试模式下运行BookWyrm 。这应该永远不可能在出现实际使用的环境中。" + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "你的域名似乎配置出错了。它不应该包括协议或斜杠。" + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "您正在没有https的实际使用模式下运行BookWyrm,USE_HTTPS应该在实际使用中启用。" + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "实例域名:" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "协议:" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "使用 S3:" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "显示" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "默认界面语言:" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "电子邮件发件人:" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "启用预览图像:" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "启用图像缩略图:" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "你确定你将所有的都设置好了?" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "这是您最后一次设置域名和协议的机会。" + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "您可以更改您服务器上的.env文件中的实例设置。" + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "查看安装说明" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "实例设置" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "正在安装 BookWyrm" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "需要帮助?" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "创建书架" @@ -4002,7 +4139,7 @@ msgstr[0] "与其它 %(remainder_count_display)s 位" msgid "No cover" msgstr "没有封面" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "%(title)s 来自" @@ -4017,7 +4154,7 @@ msgstr "转发" msgid "Un-boost" msgstr "取消转发" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "引用" @@ -4058,7 +4195,7 @@ msgstr "内容" #: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 msgid "Content warning:" -msgstr "内容警告:" +msgstr "内容警告:" #: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 msgid "Spoilers ahead!" @@ -4088,15 +4225,15 @@ msgstr "摘自《%(book_title)s》的节录" #: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" -msgstr "位置:" +msgstr "位置:" #: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" -msgstr "页码:" +msgstr "页码:" #: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" -msgstr "百分比:" +msgstr "百分比:" #: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format @@ -4302,7 +4439,11 @@ msgstr "开始《%(book_title)s》" msgid "Want to Read \"%(book_title)s\"" msgstr "想要阅读《%(book_title)s》" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "好好起名!您的用户名在之后无法更改。" + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "注册" @@ -4553,7 +4694,7 @@ msgstr "您的群组" #: bookwyrm/templates/user/groups.html:11 #, python-format msgid "Groups: %(username)s" -msgstr "群组: %(username)s" +msgstr "群组: %(username)s" #: bookwyrm/templates/user/groups.html:17 msgid "Create group" diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 45fc07cbc027782814f247679bb2b1ca0942cf35..f9ca27be9b891b3b13c30e68d084e0cd54184a43 100644 GIT binary patch delta 14961 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 BRt*3E delta 13256 zcmdnKo@vG$ruutAEK?a67#OUW7#L(27#Q9NGBEsPVqn;#3=(BvSfJ0qpvAzzuuz|Y zL6m`k;fy{5gERvJ!y|nL1~CQ(hJX4D3=Rwo459`M3;_%b3}FTg3K~&|}EJpvJ(!@DL)w zz+uF|Ai}`Fpk~Ctpv1tyU~R;}pvb_$5N8B&NP`grgCqk3!!#oX1``Gbh7Cpx3`PtL z3{Q<181fky7$l4#bcZnmLmmSI!w+KyhF}H;hIA7KhAIXIhTSG0hu1SOn3+O+Qf|t? zV9LP2&}YiPpvl0%a0E)fGle)z!i<4|m4Si5-i(1kn1O-8)r^6Gje&t7(u{$DgMon| z!Hj`{mw|yH(~NU&94cQA<+nlkeNg^XkiL2b28Ow23=GT+3=GT67#MgM7#LQ8 zBp4VNwwp09a56A39590fKf#J6q0|Pe$0|S>i1A`$01A~}3 z#DN~>3=9Gc3=IC}5Dz4nL+nX2XJDuYX)HE}_@K!g;*f50h{gTp5Q}F*HLQdhyv-aE z)Gwgo(iRY(Ygj-WVrBs`$JGK7Wu6ug_1RE$^DH1Cw8ny=9_+&{77&;2vtVElVqjo6 z3RQ3eNfJ3NA>v~R@p*(L z#Ns%px-`prh>J_08k#L3LDgZ&z`(`8z%bL2fgzHCfnkXyMBP7228Ia?3=F(h5Ci8~ zF)#>%D6SjYf75g;sVD zhj~Hi2&j0P9VC&J*+CLzwH+h`CfY$fwAc>f@byr0_dw}mQ2GK$9+dxY*+E?X93;TN z!0-ub!GEYYzdZwk6axc;ls(AB3=F3B5TE4PgM*Nv#2(_qW_w5)nPLy|$Xt7fN0!?| z(!_cw{}7ZuWzWD+4=Q3WK?R;e4So+b=quEqfA)~X!{Gp-WgH+rH*kQY0aFKvPeUCb zQJ3TZDeE&GAP($ufH-WX1H_?=93UaK*@2-RT!fx-@>Lxn2AMcQeCp*0@oA7F#KKfZh=cPSAyL=_)i=QrT=_7}cdUmPxYrTlqvKG8 zXP^e$g3^y2AwmAek%7Sj6h)2@pISRX5~Gt7gdYW^6P+MF&2WN*Or;aV0c}nY4^DA{ zq>*LyP7t4Oa)P+{5R^U*6~E#H@!=Dw0l%CeA;IAcF-Y7QBCqKTvC!TbVo`uI#A9*J z5cL_(5PQmlspAAVFK~0*R|i7f8PEb%E6Ti=gsH zp$49Ifdut+7X}771_p+EE)XC6g{ot9g;>n(3NcsQ6=I&OD+7Z$0|SGRDX%g z@hOixB)dttLz-%q?hp^9xI@fsaECZ-zB?o&R=Pt%Y@a&=Lp`WPbIctQq-WeAF23vz z@zF!5!go*uzPUpj2Fe1UI)Kvy;!_I`h!5>NAVspX2PCn@ct8?mjt4|vtp~)OHV=q{ zdOaBG!A+*=9+03}>H$du+o1|iLk+wHwcxb}#9<$x^j{B1!-C5b;xk)Mh|hvNAr?k? zLK0`PC&WQTo(v4C3=9lSP<1Oj>meF8KsD^}ggE4&C&Y!9Js~c>>j{aoC!P!pDhvz^ z-#sBgEaL?+*uo2vx;?xgArkBb(HH3jaY%v}B!n`d;(1;WdrRxRATF$hD(LZo_;8{Z zBr4`X`D>u+c0w&Y0TsXD1!)C8g{uD#mFM+_I6&4L5;7{@5QkYp#qFWu^={q}A4hvb zT$Jk#adD|Pq|&MLhO~xfdP54D!`_gPx#ywz6=bx3=9m?z90wIGca_584L`Qd?7BM?F&h@i+v$J-2$ce`9dr> z0af?T7ZOF^d?6OH_<;;$U=a3$=#%k-6tQZ43=G-~3=DpL5c8{`@=bmW3<9A1-{S}I z@mxPhVp{J9saE&B!fsoYN5(vp|GXo(-?V3Oa z1}6pvhLccvo*+obCXL%$AwifG z1WANdP=$R^h0~$@g+UN?tDyW{Py-GJK|<^_)Im3){3k(>koW|p|3l5=35GaGEEwVt z`TAgp4>W@zKF|+_BpNfQ!Z;|M9t=q%1;LP@ZVHBE$BDrZ2P_YUgxJ<#h(}I9)!%{Y ze-{kt#C{KkI7}`C5>oZrA&>&ZI0Ry#ZwSP|U@(nfV2Ea5U|0baXNiP(gg+9J zdt@Ua7HdXA%(0IIg?K#!gHI$Rbp}U5qM|Mm5;QH53=F=Yfr&^420sP{hFeg+W)#Gy zF);j&fkZ7+ zECWLV0|SFhEJR;zEX17FSO$iA(2z=BETpNmA(nyRCnE#HtD;z5VhdPt)%G8K|NCZ^$ZM?pa#qY3otOO%!Fj44Nwi-Squ!d3=9l%Sr7x~ zWI;k`F_gbE3*wLiSr7-Dg^FK=ir>kCIPfKu{}U?Dmd(Jx3CjPx*$@N7vmq{5$%a^D zlnpV^63Tak(jM6mpZG)7CuKt%Q~;H4gVMcFbEiP*g;07Ol-`}qz)%kwa6ADOxC*5o zWkd4s`)o+=;Ld?m&(1lJY+959ao{v4JvRs9@Fh@s6O=xX1M%27DE~H;{}RgomcvjF z9`R(!g%~K93(+6}rB$J{Q7$CT?QQ1Sh_ z5RV*#^1tTRLoEIS6=2STIDjh;;v?}qh{38*aos$KdaFE0Q_B%59tow>p!$lT{6;9< z2c>7{K^(pU%HLNH6*!#-iPMKri7$DOC}7NoWINe>h{fUg5QoL(LmZj|r7NN0ZTS$N zPsxWg-&a8O9nOb%yM{@(&MU>{V$QK*JXQ2tXW{Rv9{hZ?|B46#TGN~;$`L!=nuV;iWrcQM4F5yg-u zSUi+Jp_qZ89yCWY9jb77F(fLsKn*$pr7u9`Zxlm{>Zeftw_-@6l(__AfoKWDK{8Oj zCX{bb0`ajel=gN+9)qX$d6N_dpe_D1k)HdMJN?2_*3ygYsWM>Gx2B zzm-5jfTa|okEfJ@!5P%@f$|edAyHIN3bC)bv>qZbs}$mcwWW~6w*{(UUnwN6&y_+7 zp68_yAF`D}XkjR=PzJGBw+xc4Ov@nVIg~-ncZbqZP&&5^k{BE6%OEYB#ZZIJKo#7C z^4~!DKcO^FImBZ5a)>^ia!7R>S`HbQXefuYrk9pOJaW1mQVv{&@;{VA9QLam;^2D5 z3Wxw_1w?}YlrIJ4D?<6&6_9p-5mY=4Dqc_liL&wvNRUsifTWSd6%dDRseo8?5K5n{ zfP~0JhDtuoFap_;M1Oo$W6(l$CR6&ATp$cMN0~)It80tYYm{Y1DE}vZuY40zthWL1I zHN?fwsv&9PGnD@qN^{jf5}kMrMBWBUyVXD(8c+i^5D(0`B!khl!h@CPc+TnDj0pblbzLLJ0n^*V@y^y?r!q`*3e z`IS(*4N6aj(hKUL2Cc1wRG)jH68GvLK6(x1|Af+P&;bi!Xv0MrT7YRm2QqD;;;vBI zryi0>K^;xdTyh*#e+E>(z5*Ho_0XA+9;kw8Q1N9@gE!YRFvNhS&Fdi!lW2g@Y7LN( zFlm5&l}%g&BqaJ9ATuZ1p)^Aycr2)%!Lt!k#FjTgveyJCe@!E#uXeN% zlJ8lYAQnkCK`hX2f&{q{lyB7pX~;M>L4w>BN(VvdcqpCI1Tn9&3FP2<28Mp9#G)oh zDqatzcS6MvH$j5%0@R}0O%R_yg3=$L4*S;x@d#ft#G&d?+8j!|H$zIs@MefT8O;m~ zT%i14)C?ISscnY%Xk|0R2OFCq*>PVp$fXPnH<}?Xe+`vqY=Q9kS|GKV3Y2f%0x>7B z1=6XFY=M~9&;kj$-WJI0*OV6M_}``$hy^F03U9YS^5=^d$dZXaEs#cNKr3X3rK=S( zpn4hfmuc1S;>wjDbDx3C>z@SApsPdqvx zi6_1T;_?YldM=b+)xp4!4O$`5!N3r~z`&r~2~k%Ar8}YYv`&b}7DM^lIw2u&7%G0M z6PgX~c0%IhNhf5$;2o59?t<`VbU{YF-gZF@Q0|7P*Xo8?Y|;&h3de4Ud^l7*t{dXO zY$$yMO3U^@LbR;D2Qsj*p$C#Uj`l!?+pqON3}Wbo(Cobs3;CdY2`FE_7ZP%sQ1RAY zNR;&SGB8+!M#G@$p7cV3{#`G`!T+FiJ$D}i10!fign@y<0?IIDf(%HlfbugLA@L`} z#K3Twfq`KP0|NsK69dBuMo3kh%Lo|{1{rezM1a=!FflO1L)j{f3=IDm85j(i7#I{8 zA-RVgVs<@40caMI5i;-unw#0i$iTo18drmA2DRTn1B_5E!xu&dhUXB?V48ti{7^PX+Yd$thO>+e3=WJ83_hUXWny4h$-uzi!U!&6!Hbpzm>3w=FfcG| zV_;xNV_;xNWMp8d0fjusfX$2y3?7UO496H57&ws(2FX2!@;R6o7$!s6dl?|BU_kP1 zj0_C^AOxWpNdZd{c7(y8t7>>i@A7nUai4=&IVPs&q&&a@#1L80+Ff=hTFx+EgU?^u`V8{U( z4mAWS&5#e}mw^T#86YL+Uyy?s7#NH}4q#$nsA6PbNC2fVCI$uxMg|6MkT__u8z}xk z2AMH2Ff3wZVBle5V7Ln!!-X1}#K^#Kl#zkqAR`0A6h;Py8KA7j$iR@o$iQ#`gh30| zK!ekusAFPa&|qRjV}O)^YZ(|A^cWc!Dj6Y7HZ`aNVD>W{0=a?#Qb%`# z*6lGeFx+5ZVDJR3`C(#Us0LZUz`!sIv?>a!R+Wi?VLE6{AR_|XRrDOB1GKb?fq`Kc zlntWhGcqv9GBGeTgBB$+GB9ic6)vE;A&?{k1H(B+28NBG1&yFw!o1P5!0?rkf#DAW149-A149MWF(7@GObiTmP<}Qe14B4S zkb!~WJtL&j+RezoAjHVPV8O(|kj2Qruz~?n&4QH4gR(CJ1H*Mj28OK+3=Dffo?>KR z&;f=2L`DXN63|2g0|Tg4#Ly4Y0mY!jWgzAOP$+@c_AxOqOauuqFfc?gGB9XB9Rw0$ zVq#$6h4LjC85s63GBB_)F)++$U|=W#1vx0R7#JAT85tNPp&?NJh=GBjg8|aYO=e_Z z=w@VKcmOgDijOcdFsua?P*8(GQ!OB=Wl;V}Mg|5xMg|5iMh1p=j0_C=pq#=8X)%G+ z-37^mieN?thNU0@P#R)nU?^k+H+Vt*hl(;VFmy69FsLyyFnk0pL}g@Puwi6icm=hn zlYxPuje&vT7b62h1|tJQEF%NMDMki{(+ms@QJ|E~z`$U@$iQ#}w4xHKM~jJpVK&tG z4MM7+Rr*UWBRxEuT?f zVqmxk6$c5Yg0d?E1H*j=2GDvokPvunC}_p(DFy}x8_)__sQRZM8sz^*P?lk2U|0pp zt4s_G_dpc`BLl-51_p*eMg|6NMh1qb3=9n33=9liU?U-fJA?wSo>hj%=Lx77XnGaI zJPRTiAT49iBvub21H%ib7>KF|O&Ea~AiS87fq|8Yfnf>AWgr14jt0dolnq)Ze2I~P zK^Us$AXMChiGjhKiGg7QC{;5-8a3w`AajABsT~=px@(LK3}-;gbD0ZlYxQZGgJ|Xx&+GKpr`;@1j=GiAA;l-fCwm_1EqH}FfeQcsbyeb_{zY*umQ9v z87lXlfq~%}0|P@DC^16Kxd~QV&%n^iz`$??s&G9hs2CxQ&stEG%D}*|1u6%c0{}7E zz#17CelRdFOlM?ZFlA(5*a8(x234<6_H9N621k$v1_p+=43GvZXrZzh$YG%J15_t~ z;vb|&396|O#9?4yV1@FpfYJpc1H*bo28R8h9xPN|l!<}CjFExi7L9rov~NNsUNSN;w1cM0pqfFe zqMtD`FvvmqUqB9FWMJR`mHP|~40oXV{xdKz%wS+(&;iwSP%&2q28Iwu28Mm0904i= zpk{!ieL>|vh%t$gfng4k1V~JYiGd*#v`B!Ff#DD%1A_^u!2nfroq>U24I^ZNxfIkG zVPs%vVPs&ChRVw_GB6wl72}{56jaO+N;iX=VvGz7vq7yTQ2oCXw1AkAf#E6x14AiP zkvbCt!yQHjhB{~yNeY^1Ko09?WMD{VWMF83s$IkYSz!K(fq|g_RH{M6LCx>2po9zM zgY+hWDkczvfq~&Ahz7;~c}50?IH;n(3=9l0Q1%Xx0#G>*YKSs2Fff8@G*F`fDsK#O z1XN8CBLhPhBLhPKBLjmQ0|NsiC<`(%Fk~=5Cb3f(7#N%x85j~77#J2aK>C}985kHQ z8yNX)Za4bLw0VYUDf4DU%NC~1$F1|2CcD@LZk}V;%{bZ8VLE?mX-RQ%hJuEBYEf=t zp62Fr4!0O3^U`xNi!&HpiwhDDZ_Lk8&aI0;w!6t@I}cUn z%@y8)ER)yzi%B-vGEQa*eX#jMs5ax~gm4wk&FP7+ z7$?Uir%XPbJUQ|Cx`rovCqLP-_Sv*{1&!d$+=86Uw9M2L1?P;+ywu`UO@`+?8(*%T z0#gxEl$erPl9`{En1fIfP?VpQnp~pmnW7t(T2!2wpJ%0zl%JnnURjhoxjaR;-bmNL zNY~I@!O+sm*pka9vA9Gxq$n}3I47|rzsO3#H@~zvRUs%fwJcS^CKtph0`*A?cP$0+f|Vs2?6ZZa|6f%-H>o38Mn-wR4WDjXqc~ci}RB+6La)n z{8$D1+{Da0{ha*d#GF+9)V%o6V0|Cwcwg7xU`Kb?VEvS=#Ju!;y@Gr+L%|L)G&MDz z+>>g*`C94>rpYr*)i&?UNMzoum9w5{^Y6R@rpXnBL7OiYwlGf4E^ZZefuz9qdpe%( z+x}wJy!U%LH@`2w$7t&cNrmtCbiC-^2$6uNNRZ&t{m=W?KJT0fm3rCO_iWC51_))f z`9*0qqrO`aG?~8N)A4NcRH(|Q{oPNO?qzsBW&X2{3D2f&cs{G;WmCh8)!maT%l#%_ zFaON`a$5J(<=s}3KUJ)me6-SVGIy2bXHf+AY_H6c!7b~Yu?rOrRO?`_`Sp}@FVwQDoy d=KWK?GEP1*Ep4*h^h&Ac8y3P-EK2fa005%x6s`aO diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 7ba9c7bc2..8de0a3781 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-17 16:58+0000\n" -"PO-Revision-Date: 2022-02-17 19:39\n" +"POT-Creation-Date: 2022-02-18 03:55+0000\n" +"PO-Revision-Date: 2022-02-18 05:31\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -17,70 +17,74 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:245 +#: bookwyrm/forms.py:62 +msgid "User with this username already exists" +msgstr "" + +#: bookwyrm/forms.py:252 msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "" -#: bookwyrm/forms.py:255 +#: bookwyrm/forms.py:262 msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "" -#: bookwyrm/forms.py:394 +#: bookwyrm/forms.py:401 msgid "A user with this email already exists." msgstr "已經存在使用該郵箱的使用者。" -#: bookwyrm/forms.py:408 +#: bookwyrm/forms.py:415 msgid "One Day" msgstr "一天" -#: bookwyrm/forms.py:409 +#: bookwyrm/forms.py:416 msgid "One Week" msgstr "一週" -#: bookwyrm/forms.py:410 +#: bookwyrm/forms.py:417 msgid "One Month" msgstr "一個月" -#: bookwyrm/forms.py:411 +#: bookwyrm/forms.py:418 msgid "Does Not Expire" msgstr "永不失效" -#: bookwyrm/forms.py:415 +#: bookwyrm/forms.py:422 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:416 +#: bookwyrm/forms.py:423 msgid "Unlimited" msgstr "不受限" -#: bookwyrm/forms.py:518 +#: bookwyrm/forms.py:525 msgid "List Order" msgstr "列表順序" -#: bookwyrm/forms.py:519 +#: bookwyrm/forms.py:526 msgid "Book Title" msgstr "書名" -#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:527 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "評價" -#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 +#: bookwyrm/forms.py:529 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "排序方式" -#: bookwyrm/forms.py:526 +#: bookwyrm/forms.py:533 msgid "Ascending" msgstr "升序" -#: bookwyrm/forms.py:527 +#: bookwyrm/forms.py:534 msgid "Descending" msgstr "降序" -#: bookwyrm/forms.py:540 +#: bookwyrm/forms.py:547 msgid "Reading finish date cannot be before start date." msgstr "" @@ -139,23 +143,23 @@ msgstr "" msgid "Domain block" msgstr "" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:262 msgid "Audiobook" msgstr "" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:263 msgid "eBook" msgstr "" -#: bookwyrm/models/book.py:255 +#: bookwyrm/models/book.py:264 msgid "Graphic novel" msgstr "" -#: bookwyrm/models/book.py:256 +#: bookwyrm/models/book.py:265 msgid "Hardcover" msgstr "" -#: bookwyrm/models/book.py:257 +#: bookwyrm/models/book.py:266 msgid "Paperback" msgstr "" @@ -183,7 +187,7 @@ msgstr "%(value)s 不是有效的 remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s 不是有效的使用者名稱" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "使用者名稱" @@ -257,73 +261,73 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home Timeline" msgstr "主頁時間線" -#: bookwyrm/settings.py:190 +#: bookwyrm/settings.py:195 msgid "Home" msgstr "主頁" -#: bookwyrm/settings.py:191 +#: bookwyrm/settings.py:196 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:196 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "書目" -#: bookwyrm/settings.py:265 +#: bookwyrm/settings.py:270 msgid "English" msgstr "English(英語)" -#: bookwyrm/settings.py:266 +#: bookwyrm/settings.py:271 msgid "Deutsch (German)" msgstr "Deutsch(德語)" -#: bookwyrm/settings.py:267 +#: bookwyrm/settings.py:272 msgid "Español (Spanish)" msgstr "Español(西班牙語)" -#: bookwyrm/settings.py:268 +#: bookwyrm/settings.py:273 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:269 +#: bookwyrm/settings.py:274 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:270 +#: bookwyrm/settings.py:275 msgid "Français (French)" msgstr "Français(法語)" -#: bookwyrm/settings.py:271 +#: bookwyrm/settings.py:276 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:272 +#: bookwyrm/settings.py:277 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:273 +#: bookwyrm/settings.py:278 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:274 +#: bookwyrm/settings.py:279 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:275 +#: bookwyrm/settings.py:280 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:276 +#: bookwyrm/settings.py:281 msgid "简体中文 (Simplified Chinese)" msgstr "簡體中文" -#: bookwyrm/settings.py:277 +#: bookwyrm/settings.py:282 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文" @@ -395,7 +399,7 @@ msgstr "" msgid "Moderator" msgstr "" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "管理員" @@ -421,11 +425,12 @@ msgid "Statuses posted:" msgstr "" #: bookwyrm/templates/about/layout.html:19 +#: bookwyrm/templates/setup/config.html:74 msgid "Software version:" msgstr "" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 #, python-format msgid "About %(site_name)s" msgstr "關於 %(site_name)s" @@ -729,7 +734,7 @@ msgstr "" #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 -#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/site.html:151 #: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 @@ -849,7 +854,7 @@ msgid "Places" msgstr "地點" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -908,7 +913,7 @@ msgstr "" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/feed/suggested_books.html:55 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 msgid "Close" @@ -1204,6 +1209,7 @@ msgid "This link is taking you to: %(link_url)s.
Is that where msgstr "" #: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "" @@ -1277,7 +1283,7 @@ msgstr "" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/settings/dashboard/dashboard.html:116 #: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "提交" @@ -1294,7 +1300,7 @@ msgstr "" #: bookwyrm/templates/landing/layout.html:68 #: bookwyrm/templates/landing/password_reset_request.html:18 #: bookwyrm/templates/preferences/edit_user.html:53 -#: bookwyrm/templates/snippets/register_form.html:12 +#: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" msgstr "郵箱地址:" @@ -1316,7 +1322,7 @@ msgstr "跨站社群" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:100 +#: bookwyrm/templates/layout.html:101 msgid "Directory" msgstr "目錄" @@ -1434,7 +1440,7 @@ msgstr "" #: bookwyrm/templates/discover/discover.html:4 #: bookwyrm/templates/discover/discover.html:10 -#: bookwyrm/templates/layout.html:77 +#: bookwyrm/templates/layout.html:78 msgid "Discover" msgstr "" @@ -1551,12 +1557,13 @@ msgstr "如果你沒有請求重設密碼,你可以忽略這封郵件。" msgid "Reset your %(site_name)s password" msgstr "重置你在 %(site_name)s 的密碼" -#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:39 +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:40 +#: bookwyrm/templates/setup/layout.html:12 #, python-format msgid "%(site_name)s home page" msgstr "" -#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:233 +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 msgid "Contact site admin" msgstr "聯絡網站管理員" @@ -1570,7 +1577,7 @@ msgid "Direct Messages with %(username)s" msgstr "與 %(username)s 私信" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:110 +#: bookwyrm/templates/layout.html:111 msgid "Direct Messages" msgstr "私信" @@ -1607,7 +1614,7 @@ msgid "Updates" msgstr "更新" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:105 +#: bookwyrm/templates/layout.html:106 msgid "Your Books" msgstr "你的書目" @@ -1675,7 +1682,7 @@ msgid "What are you reading?" msgstr "你在閱讀什麼?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "搜尋書目" @@ -1694,8 +1701,8 @@ msgstr "你可以在開始使用 %(site_name)s 後新增書目。" #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 -#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:54 +#: bookwyrm/templates/layout.html:55 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -2011,7 +2018,7 @@ msgstr "" #: bookwyrm/templates/import/import_status.html:120 #: bookwyrm/templates/import/manual_review.html:13 -#: bookwyrm/templates/snippets/create_status.html:17 +#: bookwyrm/templates/snippets/create_status.html:16 msgid "Review" msgstr "書評" @@ -2156,7 +2163,7 @@ msgid "Login" msgstr "登入" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "登入" @@ -2165,7 +2172,7 @@ msgstr "登入" msgid "Success! Email address confirmed." msgstr "" -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2173,12 +2180,12 @@ msgstr "使用者名稱:" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 -#: bookwyrm/templates/snippets/register_form.html:20 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "密碼:" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "忘記了密碼?" @@ -2206,23 +2213,23 @@ msgstr "重設密碼" msgid "%(site_name)s search" msgstr "" -#: bookwyrm/templates/layout.html:45 +#: bookwyrm/templates/layout.html:46 msgid "Search for a book, user, or list" msgstr "" -#: bookwyrm/templates/layout.html:63 +#: bookwyrm/templates/layout.html:64 msgid "Main navigation menu" msgstr "主導航選單" -#: bookwyrm/templates/layout.html:71 +#: bookwyrm/templates/layout.html:72 msgid "Feed" msgstr "動態" -#: bookwyrm/templates/layout.html:115 +#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "設定" -#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2230,42 +2237,42 @@ msgstr "設定" msgid "Invites" msgstr "邀請" -#: bookwyrm/templates/layout.html:138 +#: bookwyrm/templates/layout.html:139 msgid "Log out" msgstr "登出" -#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "通知" -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "密碼" -#: bookwyrm/templates/layout.html:186 +#: bookwyrm/templates/layout.html:187 msgid "Join" msgstr "加入" -#: bookwyrm/templates/layout.html:220 +#: bookwyrm/templates/layout.html:221 msgid "Successfully posted status" msgstr "" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:222 msgid "Error posting status" msgstr "" -#: bookwyrm/templates/layout.html:237 +#: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "文件:" -#: bookwyrm/templates/layout.html:244 +#: bookwyrm/templates/layout.html:245 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "在 %(support_title)s 上支援 %(site_name)s" -#: bookwyrm/templates/layout.html:248 +#: bookwyrm/templates/layout.html:249 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm 是開源軟體。你可以在 GitHub 貢獻或報告問題。" @@ -2902,6 +2909,11 @@ msgstr "" msgid "Start \"%(book_title)s\"" msgstr "" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop \"%(book_title)s\"" +msgstr "" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3054,13 +3066,13 @@ msgstr "否" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Start date:" msgstr "開始日期:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "End date:" msgstr "結束日期:" @@ -3134,7 +3146,7 @@ msgid "Dashboard" msgstr "" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Total users" msgstr "" @@ -3158,43 +3170,48 @@ msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:55 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:67 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "Instance Activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 msgid "Interval:" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +#: bookwyrm/templates/settings/dashboard/dashboard.html:110 msgid "Days" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Weeks" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "User signup activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:135 msgid "Status activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:141 msgid "Works created" msgstr "" @@ -3622,7 +3639,7 @@ msgid "Moderator Comments" msgstr "監察員評論" #: bookwyrm/templates/settings/reports/report.html:89 -#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "評論" @@ -3685,102 +3702,110 @@ msgid "No reports found." msgstr "沒有找到舉報" #: bookwyrm/templates/settings/site.html:10 -#: bookwyrm/templates/settings/site.html:21 +#: bookwyrm/templates/settings/site.html:39 msgid "Instance Info" msgstr "實例資訊" #: bookwyrm/templates/settings/site.html:11 -#: bookwyrm/templates/settings/site.html:54 +#: bookwyrm/templates/settings/site.html:72 msgid "Images" msgstr "圖片" #: bookwyrm/templates/settings/site.html:12 -#: bookwyrm/templates/settings/site.html:74 +#: bookwyrm/templates/settings/site.html:92 msgid "Footer Content" msgstr "頁尾內容" #: bookwyrm/templates/settings/site.html:13 -#: bookwyrm/templates/settings/site.html:98 +#: bookwyrm/templates/settings/site.html:116 msgid "Registration" msgstr "註冊" -#: bookwyrm/templates/settings/site.html:24 +#: bookwyrm/templates/settings/site.html:22 +msgid "Settings saved" +msgstr "" + +#: bookwyrm/templates/settings/site.html:31 +msgid "Unable to save settings" +msgstr "" + +#: bookwyrm/templates/settings/site.html:42 msgid "Instance Name:" msgstr "實例名稱" -#: bookwyrm/templates/settings/site.html:28 +#: bookwyrm/templates/settings/site.html:46 msgid "Tagline:" msgstr "標語" -#: bookwyrm/templates/settings/site.html:32 +#: bookwyrm/templates/settings/site.html:50 msgid "Instance description:" msgstr "實例描述:" -#: bookwyrm/templates/settings/site.html:36 +#: bookwyrm/templates/settings/site.html:54 msgid "Short description:" msgstr "" -#: bookwyrm/templates/settings/site.html:37 +#: bookwyrm/templates/settings/site.html:55 msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." msgstr "" -#: bookwyrm/templates/settings/site.html:41 +#: bookwyrm/templates/settings/site.html:59 msgid "Code of conduct:" msgstr "行為準則:" -#: bookwyrm/templates/settings/site.html:45 +#: bookwyrm/templates/settings/site.html:63 msgid "Privacy Policy:" msgstr "隱私政策:" -#: bookwyrm/templates/settings/site.html:57 +#: bookwyrm/templates/settings/site.html:75 msgid "Logo:" msgstr "圖示:" -#: bookwyrm/templates/settings/site.html:61 +#: bookwyrm/templates/settings/site.html:79 msgid "Logo small:" msgstr "小號圖示:" -#: bookwyrm/templates/settings/site.html:65 +#: bookwyrm/templates/settings/site.html:83 msgid "Favicon:" msgstr "Favicon:" -#: bookwyrm/templates/settings/site.html:77 +#: bookwyrm/templates/settings/site.html:95 msgid "Support link:" msgstr "支援連結:" -#: bookwyrm/templates/settings/site.html:81 +#: bookwyrm/templates/settings/site.html:99 msgid "Support title:" msgstr "支援標題:" -#: bookwyrm/templates/settings/site.html:85 +#: bookwyrm/templates/settings/site.html:103 msgid "Admin email:" msgstr "管理員郵件:" -#: bookwyrm/templates/settings/site.html:89 +#: bookwyrm/templates/settings/site.html:107 msgid "Additional info:" msgstr "附加資訊:" -#: bookwyrm/templates/settings/site.html:103 +#: bookwyrm/templates/settings/site.html:121 msgid "Allow registration" msgstr "" -#: bookwyrm/templates/settings/site.html:109 +#: bookwyrm/templates/settings/site.html:127 msgid "Allow invite requests" msgstr "" -#: bookwyrm/templates/settings/site.html:115 +#: bookwyrm/templates/settings/site.html:133 msgid "Require users to confirm email address" msgstr "" -#: bookwyrm/templates/settings/site.html:117 +#: bookwyrm/templates/settings/site.html:135 msgid "(Recommended if registration is open)" msgstr "" -#: bookwyrm/templates/settings/site.html:120 +#: bookwyrm/templates/settings/site.html:138 msgid "Registration closed text:" msgstr "註冊關閉文字:" -#: bookwyrm/templates/settings/site.html:124 +#: bookwyrm/templates/settings/site.html:142 msgid "Invite request text:" msgstr "" @@ -3911,6 +3936,118 @@ msgstr "取消停用使用者" msgid "Access level:" msgstr "訪問權限:" +#: bookwyrm/templates/setup/admin.html:5 +msgid "Set up BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:7 +msgid "Your account as a user and an admin" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:13 +msgid "Create your account" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:20 +msgid "Admin key:" +msgstr "" + +#: bookwyrm/templates/setup/admin.html:32 +msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code from the command line on your server." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:45 +msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:51 +msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel." +msgstr "" + +#: bookwyrm/templates/setup/admin.html:55 +msgid "Learn more about moderation" +msgstr "" + +#: bookwyrm/templates/setup/config.html:5 +msgid "Instance Configuration" +msgstr "" + +#: bookwyrm/templates/setup/config.html:7 +msgid "Make sure everything looks right before proceeding" +msgstr "" + +#: bookwyrm/templates/setup/config.html:18 +msgid "You are running BookWyrm in debug mode. This should never be used in a production environment." +msgstr "" + +#: bookwyrm/templates/setup/config.html:30 +msgid "Your domain appears to be misconfigured. It should not include protocol or slashes." +msgstr "" + +#: bookwyrm/templates/setup/config.html:42 +msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production." +msgstr "" + +#: bookwyrm/templates/setup/config.html:56 +msgid "Instance domain:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:63 +msgid "Protocol:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:81 +msgid "Using S3:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:91 +msgid "Display" +msgstr "" + +#: bookwyrm/templates/setup/config.html:95 +msgid "Default interface language:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:102 +msgid "Email sender:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:109 +msgid "Enable preview images:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:116 +msgid "Enable image thumbnails:" +msgstr "" + +#: bookwyrm/templates/setup/config.html:128 +msgid "Does everything look right?" +msgstr "" + +#: bookwyrm/templates/setup/config.html:130 +msgid "This is your last chance to set your domain and protocol." +msgstr "" + +#: bookwyrm/templates/setup/config.html:144 +msgid "You can change your instance settings in the .env file on your server." +msgstr "" + +#: bookwyrm/templates/setup/config.html:148 +msgid "View installation instructions" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:5 +msgid "Instance Setup" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:15 +msgid "Installing BookWyrm" +msgstr "" + +#: bookwyrm/templates/setup/layout.html:18 +msgid "Need help?" +msgstr "" + #: bookwyrm/templates/shelf/create_shelf_form.html:5 msgid "Create Shelf" msgstr "建立書架" @@ -4000,7 +4137,7 @@ msgstr[0] "" msgid "No cover" msgstr "沒有封面" -#: bookwyrm/templates/snippets/book_titleby.html:10 +#: bookwyrm/templates/snippets/book_titleby.html:11 #, python-format msgid "%(title)s by" msgstr "" @@ -4015,7 +4152,7 @@ msgstr "轉發" msgid "Un-boost" msgstr "取消轉發" -#: bookwyrm/templates/snippets/create_status.html:39 +#: bookwyrm/templates/snippets/create_status.html:36 msgid "Quote" msgstr "引用" @@ -4300,7 +4437,11 @@ msgstr "開始 \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "想要閱讀 \"%(book_title)s\"" -#: bookwyrm/templates/snippets/register_form.html:30 +#: bookwyrm/templates/snippets/register_form.html:18 +msgid "Choose wisely! Your username cannot be changed." +msgstr "" + +#: bookwyrm/templates/snippets/register_form.html:64 msgid "Sign Up" msgstr "註冊" From 5d4efd457a9ac404334948bd1e271b5e26f07486 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 25 Feb 2022 12:39:44 -0800 Subject: [PATCH 006/132] Removes scrollIntoView script behavior for tabs --- bookwyrm/static/js/vendor/tabs.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bookwyrm/static/js/vendor/tabs.js b/bookwyrm/static/js/vendor/tabs.js index 0535cc869..884fb08f6 100644 --- a/bookwyrm/static/js/vendor/tabs.js +++ b/bookwyrm/static/js/vendor/tabs.js @@ -56,10 +56,6 @@ class TabGroup { tab.addEventListener('keydown', this.keydownEventListener.bind(this)); tab.addEventListener('keyup', this.keyupEventListener.bind(this)); - if (isSelected) { - tab.scrollIntoView(); - } - tab.index = count++; } } From cec7625e1eed97ab3259735a6dcd8c354f69ac0a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 25 Feb 2022 12:47:46 -0800 Subject: [PATCH 007/132] Moves tabs script to main scripts directory It's our own custom script at this point --- bookwyrm/static/js/{vendor => }/tabs.js | 0 bookwyrm/templates/book/book.html | 2 +- bookwyrm/templates/feed/layout.html | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename bookwyrm/static/js/{vendor => }/tabs.js (100%) diff --git a/bookwyrm/static/js/vendor/tabs.js b/bookwyrm/static/js/tabs.js similarity index 100% rename from bookwyrm/static/js/vendor/tabs.js rename to bookwyrm/static/js/tabs.js diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index e15b656cf..60e3d4fd8 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -386,6 +386,6 @@ {% endblock %} {% block scripts %} - + {% endblock %} diff --git a/bookwyrm/templates/feed/layout.html b/bookwyrm/templates/feed/layout.html index 5697f2669..5083c0ab8 100644 --- a/bookwyrm/templates/feed/layout.html +++ b/bookwyrm/templates/feed/layout.html @@ -31,5 +31,5 @@ {% endblock %} {% block scripts %} - + {% endblock %} From 65bd3945e70db3224ce953e4b0acea6db0f288e5 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 25 Feb 2022 12:52:35 -0800 Subject: [PATCH 008/132] Prettify tabs file --- bookwyrm/static/js/tabs.js | 72 ++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/bookwyrm/static/js/tabs.js b/bookwyrm/static/js/tabs.js index 884fb08f6..f284e5484 100644 --- a/bookwyrm/static/js/tabs.js +++ b/bookwyrm/static/js/tabs.js @@ -1,11 +1,11 @@ /* exported TabGroup */ /* -* The content below is licensed according to the W3C Software License at -* https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document -* Heavily modified to web component by Zach Leatherman -* Modified back to vanilla JavaScript with support for Bulma markup and nested tabs by Ned Zimmerman -*/ + * The content below is licensed according to the W3C Software License at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document + * Heavily modified to web component by Zach Leatherman + * Modified back to vanilla JavaScript with support for Bulma markup and nested tabs by Ned Zimmerman + */ class TabGroup { constructor(container) { this.container = container; @@ -15,7 +15,7 @@ class TabGroup { this.panels = this.container.querySelectorAll(':scope > [role="tabpanel"]'); this.delay = this.determineDelay(); - if(!this.tablist || !this.tabs.length || !this.panels.length) { + if (!this.tablist || !this.tabs.length || !this.panels.length) { return; } @@ -32,7 +32,7 @@ class TabGroup { left: 37, up: 38, right: 39, - down: 40 + down: 40, }; } @@ -42,19 +42,19 @@ class TabGroup { 37: -1, 38: -1, 39: 1, - 40: 1 + 40: 1, }; } initTabs() { let count = 0; - for(let tab of this.tabs) { + for (let tab of this.tabs) { let isSelected = tab.getAttribute("aria-selected") === "true"; tab.setAttribute("tabindex", isSelected ? "0" : "-1"); - tab.addEventListener('click', this.clickEventListener.bind(this)); - tab.addEventListener('keydown', this.keydownEventListener.bind(this)); - tab.addEventListener('keyup', this.keyupEventListener.bind(this)); + tab.addEventListener("click", this.clickEventListener.bind(this)); + tab.addEventListener("keydown", this.keydownEventListener.bind(this)); + tab.addEventListener("keyup", this.keyupEventListener.bind(this)); tab.index = count++; } @@ -64,8 +64,8 @@ class TabGroup { let selectedPanelId = this.tablist .querySelector('[role="tab"][aria-selected="true"]') .getAttribute("aria-controls"); - for(let panel of this.panels) { - if(panel.getAttribute("id") !== selectedPanelId) { + for (let panel of this.panels) { + if (panel.getAttribute("id") !== selectedPanelId) { panel.setAttribute("hidden", ""); } panel.setAttribute("tabindex", "0"); @@ -122,7 +122,7 @@ class TabGroup { // In all other cases only left and right arrow function. determineOrientation(event) { var key = event.keyCode; - var vertical = this.tablist.getAttribute('aria-orientation') == 'vertical'; + var vertical = this.tablist.getAttribute("aria-orientation") == "vertical"; var proceed = false; if (vertical) { @@ -130,8 +130,7 @@ class TabGroup { event.preventDefault(); proceed = true; } - } - else { + } else { if (key === this.keys.left || key === this.keys.right) { proceed = true; } @@ -148,7 +147,7 @@ class TabGroup { var pressed = event.keyCode; for (let tab of this.tabs) { - tab.addEventListener('focus', this.focusEventHandler.bind(this)); + tab.addEventListener("focus", this.focusEventHandler.bind(this)); } if (this.direction[pressed]) { @@ -156,11 +155,9 @@ class TabGroup { if (target.index !== undefined) { if (this.tabs[target.index + this.direction[pressed]]) { this.tabs[target.index + this.direction[pressed]].focus(); - } - else if (pressed === this.keys.left || pressed === this.keys.up) { + } else if (pressed === this.keys.left || pressed === this.keys.up) { this.focusLastTab(); - } - else if (pressed === this.keys.right || pressed == this.keys.down) { + } else if (pressed === this.keys.right || pressed == this.keys.down) { this.focusFirstTab(); } } @@ -168,8 +165,8 @@ class TabGroup { } // Activates any given tab panel - activateTab (tab, setFocus) { - if(tab.getAttribute("role") !== "tab") { + activateTab(tab, setFocus) { + if (tab.getAttribute("role") !== "tab") { tab = tab.closest('[role="tab"]'); } @@ -179,19 +176,19 @@ class TabGroup { this.deactivateTabs(); // Remove tabindex attribute - tab.removeAttribute('tabindex'); + tab.removeAttribute("tabindex"); // Set the tab as selected - tab.setAttribute('aria-selected', 'true'); + tab.setAttribute("aria-selected", "true"); // Give the tab is-active class - tab.classList.add('is-active'); + tab.classList.add("is-active"); // Get the value of aria-controls (which is an ID) - var controls = tab.getAttribute('aria-controls'); + var controls = tab.getAttribute("aria-controls"); // Remove hidden attribute from tab panel to make it visible - document.getElementById(controls).removeAttribute('hidden'); + document.getElementById(controls).removeAttribute("hidden"); // Set focus when required if (setFocus) { @@ -202,14 +199,14 @@ class TabGroup { // Deactivate all tabs and tab panels deactivateTabs() { for (let tab of this.tabs) { - tab.classList.remove('is-active'); - tab.setAttribute('tabindex', '-1'); - tab.setAttribute('aria-selected', 'false'); - tab.removeEventListener('focus', this.focusEventHandler.bind(this)); + tab.classList.remove("is-active"); + tab.setAttribute("tabindex", "-1"); + tab.setAttribute("aria-selected", "false"); + tab.removeEventListener("focus", this.focusEventHandler.bind(this)); } for (let panel of this.panels) { - panel.setAttribute('hidden', 'hidden'); + panel.setAttribute("hidden", "hidden"); } } @@ -224,15 +221,14 @@ class TabGroup { // Determine whether there should be a delay // when user navigates with the arrow keys determineDelay() { - var hasDelay = this.tablist.hasAttribute('data-delay'); + var hasDelay = this.tablist.hasAttribute("data-delay"); var delay = 0; if (hasDelay) { - var delayValue = this.tablist.getAttribute('data-delay'); + var delayValue = this.tablist.getAttribute("data-delay"); if (delayValue) { delay = delayValue; - } - else { + } else { // If no value is specified, default to 300ms delay = 300; } From 02808f88e6888230704f193f3238648dbee072f2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 25 Feb 2022 12:59:49 -0800 Subject: [PATCH 009/132] eslint fixes --- bookwyrm/settings.py | 2 +- bookwyrm/static/js/tabs.js | 31 +++++++++++++++++++------------ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 7a37499ef..0fbe3b731 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -21,7 +21,7 @@ RELEASE_API = env( PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") -JS_CACHE = "a60e5a55" +JS_CACHE = "c7144efb" # email EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend") diff --git a/bookwyrm/static/js/tabs.js b/bookwyrm/static/js/tabs.js index f284e5484..1dcb0cace 100644 --- a/bookwyrm/static/js/tabs.js +++ b/bookwyrm/static/js/tabs.js @@ -48,8 +48,10 @@ class TabGroup { initTabs() { let count = 0; + for (let tab of this.tabs) { let isSelected = tab.getAttribute("aria-selected") === "true"; + tab.setAttribute("tabindex", isSelected ? "0" : "-1"); tab.addEventListener("click", this.clickEventListener.bind(this)); @@ -64,6 +66,7 @@ class TabGroup { let selectedPanelId = this.tablist .querySelector('[role="tab"][aria-selected="true"]') .getAttribute("aria-controls"); + for (let panel of this.panels) { if (panel.getAttribute("id") !== selectedPanelId) { panel.setAttribute("hidden", ""); @@ -82,16 +85,18 @@ class TabGroup { // Handle keydown on tabs keydownEventListener(event) { - var key = event.keyCode; + const key = event.keyCode; switch (key) { case this.keys.end: event.preventDefault(); + // Activate last tab this.activateTab(this.tabs[this.tabs.length - 1]); break; case this.keys.home: event.preventDefault(); + // Activate first tab this.activateTab(this.tabs[0]); break; @@ -107,7 +112,7 @@ class TabGroup { // Handle keyup on tabs keyupEventListener(event) { - var key = event.keyCode; + const key = event.keyCode; switch (key) { case this.keys.left: @@ -121,9 +126,9 @@ class TabGroup { // only up and down arrow should function. // In all other cases only left and right arrow function. determineOrientation(event) { - var key = event.keyCode; - var vertical = this.tablist.getAttribute("aria-orientation") == "vertical"; - var proceed = false; + const key = event.keyCode; + const vertical = this.tablist.getAttribute("aria-orientation") == "vertical"; + let proceed = false; if (vertical) { if (key === this.keys.up || key === this.keys.down) { @@ -144,14 +149,15 @@ class TabGroup { // Either focus the next, previous, first, or last tab // depending on key pressed switchTabOnArrowPress(event) { - var pressed = event.keyCode; + const pressed = event.keyCode; for (let tab of this.tabs) { tab.addEventListener("focus", this.focusEventHandler.bind(this)); } if (this.direction[pressed]) { - var target = event.target; + const target = event.target; + if (target.index !== undefined) { if (this.tabs[target.index + this.direction[pressed]]) { this.tabs[target.index + this.direction[pressed]].focus(); @@ -185,7 +191,7 @@ class TabGroup { tab.classList.add("is-active"); // Get the value of aria-controls (which is an ID) - var controls = tab.getAttribute("aria-controls"); + const controls = tab.getAttribute("aria-controls"); // Remove hidden attribute from tab panel to make it visible document.getElementById(controls).removeAttribute("hidden"); @@ -221,11 +227,12 @@ class TabGroup { // Determine whether there should be a delay // when user navigates with the arrow keys determineDelay() { - var hasDelay = this.tablist.hasAttribute("data-delay"); - var delay = 0; + const hasDelay = this.tablist.hasAttribute("data-delay"); + let delay = 0; if (hasDelay) { - var delayValue = this.tablist.getAttribute("data-delay"); + const delayValue = this.tablist.getAttribute("data-delay"); + if (delayValue) { delay = delayValue; } else { @@ -238,7 +245,7 @@ class TabGroup { } focusEventHandler(event) { - var target = event.target; + const target = event.target; setTimeout(this.checkTabFocus.bind(this), this.delay, target); } From 95e911981726a4087ce52053e854468cc8e3b24d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 26 Feb 2022 08:44:19 -0800 Subject: [PATCH 010/132] Adds django celery beat --- bookwyrm/settings.py | 1 + bw-dev | 1 + docker-compose.yml | 13 +++++++++++++ requirements.txt | 1 + 4 files changed, 16 insertions(+) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 0fbe3b731..5d4eb7812 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -90,6 +90,7 @@ INSTALLED_APPS = [ "sass_processor", "bookwyrm", "celery", + 'django_celery_beat', "imagekit", "storages", ] diff --git a/bw-dev b/bw-dev index 89cc8d8c3..d4b5263df 100755 --- a/bw-dev +++ b/bw-dev @@ -215,6 +215,7 @@ case "$CMD" in ;; setup) migrate + migrate django_celery_beat initdb runweb python manage.py collectstatic --no-input admin_code diff --git a/docker-compose.yml b/docker-compose.yml index 0994aa00f..e45cae0d1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -70,6 +70,19 @@ services: - db - redis_broker restart: on-failure + celery_beat: + env_file: .env + build: . + networks: + - main + command: celery -A celerywyrm beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler + volumes: + - .:/app + - static_volume:/app/static + - media_volume:/app/images + depends_on: + - celery_worker + restart: on-failure flower: build: . command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD} diff --git a/requirements.txt b/requirements.txt index 26582e00d..8eb44d958 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ celery==5.2.2 colorthief==0.2.1 Django==3.2.12 +django-celery-beat==2.2.1 django-compressor==2.4.1 django-imagekit==4.1.0 django-model-utils==4.0.0 From 2a436800c4f801715631993aa95818fe66a18d64 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 26 Feb 2022 10:13:44 -0800 Subject: [PATCH 011/132] Schedules automod task --- bookwyrm/forms.py | 7 +++ bookwyrm/models/antispam.py | 1 + bookwyrm/settings.py | 2 +- .../templates/settings/automod/rules.html | 41 +++++++++++++-- bookwyrm/urls.py | 11 +++- bookwyrm/views/__init__.py | 2 +- bookwyrm/views/admin/automod.py | 50 ++++++++++++++++--- celerywyrm/settings.py | 5 ++ 8 files changed, 105 insertions(+), 14 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 7ae4e446f..00e6d5d8c 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -8,6 +8,7 @@ from django.forms import ModelForm, PasswordInput, widgets, ChoiceField from django.forms.widgets import Textarea from django.utils import timezone from django.utils.translation import gettext_lazy as _ +from django_celery_beat.models import IntervalSchedule from bookwyrm import models from bookwyrm.models.fields import ClearableFileInputWithWarning @@ -556,3 +557,9 @@ class AutoModRuleForm(CustomForm): class Meta: model = models.AutoMod fields = ["string_match", "flag_users", "flag_statuses", "created_by"] + + +class IntervalScheduleForm(CustomForm): + class Meta: + model = IntervalSchedule + fields = ["every", "period"] diff --git a/bookwyrm/models/antispam.py b/bookwyrm/models/antispam.py index f506b6f19..bce02780d 100644 --- a/bookwyrm/models/antispam.py +++ b/bookwyrm/models/antispam.py @@ -54,6 +54,7 @@ class AutoMod(models.Model): @app.task(queue="low_priority") def automod_task(): """Create reports""" + print("TASK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") if not AutoMod.objects.exists(): return reporter = AutoMod.objects.first().created_by diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 5d4eb7812..16e5ccb30 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -90,7 +90,7 @@ INSTALLED_APPS = [ "sass_processor", "bookwyrm", "celery", - 'django_celery_beat', + "django_celery_beat", "imagekit", "storages", ] diff --git a/bookwyrm/templates/settings/automod/rules.html b/bookwyrm/templates/settings/automod/rules.html index 8205b3d71..2a28cb641 100644 --- a/bookwyrm/templates/settings/automod/rules.html +++ b/bookwyrm/templates/settings/automod/rules.html @@ -1,5 +1,6 @@ {% extends 'settings/layout.html' %} {% load i18n %} +{% load humanize %} {% load utilities %} {% block title %} @@ -16,12 +17,46 @@

{% trans "Auto-moderation rules will create reports for any local user or status with fields matching the provided string." %} {% trans "Users or statuses that have already been reported (regardless of whether the report was resolved) will not be flagged." %} - {% trans "At this time, reports are not being generated automatically, and you must manually trigger a scan." %}

-
+ {% if task %} +
+
+ {% trans "Schedule:" %} +
+
+ {{ task.schedule }} +
+ +
+ {% trans "Last run:" %} +
+
+ {{ task.last_run_at|naturaltime }} +
+ +
+ {% trans "Total run count:" %} +
+
+ {{ task.total_run_count }} +
+ +
+ {% trans "Enabled:" %} +
+
+ + {{ task.enabled|yesno }} + +
+
+ {% else %} + {% csrf_token %} - + {{ task_form.as_p }} +
+ {% endif %} {% if success %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index d2caa76ea..5abe7ac2e 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -217,11 +217,18 @@ urlpatterns = [ # auto-moderation rules re_path(r"^settings/automod/?$", views.AutoMod.as_view(), name="settings-automod"), re_path( - r"^settings/automod/(?P\d+)/delete?$", + r"^settings/automod/(?P\d+)/delete/?$", views.automod_delete, name="settings-automod-delete", ), - re_path(r"^settings/automod/run?$", views.run_automod, name="settings-automod-run"), + re_path( + r"^settings/automod/schedule/?$", + views.schedule_automod_task, + name="settings-automod-schedule", + ), + re_path( + r"^settings/automod/run/?$", views.run_automod, name="settings-automod-run" + ), # moderation re_path( r"^settings/reports/?$", views.ReportsAdmin.as_view(), name="settings-reports" diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 76e9ff024..aa4d72999 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -2,7 +2,7 @@ # site admin from .admin.announcements import Announcements, Announcement from .admin.announcements import EditAnnouncement, delete_announcement -from .admin.automod import AutoMod, automod_delete, run_automod +from .admin.automod import AutoMod, automod_delete, run_automod, schedule_automod_task from .admin.dashboard import Dashboard from .admin.federation import Federation, FederatedServer from .admin.federation import AddFederatedServer, ImportServerBlocklist diff --git a/bookwyrm/views/admin/automod.py b/bookwyrm/views/admin/automod.py index d9901d01c..fbe6408c6 100644 --- a/bookwyrm/views/admin/automod.py +++ b/bookwyrm/views/admin/automod.py @@ -1,10 +1,12 @@ """ moderation via flagged posts and users """ from django.contrib.auth.decorators import login_required, permission_required +from django.db import transaction from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View from django.views.decorators.http import require_POST +from django_celery_beat.models import PeriodicTask from bookwyrm import forms, models @@ -24,8 +26,9 @@ class AutoMod(View): def get(self, request): """view rules""" - data = {"rules": models.AutoMod.objects.all(), "form": forms.AutoModRuleForm()} - return TemplateResponse(request, "settings/automod/rules.html", data) + return TemplateResponse( + request, "settings/automod/rules.html", automod_view_data() + ) def post(self, request): """add rule""" @@ -35,14 +38,32 @@ class AutoMod(View): form.save() form = forms.AutoModRuleForm() - data = { - "rules": models.AutoMod.objects.all(), - "form": form, - "success": success, - } + data = automod_view_data() + data["form"] = form return TemplateResponse(request, "settings/automod/rules.html", data) +@require_POST +@permission_required("bookwyrm.moderate_user", raise_exception=True) +@permission_required("bookwyrm.moderate_post", raise_exception=True) +def schedule_automod_task(request): + """scheduler""" + form = forms.IntervalScheduleForm(request.POST) + if not form.is_valid(): + data = automod_view_data() + data["task_form"] = form + return TemplateResponse(request, "settings/automod/rules.html", data) + + with transaction.atomic(): + schedule = form.save() + PeriodicTask.objects.get_or_create( + interval=schedule, + name="automod-task", + task="bookwyrm.models.antispam.automod_task", + ) + return redirect("settings-automod") + + @require_POST @permission_required("bookwyrm.moderate_user", raise_exception=True) @permission_required("bookwyrm.moderate_post", raise_exception=True) @@ -62,3 +83,18 @@ def run_automod(request): """run scan""" models.automod_task.delay() return redirect("settings-automod") + + +def automod_view_data(): + """helper to get data used in the template""" + try: + task = PeriodicTask.objects.get(name="automod-task") + except PeriodicTask.DoesNotExist: + task = None + + return { + "task": task, + "task_form": forms.IntervalScheduleForm(), + "rules": models.AutoMod.objects.all(), + "form": forms.AutoModRuleForm(), + } diff --git a/celerywyrm/settings.py b/celerywyrm/settings.py index bd7805e51..35eb3933f 100644 --- a/celerywyrm/settings.py +++ b/celerywyrm/settings.py @@ -3,6 +3,7 @@ # pylint: disable=unused-wildcard-import from bookwyrm.settings import * +# pylint: disable=line-too-long REDIS_BROKER_PASSWORD = requests.utils.quote(env("REDIS_BROKER_PASSWORD", None)) REDIS_BROKER_HOST = env("REDIS_BROKER_HOST", "redis_broker") REDIS_BROKER_PORT = env("REDIS_BROKER_PORT", 6379) @@ -16,6 +17,10 @@ CELERY_DEFAULT_QUEUE = "low_priority" CELERY_ACCEPT_CONTENT = ["json"] CELERY_TASK_SERIALIZER = "json" CELERY_RESULT_SERIALIZER = "json" + +CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler" +CELERY_TIMEZONE = env("TIME_ZONE", "UTC") + FLOWER_PORT = env("FLOWER_PORT") INSTALLED_APPS = INSTALLED_APPS + [ From 0870eccad98c28026096f06eb520fc13ebcc4dc9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 26 Feb 2022 10:24:23 -0800 Subject: [PATCH 012/132] Adds unscheduler --- bookwyrm/templates/settings/automod/rules.html | 13 +++++++++++++ bookwyrm/urls.py | 5 +++++ bookwyrm/views/__init__.py | 3 ++- bookwyrm/views/admin/automod.py | 13 +++++++++++-- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/settings/automod/rules.html b/bookwyrm/templates/settings/automod/rules.html index 2a28cb641..0a1b1c3f9 100644 --- a/bookwyrm/templates/settings/automod/rules.html +++ b/bookwyrm/templates/settings/automod/rules.html @@ -50,6 +50,19 @@ + +
+
+ {% csrf_token %} + +
+
+ {% csrf_token %} + +

{% trans "Last run date will not be updated" %}

+
+
+ {% else %}
{% csrf_token %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 5abe7ac2e..b458084e0 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -226,6 +226,11 @@ urlpatterns = [ views.schedule_automod_task, name="settings-automod-schedule", ), + re_path( + r"^settings/automod/unschedule/(?P\d+)/?$", + views.unschedule_automod_task, + name="settings-automod-unschedule", + ), re_path( r"^settings/automod/run/?$", views.run_automod, name="settings-automod-run" ), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index aa4d72999..f93928152 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -2,7 +2,8 @@ # site admin from .admin.announcements import Announcements, Announcement from .admin.announcements import EditAnnouncement, delete_announcement -from .admin.automod import AutoMod, automod_delete, run_automod, schedule_automod_task +from .admin.automod import AutoMod, automod_delete, run_automod +from .admin.automod import schedule_automod_task, unschedule_automod_task from .admin.dashboard import Dashboard from .admin.federation import Federation, FederatedServer from .admin.federation import AddFederatedServer, ImportServerBlocklist diff --git a/bookwyrm/views/admin/automod.py b/bookwyrm/views/admin/automod.py index fbe6408c6..f8c3e8e67 100644 --- a/bookwyrm/views/admin/automod.py +++ b/bookwyrm/views/admin/automod.py @@ -64,14 +64,23 @@ def schedule_automod_task(request): return redirect("settings-automod") +@require_POST +@permission_required("bookwyrm.moderate_user", raise_exception=True) +@permission_required("bookwyrm.moderate_post", raise_exception=True) +# pylint: disable=unused-argument +def unschedule_automod_task(request, task_id): + """unscheduler""" + get_object_or_404(PeriodicTask, id=task_id).delete() + return redirect("settings-automod") + + @require_POST @permission_required("bookwyrm.moderate_user", raise_exception=True) @permission_required("bookwyrm.moderate_post", raise_exception=True) # pylint: disable=unused-argument def automod_delete(request, rule_id): """Remove a rule""" - rule = get_object_or_404(models.AutoMod, id=rule_id) - rule.delete() + get_object_or_404(models.AutoMod, id=rule_id).delete() return redirect("settings-automod") From 6b5bebdf781e067e97683507639343d35e6ade45 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 26 Feb 2022 10:44:50 -0800 Subject: [PATCH 013/132] Cleans up scheduler form --- bookwyrm/forms.py | 5 ++++ .../templates/settings/automod/rules.html | 28 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 00e6d5d8c..561a86d00 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -563,3 +563,8 @@ class IntervalScheduleForm(CustomForm): class Meta: model = IntervalSchedule fields = ["every", "period"] + + widgets = { + "every": forms.NumberInput(attrs={"aria-describedby": "desc_every"}), + "period": forms.Select(attrs={"aria-describedby": "desc_period"}), + } diff --git a/bookwyrm/templates/settings/automod/rules.html b/bookwyrm/templates/settings/automod/rules.html index 0a1b1c3f9..ef0a49beb 100644 --- a/bookwyrm/templates/settings/automod/rules.html +++ b/bookwyrm/templates/settings/automod/rules.html @@ -18,8 +18,10 @@ {% trans "Auto-moderation rules will create reports for any local user or status with fields matching the provided string." %} {% trans "Users or statuses that have already been reported (regardless of whether the report was resolved) will not be flagged." %}

+ +
{% if task %} -
+
{% trans "Schedule:" %}
@@ -51,7 +53,7 @@
-
+
{% csrf_token %} @@ -64,9 +66,29 @@
{% else %} +

{% trans "Schedule scan" %}

{% csrf_token %} - {{ task_form.as_p }} +
+ + {{ task_form.every }} +

+ {{ task_form.every.help_text }} +

+
+
+ +
+ {{ task_form.period }} +
+

+ {{ task_form.period.help_text }} +

+
{% endif %} From e15193e1000193a64742b91c02688b78c2eaec58 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 26 Feb 2022 12:43:27 -0800 Subject: [PATCH 014/132] Adds themes --- .../migrations/0142_auto_20220226_2024.py | 73 +++++++++++++++++++ bookwyrm/models/site.py | 27 +++++++ .../{themes/dark.scss => bookwyrm-dark.scss} | 0 .../light.scss => bookwyrm-light.scss} | 4 +- bookwyrm/static/css/bookwyrm.scss | 1 - bookwyrm/templates/layout.html | 2 +- bookwyrm/templates/settings/site.html | 43 +++++++---- 7 files changed, 133 insertions(+), 17 deletions(-) create mode 100644 bookwyrm/migrations/0142_auto_20220226_2024.py rename bookwyrm/static/css/{themes/dark.scss => bookwyrm-dark.scss} (100%) rename bookwyrm/static/css/{themes/light.scss => bookwyrm-light.scss} (93%) diff --git a/bookwyrm/migrations/0142_auto_20220226_2024.py b/bookwyrm/migrations/0142_auto_20220226_2024.py new file mode 100644 index 000000000..662cd9bdc --- /dev/null +++ b/bookwyrm/migrations/0142_auto_20220226_2024.py @@ -0,0 +1,73 @@ +# Generated by Django 3.2.12 on 2022-02-26 20:24 + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion + + +def add_default_themes(apps, schema_editor): + """add light and dark themes""" + db_alias = schema_editor.connection.alias + theme_model = apps.get_model("bookwyrm", "Theme") + theme_model.objects.using(db_alias).bulk_create( + [ + theme_model.objects.using(db_alias)( + name="BookWyrm Light", + path="bookwyrm-light.scss", + ), + theme_model.objects.using(db_alias)( + name="BookWyrm Dark", + path="bookwyrm-dark.scss", + ), + ] + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0141_alter_report_status"), + ] + + operations = [ + migrations.CreateModel( + name="Theme", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("created_date", models.DateTimeField(auto_now_add=True)), + ("name", models.CharField(max_length=10, unique=True)), + ( + "theme_file", + models.FileField( + upload_to="css/", + validators=[ + django.core.validators.FileExtensionValidator( + ["scss", "sass"] + ) + ], + ), + ), + ], + ), + migrations.AddField( + model_name="sitesettings", + name="default_theme", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="bookwyrm.theme", + ), + ), + migrations.RunPython( + add_default_themes, reversed_code=migrations.RunPython.noop + ), + ] diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py index a40d295bc..602a3f59f 100644 --- a/bookwyrm/models/site.py +++ b/bookwyrm/models/site.py @@ -3,6 +3,7 @@ import datetime from urllib.parse import urljoin import uuid +from django.core.validators import FileExtensionValidator from django.db import models, IntegrityError from django.dispatch import receiver from django.utils import timezone @@ -24,6 +25,9 @@ class SiteSettings(models.Model): ) instance_description = models.TextField(default="This instance has no description.") instance_short_description = models.CharField(max_length=255, blank=True, null=True) + default_theme = models.ForeignKey( + "Theme", null=True, blank=True, on_delete=models.SET_NULL + ) # admin setup options install_mode = models.BooleanField(default=False) @@ -104,6 +108,29 @@ class SiteSettings(models.Model): super().save(*args, **kwargs) +class Theme(models.Model): + """Theme files""" + + created_date = models.DateTimeField(auto_now_add=True) + name = models.CharField(max_length=10, unique=True) + theme_file = models.FileField( + upload_to="css/", + validators=[FileExtensionValidator(["scss", "sass"])], + null=True, + ) + path = models.CharField(max_length=50, blank=True, null=True) + + @classmethod + def get_theme(cls, user): + """get the theme given the user/site""" + if user and user.theme: + return user.theme.path + site = SiteSettings.objects.get() + if site.theme: + return site.theme.path + return "light.scss" + + class SiteInvite(models.Model): """gives someone access to create an account on the instance""" diff --git a/bookwyrm/static/css/themes/dark.scss b/bookwyrm/static/css/bookwyrm-dark.scss similarity index 100% rename from bookwyrm/static/css/themes/dark.scss rename to bookwyrm/static/css/bookwyrm-dark.scss diff --git a/bookwyrm/static/css/themes/light.scss b/bookwyrm/static/css/bookwyrm-light.scss similarity index 93% rename from bookwyrm/static/css/themes/light.scss rename to bookwyrm/static/css/bookwyrm-light.scss index 339fc2c36..6b7b5b349 100644 --- a/bookwyrm/static/css/themes/light.scss +++ b/bookwyrm/static/css/bookwyrm-light.scss @@ -1,4 +1,4 @@ -@import "../vendor/bulma/sass/utilities/derived-variables.sass"; +@import "vendor/bulma/sass/utilities/derived-variables.sass"; /* Colors ******************************************************************************/ @@ -51,3 +51,5 @@ $menu-item-active-background-color: $link-background; ******************************************************************************/ $family-primary: $family-sans-serif; $family-secondary: $family-sans-serif; + +@import "bookwyrm.scss"; diff --git a/bookwyrm/static/css/bookwyrm.scss b/bookwyrm/static/css/bookwyrm.scss index 6b5e7e6b5..ee25b7287 100644 --- a/bookwyrm/static/css/bookwyrm.scss +++ b/bookwyrm/static/css/bookwyrm.scss @@ -1,7 +1,6 @@ @charset "utf-8"; @import "instance-settings"; -@import "themes/light.scss"; @import "vendor/bulma/bulma.sass"; @import "vendor/icons.css"; @import "bookwyrm/all.scss"; diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index 0e8740724..a31499966 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -8,7 +8,7 @@ {% block title %}BookWyrm{% endblock %} - {{ site.name }} - + diff --git a/bookwyrm/templates/settings/site.html b/bookwyrm/templates/settings/site.html index 2ecd988ea..0afbd64f6 100644 --- a/bookwyrm/templates/settings/site.html +++ b/bookwyrm/templates/settings/site.html @@ -8,7 +8,7 @@ {% block site-subtabs %} @@ -68,20 +68,35 @@ -
-

{% trans "Images" %}

-
-
- - {{ site_form.logo }} +
+

{% trans "Display" %}

+
+

{% trans "Images" %}

+
+
+ + {{ site_form.logo }} +
+
+ + {{ site_form.logo_small }} +
+
+ + {{ site_form.favicon }} +
-
- - {{ site_form.logo_small }} -
-
- - {{ site_form.favicon }} + +

{% trans "Themes" %}

+
+ +
+ {{ site_form.default_theme }} +
+ +
From 43269429acdec88d1c369a142543d124ef060427 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 26 Feb 2022 13:38:45 -0800 Subject: [PATCH 015/132] Use selected theme --- ...226_2024.py => 0142_auto_20220226_2047.py} | 36 +++++++++++-------- bookwyrm/models/__init__.py | 2 +- bookwyrm/models/site.py | 16 ++++----- bookwyrm/models/user.py | 14 ++++++++ bookwyrm/static/css/bookwyrm-dark.scss | 4 ++- bookwyrm/templates/layout.html | 4 ++- 6 files changed, 50 insertions(+), 26 deletions(-) rename bookwyrm/migrations/{0142_auto_20220226_2024.py => 0142_auto_20220226_2047.py} (67%) diff --git a/bookwyrm/migrations/0142_auto_20220226_2024.py b/bookwyrm/migrations/0142_auto_20220226_2047.py similarity index 67% rename from bookwyrm/migrations/0142_auto_20220226_2024.py rename to bookwyrm/migrations/0142_auto_20220226_2047.py index 662cd9bdc..928d556c7 100644 --- a/bookwyrm/migrations/0142_auto_20220226_2024.py +++ b/bookwyrm/migrations/0142_auto_20220226_2047.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.12 on 2022-02-26 20:24 +# Generated by Django 3.2.12 on 2022-02-26 20:47 import django.core.validators from django.db import migrations, models @@ -9,17 +9,13 @@ def add_default_themes(apps, schema_editor): """add light and dark themes""" db_alias = schema_editor.connection.alias theme_model = apps.get_model("bookwyrm", "Theme") - theme_model.objects.using(db_alias).bulk_create( - [ - theme_model.objects.using(db_alias)( - name="BookWyrm Light", - path="bookwyrm-light.scss", - ), - theme_model.objects.using(db_alias)( - name="BookWyrm Dark", - path="bookwyrm-dark.scss", - ), - ] + theme_model.objects.using(db_alias).create( + name="BookWyrm Light", + path="bookwyrm-light.scss", + ) + theme_model.objects.using(db_alias).create( + name="BookWyrm Dark", + path="bookwyrm-dark.scss", ) @@ -43,10 +39,11 @@ class Migration(migrations.Migration): ), ), ("created_date", models.DateTimeField(auto_now_add=True)), - ("name", models.CharField(max_length=10, unique=True)), + ("name", models.CharField(max_length=50, unique=True)), ( "theme_file", models.FileField( + null=True, upload_to="css/", validators=[ django.core.validators.FileExtensionValidator( @@ -55,6 +52,7 @@ class Migration(migrations.Migration): ], ), ), + ("path", models.CharField(blank=True, max_length=50, null=True)), ], ), migrations.AddField( @@ -67,7 +65,17 @@ class Migration(migrations.Migration): to="bookwyrm.theme", ), ), + migrations.AddField( + model_name="user", + name="theme", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="bookwyrm.theme", + ), + ), migrations.RunPython( - add_default_themes, reversed_code=migrations.RunPython.noop + add_default_themes, reverse_code=migrations.RunPython.noop ), ] diff --git a/bookwyrm/models/__init__.py b/bookwyrm/models/__init__.py index 440d18d95..a8a84f095 100644 --- a/bookwyrm/models/__init__.py +++ b/bookwyrm/models/__init__.py @@ -26,7 +26,7 @@ from .group import Group, GroupMember, GroupMemberInvitation from .import_job import ImportJob, ImportItem -from .site import SiteSettings, SiteInvite +from .site import SiteSettings, Theme, SiteInvite from .site import PasswordReset, InviteRequest from .announcement import Announcement from .antispam import EmailBlocklist, IPBlocklist, AutoMod, automod_task diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py index 602a3f59f..30ebfe742 100644 --- a/bookwyrm/models/site.py +++ b/bookwyrm/models/site.py @@ -112,7 +112,7 @@ class Theme(models.Model): """Theme files""" created_date = models.DateTimeField(auto_now_add=True) - name = models.CharField(max_length=10, unique=True) + name = models.CharField(max_length=50, unique=True) theme_file = models.FileField( upload_to="css/", validators=[FileExtensionValidator(["scss", "sass"])], @@ -120,15 +120,13 @@ class Theme(models.Model): ) path = models.CharField(max_length=50, blank=True, null=True) - @classmethod - def get_theme(cls, user): + def __str__(self): + return self.name + + @property + def theme_path(self): """get the theme given the user/site""" - if user and user.theme: - return user.theme.path - site = SiteSettings.objects.get() - if site.theme: - return site.theme.path - return "light.scss" + return self.theme_file.path if self.theme_file else self.path class SiteInvite(models.Model): diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 6367dcaef..3d12e6044 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -136,6 +136,7 @@ class User(OrderedCollectionPageMixin, AbstractUser): updated_date = models.DateTimeField(auto_now=True) last_active_date = models.DateTimeField(default=timezone.now) manually_approves_followers = fields.BooleanField(default=False) + theme = models.ForeignKey("Theme", null=True, blank=True, on_delete=models.SET_NULL) # options to turn features on and off show_goal = models.BooleanField(default=True) @@ -172,6 +173,19 @@ class User(OrderedCollectionPageMixin, AbstractUser): property_fields = [("following_link", "following")] field_tracker = FieldTracker(fields=["name", "avatar"]) + @property + def get_theme(self): + """get the theme given the user/site""" + if self.theme: + path = self.theme.theme_path + else: + site_model = apps.get_model("bookwyrm", "SiteSettings", require_ready=True) + site = site_model.objects.get() + if site.default_theme: + path = site.default_theme.theme_path + path = path or "light.scss" + return f"css/{path}" + @property def confirmation_link(self): """helper for generating confirmation links""" diff --git a/bookwyrm/static/css/bookwyrm-dark.scss b/bookwyrm/static/css/bookwyrm-dark.scss index 8df4ce500..957187ffd 100644 --- a/bookwyrm/static/css/bookwyrm-dark.scss +++ b/bookwyrm/static/css/bookwyrm-dark.scss @@ -1,4 +1,4 @@ -@import "../vendor/bulma/sass/utilities/derived-variables.sass"; +@import "vendor/bulma/sass/utilities/derived-variables.sass"; /* Colors ******************************************************************************/ @@ -53,3 +53,5 @@ $menu-item-active-background-color: $link-background; ******************************************************************************/ $family-primary: $family-sans-serif; $family-secondary: $family-sans-serif; + +@import "bookwyrm.scss"; diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index a31499966..444241e5b 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -8,7 +8,9 @@ {% block title %}BookWyrm{% endblock %} - {{ site.name }} - + {% with theme_path=user.get_theme %} + + {% endwith %} From 340b306d2e6cc6e6fad36a51f15e4fe8bbe3e3e0 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 18:08:07 -0800 Subject: [PATCH 016/132] Fix path --- bookwyrm/templates/layout.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index 54ccbe276..b059af6d2 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -272,7 +272,7 @@ - + {% block scripts %}{% endblock %} From fcc8b6aaabe7df427038d485b3b1a07cf94fd193 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 18:19:12 -0800 Subject: [PATCH 017/132] Move to sass --- bookwyrm/static/css/bookwyrm.css | 1319 ----------------- bookwyrm/static/css/bookwyrm/_all.scss | 1 + .../css/bookwyrm/components/_barcode.scss | 14 + 3 files changed, 15 insertions(+), 1319 deletions(-) delete mode 100644 bookwyrm/static/css/bookwyrm.css create mode 100644 bookwyrm/static/css/bookwyrm/components/_barcode.scss diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css deleted file mode 100644 index f1faf30c1..000000000 --- a/bookwyrm/static/css/bookwyrm.css +++ /dev/null @@ -1,1319 +0,0 @@ -html { - scroll-behavior: smooth; -} - -body { - min-height: 100vh; - display: flex; - flex-direction: column; -} - -button { - border: none; - margin: 0; - padding: 0; - width: auto; - overflow: visible; - background: transparent; - - /* inherit font, color & alignment from ancestor */ - color: inherit; - font: inherit; - text-align: inherit; - - /* Normalize `line-height`. Cannot be changed from `normal` in Firefox 4+. */ - line-height: normal; - - /* Corrects font smoothing for webkit */ - -webkit-font-smoothing: inherit; - -moz-osx-font-smoothing: inherit; - - /* Corrects inability to style clickable `input` types in iOS */ - -webkit-appearance: none; - - /* Generalizes pointer cursor */ - cursor: pointer; -} - -button::-moz-focus-inner { - /* Remove excess padding and border in Firefox 4+ */ - border: 0; - padding: 0; -} - -/* Better accessibility for keyboard users */ -*:focus-visible { - outline-style: auto !important; -} - -.image { - overflow: hidden; -} - -.navbar .logo { - max-height: 50px; -} - -.card { - overflow: visible; -} - -.card.has-border { - border: 1px solid #eee; -} - -.scroll-x { - overflow: hidden; - overflow-x: auto; -} - -.modal-card { - pointer-events: none; -} - -.modal-card > * { - pointer-events: all; -} - -/* stylelint-disable no-descending-specificity */ -.modal-card:focus { - outline-style: auto; -} - -.modal-card:focus:not(:focus-visible) { - outline-style: initial; -} - -.modal-card:focus-visible { - outline-style: auto; -} -/* stylelint-enable no-descending-specificity */ - -.modal-card.is-fullwidth { - min-width: 75% !important; -} - -@media only screen and (min-width: 769px) { - .modal-card.is-thin { - width: 350px !important; - } -} - -.modal-card-body { - max-height: 70vh; -} - -.clip-text { - max-height: 35em; - overflow: hidden; -} - -/** Utilities not covered by Bulma - ******************************************************************************/ - -@media only screen and (max-width: 768px) { - .is-sr-only-mobile { - border: none !important; - clip: rect(0, 0, 0, 0) !important; - height: 0.01em !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - white-space: nowrap !important; - width: 0.01em !important; - } - - .m-0-mobile { - margin: 0 !important; - } - - .card-footer.is-stacked-mobile { - flex-direction: column; - } - - .card-footer.is-stacked-mobile .card-footer-item:not(:last-child) { - border-bottom: 1px solid #ededed; - border-right: 0; - } - - .is-flex-direction-row-mobile { - flex-direction: row !important; - } - - .is-flex-direction-column-mobile { - flex-direction: column !important; - } -} - -.tag.is-small { - height: auto; -} - -.button.is-transparent { - background-color: transparent; -} - -.card.is-stretchable { - display: flex; - flex-direction: column; - height: 100%; -} - -.card.is-stretchable .card-content { - flex-grow: 1; -} - -.preserve-whitespace p { - white-space: pre-wrap !important; -} - -.display-inline p { - display: inline !important; -} - -button .button-invisible-overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - padding: 1rem; - box-sizing: border-box; - display: flex; - align-items: center; - flex-direction: column; - justify-content: center; - background: rgba(0, 0, 0, 66%); - color: white; - opacity: 0; - transition: opacity 0.2s ease; -} - -button:hover .button-invisible-overlay, -button:active .button-invisible-overlay, -button:focus-visible .button-invisible-overlay { - opacity: 1; -} - -/** File input styles - ******************************************************************************/ - -input[type="file"]::file-selector-button { - -moz-appearance: none; - -webkit-appearance: none; - background-color: #fff; - border-radius: 4px; - border: 1px solid #dbdbdb; - box-shadow: none; - color: #363636; - cursor: pointer; - font-size: 1rem; - height: 2.5em; - justify-content: center; - line-height: 1.5; - padding-bottom: calc(0.5em - 1px); - padding-left: 1em; - padding-right: 1em; - padding-top: calc(0.5em - 1px); - text-align: center; - white-space: nowrap; -} - -input[type="file"]::file-selector-button:hover { - border-color: #b5b5b5; - color: #363636; -} - -/** General `details` element styles - ******************************************************************************/ - -details summary { - cursor: pointer; -} - -summary::-webkit-details-marker { - display: none; -} - -details summary::marker { - content: none; -} - -details.detail-pinned-button summary { - position: absolute; - right: 0; -} - -details.detail-pinned-button form { - float: left; - width: 100%; - margin-top: 1em; -} - -/** Dropdown w/ Details element - ******************************************************************************/ - -details.dropdown[open] summary.dropdown-trigger::before { - content: ""; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -details.dropdown .dropdown-menu { - display: block !important; -} - -details.dropdown .dropdown-menu button { - /* Fix weird Safari defaults */ - box-sizing: border-box; -} - -details.dropdown .dropdown-menu button:focus-visible, -details.dropdown .dropdown-menu a:focus-visible { - outline-style: auto; - outline-offset: -2px; -} - -@media only screen and (max-width: 768px) { - details.dropdown[open] summary.dropdown-trigger::before { - background-color: rgba(0, 0, 0, 50%); - z-index: 30; - } - - details .dropdown-menu { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex !important; - align-items: center; - justify-content: center; - pointer-events: none; - z-index: 100; - } - - details .dropdown-menu > * { - pointer-events: all; - } -} - -/** Details panel - ******************************************************************************/ - -details.details-panel { - box-shadow: 0 0 0 1px rgba(0, 0, 0, 10%); - transition: box-shadow 0.2s ease; - padding: 0.75rem; -} - -details[open].details-panel, -details.details-panel:hover { - box-shadow: 0 0 0 1px rgba(0, 0, 0, 20%); -} - -details.details-panel summary { - position: relative; -} - -details.details-panel summary .details-close { - position: absolute; - right: 0; - top: 0; - transform: rotate(45deg); - transition: transform 0.2s ease; -} - -details[open].details-panel summary .details-close { - transform: rotate(0deg); -} - -@media only screen and (min-width: 769px) { - .details-panel .filters-field:not(:last-child) { - border-right: 1px solid rgba(0, 0, 0, 10%); - margin-top: 0.75rem; - margin-bottom: 0.75rem; - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } -} - -/** Shelving - ******************************************************************************/ - -/** @todo Replace icons with SVG symbols. - @see https://www.youtube.com/watch?v=9xXBYcWgCHA */ -.shelf-option:disabled > *::after { - font-family: icomoon; /* stylelint-disable font-family-no-missing-generic-family-keyword */ - content: "\e919"; /* icon-check */ - margin-left: 0.5em; -} - -/** Toggles - ******************************************************************************/ - -.toggle-button[aria-pressed="true"], -.toggle-button[aria-pressed="true"]:hover { - background-color: hsl(171deg, 100%, 41%); - color: white; -} - -.hide-active[aria-pressed="true"], -.hide-inactive[aria-pressed="false"] { - display: none; -} - -.transition-x.is-hidden, -.transition-y.is-hidden { - display: block !important; - visibility: hidden !important; - height: 0 !important; - width: 0 !important; - margin: 0 !important; - padding: 0 !important; - overflow: auto; -} - -.transition-x, -.transition-y { - transition-duration: 0.5s; - transition-timing-function: ease; -} - -.transition-x { - transition-property: width, margin-left, margin-right, padding-left, padding-right; -} - -.transition-y { - transition-property: height, margin-top, margin-bottom, padding-top, padding-bottom; -} - -@media (prefers-reduced-motion: reduce) { - .transition-x, - .transition-y { - transition-duration: 0.001ms !important; - } -} - -/** Stars - ******************************************************************************/ - -.stars { - white-space: nowrap; -} - -/** Stars in a review form - * - * Specificity makes hovering taking over checked inputs. - * - * \e9d9: filled star - * \e9d7: empty star; - * -------------------------------------------------------------------------- */ - -.form-rate-stars { - width: max-content; -} - -/* All stars are visually filled by default. */ -.form-rate-stars .icon::before { - content: "\e9d9"; /* icon-star-full */ -} - -/* Icons directly following half star inputs are marked as half */ -.form-rate-stars input.half:checked ~ .icon::before { - content: "\e9d8"; /* icon-star-half */ -} - -/* stylelint-disable no-descending-specificity */ -.form-rate-stars input.half:checked + input + .icon:hover::before { - content: "\e9d8" !important; /* icon-star-half */ -} - -/* Icons directly following half check inputs that follow the checked input are emptied. */ -.form-rate-stars input.half:checked + input + .icon ~ .icon::before { - content: "\e9d7"; /* icon-star-empty */ -} - -/* Icons directly following inputs that follow the checked input are emptied. */ -.form-rate-stars input:checked ~ input + .icon::before { - content: "\e9d7"; /* icon-star-empty */ -} - -/* When a label is hovered, repeat the fill-all-then-empty-following pattern. */ -.form-rate-stars:hover .icon.icon::before { - content: "\e9d9" !important; /* icon-star-full */ -} - -.form-rate-stars .icon:hover ~ .icon::before { - content: "\e9d7" !important; /* icon-star-empty */ -} - -/** Book covers - * - * - .is-cover gives the behaviour of the cover and its surrounding. (optional) - * - .cover-container gives the dimensions and position (for borders, image and other elements). - * - .book-cover is positioned and sized based on its container. - * - * To have the cover within specific dimensions, specify a width or height for - * standard bulma’s named breapoints: - * - * `is-(w|h)-(auto|xs|s|m|l|xl|xxl)[-(mobile|tablet|desktop)]` - * - * The cover will be centered horizontally and vertically within those dimensions. - * - * When using `.column.is-N`, add `.is-w-auto` to the container so that the flex - * calculations are not biased by the default `max-content`. - ******************************************************************************/ - -.column.is-cover { - flex-grow: 0 !important; -} - -.column.is-cover, -.column.is-cover + .column { - flex-basis: auto !important; -} - -.cover-container { - display: flex; - justify-content: center; - align-items: center; - position: relative; - width: max-content; - max-width: 100%; - overflow: hidden; -} - -/* Book cover - * -------------------------------------------------------------------------- */ - -.book-cover { - display: block; - max-width: 100%; - max-height: 100%; - - /* Useful when stretching under-sized images. */ - image-rendering: optimizequality; - image-rendering: smooth; -} - -/* Cover caption - * -------------------------------------------------------------------------- */ - -.no-cover .cover-caption { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 0.5em; - font-size: 0.75em; - color: white; - background-color: #002549; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - gap: 1em; - white-space: initial; - text-align: center; -} - -/** Avatars - ******************************************************************************/ - -.avatar { - vertical-align: middle; - display: inline; -} - -/** Statuses: Quotes - * - * \e906: icon-quote-open - * \e905: icon-quote-close - * - * The `content` class on the blockquote allows to apply styles to markdown - * generated HTML in the quote: https://bulma.io/documentation/elements/content/ - * - * ```html - *
- *
- * User generated quote in markdown… - *
- * - *

Book Title by Author

- *
- * ``` - ******************************************************************************/ - -.quote > blockquote { - position: relative; - padding-left: 2em; -} - -.quote > blockquote::before, -.quote > blockquote::after { - font-family: icomoon; - position: absolute; -} - -.quote > blockquote::before { - content: "\e907"; /* icon-quote-open */ - top: 0; - left: 0; -} - -.quote > blockquote::after { - content: "\e906"; /* icon-quote-close */ - right: 0; -} - -/** Animations and transitions - ******************************************************************************/ - -@keyframes turning { - from { transform: rotateZ(0deg); } - to { transform: rotateZ(360deg); } -} - -.is-processing .icon-spinner::before { - animation: turning 1.5s infinite linear; -} - -.icon-spinner { - display: none; -} - -.is-processing .icon-spinner { - display: flex; -} - -@media (prefers-reduced-motion: reduce) { - .is-processing .icon::before { - transition-duration: 0.001ms !important; - } -} - -/** Transient notification - ******************************************************************************/ - -#live-messages { - position: fixed; - bottom: 1em; - right: 1em; -} - -/** Tooltips - ******************************************************************************/ - -.tooltip { - width: 100%; -} - -/** States - ******************************************************************************/ - -/* "disabled" for non-buttons */ - -.is-disabled { - background-color: #dbdbdb; - border-color: #dbdbdb; - box-shadow: none; - color: #7a7a7a; - opacity: 0.5; - cursor: not-allowed; -} - -/* Book preview table - ******************************************************************************/ - -.book-preview td { - vertical-align: middle; -} - -@media only screen and (max-width: 768px) { - table.is-mobile, - table.is-mobile tbody { - display: block; - } - - table.is-mobile tr { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - border-top: 1px solid #dbdbdb; - } - - table.is-mobile td { - display: block; - box-sizing: border-box; - flex: 1 0 100%; - order: 2; - border-bottom: 0; - } - - table.is-mobile td.book-preview-top-row { - order: 1; - flex-basis: auto; - } - - table.is-mobile td[data-title]:not(:empty)::before { - content: attr(data-title); - display: block; - font-size: 0.75em; - font-weight: bold; - } - - table.is-mobile td:empty { - padding: 0; - } - - table.is-mobile th, - table.is-mobile thead { - display: none; - } -} - -/* Book list - ******************************************************************************/ - -ol.ordered-list { - list-style: none; - counter-reset: list-counter; -} - -ol.ordered-list li { - counter-increment: list-counter; -} - -ol.ordered-list li::before { - content: counter(list-counter); - position: absolute; - left: -20px; - width: 20px; - height: 24px; - background-color: #fff; - border: 1px solid #dbdbdb; - border-right: 0; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - display: flex; - justify-content: center; - align-items: center; - color: #888; - font-size: 0.8em; - font-weight: bold; -} - -@media only screen and (max-width: 768px) { - ol.ordered-list li::before { - left: 0; - z-index: 1; - border: 0; - border-right: 1px solid #dbdbdb; - border-bottom: 1px solid #dbdbdb; - border-radius: 0; - border-bottom-right-radius: 2px; - } -} - -.overflow-wrap-anywhere { - overflow-wrap: anywhere; - min-width: 10em; -} - -/* Threads - ******************************************************************************/ - -.thread .is-main .card { - box-shadow: 0 0.5em 1em -0.125em rgb(50 115 220 / 35%), 0 0 0 1px rgb(50 115 220 / 2%); -} - -.thread::after { - content: ""; - position: absolute; - z-index: -1; - top: 0; - bottom: 0; - left: 2.5em; - border-left: 2px solid #e0e0e0; -} - -/* Breadcrumbs - ******************************************************************************/ - -.breadcrumb li:first-child * { - padding-left: 0; -} - -.breadcrumb li > * { - align-items: center; - display: flex; - justify-content: center; - padding: 0 0.75em; -} - -/* Notifications page - ******************************************************************************/ - -.notification a.icon { - text-decoration: none !important; -} - -/* Breadcrumbs - ******************************************************************************/ - -.books-grid { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 1rem; - align-items: end; - justify-items: stretch; -} - -.books-grid > .is-big { - grid-column: span 2; - grid-row: span 2; - justify-self: stretch; -} - -.books-grid .book-cover { - width: 100%; -} - -.books-grid .book-title { - --height-basis: 1.35rem; - - display: block; - margin-top: 0.5rem; - line-height: var(--height-basis); - min-height: calc(2 * var(--height-basis)); -} - -@media only screen and (min-width: 769px) { - .books-grid { - gap: 1.5rem; - grid-template-columns: repeat(auto-fill, minmax(8em, 1fr)); - } -} - -/* Copy - ******************************************************************************/ - -.horizontal-copy { - display: flex; - flex-direction: row; - align-items: center; - gap: 0.75rem; -} - -.horizontal-copy textarea { - min-width: initial; - white-space: nowrap; -} - -.horizontal-copy button { - align-self: stretch; - height: unset; -} - -.vertical-copy { - display: flex; - flex-direction: column; - align-items: stretch; - gap: 0.75rem; -} - -.vertical-copy button { - width: 100%; -} - -/* Dimensions - * @todo These could be in rem. - ******************************************************************************/ - -.is-32x32 { - min-width: 32px !important; - min-height: 32px !important; -} - -.is-96x96 { - min-width: 96px !important; - min-height: 96px !important; -} - -.is-w-auto { - width: auto !important; -} - -.is-w-xs { - width: 80px !important; -} - -.is-w-s { - width: 100px !important; -} - -.is-w-m { - width: 150px !important; -} - -.is-w-l { - width: 200px !important; -} - -.is-w-xl { - width: 250px !important; -} - -.is-w-xxl { - width: 500px !important; -} - -.is-h-xs { - height: 80px !important; -} - -.is-h-s { - height: 100px !important; -} - -.is-h-m { - height: 150px !important; -} - -.is-h-l { - height: 200px !important; -} - -.is-h-xl { - height: 250px !important; -} - -.is-h-xxl { - height: 500px !important; -} - -@media only screen and (max-width: 768px) { - .is-w-auto-mobile { - width: auto !important; - } - - .is-w-xs-mobile { - width: 80px !important; - } - - .is-w-s-mobile { - width: 100px !important; - } - - .is-w-m-mobile { - width: 150px !important; - } - - .is-w-l-mobile { - width: 200px !important; - } - - .is-w-xl-mobile { - width: 250px !important; - } - - .is-w-xxl-mobile { - width: 500px !important; - } - - .is-h-xs-mobile { - height: 80px !important; - } - - .is-h-s-mobile { - height: 100px !important; - } - - .is-h-m-mobile { - height: 150px !important; - } - - .is-h-l-mobile { - height: 200px !important; - } - - .is-h-xl-mobile { - height: 250px !important; - } - - .is-h-xxl-mobile { - height: 500px !important; - } -} - -@media only screen and (min-width: 769px) { - .is-w-auto-tablet { - width: auto !important; - } - - .is-w-xs-tablet { - width: 80px !important; - } - - .is-w-s-tablet { - width: 100px !important; - } - - .is-w-m-tablet { - width: 150px !important; - } - - .is-w-l-tablet { - width: 200px !important; - } - - .is-w-xl-tablet { - width: 250px !important; - } - - .is-w-xxl-tablet { - width: 500px !important; - } - - .is-h-xs-tablet { - height: 80px !important; - } - - .is-h-s-tablet { - height: 100px !important; - } - - .is-h-m-tablet { - height: 150px !important; - } - - .is-h-l-tablet { - height: 200px !important; - } - - .is-h-xl-tablet { - height: 250px !important; - } - - .is-h-xxl-tablet { - height: 500px !important; - } -} - -@media only screen and (min-width: 1024px) { - .is-w-auto-desktop { - width: auto !important; - } - - .is-w-xs-desktop { - width: 80px !important; - } - - .is-w-s-desktop { - width: 100px !important; - } - - .is-w-m-desktop { - width: 150px !important; - } - - .is-w-l-desktop { - width: 200px !important; - } - - .is-w-xl-desktop { - width: 250px !important; - } - - .is-w-xxl-desktop { - width: 500px !important; - } - - .is-h-xs-desktop { - height: 80px !important; - } - - .is-h-s-desktop { - height: 100px !important; - } - - .is-h-m-desktop { - height: 150px !important; - } - - .is-h-l-desktop { - height: 200px !important; - } - - .is-h-xl-desktop { - height: 250px !important; - } - - .is-h-xxl-desktop { - height: 500px !important; - } -} - -/* Alignments - * - * Use them with `.align.to-(c|t|r|b|l)[-(mobile|tablet)]` - ******************************************************************************/ - -/* Flex item position - * -------------------------------------------------------------------------- */ - -.align { - display: flex !important; - flex-direction: row !important; -} - -.align.to-c { - justify-content: center !important; -} - -.align.to-t { - align-items: flex-start !important; -} - -.align.to-r { - justify-content: flex-end !important; -} - -.align.to-b { - align-items: flex-end !important; -} - -.align.to-l { - justify-content: flex-start !important; -} - -@media screen and (max-width: 768px) { - .align.to-c-mobile { - justify-content: center !important; - } - - .align.to-t-mobile { - align-items: flex-start !important; - } - - .align.to-r-mobile { - justify-content: flex-end !important; - } - - .align.to-b-mobile { - align-items: flex-end !important; - } - - .align.to-l-mobile { - justify-content: flex-start !important; - } -} - -@media screen and (min-width: 769px) { - .align.to-c-tablet { - justify-content: center !important; - } - - .align.to-t-tablet { - align-items: flex-start !important; - } - - .align.to-r-tablet { - justify-content: flex-end !important; - } - - .align.to-b-tablet { - align-items: flex-end !important; - } - - .align.to-l-tablet { - justify-content: flex-start !important; - } -} - -/* Spacings - * - * Those are supplementary rules to Bulma’s. They follow the same conventions. - * Add those you’ll need. - ******************************************************************************/ - -.mr-auto { - margin-right: auto !important; -} - -.ml-auto { - margin-left: auto !important; -} - -@media screen and (max-width: 768px) { - .m-0-mobile { - margin: 0 !important; - } - - .mr-auto-mobile { - margin-right: auto !important; - } - - .ml-auto-mobile { - margin-left: auto !important; - } - - .mt-3-mobile { - margin-top: 0.75rem !important; - } - - .ml-3-mobile { - margin-left: 0.75rem !important; - } - - .mx-3-mobile { - margin-right: 0.75rem !important; - margin-left: 0.75rem !important; - } - - .my-3-mobile { - margin-top: 0.75rem !important; - margin-bottom: 0.75rem !important; - } -} - -@media screen and (min-width: 769px) { - .m-0-tablet { - margin: 0 !important; - } - - .mr-auto-tablet { - margin-right: auto !important; - } - - .ml-auto-tablet { - margin-left: auto !important; - } - - .mt-3-tablet { - margin-top: 0.75rem !important; - } - - .ml-3-tablet { - margin-left: 0.75rem !important; - } - - .mx-3-tablet { - margin-right: 0.75rem !important; - margin-left: 0.75rem !important; - } - - .my-3-tablet { - margin-top: 0.75rem !important; - margin-bottom: 0.75rem !important; - } -} - -/* Gaps (for Flexbox and Grid) - * - * Those are supplementary rules to Bulma’s. They follow the same conventions. - * Add those you’ll need. - ******************************************************************************/ - -.is-gap-0 { - gap: 0; -} - -.is-gap-1 { - gap: 0.25rem; -} - -.is-gap-2 { - gap: 0.5rem; -} - -.is-gap-3 { - gap: 0.75rem; -} - -.is-gap-4 { - gap: 1rem; -} - -.is-gap-5 { - gap: 1.5rem; -} - -.is-gap-6 { - gap: 3rem; -} - -.is-row-gap-0 { - row-gap: 0; -} - -.is-row-gap-1 { - row-gap: 0.25rem; -} - -.is-row-gap-2 { - row-gap: 0.5rem; -} - -.is-row-gap-3 { - row-gap: 0.75rem; -} - -.is-row-gap-4 { - row-gap: 1rem; -} - -.is-row-gap-5 { - row-gap: 1.5rem; -} - -.is-row-gap-6 { - row-gap: 3rem; -} - -.is-column-gap-0 { - column-gap: 0; -} - -.is-column-gap-1 { - column-gap: 0.25rem; -} - -.is-column-gap-2 { - column-gap: 0.5rem; -} - -.is-column-gap-3 { - column-gap: 0.75rem; -} - -.is-column-gap-4 { - column-gap: 1rem; -} - -.is-column-gap-5 { - column-gap: 1.5rem; -} - -.is-column-gap-6 { - column-gap: 3rem; -} - -/* Barcode scanner CSS */ -#barcode-scanner { - position: relative; - min-height: 200px; -} - -#barcode-scanner .drawingBuffer { - position: absolute; - top: 0; - left: 0; - height: auto; - width: 100%; -} diff --git a/bookwyrm/static/css/bookwyrm/_all.scss b/bookwyrm/static/css/bookwyrm/_all.scss index 11d7e403d..e9333bd19 100644 --- a/bookwyrm/static/css/bookwyrm/_all.scss +++ b/bookwyrm/static/css/bookwyrm/_all.scss @@ -1,6 +1,7 @@ /** Imports ******************************************************************************/ @import "components/avatar"; +@import "components/barcode"; @import "components/book_cover"; @import "components/book_grid"; @import "components/book_list"; diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss new file mode 100644 index 000000000..da1aa721c --- /dev/null +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -0,0 +1,14 @@ + +/* Barcode scanner CSS */ +#barcode-scanner { + position: relative; + min-height: 200px; + + .drawingBuffer { + position: absolute; + top: 0; + left: 0; + height: auto; + width: 100%; + } +} From 649ffe571a96b0bb25249cc846fd8468ea73661a Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 18:29:38 -0800 Subject: [PATCH 018/132] Fix typos with searching --- bookwyrm/static/js/bookwyrm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 10032c557..d7ba9ffe0 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -689,7 +689,7 @@ let BookWyrm = new (class { statusNode.querySelector('.isbn').innerText = code; toggleStatus('found'); - const search = new Url('search'); + const search = new URL('/search', document.location); search.searchParams.set('q', code); cleanup(); From 8d0e5494808137d8763ee3f001c629de5c07ffb7 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 20:19:26 -0800 Subject: [PATCH 019/132] Improve visuals and quality of scanning --- .../css/bookwyrm/components/_barcode.scss | 10 +++++++++ bookwyrm/static/js/bookwyrm.js | 22 +++++++++++-------- bookwyrm/templates/search/barcode_modal.html | 4 ++-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss index da1aa721c..1abbf5d40 100644 --- a/bookwyrm/static/css/bookwyrm/components/_barcode.scss +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -12,3 +12,13 @@ width: 100%; } } + +#barcode-status { + :dir(ltr) .select { + float: right; + } + + :dir(rtl) .select { + float: left; + } +} diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index d7ba9ffe0..4944ada65 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -655,10 +655,13 @@ let BookWyrm = new (class { } } - function cleanup() { + function cleanup(clearDrawing = true) { Quagga.stop(); - scannerNode.replaceChildren(); cameraListNode.removeEventListener('change', changeListener); + + if (clearDrawing) { + scannerNode.replaceChildren(); + } } Quagga.onProcessed((result) => { @@ -683,7 +686,14 @@ let BookWyrm = new (class { } }); + let lastDetection = null; Quagga.onDetected((result) => { + // Detect the same code twice as an extra check to avoid bogus scans. + if (lastDetection === null || lastDetection !== result.codeResult.code) { + lastDetection = result.codeResult.code; + return; + } + const code = result.codeResult.code; statusNode.querySelector('.isbn').innerText = code; @@ -692,7 +702,7 @@ let BookWyrm = new (class { const search = new URL('/search', document.location); search.searchParams.set('q', code); - cleanup(); + cleanup(false); location.assign(search); }); @@ -711,12 +721,6 @@ let BookWyrm = new (class { constraints: { facingMode: "environment", }, - area: { - top: "25%", - right: "25%", - left: "25%", - bottom: "25%", - } }, decoder : { readers: [ diff --git a/bookwyrm/templates/search/barcode_modal.html b/bookwyrm/templates/search/barcode_modal.html index 17eb8829e..00cc7c027 100644 --- a/bookwyrm/templates/search/barcode_modal.html +++ b/bookwyrm/templates/search/barcode_modal.html @@ -12,7 +12,7 @@
@@ -25,7 +25,7 @@ {% trans "Align your book's barcode with the camera." %}
From fee6ffcbd858b0a54bdadc236d17c448d78a5ba8 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 21:29:18 -0800 Subject: [PATCH 020/132] Fix formatting in chrome Was using experimental selector, forget about it. Also reduce jumping around of video size --- .../static/css/bookwyrm/components/_barcode.scss | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss index 1abbf5d40..c12d59ea4 100644 --- a/bookwyrm/static/css/bookwyrm/components/_barcode.scss +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -2,7 +2,7 @@ /* Barcode scanner CSS */ #barcode-scanner { position: relative; - min-height: 200px; + min-height: 450px; .drawingBuffer { position: absolute; @@ -13,12 +13,6 @@ } } -#barcode-status { - :dir(ltr) .select { - float: right; - } - - :dir(rtl) .select { - float: left; - } +#barcode-status .select { + float: right; } From 464050deaa4911bca518a43ee3568df296c257ad Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 21:32:01 -0800 Subject: [PATCH 021/132] Implement switching cameras Also, use session storage to remember last selected camera deviceId, if any --- bookwyrm/static/js/bookwyrm.js | 119 +++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 52 deletions(-) diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 4944ada65..0ae950447 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -645,8 +645,7 @@ let BookWyrm = new (class { const cameraListNode = document.getElementById("barcode-camera-list"); let changeListener = cameraListNode.addEventListener('change', (event) => { - // TODO - //event.target.value + initBarcodes(event.target.value); }); function toggleStatus(status) { @@ -655,6 +654,71 @@ let BookWyrm = new (class { } } + function initBarcodes(cameraId = null) { + if (!cameraId) { + cameraId = sessionStorage.getItem('preferredCam'); + } else { + sessionStorage.setItem('preferredCam', cameraId); + } + + scannerNode.replaceChildren(); + Quagga.stop(); + Quagga.init({ + inputStream : { + name: "Live", + type: "LiveStream", + target: scannerNode, + constraints: { + facingMode: "environment", + deviceId: cameraId, + }, + }, + decoder : { + readers: [ + "ean_reader", + { + format: "ean_reader", + config: { + supplements: [ "ean_2_reader", "ean_5_reader" ] + } + } + ], + multiple: false + }, + }, (err) => { + if (err) { + console.log(err); + toggleStatus('access-denied'); + return; + } + + let activeId = null; + const track = Quagga.CameraAccess.getActiveTrack(); + if (track) { + activeId = track.getSettings().deviceId; + } + + Quagga.CameraAccess.enumerateVideoDevices().then((devices) => { + cameraListNode.replaceChildren(); + + for (const device of devices) { + const child = document.createElement('option'); + child.value = device.deviceId; + child.innerText = device.label.slice(0, 30); + + if (activeId === child.value) { + child.selected = true; + } + + cameraListNode.appendChild(child); + } + }); + + toggleStatus('scanning'); + Quagga.start(); + }); + } + function cleanup(clearDrawing = true) { Quagga.stop(); cameraListNode.removeEventListener('change', changeListener); @@ -709,55 +773,6 @@ let BookWyrm = new (class { event.target.addEventListener('close', cleanup, { once: true }); toggleStatus('grant-access'); - - // Clear camera list - cameraListNode.replaceChildren(); - - Quagga.init({ - inputStream : { - name: "Live", - type: "LiveStream", - target: scannerNode, - constraints: { - facingMode: "environment", - }, - }, - decoder : { - readers: [ - "ean_reader", - { - format: "ean_reader", - config: { - supplements: [ "ean_2_reader", "ean_5_reader" ] - } - } - ], - multiple: false - }, - }, (err) => { - if (err) { - console.log(err); - toggleStatus('access-denied'); - return; - } - - const stream = Quagga.CameraAccess.getActiveStreamLabel(); - Quagga.CameraAccess.enumerateVideoDevices().then((devices) => { - for (const device of devices) { - const child = document.createElement('option'); - child.value = device.deviceId || device.id; - child.innerText = device.label.slice(0, 30); - - if (stream === child.value) { - child.selected = true; - } - - cameraListNode.appendChild(child); - } - }); - - Quagga.start(); - toggleStatus('scanning'); - }); + initBarcodes(); } })(); From cdddf73e29ea23b72ab988b57dae1647cef8d1b8 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 23:22:44 -0800 Subject: [PATCH 022/132] Improve layout for some camera types --- .../static/css/bookwyrm/components/_barcode.scss | 14 +++++++++++--- bookwyrm/static/js/bookwyrm.js | 6 +++++- bookwyrm/templates/search/barcode_modal.html | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss index c12d59ea4..b6b416977 100644 --- a/bookwyrm/static/css/bookwyrm/components/_barcode.scss +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -2,14 +2,22 @@ /* Barcode scanner CSS */ #barcode-scanner { position: relative; - min-height: 450px; + max-width: 100%; + text-align: center; + + video { + height: calc(70vh - 200px); + max-width: 100%; + } .drawingBuffer { position: absolute; top: 0; left: 0; - height: auto; - width: 100%; + right: 0; + margin: auto; + height: calc(70vh - 200px); + max-width: 100%; } } diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 0ae950447..f6811614b 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -751,11 +751,15 @@ let BookWyrm = new (class { }); let lastDetection = null; + let numDetected = 0; Quagga.onDetected((result) => { - // Detect the same code twice as an extra check to avoid bogus scans. + // Detect the same code 3 times as an extra check to avoid bogus scans. if (lastDetection === null || lastDetection !== result.codeResult.code) { + numDetected = 1; lastDetection = result.codeResult.code; return; + } else if (numDetected++ < 3) { + return; } const code = result.codeResult.code; diff --git a/bookwyrm/templates/search/barcode_modal.html b/bookwyrm/templates/search/barcode_modal.html index 00cc7c027..93789ae3f 100644 --- a/bookwyrm/templates/search/barcode_modal.html +++ b/bookwyrm/templates/search/barcode_modal.html @@ -8,7 +8,7 @@ {% endblock %} {% block modal-body %} -
+
+
{% endblock %} From e71a5e3bdfe6a4077ddcbbffcf392f09519c44bc Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 00:00:22 -0800 Subject: [PATCH 025/132] Add barcode icon and use other icons Minor formatting and messaging tweaks --- .../css/bookwyrm/components/_barcode.scss | 1 + bookwyrm/static/css/fonts/icomoon.eot | Bin 10460 -> 10688 bytes bookwyrm/static/css/fonts/icomoon.svg | 1 + bookwyrm/static/css/fonts/icomoon.ttf | Bin 10296 -> 10524 bytes bookwyrm/static/css/fonts/icomoon.woff | Bin 10372 -> 10600 bytes bookwyrm/static/css/vendor/icons.css | 3 +++ bookwyrm/static/js/bookwyrm.js | 1 + bookwyrm/templates/search/barcode_modal.html | 9 ++++++++- 8 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss index b6b416977..8c77d5252 100644 --- a/bookwyrm/static/css/bookwyrm/components/_barcode.scss +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -4,6 +4,7 @@ position: relative; max-width: 100%; text-align: center; + height: calc(70vh - 200px); video { height: calc(70vh - 200px); diff --git a/bookwyrm/static/css/fonts/icomoon.eot b/bookwyrm/static/css/fonts/icomoon.eot index 7b1f2d9d9f9d3ff8805e56d83c6c2ceba7654a8f..69628662beb9b527fe62d38c0d177366773ad879 100644 GIT binary patch delta 613 zcmcZ;cp#YVfF=WjjOIi(GnVu$U+IYs<@JUP3=Df17#I?ga}x`e=Pr+6U|^JCU|{G; zPb@BAU|Q4-vdbcmfq`)Y1A~f1MrvY;{EI&&3=FC-7#JALGBQ#V zIk;KO85qLm;ejBN$^#U%{P3=9km8h=3Y49v_IC#Nu0hk~3X z!63lE%)r6G$e{32^rgZ}^OsdG+g{#!#r4YU|KI=rLAn?eUNXEChss=s%P{_bEY2d% zEcRAxwb%l&05L_;Zw$-~jFS&)NN#pzvSnmZR#H;l+{P>~S1-W8z~I2b!0f=l%)rjT z&A`tf%plGn%^=U9%%IMo&7jX<%wW!7&0x>KAZ#qCjEotfd=SlSET{~kS&c=N&7oM; zSX3E=)uA*)L&E_FhXx0S0}c+13}EVC_yGll0}2X^3ltRoEC35NI5;pmK=6TvhJObd z8kimaHZV2d#||iffnoDvML`xBY2U2$cz&C&4BRZ>(7NYv2To7EplZ&jJDEdmGAjcM x1B1on1#04xH>(9mO9-qI6cKb0ED-Dyyd=aSB*VbSz`&r(B*h@GSx$W)BLLigqk8}V delta 369 zcmX>Qd?%3Yjs^pRg~miSGnPQzr#B}$l-Ci{&P^=1ymsOm1_nkM1_p+f z^u*!<1_lNJ1_s6j3=9k$={c2YdKcn%FfcH#U|>*A$Vg30kr$F*!@!`*!N9;^mXVQ~ z$idBG#=xNJz`($ul95|dvA~YgnSntyg@J)#Lr#8j;{IJbrZF(6i7+rQMCB${6fl_T zG08A6sDUg}$V<#ko$1B-n}I=X0s{kMTS0zt2?H|&0|SGG1Oo$u0s}Mig~=(5)!G>h z3=Con0u0OyYz&MH3NJ-pD!i + diff --git a/bookwyrm/static/css/fonts/icomoon.ttf b/bookwyrm/static/css/fonts/icomoon.ttf index 151f2b782e011873be7120240fc65777f3771917..12c79d551739bdbfe9e7246ae713b4d23545fdce 100644 GIT binary patch delta 595 zcmdlHFej*50V!3=9kc3=E7b7#J8h(sL@)Om+O$Vg30k$>^0gn>cz1p@qRQq_tZFQ(48rPA znxUcLfP+JWgTny_2Sx@k^)LK@g2Dj>1;zym3V#-Wg&G_j7#$$^Ktsd70}Tz#4u2b% z8t`KW6u`i+`M-i7i;T2yR(d?Y%~u9)7Eo|9+;g}Crzh*EnltK7PEnoA$T0bfYPO<; qz$!rzK^MUS!9KxDLL5Re;6$U#Bn3(e3=9lRlNB|DH&0eu$_N1TgOqUq delta 367 zcmbOev?HLNfsuiMft#U$ftkU;KUm+0Ux?j+fq`KU0|P@sa&BV5<+T&nFfcI6FfcH* zq$d^^FfcF(FfcGKU|?Y2NYANE)4LGAgMoo@1p|X}LPlz0ioB5g8U_Yc4h9AWvy6P#=r-wX_D6Brm6+Y0iFOBk3L7#J8dBp4VN6d0J9FHAg8Eu6u? zz#zsTz`)GF#=yv+@KW@p!sGx(N#&}SZ7;9C;(BHF|L_0*42=IDi?fI`i>(ryFXk_% zAo`VonSpWgL`Lz=D;aGWS(KEOl{UX(l9${3P?4WS=H^q~z<7R}uMFHQAPX7pUd^2Y zVu0w$JZk2QI+I=0CNo-0exN2k`LkMpw4J~Tfg6G>f=YsEf^!5nFff3FR)IWDY7~4R2rWfb$g8bqV1_n(Juo{qBW(EcZ zX6B2Nc^Ioh3m6y}Bp3u3m>D=27#S2^ioR5MY5ub6W!uYJuee^B{r~&_KPVg+6kamC z6o<-Ohs!Yje=N=-&Mfv;Y_-?|u>dhe(QgdQ42-Za+x(i*o{>daNlAIL9<#h$y#NCP zg98f#vjYP&13LpZ13!Z>gE)gUgFJ&WgF1sYgFb^XgE@mWgFOR-u(6;rGG>JGK{T_m zpfZSNH5OGihhkM@QDqQThtdoU4F?rJD>mthRxoJf-Ex9zFFz<{5D@1xLLpc?1YHCR1p5Rp32_L?fRmjrlN19ej2IZ0KtZ_qzS>eo E0PditHvj+t delta 413 zcmaD6)DkFC?(gQtz{tSBz@X8>zzwD?CI@PYPt+EvH%QJ+EMQ<@%wS+(XaV8NYbUNr zPb>zBy)IVGeEW(UIgx?EPc4CgfguWn_wU*b&GrZO<7-Cw5g6LNUW(G!3sBHeqXv@f=q^zv8*^F6UZnLfuKa0%Gr@Ddh{5D@1xLH8q$8h&* z?i>&UL{E-TGiTJ9JV9;pWOelnMLU5N0yhL%1eFBS1m_5X{0j { if (err) { + scannerNode.replaceChildren(); console.log(err); toggleStatus('access-denied'); return; diff --git a/bookwyrm/templates/search/barcode_modal.html b/bookwyrm/templates/search/barcode_modal.html index 9480197f8..3f7b01cea 100644 --- a/bookwyrm/templates/search/barcode_modal.html +++ b/bookwyrm/templates/search/barcode_modal.html @@ -12,19 +12,26 @@
- + From 9f67a74340737a902ffcb6317e03535196804402 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 00:04:25 -0800 Subject: [PATCH 026/132] Show grant access dialog every time we initialize --- bookwyrm/static/js/bookwyrm.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index efd5cfff0..01c13091a 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -655,6 +655,8 @@ let BookWyrm = new (class { } function initBarcodes(cameraId = null) { + toggleStatus('grant-access'); + if (!cameraId) { cameraId = sessionStorage.getItem('preferredCam'); } else { @@ -777,7 +779,6 @@ let BookWyrm = new (class { event.target.addEventListener('close', cleanup, { once: true }); - toggleStatus('grant-access'); initBarcodes(); } })(); From 43f62ef5d7add5d3a4fc8bc146ea5ed15693812e Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 00:18:38 -0800 Subject: [PATCH 027/132] d'oh, fix event leak --- bookwyrm/static/js/bookwyrm.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 01c13091a..39d5f6647 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -644,9 +644,11 @@ let BookWyrm = new (class { const statusNode = document.getElementById("barcode-status"); const cameraListNode = document.getElementById("barcode-camera-list"); - let changeListener = cameraListNode.addEventListener('change', (event) => { + cameraListNode.addEventListener('change', onChangeCamera); + + function onChangeCamera(event) { initBarcodes(event.target.value); - }); + } function toggleStatus(status) { for (const child of statusNode.children) { @@ -724,7 +726,7 @@ let BookWyrm = new (class { function cleanup(clearDrawing = true) { Quagga.stop(); - cameraListNode.removeEventListener('change', changeListener); + cameraListNode.removeEventListener('change', onChangeCamera); if (clearDrawing) { scannerNode.replaceChildren(); From f5c66b5b4a9e983426a1ebf2389697224c965df3 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 00:33:54 -0800 Subject: [PATCH 028/132] Adjust layout more Ensure camera select box is never hidden. --- .../static/css/bookwyrm/components/_barcode.scss | 2 +- bookwyrm/static/js/bookwyrm.js | 2 +- bookwyrm/templates/search/barcode_modal.html | 14 +++++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss index 8c77d5252..c000a1a89 100644 --- a/bookwyrm/static/css/bookwyrm/components/_barcode.scss +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -22,6 +22,6 @@ } } -#barcode-status .select { +#barcode-camera-list { float: right; } diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 39d5f6647..a9cc5c6ca 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -642,7 +642,7 @@ let BookWyrm = new (class { openBarcodeScanner(event) { const scannerNode = document.getElementById("barcode-scanner"); const statusNode = document.getElementById("barcode-status"); - const cameraListNode = document.getElementById("barcode-camera-list"); + const cameraListNode = document.querySelector("#barcode-camera-list > select"); cameraListNode.addEventListener('change', onChangeCamera); diff --git a/bookwyrm/templates/search/barcode_modal.html b/bookwyrm/templates/search/barcode_modal.html index 3f7b01cea..cfbb4e1c8 100644 --- a/bookwyrm/templates/search/barcode_modal.html +++ b/bookwyrm/templates/search/barcode_modal.html @@ -8,9 +8,17 @@ {% endblock %} {% block modal-body %} -
+
+
+
+ +
+ +
+
- {% endif %} -
+ {% csrf_token %}

{% trans "Instance Info" %}

@@ -95,8 +100,6 @@
{{ site_form.default_theme }}
- -
diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html new file mode 100644 index 000000000..6e9eb61c5 --- /dev/null +++ b/bookwyrm/templates/settings/themes.html @@ -0,0 +1,109 @@ +{% extends 'settings/layout.html' %} +{% load i18n %} + +{% block title %}{% trans "Themes" %}{% endblock %} + +{% block header %}{% trans "Themes" %}{% endblock %} + +{% block panel %} +{% if success %} +
+ + + {% trans "Successfully added theme" %} + +
+{% endif %} + +
+
+

+ {% trans "Default theme:" %} {{ site.default_theme.name }} +

+ +

+ + {% trans "Set default theme" %} + +

+
+
+ +
+

{% trans "Upload theme" %}

+ + {% if theme_form.errors %} +
+ + + {% trans "Unable to save theme" %} + +
+ {% endif %} + + + {% csrf_token %} +
+
+ +
+ {{ theme_form.name }} + {% include 'snippets/form_errors.html' with errors_list=theme_form.name.errors id="desc_name" %} +
+
+ +
+ +
+ {{ theme_form.theme_file }} + {% include 'snippets/form_errors.html' with errors_list=theme_form.theme_file.errors id="desc_theme_file" %} +
+
+
+ + + +
+ +
+

{% trans "Available Themes" %}

+
+ + + + + + + {% for theme in themes %} + + + + + + {% endfor %} +
+ {% trans "Theme name" %} + + {% trans "File" %} + + {% trans "Actions" %} +
{{ theme.name }}{{ theme.theme_path }} + {% if theme.theme_file %} +
+ +
+ {% endif %} +
+
+
+ +{% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index d2caa76ea..bef6786d7 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -86,6 +86,7 @@ urlpatterns = [ r"^settings/dashboard/?$", views.Dashboard.as_view(), name="settings-dashboard" ), re_path(r"^settings/site-settings/?$", views.Site.as_view(), name="settings-site"), + re_path(r"^settings/themes/?$", views.Themes.as_view(), name="settings-themes"), re_path( r"^settings/announcements/?$", views.Announcements.as_view(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 76e9ff024..675221cb8 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -21,6 +21,7 @@ from .admin.reports import ( moderator_delete_user, ) from .admin.site import Site +from .admin.themes import Themes from .admin.user_admin import UserAdmin, UserAdminList # user preferences diff --git a/bookwyrm/views/admin/site.py b/bookwyrm/views/admin/site.py index 7e75a8204..f345d9970 100644 --- a/bookwyrm/views/admin/site.py +++ b/bookwyrm/views/admin/site.py @@ -29,7 +29,7 @@ class Site(View): if not form.is_valid(): data = {"site_form": form} return TemplateResponse(request, "settings/site.html", data) - form.save() + site = form.save() data = {"site_form": forms.SiteForm(instance=site), "success": True} return TemplateResponse(request, "settings/site.html", data) diff --git a/bookwyrm/views/admin/themes.py b/bookwyrm/views/admin/themes.py new file mode 100644 index 000000000..cf11bc6d0 --- /dev/null +++ b/bookwyrm/views/admin/themes.py @@ -0,0 +1,38 @@ +""" manage themes """ +from django.contrib.auth.decorators import login_required, permission_required +from django.template.response import TemplateResponse +from django.utils.decorators import method_decorator +from django.views import View + +from bookwyrm import forms, models + + +# pylint: disable= no-self-use +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.edit_instance_settings", raise_exception=True), + name="dispatch", +) +class Themes(View): + """manage things like the instance name""" + + def get(self, request): + """view existing themes and set defaults""" + data = { + "themes": models.Theme.objects.all(), + "theme_form": forms.ThemeForm(), + } + return TemplateResponse(request, "settings/themes.html", data) + + def post(self, request): + """edit the site settings""" + form = forms.ThemeForm(request.POST, request.FILES) + data = { + "themes": models.Theme.objects.all(), + "theme_form": form, + } + if form.is_valid(): + form.save() + data["success"] = True + data["theme_form"] = forms.ThemeForm() + return TemplateResponse(request, "settings/themes.html", data) From cc015536faff14908017da89cdcb98e47b4c74e6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 27 Feb 2022 10:12:47 -0800 Subject: [PATCH 034/132] Adds theme instructions --- bookwyrm/forms.py | 4 +-- bookwyrm/templates/settings/themes.html | 41 +++++++++++++------------ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 926aaecf3..4e6bab16e 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -466,9 +466,7 @@ class ThemeForm(CustomForm): fields = ["name", "path"] widgets = { "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "path": ClearableFileInputWithWarning( - attrs={"aria-describedby": "desc_path"} - ), + "path": forms.TextInput(attrs={"aria-describedby": "desc_path", "placeholder": _("example-theme.scss")}), } diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html index 6e9eb61c5..3eac261d2 100644 --- a/bookwyrm/templates/settings/themes.html +++ b/bookwyrm/templates/settings/themes.html @@ -16,21 +16,24 @@ {% endif %}
-
-

- {% trans "Default theme:" %} {{ site.default_theme.name }} -

- -

- - {% trans "Set default theme" %} - -

+
+

{% trans "How to add a theme" %}

+
    +
  1. + {% trans "Copy the theme file into the bookwyrm/static/css/ directory on your server from the command line." %} +
  2. +
  3. + {% trans "Run ./bw-dev compilescss." %} +
  4. +
  5. + {% trans "Add the file name using the form below to make it available in the application interface." %} +
  6. +
-

{% trans "Upload theme" %}

+

{% trans "Add theme" %}

{% if theme_form.errors %}
@@ -60,17 +63,17 @@
-
- + @@ -92,13 +95,11 @@ {% for theme in themes %} {{ theme.name }} - {{ theme.theme_path }} + {{ theme.path }} - {% if theme.theme_file %}
- +
- {% endif %} {% endfor %} From 8850b68b5224db3ade4cb9606bf66f11eb442e6a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 27 Feb 2022 10:46:01 -0800 Subject: [PATCH 035/132] Show theme options --- bookwyrm/forms.py | 13 ++++++++++++- bookwyrm/migrations/0142_auto_20220227_1752.py | 4 ++-- bookwyrm/models/user.py | 14 ++++++-------- .../static/css/{ => themes}/bookwyrm-dark.scss | 4 ++-- .../static/css/{ => themes}/bookwyrm-light.scss | 4 ++-- bookwyrm/templates/layout.html | 2 +- bookwyrm/templates/settings/themes.html | 6 ++++-- 7 files changed, 29 insertions(+), 18 deletions(-) rename bookwyrm/static/css/{ => themes}/bookwyrm-dark.scss (92%) rename bookwyrm/static/css/{ => themes}/bookwyrm-light.scss (92%) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 4e6bab16e..81061f964 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -4,6 +4,8 @@ from collections import defaultdict from urllib.parse import urlparse from django import forms +from django.contrib.staticfiles.utils import get_files +from django.contrib.staticfiles.storage import StaticFilesStorage from django.forms import ModelForm, PasswordInput, widgets, ChoiceField from django.forms.widgets import Textarea from django.utils import timezone @@ -460,13 +462,22 @@ class SiteThemeForm(CustomForm): fields = ["default_theme"] +def get_theme_choices(): + """static files""" + choices = list(get_files(StaticFilesStorage(), location="css/themes")) + current = models.Theme.objects.values_list("path", flat=True) + return [(c, c) for c in choices if c not in current and c[-5:] == ".scss"] + + class ThemeForm(CustomForm): class Meta: model = models.Theme fields = ["name", "path"] widgets = { "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "path": forms.TextInput(attrs={"aria-describedby": "desc_path", "placeholder": _("example-theme.scss")}), + "path": forms.Select( + attrs={"aria-describedby": "desc_path"}, choices=get_theme_choices() + ), } diff --git a/bookwyrm/migrations/0142_auto_20220227_1752.py b/bookwyrm/migrations/0142_auto_20220227_1752.py index 75f0e1e75..2282679da 100644 --- a/bookwyrm/migrations/0142_auto_20220227_1752.py +++ b/bookwyrm/migrations/0142_auto_20220227_1752.py @@ -10,11 +10,11 @@ def add_default_themes(apps, schema_editor): theme_model = apps.get_model("bookwyrm", "Theme") theme_model.objects.using(db_alias).create( name="BookWyrm Light", - path="bookwyrm-light.scss", + path="css/themes/bookwyrm-light.scss", ) theme_model.objects.using(db_alias).create( name="BookWyrm Dark", - path="bookwyrm-dark.scss", + path="css/themes/bookwyrm-dark.scss", ) diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 85702ae56..1198717e6 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -176,15 +176,13 @@ class User(OrderedCollectionPageMixin, AbstractUser): @property def get_theme(self): """get the theme given the user/site""" - path = "bookwyrm-light.scss" if self.theme: - path = self.theme.path - else: - site_model = apps.get_model("bookwyrm", "SiteSettings", require_ready=True) - site = site_model.objects.get() - if site.default_theme: - path = site.default_theme.path - return f"css/{path}" + return self.theme.path + site_model = apps.get_model("bookwyrm", "SiteSettings", require_ready=True) + site = site_model.objects.get() + if site.default_theme: + return site.default_theme.path + return "css/themes/bookwyrm-light.scss" @property def confirmation_link(self): diff --git a/bookwyrm/static/css/bookwyrm-dark.scss b/bookwyrm/static/css/themes/bookwyrm-dark.scss similarity index 92% rename from bookwyrm/static/css/bookwyrm-dark.scss rename to bookwyrm/static/css/themes/bookwyrm-dark.scss index 957187ffd..32e33907a 100644 --- a/bookwyrm/static/css/bookwyrm-dark.scss +++ b/bookwyrm/static/css/themes/bookwyrm-dark.scss @@ -1,4 +1,4 @@ -@import "vendor/bulma/sass/utilities/derived-variables.sass"; +@import "../vendor/bulma/sass/utilities/derived-variables.sass"; /* Colors ******************************************************************************/ @@ -54,4 +54,4 @@ $menu-item-active-background-color: $link-background; $family-primary: $family-sans-serif; $family-secondary: $family-sans-serif; -@import "bookwyrm.scss"; +@import "../bookwyrm.scss"; diff --git a/bookwyrm/static/css/bookwyrm-light.scss b/bookwyrm/static/css/themes/bookwyrm-light.scss similarity index 92% rename from bookwyrm/static/css/bookwyrm-light.scss rename to bookwyrm/static/css/themes/bookwyrm-light.scss index 6b7b5b349..08e6a2917 100644 --- a/bookwyrm/static/css/bookwyrm-light.scss +++ b/bookwyrm/static/css/themes/bookwyrm-light.scss @@ -1,4 +1,4 @@ -@import "vendor/bulma/sass/utilities/derived-variables.sass"; +@import "../vendor/bulma/sass/utilities/derived-variables.sass"; /* Colors ******************************************************************************/ @@ -52,4 +52,4 @@ $menu-item-active-background-color: $link-background; $family-primary: $family-sans-serif; $family-secondary: $family-sans-serif; -@import "bookwyrm.scss"; +@import "../bookwyrm.scss"; diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index 444241e5b..aaf21717c 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -9,7 +9,7 @@ {% block title %}BookWyrm{% endblock %} - {{ site.name }} {% with theme_path=user.get_theme %} - + {% endwith %} diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html index 3eac261d2..a06193693 100644 --- a/bookwyrm/templates/settings/themes.html +++ b/bookwyrm/templates/settings/themes.html @@ -20,7 +20,7 @@

{% trans "How to add a theme" %}

  1. - {% trans "Copy the theme file into the bookwyrm/static/css/ directory on your server from the command line." %} + {% trans "Copy the theme file into the bookwyrm/static/css/themes directory on your server from the command line." %}
  2. {% trans "Run ./bw-dev compilescss." %} @@ -67,7 +67,9 @@ {% trans "Theme filename" %}
    - {{ theme_form.path }} +
    + {{ theme_form.path }} +
    {% include 'snippets/form_errors.html' with errors_list=theme_form.path.errors id="desc_path" %}
From fd0f7394182c864bd96244d92b81a1fa44cb3422 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 27 Feb 2022 10:51:49 -0800 Subject: [PATCH 036/132] Rename light.scss to bookwyrm-light.scss --- bookwyrm/static/css/themes/{light.scss => bookwyrm-light.scss} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename bookwyrm/static/css/themes/{light.scss => bookwyrm-light.scss} (100%) diff --git a/bookwyrm/static/css/themes/light.scss b/bookwyrm/static/css/themes/bookwyrm-light.scss similarity index 100% rename from bookwyrm/static/css/themes/light.scss rename to bookwyrm/static/css/themes/bookwyrm-light.scss From c8d3222c33ffc918c71dcf5d74f6129d0981dc3b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 27 Feb 2022 10:52:07 -0800 Subject: [PATCH 037/132] Rename dark.scss to bookwyrm-dark.scss --- bookwyrm/static/css/themes/{dark.scss => bookwyrm-dark.scss} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename bookwyrm/static/css/themes/{dark.scss => bookwyrm-dark.scss} (100%) diff --git a/bookwyrm/static/css/themes/dark.scss b/bookwyrm/static/css/themes/bookwyrm-dark.scss similarity index 100% rename from bookwyrm/static/css/themes/dark.scss rename to bookwyrm/static/css/themes/bookwyrm-dark.scss From 8259d16ee9b4b13fa6218f3ee8d374627a7b774b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 27 Feb 2022 11:19:09 -0800 Subject: [PATCH 038/132] Check available themes in form --- bookwyrm/forms.py | 13 +---------- bookwyrm/templates/settings/themes.html | 20 ++++++++++++++++- bookwyrm/views/admin/themes.py | 30 ++++++++++++++++--------- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 81061f964..01228b8e8 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -4,8 +4,6 @@ from collections import defaultdict from urllib.parse import urlparse from django import forms -from django.contrib.staticfiles.utils import get_files -from django.contrib.staticfiles.storage import StaticFilesStorage from django.forms import ModelForm, PasswordInput, widgets, ChoiceField from django.forms.widgets import Textarea from django.utils import timezone @@ -462,22 +460,13 @@ class SiteThemeForm(CustomForm): fields = ["default_theme"] -def get_theme_choices(): - """static files""" - choices = list(get_files(StaticFilesStorage(), location="css/themes")) - current = models.Theme.objects.values_list("path", flat=True) - return [(c, c) for c in choices if c not in current and c[-5:] == ".scss"] - - class ThemeForm(CustomForm): class Meta: model = models.Theme fields = ["name", "path"] widgets = { "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "path": forms.Select( - attrs={"aria-describedby": "desc_path"}, choices=get_theme_choices() - ), + "path": forms.Select(attrs={"aria-describedby": "desc_path"}), } diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html index a06193693..11c344052 100644 --- a/bookwyrm/templates/settings/themes.html +++ b/bookwyrm/templates/settings/themes.html @@ -50,6 +50,12 @@ class="box" enctype="multipart/form-data" > + {% if not choices %} +
+ {% trans "No available theme files detected" %} +
+ {% endif %} +
{% csrf_token %}
@@ -68,7 +74,18 @@
- {{ theme_form.path }} +
{% include 'snippets/form_errors.html' with errors_list=theme_form.path.errors id="desc_path" %}
@@ -76,6 +93,7 @@
+
diff --git a/bookwyrm/views/admin/themes.py b/bookwyrm/views/admin/themes.py index cf11bc6d0..c1eacf44b 100644 --- a/bookwyrm/views/admin/themes.py +++ b/bookwyrm/views/admin/themes.py @@ -1,5 +1,7 @@ """ manage themes """ from django.contrib.auth.decorators import login_required, permission_required +from django.contrib.staticfiles.utils import get_files +from django.contrib.staticfiles.storage import StaticFilesStorage from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View @@ -18,21 +20,29 @@ class Themes(View): def get(self, request): """view existing themes and set defaults""" - data = { - "themes": models.Theme.objects.all(), - "theme_form": forms.ThemeForm(), - } - return TemplateResponse(request, "settings/themes.html", data) + return TemplateResponse(request, "settings/themes.html", get_view_data()) def post(self, request): """edit the site settings""" form = forms.ThemeForm(request.POST, request.FILES) - data = { - "themes": models.Theme.objects.all(), - "theme_form": form, - } if form.is_valid(): form.save() + + data = get_view_data() + + if not form.is_valid(): + data["theme_form"] = form + else: data["success"] = True - data["theme_form"] = forms.ThemeForm() return TemplateResponse(request, "settings/themes.html", data) + + +def get_view_data(): + """data for view""" + choices = list(get_files(StaticFilesStorage(), location="css/themes")) + current = models.Theme.objects.values_list("path", flat=True) + return { + "themes": models.Theme.objects.all(), + "choices": [c for c in choices if c not in current and c[-5:] == ".scss"], + "theme_form": forms.ThemeForm(), + } From fbe7e860e8a97ba356b38cbd7458d559e1460036 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 14:01:25 -0800 Subject: [PATCH 039/132] Prettier --- bookwyrm/static/js/bookwyrm.js | 159 ++++++++++++++++++--------------- 1 file changed, 89 insertions(+), 70 deletions(-) diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index a9cc5c6ca..1ca6bfc25 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -431,11 +431,11 @@ let BookWyrm = new (class { }); modalElement.addEventListener("keydown", handleFocusTrap); - modalElement.dispatchEvent(new Event('open')); + modalElement.dispatchEvent(new Event("open")); } function handleModalClose(modalElement) { - modalElement.dispatchEvent(new Event('close')); + modalElement.dispatchEvent(new Event("close")); modalElement.removeEventListener("keydown", handleFocusTrap); htmlElement.classList.remove("is-clipped"); modalElement.classList.remove("is-active"); @@ -644,10 +644,10 @@ let BookWyrm = new (class { const statusNode = document.getElementById("barcode-status"); const cameraListNode = document.querySelector("#barcode-camera-list > select"); - cameraListNode.addEventListener('change', onChangeCamera); + cameraListNode.addEventListener("change", onChangeCamera); function onChangeCamera(event) { - initBarcodes(event.target.value); + initBarcodes(event.target.value); } function toggleStatus(status) { @@ -657,76 +657,79 @@ let BookWyrm = new (class { } function initBarcodes(cameraId = null) { - toggleStatus('grant-access'); + toggleStatus("grant-access"); if (!cameraId) { - cameraId = sessionStorage.getItem('preferredCam'); + cameraId = sessionStorage.getItem("preferredCam"); } else { - sessionStorage.setItem('preferredCam', cameraId); + sessionStorage.setItem("preferredCam", cameraId); } scannerNode.replaceChildren(); Quagga.stop(); - Quagga.init({ - inputStream : { - name: "Live", - type: "LiveStream", - target: scannerNode, - constraints: { - facingMode: "environment", - deviceId: cameraId, + Quagga.init( + { + inputStream: { + name: "Live", + type: "LiveStream", + target: scannerNode, + constraints: { + facingMode: "environment", + deviceId: cameraId, + }, + }, + decoder: { + readers: [ + "ean_reader", + { + format: "ean_reader", + config: { + supplements: ["ean_2_reader", "ean_5_reader"], + }, + }, + ], + multiple: false, }, }, - decoder : { - readers: [ - "ean_reader", - { - format: "ean_reader", - config: { - supplements: [ "ean_2_reader", "ean_5_reader" ] - } - } - ], - multiple: false - }, - }, (err) => { - if (err) { - scannerNode.replaceChildren(); - console.log(err); - toggleStatus('access-denied'); - return; - } - - let activeId = null; - const track = Quagga.CameraAccess.getActiveTrack(); - if (track) { - activeId = track.getSettings().deviceId; - } - - Quagga.CameraAccess.enumerateVideoDevices().then((devices) => { - cameraListNode.replaceChildren(); - - for (const device of devices) { - const child = document.createElement('option'); - child.value = device.deviceId; - child.innerText = device.label.slice(0, 30); - - if (activeId === child.value) { - child.selected = true; - } - - cameraListNode.appendChild(child); + (err) => { + if (err) { + scannerNode.replaceChildren(); + console.log(err); + toggleStatus("access-denied"); + return; } - }); - toggleStatus('scanning'); - Quagga.start(); - }); + let activeId = null; + const track = Quagga.CameraAccess.getActiveTrack(); + if (track) { + activeId = track.getSettings().deviceId; + } + + Quagga.CameraAccess.enumerateVideoDevices().then((devices) => { + cameraListNode.replaceChildren(); + + for (const device of devices) { + const child = document.createElement("option"); + child.value = device.deviceId; + child.innerText = device.label.slice(0, 30); + + if (activeId === child.value) { + child.selected = true; + } + + cameraListNode.appendChild(child); + } + }); + + toggleStatus("scanning"); + Quagga.start(); + } + ); } function cleanup(clearDrawing = true) { Quagga.stop(); - cameraListNode.removeEventListener('change', onChangeCamera); + cameraListNode.removeEventListener("change", onChangeCamera); if (clearDrawing) { scannerNode.replaceChildren(); @@ -739,18 +742,34 @@ let BookWyrm = new (class { if (result) { if (result.boxes) { - drawingCtx.clearRect(0, 0, parseInt(drawingCanvas.getAttribute("width")), parseInt(drawingCanvas.getAttribute("height"))); - result.boxes.filter((box) => box !== result.box).forEach((box) => { - Quagga.ImageDebug.drawPath(box, {x: 0, y: 1}, drawingCtx, {color: "green", lineWidth: 2}); - }); + drawingCtx.clearRect( + 0, + 0, + parseInt(drawingCanvas.getAttribute("width")), + parseInt(drawingCanvas.getAttribute("height")) + ); + result.boxes + .filter((box) => box !== result.box) + .forEach((box) => { + Quagga.ImageDebug.drawPath(box, { x: 0, y: 1 }, drawingCtx, { + color: "green", + lineWidth: 2, + }); + }); } if (result.box) { - Quagga.ImageDebug.drawPath(result.box, {x: 0, y: 1}, drawingCtx, {color: "#00F", lineWidth: 2}); + Quagga.ImageDebug.drawPath(result.box, { x: 0, y: 1 }, drawingCtx, { + color: "#00F", + lineWidth: 2, + }); } if (result.codeResult && result.codeResult.code) { - Quagga.ImageDebug.drawPath(result.line, {x: 'x', y: 'y'}, drawingCtx, {color: 'red', lineWidth: 3}); + Quagga.ImageDebug.drawPath(result.line, { x: "x", y: "y" }, drawingCtx, { + color: "red", + lineWidth: 3, + }); } } }); @@ -769,17 +788,17 @@ let BookWyrm = new (class { const code = result.codeResult.code; - statusNode.querySelector('.isbn').innerText = code; - toggleStatus('found'); + statusNode.querySelector(".isbn").innerText = code; + toggleStatus("found"); - const search = new URL('/search', document.location); - search.searchParams.set('q', code); + const search = new URL("/search", document.location); + search.searchParams.set("q", code); cleanup(false); location.assign(search); }); - event.target.addEventListener('close', cleanup, { once: true }); + event.target.addEventListener("close", cleanup, { once: true }); initBarcodes(); } From 1d4539c4c0b087834ec482b2456a43836b8a1537 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 14:03:45 -0800 Subject: [PATCH 040/132] Don't pretty the min.js file --- .prettierignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..dbbfd978b --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +*.min.js From c0380cca5ae1fd6a058fc4d11cf9f4a958383974 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 14:04:30 -0800 Subject: [PATCH 041/132] stylelint --- bookwyrm/static/css/bookwyrm/components/_barcode.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss index c000a1a89..c34f0d355 100644 --- a/bookwyrm/static/css/bookwyrm/components/_barcode.scss +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -1,4 +1,3 @@ - /* Barcode scanner CSS */ #barcode-scanner { position: relative; From 3a9ff2c2ea6ccc8c9ebc3535e2dfc3639ff00cf2 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sun, 27 Feb 2022 14:08:11 -0800 Subject: [PATCH 042/132] Refer to canvas by type - Fixes stylelint without adding an exclusion --- bookwyrm/static/css/bookwyrm/components/_barcode.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/static/css/bookwyrm/components/_barcode.scss b/bookwyrm/static/css/bookwyrm/components/_barcode.scss index c34f0d355..c9c67e8e5 100644 --- a/bookwyrm/static/css/bookwyrm/components/_barcode.scss +++ b/bookwyrm/static/css/bookwyrm/components/_barcode.scss @@ -10,7 +10,7 @@ max-width: 100%; } - .drawingBuffer { + canvas { position: absolute; top: 0; left: 0; From 4d3e709b2a425f0ac078ddaf39b70c72eb837a7f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:23:03 -0800 Subject: [PATCH 043/132] Update layout.html --- bookwyrm/templates/layout.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index aaf21717c..444241e5b 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -9,7 +9,7 @@ {% block title %}BookWyrm{% endblock %} - {{ site.name }} {% with theme_path=user.get_theme %} - + {% endwith %} From f5fb5ae04572b1ea6175c954ceb9ca64055a9521 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:34:30 -0800 Subject: [PATCH 044/132] Removes instance config file I'd be happy to re-add this if it's useful, but I think it's confusing to have in addition to themes --- .css-config-sample/_instance-settings.scss | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .css-config-sample/_instance-settings.scss diff --git a/.css-config-sample/_instance-settings.scss b/.css-config-sample/_instance-settings.scss deleted file mode 100644 index e86c1ce00..000000000 --- a/.css-config-sample/_instance-settings.scss +++ /dev/null @@ -1,3 +0,0 @@ -@charset "utf-8"; - -// Copy this file to bookwyrm/static/css/ and set your instance custom styles. From 2d516812b4a445e3b4e6dc562b6582fa52cdec04 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:34:54 -0800 Subject: [PATCH 045/132] Fixes icons by moving import to theme --- bookwyrm/static/css/bookwyrm.scss | 2 -- bookwyrm/static/css/themes/bookwyrm-dark.scss | 1 + bookwyrm/static/css/themes/bookwyrm-light.scss | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.scss b/bookwyrm/static/css/bookwyrm.scss index ee25b7287..437795457 100644 --- a/bookwyrm/static/css/bookwyrm.scss +++ b/bookwyrm/static/css/bookwyrm.scss @@ -1,6 +1,4 @@ @charset "utf-8"; -@import "instance-settings"; @import "vendor/bulma/bulma.sass"; -@import "vendor/icons.css"; @import "bookwyrm/all.scss"; diff --git a/bookwyrm/static/css/themes/bookwyrm-dark.scss b/bookwyrm/static/css/themes/bookwyrm-dark.scss index 32e33907a..b2a6f582e 100644 --- a/bookwyrm/static/css/themes/bookwyrm-dark.scss +++ b/bookwyrm/static/css/themes/bookwyrm-dark.scss @@ -55,3 +55,4 @@ $family-primary: $family-sans-serif; $family-secondary: $family-sans-serif; @import "../bookwyrm.scss"; +@import "../vendor/icons.css"; diff --git a/bookwyrm/static/css/themes/bookwyrm-light.scss b/bookwyrm/static/css/themes/bookwyrm-light.scss index 08e6a2917..02992bff2 100644 --- a/bookwyrm/static/css/themes/bookwyrm-light.scss +++ b/bookwyrm/static/css/themes/bookwyrm-light.scss @@ -53,3 +53,4 @@ $family-primary: $family-sans-serif; $family-secondary: $family-sans-serif; @import "../bookwyrm.scss"; +@import "../vendor/icons.css"; From f54d4863fe968d0e28b32bb320bacc2fbfb5d5e3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:37:51 -0800 Subject: [PATCH 046/132] Updates .gitignore for themes --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 92fc85bc0..ec2a08f80 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,8 @@ .env /images/ bookwyrm/static/css/bookwyrm.css -bookwyrm/static/css/_instance-settings.scss +bookwyrm/static/css/themes/ +!bookwyrm/static/css/themes/bookwyrm-*.scss # Testing .coverage From a00ee8a7062df15104fafeb4ce054e011d4e901b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:43:31 -0800 Subject: [PATCH 047/132] Adds link to set instance-wide theme --- bookwyrm/templates/settings/themes.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html index 11c344052..e3035b2ff 100644 --- a/bookwyrm/templates/settings/themes.html +++ b/bookwyrm/templates/settings/themes.html @@ -5,6 +5,12 @@ {% block header %}{% trans "Themes" %}{% endblock %} +{% block breadcrumbs %} + + {% trans "Set instance default theme" %} + +{% endblock %} + {% block panel %} {% if success %}
From 295d9c42d79c4a33a162fc0ddbc481eb857c9390 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:45:34 -0800 Subject: [PATCH 048/132] Adds theme to user settings form --- bookwyrm/forms.py | 1 + bookwyrm/templates/preferences/edit_user.html | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 01228b8e8..0baaaa212 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -155,6 +155,7 @@ class EditUserForm(CustomForm): "discoverable", "preferred_timezone", "preferred_language", + "theme", ] help_texts = {f: None for f in fields} widgets = { diff --git a/bookwyrm/templates/preferences/edit_user.html b/bookwyrm/templates/preferences/edit_user.html index 642d177cb..e55311aea 100644 --- a/bookwyrm/templates/preferences/edit_user.html +++ b/bookwyrm/templates/preferences/edit_user.html @@ -97,6 +97,12 @@ {{ form.preferred_language }}
+
+ +
+ {{ form.theme }} +
+
From 106ef2e3a49139ec8575529c0644caca7918cce1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:46:05 -0800 Subject: [PATCH 049/132] Fixes reference to theme in layout --- bookwyrm/templates/layout.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index aaf21717c..444241e5b 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -9,7 +9,7 @@ {% block title %}BookWyrm{% endblock %} - {{ site.name }} {% with theme_path=user.get_theme %} - + {% endwith %} From c82042f5060ff5976d0814ae3c2ae15584fabd06 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 09:54:07 -0800 Subject: [PATCH 050/132] Delete themes --- bookwyrm/templates/settings/themes.html | 8 ++++++-- bookwyrm/urls.py | 5 +++++ bookwyrm/views/__init__.py | 2 +- bookwyrm/views/admin/themes.py | 11 +++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html index e3035b2ff..d3dac804f 100644 --- a/bookwyrm/templates/settings/themes.html +++ b/bookwyrm/templates/settings/themes.html @@ -123,8 +123,12 @@ {{ theme.name }} {{ theme.path }} -
- + + {% csrf_token %} +
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index bef6786d7..415af912b 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -87,6 +87,11 @@ urlpatterns = [ ), re_path(r"^settings/site-settings/?$", views.Site.as_view(), name="settings-site"), re_path(r"^settings/themes/?$", views.Themes.as_view(), name="settings-themes"), + re_path( + r"^settings/themes/(?P\d+)/delete/?$", + views.delete_theme, + name="settings-themes-delete", + ), re_path( r"^settings/announcements/?$", views.Announcements.as_view(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 675221cb8..957a0f6e7 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -21,7 +21,7 @@ from .admin.reports import ( moderator_delete_user, ) from .admin.site import Site -from .admin.themes import Themes +from .admin.themes import Themes, delete_theme from .admin.user_admin import UserAdmin, UserAdminList # user preferences diff --git a/bookwyrm/views/admin/themes.py b/bookwyrm/views/admin/themes.py index c1eacf44b..12b449afb 100644 --- a/bookwyrm/views/admin/themes.py +++ b/bookwyrm/views/admin/themes.py @@ -2,9 +2,11 @@ from django.contrib.auth.decorators import login_required, permission_required from django.contrib.staticfiles.utils import get_files from django.contrib.staticfiles.storage import StaticFilesStorage +from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View +from django.views.decorators.http import require_POST from bookwyrm import forms, models @@ -46,3 +48,12 @@ def get_view_data(): "choices": [c for c in choices if c not in current and c[-5:] == ".scss"], "theme_form": forms.ThemeForm(), } + + +@require_POST +@permission_required("bookwyrm.edit_instance_settings", raise_exception=True) +# pylint: disable=unused-argument +def delete_theme(request, theme_id): + """Remove a theme""" + get_object_or_404(models.Theme, id=theme_id).delete() + return redirect("settings-themes") From 202696f913e8cd4b2b347cb2e9b958e1d0f65866 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 10:03:24 -0800 Subject: [PATCH 051/132] Don't show lists a book is already on in add form --- bookwyrm/templates/book/book.html | 4 ++-- bookwyrm/views/books/books.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 60e3d4fd8..0e2fd5d39 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -352,7 +352,7 @@ {% endfor %} - {% if request.user.list_set.exists %} + {% if list_options.exists %}
{% csrf_token %} @@ -361,7 +361,7 @@
diff --git a/bookwyrm/views/books/books.py b/bookwyrm/views/books/books.py index e04230bac..ad7ee9436 100644 --- a/bookwyrm/views/books/books.py +++ b/bookwyrm/views/books/books.py @@ -83,6 +83,7 @@ class Book(View): } if request.user.is_authenticated: + data["list_options"] = request.user.list_set.exclude(id__in=data["lists"]) data["file_link_form"] = forms.FileLinkForm() readthroughs = models.ReadThrough.objects.filter( user=request.user, From b2b3ba653e1d1139ac36e51d38541c0c9cd83a46 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 10:29:58 -0800 Subject: [PATCH 052/132] Refactors how success/failure messages how on list page --- bookwyrm/templates/lists/list.html | 25 ++++++++++++++++++------- bookwyrm/views/list/list.py | 23 ++++++++--------------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 1c26733d5..73ea7dba5 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -30,13 +30,24 @@
- {% if request.GET.updated %} -
- {% if list.curation != "open" and request.user != list.user and not list.group|is_member:request.user %} - {% trans "You successfully suggested a book for this list!" %} - {% else %} - {% trans "You successfully added a book to this list!" %} - {% endif %} + {% if add_succeeded %} +
+ + + {% if list.curation != "open" and request.user != list.user and not list.group|is_member:request.user %} + {% trans "You successfully suggested a book for this list!" %} + {% else %} + {% trans "You successfully added a book to this list!" %} + {% endif %} + +
+ {% endif %} + {% if add_failed %} +
+ + + {% trans "That book is already on this list." %} +
{% endif %} diff --git a/bookwyrm/views/list/list.py b/bookwyrm/views/list/list.py index fbbbee9fe..0b228200c 100644 --- a/bookwyrm/views/list/list.py +++ b/bookwyrm/views/list/list.py @@ -1,11 +1,10 @@ """ book list views""" from typing import Optional -from urllib.parse import urlencode from django.contrib.auth.decorators import login_required from django.core.exceptions import PermissionDenied from django.core.paginator import Paginator -from django.db import IntegrityError, transaction +from django.db import transaction from django.db.models import Avg, DecimalField, Q, Max from django.db.models.functions import Coalesce from django.http import HttpResponseBadRequest, HttpResponse @@ -26,7 +25,7 @@ from bookwyrm.views.helpers import is_api_request class List(View): """book list page""" - def get(self, request, list_id): + def get(self, request, list_id, add_failed=False, add_succeeded=True): """display a book list""" book_list = get_object_or_404(models.List, id=list_id) book_list.raise_visible_to_user(request.user) @@ -110,6 +109,8 @@ class List(View): {"direction": direction, "sort_by": sort_by} ), "embed_url": embed_url, + "add_failed": add_failed, + "add_succeeded": add_succeeded, } return TemplateResponse(request, "lists/list.html", data) @@ -179,8 +180,8 @@ def add_book(request): form = forms.ListItemForm(request.POST) if not form.is_valid(): - # this shouldn't happen, there aren't validated fields - raise Exception(form.errors) + return List().get(request, book_list.id, add_failed=True) + item = form.save(commit=False) if book_list.curation == "curated": @@ -196,17 +197,9 @@ def add_book(request): ) or 0 increment_order_in_reverse(book_list.id, order_max + 1) item.order = order_max + 1 + item.save() - try: - item.save() - except IntegrityError: - # if the book is already on the list, don't flip out - pass - - path = reverse("list", args=[book_list.id]) - params = request.GET.copy() - params["updated"] = True - return redirect(f"{path}?{urlencode(params)}") + return List().get(request, book_list.id, add_succeeded=True) @require_POST From 99fc3aaf25873eca683f8db6e2b3eee7c2448f2a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 10:31:58 -0800 Subject: [PATCH 053/132] Avoid showing success and failure --- bookwyrm/templates/lists/list.html | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 73ea7dba5..1d5abd89e 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -30,7 +30,14 @@
- {% if add_succeeded %} + {% if add_failed %} +
+ + + {% trans "That book is already on this list." %} + +
+ {% elif add_succeeded %}
@@ -42,14 +49,6 @@
{% endif %} - {% if add_failed %} -
- - - {% trans "That book is already on this list." %} - -
- {% endif %} {% if not items.object_list.exists %}

{% trans "This list is currently empty" %}

From 142cc5437ae6f874e2cebe26cf9dfa7e883f26c2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 10:41:40 -0800 Subject: [PATCH 054/132] Move sorting to separate function --- bookwyrm/views/list/list.py | 67 ++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/bookwyrm/views/list/list.py b/bookwyrm/views/list/list.py index 0b228200c..dc1843fa1 100644 --- a/bookwyrm/views/list/list.py +++ b/bookwyrm/views/list/list.py @@ -25,7 +25,7 @@ from bookwyrm.views.helpers import is_api_request class List(View): """book list page""" - def get(self, request, list_id, add_failed=False, add_succeeded=True): + def get(self, request, list_id, add_failed=False, add_succeeded=False): """display a book list""" book_list = get_object_or_404(models.List, id=list_id) book_list.raise_visible_to_user(request.user) @@ -36,33 +36,10 @@ class List(View): query = request.GET.get("q") suggestions = None - # sort_by shall be "order" unless a valid alternative is given - sort_by = request.GET.get("sort_by", "order") - if sort_by not in ("order", "title", "rating"): - sort_by = "order" - - # direction shall be "ascending" unless a valid alternative is given - direction = request.GET.get("direction", "ascending") - if direction not in ("ascending", "descending"): - direction = "ascending" - - directional_sort_by = { - "order": "order", - "title": "book__title", - "rating": "average_rating", - }[sort_by] - if direction == "descending": - directional_sort_by = "-" + directional_sort_by - - items = book_list.listitem_set.prefetch_related("user", "book", "book__authors") - if sort_by == "rating": - items = items.annotate( - average_rating=Avg( - Coalesce("book__review__rating", 0.0), - output_field=DecimalField(), - ) - ) - items = items.filter(approved=True).order_by(directional_sort_by) + items = book_list.listitem_set.filter(approved=True).prefetch_related( + "user", "book", "book__authors" + ) + items = sort_list(request, items) paginated = Paginator(items, PAGE_LENGTH) @@ -105,9 +82,7 @@ class List(View): "suggested_books": suggestions, "list_form": forms.ListForm(instance=book_list), "query": query or "", - "sort_form": forms.SortListForm( - {"direction": direction, "sort_by": sort_by} - ), + "sort_form": forms.SortListForm(request.GET), "embed_url": embed_url, "add_failed": add_failed, "add_succeeded": add_succeeded, @@ -132,6 +107,36 @@ class List(View): return redirect(book_list.local_path) +def sort_list(request, items): + """helper to handle the surprisngly involved sorting""" + # sort_by shall be "order" unless a valid alternative is given + sort_by = request.GET.get("sort_by", "order") + if sort_by not in ("order", "title", "rating"): + sort_by = "order" + + # direction shall be "ascending" unless a valid alternative is given + direction = request.GET.get("direction", "ascending") + if direction not in ("ascending", "descending"): + direction = "ascending" + + directional_sort_by = { + "order": "order", + "title": "book__title", + "rating": "average_rating", + }[sort_by] + if direction == "descending": + directional_sort_by = "-" + directional_sort_by + + if sort_by == "rating": + items = items.annotate( + average_rating=Avg( + Coalesce("book__review__rating", 0.0), + output_field=DecimalField(), + ) + ) + return items.order_by(directional_sort_by) + + @require_POST @login_required def save_list(request, list_id): From 374dd24fa839fd1e6712e3d68936ebaf53a50423 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 10:47:08 -0800 Subject: [PATCH 055/132] Remove reviews from deleted users --- bookwyrm/models/status.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/models/status.py b/bookwyrm/models/status.py index 29b3ba9cc..17fcd4587 100644 --- a/bookwyrm/models/status.py +++ b/bookwyrm/models/status.py @@ -227,7 +227,7 @@ class Status(OrderedCollectionPageMixin, BookWyrmModel): @classmethod def privacy_filter(cls, viewer, privacy_levels=None): queryset = super().privacy_filter(viewer, privacy_levels=privacy_levels) - return queryset.filter(deleted=False) + return queryset.filter(deleted=False, user__is_active=True) @classmethod def direct_filter(cls, queryset, viewer): From 0f5fd6be155533000ca35ec12970cb1afc6144e9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 11:05:12 -0800 Subject: [PATCH 056/132] Move translations to filter --- .../snippets/translated_shelf_name.html | 14 +++----------- bookwyrm/templatetags/shelf_tags.py | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/bookwyrm/templates/snippets/translated_shelf_name.html b/bookwyrm/templates/snippets/translated_shelf_name.html index 4da47e370..966135f51 100644 --- a/bookwyrm/templates/snippets/translated_shelf_name.html +++ b/bookwyrm/templates/snippets/translated_shelf_name.html @@ -1,12 +1,4 @@ {% load i18n %} -{% if shelf.identifier == 'all' %} - {% trans "All books" %} -{% elif shelf.identifier == 'to-read' %} - {% trans "To Read" %} -{% elif shelf.identifier == 'reading' %} - {% trans "Currently Reading" %} -{% elif shelf.identifier == 'read' %} - {% trans "Read" %} -{% else %} - {{ shelf.name }} -{% endif %} +{% load shelf_tags %} + +{{ shelf|translate_shelf_name }} diff --git a/bookwyrm/templatetags/shelf_tags.py b/bookwyrm/templatetags/shelf_tags.py index 6c4f59c36..a2788826b 100644 --- a/bookwyrm/templatetags/shelf_tags.py +++ b/bookwyrm/templatetags/shelf_tags.py @@ -1,5 +1,6 @@ """ Filters and tags related to shelving books """ from django import template +from django.utils.translation import gettext_lazy as _ from bookwyrm import models from bookwyrm.utils import cache @@ -32,6 +33,23 @@ def get_next_shelf(current_shelf): return "to-read" +@register.filter(name="translate_shelf_name") +def get_translated_shelf_name(shelf): + """produced translated shelf nidentifierame""" + if not shelf: + return "" + identifier = shelf.identifier + if identifier == "all": + return _("All books") + if identifier == "to-read": + return _("To Read") + if identifier == "reading": + return _("Currently Reading") + if identifier == "read": + return _("Read") + return shelf.name + + @register.simple_tag(takes_context=True) def active_shelf(context, book): """check what shelf a user has a book on, if any""" From ffb4098cfb565423deeec5b2bf7e2e6ecef0ed63 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 11:07:12 -0800 Subject: [PATCH 057/132] Fixes translation of "remove from shelf" string --- bookwyrm/templates/snippets/shelf_selector.html | 4 +++- .../shelve_button/shelve_button_dropdown_options.html | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index 4b3ad4bdc..a5f768a75 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -71,7 +71,9 @@ {% csrf_token %} - + {% endif %} diff --git a/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html b/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html index 1fa26a886..75dad0c80 100644 --- a/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html +++ b/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html @@ -63,7 +63,7 @@ From 7d6032e1102956758c32fe7a7348abcb0beef0c7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 11:17:52 -0800 Subject: [PATCH 058/132] Fixes calls to filter --- bookwyrm/templates/snippets/shelf_selector.html | 2 +- .../shelve_button/shelve_button_dropdown_options.html | 2 +- bookwyrm/templatetags/shelf_tags.py | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index a5f768a75..2d1f2a83c 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -72,7 +72,7 @@ diff --git a/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html b/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html index 75dad0c80..2b87e21f3 100644 --- a/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html +++ b/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html @@ -63,7 +63,7 @@ diff --git a/bookwyrm/templatetags/shelf_tags.py b/bookwyrm/templatetags/shelf_tags.py index a2788826b..4c15786a1 100644 --- a/bookwyrm/templatetags/shelf_tags.py +++ b/bookwyrm/templatetags/shelf_tags.py @@ -38,7 +38,8 @@ def get_translated_shelf_name(shelf): """produced translated shelf nidentifierame""" if not shelf: return "" - identifier = shelf.identifier + # support obj or dict + identifier = shelf["identifier"] if isinstance(shelf, dict) else shelf.identifier if identifier == "all": return _("All books") if identifier == "to-read": @@ -47,7 +48,7 @@ def get_translated_shelf_name(shelf): return _("Currently Reading") if identifier == "read": return _("Read") - return shelf.name + return shelf["name"] if isinstance(shelf, dict) else shelf.name @register.simple_tag(takes_context=True) From e90cb52f2339f3d6f70c1d323349573bcc49d130 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 28 Feb 2022 11:48:49 -0800 Subject: [PATCH 059/132] Add option to hide follows --- bookwyrm/activitypub/person.py | 1 + bookwyrm/forms.py | 1 + bookwyrm/migrations/0142_user_hide_follows.py | 19 +++++++++++++++++++ bookwyrm/models/user.py | 1 + bookwyrm/templates/preferences/edit_user.html | 6 ++++++ 5 files changed, 28 insertions(+) create mode 100644 bookwyrm/migrations/0142_user_hide_follows.py diff --git a/bookwyrm/activitypub/person.py b/bookwyrm/activitypub/person.py index 576e7f9a6..61c15a579 100644 --- a/bookwyrm/activitypub/person.py +++ b/bookwyrm/activitypub/person.py @@ -39,4 +39,5 @@ class Person(ActivityObject): bookwyrmUser: bool = False manuallyApprovesFollowers: str = False discoverable: str = False + hideFollows: str = False type: str = "Person" diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 7ae4e446f..33d453e60 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -153,6 +153,7 @@ class EditUserForm(CustomForm): "manually_approves_followers", "default_post_privacy", "discoverable", + "hide_follows", "preferred_timezone", "preferred_language", ] diff --git a/bookwyrm/migrations/0142_user_hide_follows.py b/bookwyrm/migrations/0142_user_hide_follows.py new file mode 100644 index 000000000..f052d7ef5 --- /dev/null +++ b/bookwyrm/migrations/0142_user_hide_follows.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-02-28 19:44 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0141_alter_report_status"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="hide_follows", + field=bookwyrm.models.fields.BooleanField(default=False), + ), + ] diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 6367dcaef..7ebe9b964 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -136,6 +136,7 @@ class User(OrderedCollectionPageMixin, AbstractUser): updated_date = models.DateTimeField(auto_now=True) last_active_date = models.DateTimeField(default=timezone.now) manually_approves_followers = fields.BooleanField(default=False) + hide_follows = fields.BooleanField(default=False) # options to turn features on and off show_goal = models.BooleanField(default=True) diff --git a/bookwyrm/templates/preferences/edit_user.html b/bookwyrm/templates/preferences/edit_user.html index 642d177cb..13cbd1392 100644 --- a/bookwyrm/templates/preferences/edit_user.html +++ b/bookwyrm/templates/preferences/edit_user.html @@ -111,6 +111,12 @@ {% trans "Manually approve followers" %}
+
+ +
-{% include 'settings/users/user_admin_filters.html' %} +{% include 'settings/reports/report_filters.html' %}
{% if not reports %} diff --git a/bookwyrm/templates/settings/users/email_filter.html b/bookwyrm/templates/settings/users/email_filter.html new file mode 100644 index 000000000..5d49d615e --- /dev/null +++ b/bookwyrm/templates/settings/users/email_filter.html @@ -0,0 +1,16 @@ +{% extends 'snippets/filters_panel/filter_field.html' %} +{% load i18n %} + +{% block filter %} + +
+ +
+{% endblock %} + diff --git a/bookwyrm/templates/settings/users/user_admin_filters.html b/bookwyrm/templates/settings/users/user_admin_filters.html index 48a3b7c8a..c5ab2dabe 100644 --- a/bookwyrm/templates/settings/users/user_admin_filters.html +++ b/bookwyrm/templates/settings/users/user_admin_filters.html @@ -2,6 +2,11 @@ {% block filter_fields %} {% include 'settings/users/username_filter.html' %} -{% include 'directory/community_filter.html' %} + +{% if status != "local" %} {% include 'settings/users/server_filter.html' %} +{% else %} +{% include 'settings/users/email_filter.html' %} +{% endif %} + {% endblock %} From bfb8fc800a0d10277cfdb5dfe017a8f022b2d109 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 10:59:24 -0700 Subject: [PATCH 120/132] Moves duplicate field script into its own file --- bookwyrm/static/js/bookwyrm.js | 24 -------------- bookwyrm/static/js/forms.js | 32 +++++++++++++++++++ .../templates/book/edit/edit_book_form.html | 5 +++ 3 files changed, 37 insertions(+), 24 deletions(-) create mode 100644 bookwyrm/static/js/forms.js diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 100daa039..95271795d 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -38,10 +38,6 @@ let BookWyrm = new (class { .querySelectorAll("[data-modal-open]") .forEach((node) => node.addEventListener("click", this.handleModalButton.bind(this))); - document - .querySelectorAll("[data-duplicate]") - .forEach((node) => node.addEventListener("click", this.duplicateInput.bind(this))); - document .querySelectorAll("details.dropdown") .forEach((node) => @@ -495,26 +491,6 @@ let BookWyrm = new (class { window.open(url, windowName, "left=100,top=100,width=430,height=600"); } - duplicateInput(event) { - const trigger = event.currentTarget; - const input_id = trigger.dataset.duplicate; - const orig = document.getElementById(input_id); - const parent = orig.parentNode; - const new_count = parent.querySelectorAll("input").length + 1; - - let input = orig.cloneNode(); - - input.id += "-" + new_count; - input.value = ""; - - let label = parent.querySelector("label").cloneNode(); - - label.setAttribute("for", input.id); - - parent.appendChild(label); - parent.appendChild(input); - } - /** * Set up a "click-to-copy" component from a textarea element * with `data-copytext`, `data-copytext-label`, `data-copytext-success` diff --git a/bookwyrm/static/js/forms.js b/bookwyrm/static/js/forms.js new file mode 100644 index 000000000..7d946d147 --- /dev/null +++ b/bookwyrm/static/js/forms.js @@ -0,0 +1,32 @@ +(function () { + "use strict"; + + /** + * Duplicate an input field + * + * @param {event} the click even on the associated button + */ + function duplicateInput(event) { + const trigger = event.currentTarget; + const input_id = trigger.dataset.duplicate; + const orig = document.getElementById(input_id); + const parent = orig.parentNode; + const new_count = parent.querySelectorAll("input").length + 1; + + let input = orig.cloneNode(); + + input.id += "-" + new_count; + input.value = ""; + + let label = parent.querySelector("label").cloneNode(); + + label.setAttribute("for", input.id); + + parent.appendChild(label); + parent.appendChild(input); + } + + document + .querySelectorAll("[data-duplicate]") + .forEach((node) => node.addEventListener("click", duplicateInput)); +})(); diff --git a/bookwyrm/templates/book/edit/edit_book_form.html b/bookwyrm/templates/book/edit/edit_book_form.html index d95aa725e..38a7fe35d 100644 --- a/bookwyrm/templates/book/edit/edit_book_form.html +++ b/bookwyrm/templates/book/edit/edit_book_form.html @@ -1,4 +1,5 @@ {% load i18n %} +{% load static %} {% if form.non_field_errors %}
@@ -302,3 +303,7 @@
+ +{% block scripts %} + +{% endblock %} From 7169f7ba2030eef10023f3518b0a5e45a52b7219 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 11:43:58 -0700 Subject: [PATCH 121/132] Creates forms directory --- bookwyrm/forms/__init__.py | 3 +++ bookwyrm/{ => forms}/forms.py | 0 2 files changed, 3 insertions(+) create mode 100644 bookwyrm/forms/__init__.py rename bookwyrm/{ => forms}/forms.py (100%) diff --git a/bookwyrm/forms/__init__.py b/bookwyrm/forms/__init__.py new file mode 100644 index 000000000..dac2007b8 --- /dev/null +++ b/bookwyrm/forms/__init__.py @@ -0,0 +1,3 @@ +""" make forms available to the app """ +# site admin +from .forms import * diff --git a/bookwyrm/forms.py b/bookwyrm/forms/forms.py similarity index 100% rename from bookwyrm/forms.py rename to bookwyrm/forms/forms.py From d3f723a07dd95ddf96c5b96d7fb23fea6abd54c2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 11:46:08 -0700 Subject: [PATCH 122/132] Splits forms into separate files --- bookwyrm/forms/__init__.py | 9 + bookwyrm/forms/admin.py | 129 +++++++++ bookwyrm/forms/author.py | 47 +++ bookwyrm/forms/books.py | 81 ++++++ bookwyrm/forms/custom_form.py | 26 ++ bookwyrm/forms/edit_user.py | 68 +++++ bookwyrm/forms/forms.py | 529 +--------------------------------- bookwyrm/forms/groups.py | 16 + bookwyrm/forms/landing.py | 45 +++ bookwyrm/forms/links.py | 48 +++ bookwyrm/forms/lists.py | 37 +++ bookwyrm/forms/status.py | 82 ++++++ 12 files changed, 590 insertions(+), 527 deletions(-) create mode 100644 bookwyrm/forms/admin.py create mode 100644 bookwyrm/forms/author.py create mode 100644 bookwyrm/forms/books.py create mode 100644 bookwyrm/forms/custom_form.py create mode 100644 bookwyrm/forms/edit_user.py create mode 100644 bookwyrm/forms/groups.py create mode 100644 bookwyrm/forms/landing.py create mode 100644 bookwyrm/forms/links.py create mode 100644 bookwyrm/forms/lists.py create mode 100644 bookwyrm/forms/status.py diff --git a/bookwyrm/forms/__init__.py b/bookwyrm/forms/__init__.py index dac2007b8..a6f704339 100644 --- a/bookwyrm/forms/__init__.py +++ b/bookwyrm/forms/__init__.py @@ -1,3 +1,12 @@ """ make forms available to the app """ # site admin +from .admin import * +from .author import * +from .books import * from .forms import * +from .groups import * +from .landing import * +from .links import * +from .lists import * +from .status import * +from .user import * diff --git a/bookwyrm/forms/admin.py b/bookwyrm/forms/admin.py new file mode 100644 index 000000000..6b2984b3b --- /dev/null +++ b/bookwyrm/forms/admin.py @@ -0,0 +1,129 @@ +""" using django model forms """ +import datetime + +from django import forms +from django.forms import widgets +from django.utils import timezone +from django.utils.translation import gettext_lazy as _ + +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class ExpiryWidget(widgets.Select): + def value_from_datadict(self, data, files, name): + """human-readable exiration time buckets""" + selected_string = super().value_from_datadict(data, files, name) + + if selected_string == "day": + interval = datetime.timedelta(days=1) + elif selected_string == "week": + interval = datetime.timedelta(days=7) + elif selected_string == "month": + interval = datetime.timedelta(days=31) # Close enough? + elif selected_string == "forever": + return None + else: + return selected_string # This will raise + + return timezone.now() + interval + + +class CreateInviteForm(CustomForm): + class Meta: + model = models.SiteInvite + exclude = ["code", "user", "times_used", "invitees"] + widgets = { + "expiry": ExpiryWidget( + choices=[ + ("day", _("One Day")), + ("week", _("One Week")), + ("month", _("One Month")), + ("forever", _("Does Not Expire")), + ] + ), + "use_limit": widgets.Select( + choices=[(i, _(f"{i} uses")) for i in [1, 5, 10, 25, 50, 100]] + + [(None, _("Unlimited"))] + ), + } + + +class SiteForm(CustomForm): + class Meta: + model = models.SiteSettings + exclude = ["admin_code", "install_mode"] + widgets = { + "instance_short_description": forms.TextInput( + attrs={"aria-describedby": "desc_instance_short_description"} + ), + "require_confirm_email": forms.CheckboxInput( + attrs={"aria-describedby": "desc_require_confirm_email"} + ), + "invite_request_text": forms.Textarea( + attrs={"aria-describedby": "desc_invite_request_text"} + ), + } + + +class ThemeForm(CustomForm): + class Meta: + model = models.Theme + fields = ["name", "path"] + widgets = { + "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), + "path": forms.TextInput( + attrs={ + "aria-describedby": "desc_path", + "placeholder": "css/themes/theme-name.scss", + } + ), + } + + +class AnnouncementForm(CustomForm): + class Meta: + model = models.Announcement + exclude = ["remote_id"] + widgets = { + "preview": forms.TextInput(attrs={"aria-describedby": "desc_preview"}), + "content": forms.Textarea(attrs={"aria-describedby": "desc_content"}), + "event_date": forms.SelectDateWidget( + attrs={"aria-describedby": "desc_event_date"} + ), + "start_date": forms.SelectDateWidget( + attrs={"aria-describedby": "desc_start_date"} + ), + "end_date": forms.SelectDateWidget( + attrs={"aria-describedby": "desc_end_date"} + ), + "active": forms.CheckboxInput(attrs={"aria-describedby": "desc_active"}), + } + + +class EmailBlocklistForm(CustomForm): + class Meta: + model = models.EmailBlocklist + fields = ["domain"] + widgets = { + "avatar": forms.TextInput(attrs={"aria-describedby": "desc_domain"}), + } + + +class IPBlocklistForm(CustomForm): + class Meta: + model = models.IPBlocklist + fields = ["address"] + + +class ServerForm(CustomForm): + class Meta: + model = models.FederatedServer + exclude = ["remote_id"] + + +class AutoModRuleForm(CustomForm): + class Meta: + model = models.AutoMod + fields = ["string_match", "flag_users", "flag_statuses", "created_by"] diff --git a/bookwyrm/forms/author.py b/bookwyrm/forms/author.py new file mode 100644 index 000000000..ca59426de --- /dev/null +++ b/bookwyrm/forms/author.py @@ -0,0 +1,47 @@ +""" using django model forms """ +from django import forms + +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class AuthorForm(CustomForm): + class Meta: + model = models.Author + fields = [ + "last_edited_by", + "name", + "aliases", + "bio", + "wikipedia_link", + "born", + "died", + "openlibrary_key", + "inventaire_id", + "librarything_key", + "goodreads_key", + "isni", + ] + widgets = { + "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), + "aliases": forms.TextInput(attrs={"aria-describedby": "desc_aliases"}), + "bio": forms.Textarea(attrs={"aria-describedby": "desc_bio"}), + "wikipedia_link": forms.TextInput( + attrs={"aria-describedby": "desc_wikipedia_link"} + ), + "born": forms.SelectDateWidget(attrs={"aria-describedby": "desc_born"}), + "died": forms.SelectDateWidget(attrs={"aria-describedby": "desc_died"}), + "oepnlibrary_key": forms.TextInput( + attrs={"aria-describedby": "desc_oepnlibrary_key"} + ), + "inventaire_id": forms.TextInput( + attrs={"aria-describedby": "desc_inventaire_id"} + ), + "librarything_key": forms.TextInput( + attrs={"aria-describedby": "desc_librarything_key"} + ), + "goodreads_key": forms.TextInput( + attrs={"aria-describedby": "desc_goodreads_key"} + ), + } diff --git a/bookwyrm/forms/books.py b/bookwyrm/forms/books.py new file mode 100644 index 000000000..64b85d0b2 --- /dev/null +++ b/bookwyrm/forms/books.py @@ -0,0 +1,81 @@ +""" using django model forms """ +from django import forms + +from bookwyrm import models +from bookwyrm.models.fields import ClearableFileInputWithWarning +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class CoverForm(CustomForm): + class Meta: + model = models.Book + fields = ["cover"] + help_texts = {f: None for f in fields} + + +class EditionForm(CustomForm): + class Meta: + model = models.Edition + exclude = [ + "remote_id", + "origin_id", + "created_date", + "updated_date", + "edition_rank", + "authors", + "parent_work", + "shelves", + "connector", + "search_vector", + "links", + "file_links", + ] + widgets = { + "title": forms.TextInput(attrs={"aria-describedby": "desc_title"}), + "subtitle": forms.TextInput(attrs={"aria-describedby": "desc_subtitle"}), + "description": forms.Textarea( + attrs={"aria-describedby": "desc_description"} + ), + "series": forms.TextInput(attrs={"aria-describedby": "desc_series"}), + "series_number": forms.TextInput( + attrs={"aria-describedby": "desc_series_number"} + ), + "languages": forms.TextInput( + attrs={"aria-describedby": "desc_languages_help desc_languages"} + ), + "subjects": forms.TextInput( + attrs={"aria-describedby": "desc_subjects_help desc_subjects"} + ), + "publishers": forms.TextInput( + attrs={"aria-describedby": "desc_publishers_help desc_publishers"} + ), + "first_published_date": forms.SelectDateWidget( + attrs={"aria-describedby": "desc_first_published_date"} + ), + "published_date": forms.SelectDateWidget( + attrs={"aria-describedby": "desc_published_date"} + ), + "cover": ClearableFileInputWithWarning( + attrs={"aria-describedby": "desc_cover"} + ), + "physical_format": forms.Select( + attrs={"aria-describedby": "desc_physical_format"} + ), + "physical_format_detail": forms.TextInput( + attrs={"aria-describedby": "desc_physical_format_detail"} + ), + "pages": forms.NumberInput(attrs={"aria-describedby": "desc_pages"}), + "isbn_13": forms.TextInput(attrs={"aria-describedby": "desc_isbn_13"}), + "isbn_10": forms.TextInput(attrs={"aria-describedby": "desc_isbn_10"}), + "openlibrary_key": forms.TextInput( + attrs={"aria-describedby": "desc_openlibrary_key"} + ), + "inventaire_id": forms.TextInput( + attrs={"aria-describedby": "desc_inventaire_id"} + ), + "oclc_number": forms.TextInput( + attrs={"aria-describedby": "desc_oclc_number"} + ), + "ASIN": forms.TextInput(attrs={"aria-describedby": "desc_ASIN"}), + } diff --git a/bookwyrm/forms/custom_form.py b/bookwyrm/forms/custom_form.py new file mode 100644 index 000000000..74a3417a2 --- /dev/null +++ b/bookwyrm/forms/custom_form.py @@ -0,0 +1,26 @@ +""" Overrides django's default form class """ +from collections import defaultdict +from django.forms import ModelForm +from django.forms.widgets import Textarea + + +class CustomForm(ModelForm): + """add css classes to the forms""" + + def __init__(self, *args, **kwargs): + css_classes = defaultdict(lambda: "") + css_classes["text"] = "input" + css_classes["password"] = "input" + css_classes["email"] = "input" + css_classes["number"] = "input" + css_classes["checkbox"] = "checkbox" + css_classes["textarea"] = "textarea" + # pylint: disable=super-with-arguments + super(CustomForm, self).__init__(*args, **kwargs) + for visible in self.visible_fields(): + if hasattr(visible.field.widget, "input_type"): + input_type = visible.field.widget.input_type + if isinstance(visible.field.widget, Textarea): + input_type = "textarea" + visible.field.widget.attrs["rows"] = 5 + visible.field.widget.attrs["class"] = css_classes[input_type] diff --git a/bookwyrm/forms/edit_user.py b/bookwyrm/forms/edit_user.py new file mode 100644 index 000000000..d609f15dc --- /dev/null +++ b/bookwyrm/forms/edit_user.py @@ -0,0 +1,68 @@ +""" using django model forms """ +from django import forms + +from bookwyrm import models +from bookwyrm.models.fields import ClearableFileInputWithWarning +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class EditUserForm(CustomForm): + class Meta: + model = models.User + fields = [ + "avatar", + "name", + "email", + "summary", + "show_goal", + "show_suggested_users", + "manually_approves_followers", + "default_post_privacy", + "discoverable", + "hide_follows", + "preferred_timezone", + "preferred_language", + "theme", + ] + help_texts = {f: None for f in fields} + widgets = { + "avatar": ClearableFileInputWithWarning( + attrs={"aria-describedby": "desc_avatar"} + ), + "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), + "summary": forms.Textarea(attrs={"aria-describedby": "desc_summary"}), + "email": forms.EmailInput(attrs={"aria-describedby": "desc_email"}), + "discoverable": forms.CheckboxInput( + attrs={"aria-describedby": "desc_discoverable"} + ), + } + + +class LimitedEditUserForm(CustomForm): + class Meta: + model = models.User + fields = [ + "avatar", + "name", + "summary", + "manually_approves_followers", + "discoverable", + ] + help_texts = {f: None for f in fields} + widgets = { + "avatar": ClearableFileInputWithWarning( + attrs={"aria-describedby": "desc_avatar"} + ), + "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), + "summary": forms.Textarea(attrs={"aria-describedby": "desc_summary"}), + "discoverable": forms.CheckboxInput( + attrs={"aria-describedby": "desc_discoverable"} + ), + } + + +class DeleteUserForm(CustomForm): + class Meta: + model = models.User + fields = ["password"] diff --git a/bookwyrm/forms/forms.py b/bookwyrm/forms/forms.py index ff35a9486..8af8fb812 100644 --- a/bookwyrm/forms/forms.py +++ b/bookwyrm/forms/forms.py @@ -1,212 +1,14 @@ """ using django model forms """ -import datetime -from collections import defaultdict -from urllib.parse import urlparse - from django import forms -from django.forms import ModelForm, PasswordInput, widgets, ChoiceField -from django.forms.widgets import Textarea -from django.utils import timezone +from django.forms import widgets from django.utils.translation import gettext_lazy as _ from bookwyrm import models -from bookwyrm.models.fields import ClearableFileInputWithWarning from bookwyrm.models.user import FeedFilterChoices - - -class CustomForm(ModelForm): - """add css classes to the forms""" - - def __init__(self, *args, **kwargs): - css_classes = defaultdict(lambda: "") - css_classes["text"] = "input" - css_classes["password"] = "input" - css_classes["email"] = "input" - css_classes["number"] = "input" - css_classes["checkbox"] = "checkbox" - css_classes["textarea"] = "textarea" - # pylint: disable=super-with-arguments - super(CustomForm, self).__init__(*args, **kwargs) - for visible in self.visible_fields(): - if hasattr(visible.field.widget, "input_type"): - input_type = visible.field.widget.input_type - if isinstance(visible.field.widget, Textarea): - input_type = "textarea" - visible.field.widget.attrs["rows"] = 5 - visible.field.widget.attrs["class"] = css_classes[input_type] +from .custom_form import CustomForm # pylint: disable=missing-class-docstring -class LoginForm(CustomForm): - class Meta: - model = models.User - fields = ["localname", "password"] - help_texts = {f: None for f in fields} - widgets = { - "password": PasswordInput(), - } - - -class RegisterForm(CustomForm): - class Meta: - model = models.User - fields = ["localname", "email", "password"] - help_texts = {f: None for f in fields} - widgets = {"password": PasswordInput()} - - def clean(self): - """Check if the username is taken""" - cleaned_data = super().clean() - localname = cleaned_data.get("localname").strip() - if models.User.objects.filter(localname=localname).first(): - self.add_error("localname", _("User with this username already exists")) - - -class RatingForm(CustomForm): - class Meta: - model = models.ReviewRating - fields = ["user", "book", "rating", "privacy"] - - -class ReviewForm(CustomForm): - class Meta: - model = models.Review - fields = [ - "user", - "book", - "name", - "content", - "rating", - "content_warning", - "sensitive", - "privacy", - ] - - -class CommentForm(CustomForm): - class Meta: - model = models.Comment - fields = [ - "user", - "book", - "content", - "content_warning", - "sensitive", - "privacy", - "progress", - "progress_mode", - "reading_status", - ] - - -class QuotationForm(CustomForm): - class Meta: - model = models.Quotation - fields = [ - "user", - "book", - "quote", - "content", - "content_warning", - "sensitive", - "privacy", - "position", - "position_mode", - ] - - -class ReplyForm(CustomForm): - class Meta: - model = models.Status - fields = [ - "user", - "content", - "content_warning", - "sensitive", - "reply_parent", - "privacy", - ] - - -class StatusForm(CustomForm): - class Meta: - model = models.Status - fields = ["user", "content", "content_warning", "sensitive", "privacy"] - - -class DirectForm(CustomForm): - class Meta: - model = models.Status - fields = ["user", "content", "content_warning", "sensitive", "privacy"] - - -class EditUserForm(CustomForm): - class Meta: - model = models.User - fields = [ - "avatar", - "name", - "email", - "summary", - "show_goal", - "show_suggested_users", - "manually_approves_followers", - "default_post_privacy", - "discoverable", - "hide_follows", - "preferred_timezone", - "preferred_language", - "theme", - ] - help_texts = {f: None for f in fields} - widgets = { - "avatar": ClearableFileInputWithWarning( - attrs={"aria-describedby": "desc_avatar"} - ), - "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "summary": forms.Textarea(attrs={"aria-describedby": "desc_summary"}), - "email": forms.EmailInput(attrs={"aria-describedby": "desc_email"}), - "discoverable": forms.CheckboxInput( - attrs={"aria-describedby": "desc_discoverable"} - ), - } - - -class LimitedEditUserForm(CustomForm): - class Meta: - model = models.User - fields = [ - "avatar", - "name", - "summary", - "manually_approves_followers", - "discoverable", - ] - help_texts = {f: None for f in fields} - widgets = { - "avatar": ClearableFileInputWithWarning( - attrs={"aria-describedby": "desc_avatar"} - ), - "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "summary": forms.Textarea(attrs={"aria-describedby": "desc_summary"}), - "discoverable": forms.CheckboxInput( - attrs={"aria-describedby": "desc_discoverable"} - ), - } - - -class DeleteUserForm(CustomForm): - class Meta: - model = models.User - fields = ["password"] - - -class UserGroupForm(CustomForm): - class Meta: - model = models.User - fields = ["groups"] - - class FeedStatusTypesForm(CustomForm): class Meta: model = models.User @@ -219,217 +21,10 @@ class FeedStatusTypesForm(CustomForm): } -class CoverForm(CustomForm): - class Meta: - model = models.Book - fields = ["cover"] - help_texts = {f: None for f in fields} - - -class LinkDomainForm(CustomForm): - class Meta: - model = models.LinkDomain - fields = ["name"] - - -class FileLinkForm(CustomForm): - class Meta: - model = models.FileLink - fields = ["url", "filetype", "availability", "book", "added_by"] - - def clean(self): - """make sure the domain isn't blocked or pending""" - cleaned_data = super().clean() - url = cleaned_data.get("url") - filetype = cleaned_data.get("filetype") - book = cleaned_data.get("book") - domain = urlparse(url).netloc - if models.LinkDomain.objects.filter(domain=domain).exists(): - status = models.LinkDomain.objects.get(domain=domain).status - if status == "blocked": - # pylint: disable=line-too-long - self.add_error( - "url", - _( - "This domain is blocked. Please contact your administrator if you think this is an error." - ), - ) - elif models.FileLink.objects.filter( - url=url, book=book, filetype=filetype - ).exists(): - # pylint: disable=line-too-long - self.add_error( - "url", - _( - "This link with file type has already been added for this book. If it is not visible, the domain is still pending." - ), - ) - - -class EditionForm(CustomForm): - class Meta: - model = models.Edition - exclude = [ - "remote_id", - "origin_id", - "created_date", - "updated_date", - "edition_rank", - "authors", - "parent_work", - "shelves", - "connector", - "search_vector", - "links", - "file_links", - ] - widgets = { - "title": forms.TextInput(attrs={"aria-describedby": "desc_title"}), - "subtitle": forms.TextInput(attrs={"aria-describedby": "desc_subtitle"}), - "description": forms.Textarea( - attrs={"aria-describedby": "desc_description"} - ), - "series": forms.TextInput(attrs={"aria-describedby": "desc_series"}), - "series_number": forms.TextInput( - attrs={"aria-describedby": "desc_series_number"} - ), - "languages": forms.TextInput( - attrs={"aria-describedby": "desc_languages_help desc_languages"} - ), - "subjects": forms.TextInput( - attrs={"aria-describedby": "desc_subjects_help desc_subjects"} - ), - "publishers": forms.TextInput( - attrs={"aria-describedby": "desc_publishers_help desc_publishers"} - ), - "first_published_date": forms.SelectDateWidget( - attrs={"aria-describedby": "desc_first_published_date"} - ), - "published_date": forms.SelectDateWidget( - attrs={"aria-describedby": "desc_published_date"} - ), - "cover": ClearableFileInputWithWarning( - attrs={"aria-describedby": "desc_cover"} - ), - "physical_format": forms.Select( - attrs={"aria-describedby": "desc_physical_format"} - ), - "physical_format_detail": forms.TextInput( - attrs={"aria-describedby": "desc_physical_format_detail"} - ), - "pages": forms.NumberInput(attrs={"aria-describedby": "desc_pages"}), - "isbn_13": forms.TextInput(attrs={"aria-describedby": "desc_isbn_13"}), - "isbn_10": forms.TextInput(attrs={"aria-describedby": "desc_isbn_10"}), - "openlibrary_key": forms.TextInput( - attrs={"aria-describedby": "desc_openlibrary_key"} - ), - "inventaire_id": forms.TextInput( - attrs={"aria-describedby": "desc_inventaire_id"} - ), - "oclc_number": forms.TextInput( - attrs={"aria-describedby": "desc_oclc_number"} - ), - "ASIN": forms.TextInput(attrs={"aria-describedby": "desc_ASIN"}), - } - - -class AuthorForm(CustomForm): - class Meta: - model = models.Author - fields = [ - "last_edited_by", - "name", - "aliases", - "bio", - "wikipedia_link", - "born", - "died", - "openlibrary_key", - "inventaire_id", - "librarything_key", - "goodreads_key", - "isni", - ] - widgets = { - "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "aliases": forms.TextInput(attrs={"aria-describedby": "desc_aliases"}), - "bio": forms.Textarea(attrs={"aria-describedby": "desc_bio"}), - "wikipedia_link": forms.TextInput( - attrs={"aria-describedby": "desc_wikipedia_link"} - ), - "born": forms.SelectDateWidget(attrs={"aria-describedby": "desc_born"}), - "died": forms.SelectDateWidget(attrs={"aria-describedby": "desc_died"}), - "oepnlibrary_key": forms.TextInput( - attrs={"aria-describedby": "desc_oepnlibrary_key"} - ), - "inventaire_id": forms.TextInput( - attrs={"aria-describedby": "desc_inventaire_id"} - ), - "librarything_key": forms.TextInput( - attrs={"aria-describedby": "desc_librarything_key"} - ), - "goodreads_key": forms.TextInput( - attrs={"aria-describedby": "desc_goodreads_key"} - ), - } - - class ImportForm(forms.Form): csv_file = forms.FileField() -class ExpiryWidget(widgets.Select): - def value_from_datadict(self, data, files, name): - """human-readable exiration time buckets""" - selected_string = super().value_from_datadict(data, files, name) - - if selected_string == "day": - interval = datetime.timedelta(days=1) - elif selected_string == "week": - interval = datetime.timedelta(days=7) - elif selected_string == "month": - interval = datetime.timedelta(days=31) # Close enough? - elif selected_string == "forever": - return None - else: - return selected_string # This will raise - - return timezone.now() + interval - - -class InviteRequestForm(CustomForm): - def clean(self): - """make sure the email isn't in use by a registered user""" - cleaned_data = super().clean() - email = cleaned_data.get("email") - if email and models.User.objects.filter(email=email).exists(): - self.add_error("email", _("A user with this email already exists.")) - - class Meta: - model = models.InviteRequest - fields = ["email"] - - -class CreateInviteForm(CustomForm): - class Meta: - model = models.SiteInvite - exclude = ["code", "user", "times_used", "invitees"] - widgets = { - "expiry": ExpiryWidget( - choices=[ - ("day", _("One Day")), - ("week", _("One Week")), - ("month", _("One Month")), - ("forever", _("Does Not Expire")), - ] - ), - "use_limit": widgets.Select( - choices=[(i, _(f"{i} uses")) for i in [1, 5, 10, 25, 50, 100]] - + [(None, _("Unlimited"))] - ), - } - - class ShelfForm(CustomForm): class Meta: model = models.Shelf @@ -442,126 +37,12 @@ class GoalForm(CustomForm): fields = ["user", "year", "goal", "privacy"] -class SiteForm(CustomForm): - class Meta: - model = models.SiteSettings - exclude = ["admin_code", "install_mode"] - widgets = { - "instance_short_description": forms.TextInput( - attrs={"aria-describedby": "desc_instance_short_description"} - ), - "require_confirm_email": forms.CheckboxInput( - attrs={"aria-describedby": "desc_require_confirm_email"} - ), - "invite_request_text": forms.Textarea( - attrs={"aria-describedby": "desc_invite_request_text"} - ), - } - - -class SiteThemeForm(CustomForm): - class Meta: - model = models.SiteSettings - fields = ["default_theme"] - - -class ThemeForm(CustomForm): - class Meta: - model = models.Theme - fields = ["name", "path"] - widgets = { - "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "path": forms.TextInput( - attrs={ - "aria-describedby": "desc_path", - "placeholder": "css/themes/theme-name.scss", - } - ), - } - - -class AnnouncementForm(CustomForm): - class Meta: - model = models.Announcement - exclude = ["remote_id"] - widgets = { - "preview": forms.TextInput(attrs={"aria-describedby": "desc_preview"}), - "content": forms.Textarea(attrs={"aria-describedby": "desc_content"}), - "event_date": forms.SelectDateWidget( - attrs={"aria-describedby": "desc_event_date"} - ), - "start_date": forms.SelectDateWidget( - attrs={"aria-describedby": "desc_start_date"} - ), - "end_date": forms.SelectDateWidget( - attrs={"aria-describedby": "desc_end_date"} - ), - "active": forms.CheckboxInput(attrs={"aria-describedby": "desc_active"}), - } - - -class ListForm(CustomForm): - class Meta: - model = models.List - fields = ["user", "name", "description", "curation", "privacy", "group"] - - -class ListItemForm(CustomForm): - class Meta: - model = models.ListItem - fields = ["user", "book", "book_list", "notes"] - - -class GroupForm(CustomForm): - class Meta: - model = models.Group - fields = ["user", "privacy", "name", "description"] - - class ReportForm(CustomForm): class Meta: model = models.Report fields = ["user", "reporter", "status", "links", "note"] -class EmailBlocklistForm(CustomForm): - class Meta: - model = models.EmailBlocklist - fields = ["domain"] - widgets = { - "avatar": forms.TextInput(attrs={"aria-describedby": "desc_domain"}), - } - - -class IPBlocklistForm(CustomForm): - class Meta: - model = models.IPBlocklist - fields = ["address"] - - -class ServerForm(CustomForm): - class Meta: - model = models.FederatedServer - exclude = ["remote_id"] - - -class SortListForm(forms.Form): - sort_by = ChoiceField( - choices=( - ("order", _("List Order")), - ("title", _("Book Title")), - ("rating", _("Rating")), - ), - label=_("Sort By"), - ) - direction = ChoiceField( - choices=( - ("ascending", _("Ascending")), - ("descending", _("Descending")), - ), - ) - - class ReadThroughForm(CustomForm): def clean(self): """make sure the email isn't in use by a registered user""" @@ -576,9 +57,3 @@ class ReadThroughForm(CustomForm): class Meta: model = models.ReadThrough fields = ["user", "book", "start_date", "finish_date"] - - -class AutoModRuleForm(CustomForm): - class Meta: - model = models.AutoMod - fields = ["string_match", "flag_users", "flag_statuses", "created_by"] diff --git a/bookwyrm/forms/groups.py b/bookwyrm/forms/groups.py new file mode 100644 index 000000000..15b27c0ae --- /dev/null +++ b/bookwyrm/forms/groups.py @@ -0,0 +1,16 @@ +""" using django model forms """ +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class UserGroupForm(CustomForm): + class Meta: + model = models.User + fields = ["groups"] + + +class GroupForm(CustomForm): + class Meta: + model = models.Group + fields = ["user", "privacy", "name", "description"] diff --git a/bookwyrm/forms/landing.py b/bookwyrm/forms/landing.py new file mode 100644 index 000000000..61b92ee83 --- /dev/null +++ b/bookwyrm/forms/landing.py @@ -0,0 +1,45 @@ +""" Forms for the landing pages """ +from django.forms import PasswordInput +from django.utils.translation import gettext_lazy as _ + +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class LoginForm(CustomForm): + class Meta: + model = models.User + fields = ["localname", "password"] + help_texts = {f: None for f in fields} + widgets = { + "password": PasswordInput(), + } + + +class RegisterForm(CustomForm): + class Meta: + model = models.User + fields = ["localname", "email", "password"] + help_texts = {f: None for f in fields} + widgets = {"password": PasswordInput()} + + def clean(self): + """Check if the username is taken""" + cleaned_data = super().clean() + localname = cleaned_data.get("localname").strip() + if models.User.objects.filter(localname=localname).first(): + self.add_error("localname", _("User with this username already exists")) + + +class InviteRequestForm(CustomForm): + def clean(self): + """make sure the email isn't in use by a registered user""" + cleaned_data = super().clean() + email = cleaned_data.get("email") + if email and models.User.objects.filter(email=email).exists(): + self.add_error("email", _("A user with this email already exists.")) + + class Meta: + model = models.InviteRequest + fields = ["email"] diff --git a/bookwyrm/forms/links.py b/bookwyrm/forms/links.py new file mode 100644 index 000000000..de229bc2d --- /dev/null +++ b/bookwyrm/forms/links.py @@ -0,0 +1,48 @@ +""" using django model forms """ +from urllib.parse import urlparse + +from django.utils.translation import gettext_lazy as _ + +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class LinkDomainForm(CustomForm): + class Meta: + model = models.LinkDomain + fields = ["name"] + + +class FileLinkForm(CustomForm): + class Meta: + model = models.FileLink + fields = ["url", "filetype", "availability", "book", "added_by"] + + def clean(self): + """make sure the domain isn't blocked or pending""" + cleaned_data = super().clean() + url = cleaned_data.get("url") + filetype = cleaned_data.get("filetype") + book = cleaned_data.get("book") + domain = urlparse(url).netloc + if models.LinkDomain.objects.filter(domain=domain).exists(): + status = models.LinkDomain.objects.get(domain=domain).status + if status == "blocked": + # pylint: disable=line-too-long + self.add_error( + "url", + _( + "This domain is blocked. Please contact your administrator if you think this is an error." + ), + ) + elif models.FileLink.objects.filter( + url=url, book=book, filetype=filetype + ).exists(): + # pylint: disable=line-too-long + self.add_error( + "url", + _( + "This link with file type has already been added for this book. If it is not visible, the domain is still pending." + ), + ) diff --git a/bookwyrm/forms/lists.py b/bookwyrm/forms/lists.py new file mode 100644 index 000000000..647db3bfe --- /dev/null +++ b/bookwyrm/forms/lists.py @@ -0,0 +1,37 @@ +""" using django model forms """ +from django import forms +from django.forms import ChoiceField +from django.utils.translation import gettext_lazy as _ + +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class ListForm(CustomForm): + class Meta: + model = models.List + fields = ["user", "name", "description", "curation", "privacy", "group"] + + +class ListItemForm(CustomForm): + class Meta: + model = models.ListItem + fields = ["user", "book", "book_list", "notes"] + + +class SortListForm(forms.Form): + sort_by = ChoiceField( + choices=( + ("order", _("List Order")), + ("title", _("Book Title")), + ("rating", _("Rating")), + ), + label=_("Sort By"), + ) + direction = ChoiceField( + choices=( + ("ascending", _("Ascending")), + ("descending", _("Descending")), + ), + ) diff --git a/bookwyrm/forms/status.py b/bookwyrm/forms/status.py new file mode 100644 index 000000000..0800166bf --- /dev/null +++ b/bookwyrm/forms/status.py @@ -0,0 +1,82 @@ +""" using django model forms """ +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class RatingForm(CustomForm): + class Meta: + model = models.ReviewRating + fields = ["user", "book", "rating", "privacy"] + + +class ReviewForm(CustomForm): + class Meta: + model = models.Review + fields = [ + "user", + "book", + "name", + "content", + "rating", + "content_warning", + "sensitive", + "privacy", + ] + + +class CommentForm(CustomForm): + class Meta: + model = models.Comment + fields = [ + "user", + "book", + "content", + "content_warning", + "sensitive", + "privacy", + "progress", + "progress_mode", + "reading_status", + ] + + +class QuotationForm(CustomForm): + class Meta: + model = models.Quotation + fields = [ + "user", + "book", + "quote", + "content", + "content_warning", + "sensitive", + "privacy", + "position", + "position_mode", + ] + + +class ReplyForm(CustomForm): + class Meta: + model = models.Status + fields = [ + "user", + "content", + "content_warning", + "sensitive", + "reply_parent", + "privacy", + ] + + +class StatusForm(CustomForm): + class Meta: + model = models.Status + fields = ["user", "content", "content_warning", "sensitive", "privacy"] + + +class DirectForm(CustomForm): + class Meta: + model = models.Status + fields = ["user", "content", "content_warning", "sensitive", "privacy"] From 19202e2cd77fddb0cd267e911d713e3562ba4617 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 12:12:51 -0700 Subject: [PATCH 123/132] Fixes name of user forms file --- bookwyrm/forms/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/forms/__init__.py b/bookwyrm/forms/__init__.py index a6f704339..075752936 100644 --- a/bookwyrm/forms/__init__.py +++ b/bookwyrm/forms/__init__.py @@ -3,10 +3,10 @@ from .admin import * from .author import * from .books import * +from .edit_user import * from .forms import * from .groups import * from .landing import * from .links import * from .lists import * from .status import * -from .user import * From 486f70c7fbd9147ca1ed4a58cee162676b7a5404 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 12:31:29 -0700 Subject: [PATCH 124/132] Adds scanner translation strings --- locale/de_DE/LC_MESSAGES/django.po | 122 +++++----- locale/en_US/LC_MESSAGES/django.po | 348 +++++++++++++++------------ locale/es_ES/LC_MESSAGES/django.mo | Bin 83719 -> 83594 bytes locale/es_ES/LC_MESSAGES/django.po | 130 +++++----- locale/fr_FR/LC_MESSAGES/django.po | 128 +++++----- locale/gl_ES/LC_MESSAGES/django.mo | Bin 89448 -> 89154 bytes locale/gl_ES/LC_MESSAGES/django.po | 126 +++++----- locale/it_IT/LC_MESSAGES/django.mo | Bin 90758 -> 90522 bytes locale/it_IT/LC_MESSAGES/django.po | 126 +++++----- locale/lt_LT/LC_MESSAGES/django.mo | Bin 84886 -> 84689 bytes locale/lt_LT/LC_MESSAGES/django.po | 122 +++++----- locale/no_NO/LC_MESSAGES/django.mo | Bin 79871 -> 79689 bytes locale/no_NO/LC_MESSAGES/django.po | 122 +++++----- locale/pt_BR/LC_MESSAGES/django.mo | Bin 90058 -> 89997 bytes locale/pt_BR/LC_MESSAGES/django.po | 124 +++++----- locale/pt_PT/LC_MESSAGES/django.mo | Bin 72909 -> 72742 bytes locale/pt_PT/LC_MESSAGES/django.po | 124 +++++----- locale/sv_SE/LC_MESSAGES/django.mo | Bin 87935 -> 87729 bytes locale/sv_SE/LC_MESSAGES/django.po | 122 +++++----- locale/zh_Hans/LC_MESSAGES/django.po | 126 +++++----- locale/zh_Hant/LC_MESSAGES/django.po | 122 +++++----- 21 files changed, 909 insertions(+), 933 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index f7ed0969d..31e44a7b9 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:52\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Follower*innen" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Zitate" msgid "Everything else" msgstr "Alles andere" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Start-Zeitleiste" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Startseite" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Bücher-Zeitleiste" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bücher" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English (Englisch)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español (Spanisch)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Galizisch)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano (Italienisch)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français (Französisch)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisch)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk (Norwegisch)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (brasilianisches Portugiesisch)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugiesisch)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Schwedisch)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (vereinfachtes Chinesisch)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinesisch, traditionell)" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Speichern" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Abbrechen" @@ -770,9 +770,9 @@ msgstr "Abbrechen" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Das Laden von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen, ob Autor*in-Informationen vorliegen, die hier noch nicht bekannt sind. Bestehende Informationen werden nicht überschrieben." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Zur Liste hinzufügen" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Aktionen" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Spam melden" @@ -1216,7 +1216,7 @@ msgstr "BookWyrm verlassen" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Dieser Link führt zu: %(link_url)s.
Möchtest du dorthin wechseln?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Weiter" @@ -1292,7 +1292,7 @@ msgstr "Bestätigungscode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Absenden" @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "Keine Benutzer*innen für „%(query)s“ gefunden" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Gruppe erstellen" #: bookwyrm/templates/groups/created_text.html:4 @@ -1824,9 +1825,9 @@ msgstr "Diese Gruppe löschen?" msgid "This action cannot be un-done" msgstr "Diese Aktion kann nicht rückgängig gemacht werden" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "\"%(title)s\" zu dieser Liste hinzufügen" msgid "Suggest \"%(title)s\" for this list" msgstr "\"%(title)s\" für diese Liste vorschlagen" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Vorschlagen" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Listenposition" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Übernehmen" @@ -3923,7 +3924,7 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." msgstr "" #: bookwyrm/templates/settings/themes.html:35 @@ -4200,7 +4201,8 @@ msgid "Need help?" msgstr "" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "Regal erstellen" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4216,10 +4218,6 @@ msgstr "Benutzer*inprofil" msgid "All books" msgstr "Alle Bücher" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Regal erstellen" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Antworten" msgid "Content" msgstr "Inhalt" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Inhaltswarnung:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Spoileralarm!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Spoileralarm aktivieren" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Spoileralarm!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Kommentar:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Veröffentlichen" @@ -4851,10 +4849,6 @@ msgstr "Deine Gruppen" msgid "Groups: %(username)s" msgstr "Gruppen: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Gruppe erstellen" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Benutzer*inprofil" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 76cfb32bd..c5d3ad3fa 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"POT-Creation-Date: 2022-03-14 19:30+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -18,77 +18,77 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:62 -msgid "User with this username already exists" -msgstr "" - -#: bookwyrm/forms.py:254 -msgid "This domain is blocked. Please contact your administrator if you think this is an error." -msgstr "" - -#: bookwyrm/forms.py:264 -msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." -msgstr "" - -#: bookwyrm/forms.py:403 -msgid "A user with this email already exists." -msgstr "" - -#: bookwyrm/forms.py:417 +#: bookwyrm/forms/admin.py:40 msgid "One Day" msgstr "" -#: bookwyrm/forms.py:418 +#: bookwyrm/forms/admin.py:41 msgid "One Week" msgstr "" -#: bookwyrm/forms.py:419 +#: bookwyrm/forms/admin.py:42 msgid "One Month" msgstr "" -#: bookwyrm/forms.py:420 +#: bookwyrm/forms/admin.py:43 msgid "Does Not Expire" msgstr "" -#: bookwyrm/forms.py:424 +#: bookwyrm/forms/admin.py:47 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:425 +#: bookwyrm/forms/admin.py:48 msgid "Unlimited" msgstr "" -#: bookwyrm/forms.py:543 +#: bookwyrm/forms/forms.py:54 +msgid "Reading finish date cannot be before start date." +msgstr "" + +#: bookwyrm/forms/landing.py:32 +msgid "User with this username already exists" +msgstr "" + +#: bookwyrm/forms/landing.py:41 +msgid "A user with this email already exists." +msgstr "" + +#: bookwyrm/forms/links.py:36 +msgid "This domain is blocked. Please contact your administrator if you think this is an error." +msgstr "" + +#: bookwyrm/forms/links.py:46 +msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." +msgstr "" + +#: bookwyrm/forms/lists.py:26 msgid "List Order" msgstr "" -#: bookwyrm/forms.py:544 +#: bookwyrm/forms/lists.py:27 msgid "Book Title" msgstr "" -#: bookwyrm/forms.py:545 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms/lists.py:28 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "" -#: bookwyrm/forms.py:547 bookwyrm/templates/lists/list.html:185 +#: bookwyrm/forms/lists.py:30 bookwyrm/templates/lists/list.html:185 msgid "Sort By" msgstr "" -#: bookwyrm/forms.py:551 +#: bookwyrm/forms/lists.py:34 msgid "Ascending" msgstr "" -#: bookwyrm/forms.py:552 +#: bookwyrm/forms/lists.py:35 msgid "Descending" msgstr "" -#: bookwyrm/forms.py:565 -msgid "Reading finish date cannot be before start date." -msgstr "" - #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "" @@ -188,7 +188,7 @@ msgstr "" msgid "%(value)s is not a valid username" msgstr "" -#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:171 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:179 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "" @@ -246,7 +246,7 @@ msgstr "" msgid "Approved" msgstr "" -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:281 msgid "Reviews" msgstr "" @@ -400,7 +400,7 @@ msgstr "" msgid "Moderator" msgstr "" -#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:140 msgid "Admin" msgstr "" @@ -431,7 +431,7 @@ msgid "Software version:" msgstr "" #: bookwyrm/templates/about/layout.html:30 -#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:230 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:238 #, python-format msgid "About %(site_name)s" msgstr "" @@ -534,7 +534,7 @@ msgstr "" #: bookwyrm/templates/annual_summary/layout.html:155 #: bookwyrm/templates/annual_summary/layout.html:176 #: bookwyrm/templates/annual_summary/layout.html:245 -#: bookwyrm/templates/book/book.html:47 +#: bookwyrm/templates/book/book.html:56 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 @@ -619,18 +619,18 @@ msgstr "" #: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 -#: bookwyrm/templates/book/book.html:122 +#: bookwyrm/templates/book/book.html:131 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "" #: bookwyrm/templates/author/author.html:87 -#: bookwyrm/templates/book/book.html:126 +#: bookwyrm/templates/book/book.html:135 msgid "View on OpenLibrary" msgstr "" #: bookwyrm/templates/author/author.html:102 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:149 msgid "View on Inventaire" msgstr "" @@ -667,7 +667,7 @@ msgid "Last edited by:" msgstr "" #: bookwyrm/templates/author/edit_author.html:33 -#: bookwyrm/templates/book/edit/edit_book_form.html:16 +#: bookwyrm/templates/book/edit/edit_book_form.html:17 msgid "Metadata" msgstr "" @@ -679,8 +679,9 @@ msgid "Name:" msgstr "" #: bookwyrm/templates/author/edit_author.html:44 -#: bookwyrm/templates/book/edit/edit_book_form.html:75 -#: bookwyrm/templates/book/edit/edit_book_form.html:94 +#: bookwyrm/templates/book/edit/edit_book_form.html:76 +#: bookwyrm/templates/book/edit/edit_book_form.html:88 +#: bookwyrm/templates/book/edit/edit_book_form.html:107 msgid "Separate multiple values with commas." msgstr "" @@ -709,7 +710,7 @@ msgid "Openlibrary key:" msgstr "" #: bookwyrm/templates/author/edit_author.html:84 -#: bookwyrm/templates/book/edit/edit_book_form.html:265 +#: bookwyrm/templates/book/edit/edit_book_form.html:278 msgid "Inventaire ID:" msgstr "" @@ -726,7 +727,7 @@ msgid "ISNI:" msgstr "" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:193 +#: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 @@ -748,7 +749,7 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 +#: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 @@ -760,6 +761,7 @@ msgstr "" #: bookwyrm/templates/lists/delete_list_modal.html:16 #: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 +#: bookwyrm/templates/search/barcode_modal.html:45 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 #: bookwyrm/templates/snippets/report_modal.html:52 @@ -780,87 +782,91 @@ msgstr "" msgid "Confirm" msgstr "" -#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56 +#: bookwyrm/templates/book/book.html:19 +msgid "Unable to connect to remote source." +msgstr "" + +#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65 msgid "Edit Book" msgstr "" -#: bookwyrm/templates/book/book.html:79 bookwyrm/templates/book/book.html:82 +#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91 msgid "Click to add cover" msgstr "" -#: bookwyrm/templates/book/book.html:88 +#: bookwyrm/templates/book/book.html:97 msgid "Failed to load cover" msgstr "" -#: bookwyrm/templates/book/book.html:99 +#: bookwyrm/templates/book/book.html:108 msgid "Click to enlarge" msgstr "" -#: bookwyrm/templates/book/book.html:170 +#: bookwyrm/templates/book/book.html:179 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/book/book.html:182 +#: bookwyrm/templates/book/book.html:191 msgid "Add Description" msgstr "" -#: bookwyrm/templates/book/book.html:189 -#: bookwyrm/templates/book/edit/edit_book_form.html:39 +#: bookwyrm/templates/book/book.html:198 +#: bookwyrm/templates/book/edit/edit_book_form.html:40 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "" -#: bookwyrm/templates/book/book.html:203 +#: bookwyrm/templates/book/book.html:212 #, python-format msgid "%(count)s editions" msgstr "" -#: bookwyrm/templates/book/book.html:211 +#: bookwyrm/templates/book/book.html:220 msgid "You have shelved this edition in:" msgstr "" -#: bookwyrm/templates/book/book.html:226 +#: bookwyrm/templates/book/book.html:235 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "" -#: bookwyrm/templates/book/book.html:237 +#: bookwyrm/templates/book/book.html:246 msgid "Your reading activity" msgstr "" -#: bookwyrm/templates/book/book.html:243 +#: bookwyrm/templates/book/book.html:252 msgid "Add read dates" msgstr "" -#: bookwyrm/templates/book/book.html:251 +#: bookwyrm/templates/book/book.html:260 msgid "You don't have any reading activity for this book." msgstr "" -#: bookwyrm/templates/book/book.html:277 +#: bookwyrm/templates/book/book.html:286 msgid "Your reviews" msgstr "" -#: bookwyrm/templates/book/book.html:283 +#: bookwyrm/templates/book/book.html:292 msgid "Your comments" msgstr "" -#: bookwyrm/templates/book/book.html:289 +#: bookwyrm/templates/book/book.html:298 msgid "Your quotes" msgstr "" -#: bookwyrm/templates/book/book.html:325 +#: bookwyrm/templates/book/book.html:334 msgid "Subjects" msgstr "" -#: bookwyrm/templates/book/book.html:337 +#: bookwyrm/templates/book/book.html:346 msgid "Places" msgstr "" -#: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:357 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:83 #: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 @@ -869,11 +875,11 @@ msgstr "" msgid "Lists" msgstr "" -#: bookwyrm/templates/book/book.html:360 +#: bookwyrm/templates/book/book.html:369 msgid "Add to list" msgstr "" -#: bookwyrm/templates/book/book.html:370 +#: bookwyrm/templates/book/book.html:379 #: bookwyrm/templates/book/cover_add_modal.html:32 #: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 @@ -887,12 +893,12 @@ msgid "ISBN:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit/edit_book_form.html:274 +#: bookwyrm/templates/book/edit/edit_book_form.html:287 msgid "OCLC Number:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit/edit_book_form.html:283 +#: bookwyrm/templates/book/edit/edit_book_form.html:296 msgid "ASIN:" msgstr "" @@ -901,12 +907,12 @@ msgid "Add cover" msgstr "" #: bookwyrm/templates/book/cover_add_modal.html:17 -#: bookwyrm/templates/book/edit/edit_book_form.html:173 +#: bookwyrm/templates/book/edit/edit_book_form.html:186 msgid "Upload cover:" msgstr "" #: bookwyrm/templates/book/cover_add_modal.html:23 -#: bookwyrm/templates/book/edit/edit_book_form.html:179 +#: bookwyrm/templates/book/edit/edit_book_form.html:192 msgid "Load cover from url:" msgstr "" @@ -976,110 +982,114 @@ msgstr "" msgid "Back" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:21 +#: bookwyrm/templates/book/edit/edit_book_form.html:22 #: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:30 +#: bookwyrm/templates/book/edit/edit_book_form.html:31 msgid "Subtitle:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:50 +#: bookwyrm/templates/book/edit/edit_book_form.html:51 msgid "Series:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:60 +#: bookwyrm/templates/book/edit/edit_book_form.html:61 msgid "Series number:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:71 +#: bookwyrm/templates/book/edit/edit_book_form.html:72 msgid "Languages:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:85 +#: bookwyrm/templates/book/edit/edit_book_form.html:84 +msgid "Subjects:" +msgstr "" + +#: bookwyrm/templates/book/edit/edit_book_form.html:98 msgid "Publication" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:90 +#: bookwyrm/templates/book/edit/edit_book_form.html:103 msgid "Publisher:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:102 +#: bookwyrm/templates/book/edit/edit_book_form.html:115 msgid "First published date:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:111 +#: bookwyrm/templates/book/edit/edit_book_form.html:124 msgid "Published date:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:122 +#: bookwyrm/templates/book/edit/edit_book_form.html:135 msgid "Authors" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:131 +#: bookwyrm/templates/book/edit/edit_book_form.html:144 #, python-format msgid "Remove %(name)s" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:134 +#: bookwyrm/templates/book/edit/edit_book_form.html:147 #, python-format msgid "Author page for %(name)s" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:142 +#: bookwyrm/templates/book/edit/edit_book_form.html:155 msgid "Add Authors:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:145 -#: bookwyrm/templates/book/edit/edit_book_form.html:148 +#: bookwyrm/templates/book/edit/edit_book_form.html:158 +#: bookwyrm/templates/book/edit/edit_book_form.html:161 msgid "Add Author" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:146 -#: bookwyrm/templates/book/edit/edit_book_form.html:149 +#: bookwyrm/templates/book/edit/edit_book_form.html:159 +#: bookwyrm/templates/book/edit/edit_book_form.html:162 msgid "Jane Doe" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:152 +#: bookwyrm/templates/book/edit/edit_book_form.html:165 msgid "Add Another Author" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:160 +#: bookwyrm/templates/book/edit/edit_book_form.html:173 #: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:192 +#: bookwyrm/templates/book/edit/edit_book_form.html:205 msgid "Physical Properties" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:199 +#: bookwyrm/templates/book/edit/edit_book_form.html:212 #: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:211 +#: bookwyrm/templates/book/edit/edit_book_form.html:224 msgid "Format details:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:222 +#: bookwyrm/templates/book/edit/edit_book_form.html:235 msgid "Pages:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:233 +#: bookwyrm/templates/book/edit/edit_book_form.html:246 msgid "Book Identifiers" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:238 +#: bookwyrm/templates/book/edit/edit_book_form.html:251 msgid "ISBN 13:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:247 +#: bookwyrm/templates/book/edit/edit_book_form.html:260 msgid "ISBN 10:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book_form.html:256 +#: bookwyrm/templates/book/edit/edit_book_form.html:269 msgid "Openlibrary ID:" msgstr "" @@ -1168,7 +1178,7 @@ msgstr "" #: bookwyrm/templates/settings/federation/instance_list.html:46 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 #: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_admin.html:52 #: bookwyrm/templates/settings/users/user_info.html:20 msgid "Status" msgstr "" @@ -1177,7 +1187,7 @@ msgstr "" #: bookwyrm/templates/settings/announcements/announcements.html:41 #: bookwyrm/templates/settings/federation/instance.html:112 #: bookwyrm/templates/settings/reports/report_links_table.html:6 -#: bookwyrm/templates/settings/themes.html:118 +#: bookwyrm/templates/settings/themes.html:100 msgid "Actions" msgstr "" @@ -1321,16 +1331,18 @@ msgid "Community" msgstr "" #: bookwyrm/templates/directory/community_filter.html:8 +#: bookwyrm/templates/settings/users/user_admin.html:25 msgid "Local users" msgstr "" #: bookwyrm/templates/directory/community_filter.html:12 +#: bookwyrm/templates/settings/users/user_admin.html:29 msgid "Federated community" msgstr "" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:101 +#: bookwyrm/templates/layout.html:109 msgid "Directory" msgstr "" @@ -1450,7 +1462,7 @@ msgstr "" #: bookwyrm/templates/discover/discover.html:4 #: bookwyrm/templates/discover/discover.html:10 -#: bookwyrm/templates/layout.html:78 +#: bookwyrm/templates/layout.html:86 msgid "Discover" msgstr "" @@ -1573,7 +1585,7 @@ msgstr "" msgid "%(site_name)s home page" msgstr "" -#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:242 msgid "Contact site admin" msgstr "" @@ -1587,7 +1599,7 @@ msgid "Direct Messages with %(username)s" msgstr "" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:111 +#: bookwyrm/templates/layout.html:119 msgid "Direct Messages" msgstr "" @@ -1624,7 +1636,7 @@ msgid "Updates" msgstr "" #: bookwyrm/templates/feed/suggested_books.html:6 -#: bookwyrm/templates/layout.html:106 +#: bookwyrm/templates/layout.html:114 msgid "Your Books" msgstr "" @@ -2176,7 +2188,7 @@ msgid "Login" msgstr "" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:187 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "" @@ -2185,7 +2197,7 @@ msgstr "" msgid "Success! Email address confirmed." msgstr "" -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:178 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -2193,12 +2205,12 @@ msgstr "" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/layout.html:182 bookwyrm/templates/ostatus/error.html:32 #: bookwyrm/templates/snippets/register_form.html:45 msgid "Password:" msgstr "" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:184 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "" @@ -2230,19 +2242,23 @@ msgstr "" msgid "Search for a book, user, or list" msgstr "" -#: bookwyrm/templates/layout.html:64 -msgid "Main navigation menu" +#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62 +msgid "Scan Barcode" msgstr "" #: bookwyrm/templates/layout.html:72 +msgid "Main navigation menu" +msgstr "" + +#: bookwyrm/templates/layout.html:80 msgid "Feed" msgstr "" -#: bookwyrm/templates/layout.html:116 bookwyrm/templates/setup/config.html:52 +#: bookwyrm/templates/layout.html:124 bookwyrm/templates/setup/config.html:52 msgid "Settings" msgstr "" -#: bookwyrm/templates/layout.html:125 +#: bookwyrm/templates/layout.html:133 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -2250,42 +2266,42 @@ msgstr "" msgid "Invites" msgstr "" -#: bookwyrm/templates/layout.html:139 +#: bookwyrm/templates/layout.html:147 msgid "Log out" msgstr "" -#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148 +#: bookwyrm/templates/layout.html:155 bookwyrm/templates/layout.html:156 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "" -#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:183 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "" -#: bookwyrm/templates/layout.html:187 +#: bookwyrm/templates/layout.html:195 msgid "Join" msgstr "" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:229 msgid "Successfully posted status" msgstr "" -#: bookwyrm/templates/layout.html:222 +#: bookwyrm/templates/layout.html:230 msgid "Error posting status" msgstr "" -#: bookwyrm/templates/layout.html:238 +#: bookwyrm/templates/layout.html:246 msgid "Documentation" msgstr "" -#: bookwyrm/templates/layout.html:245 +#: bookwyrm/templates/layout.html:253 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "" -#: bookwyrm/templates/layout.html:249 +#: bookwyrm/templates/layout.html:257 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "" @@ -3013,6 +3029,44 @@ msgstr "" msgid "Report" msgstr "" +#: bookwyrm/templates/search/barcode_modal.html:5 +msgid "" +"\n" +" Scan Barcode\n" +" " +msgstr "" + +#: bookwyrm/templates/search/barcode_modal.html:23 +msgid "Requesting camera..." +msgstr "" + +#: bookwyrm/templates/search/barcode_modal.html:24 +msgid "Grant access to the camera to scan a book's barcode." +msgstr "" + +#: bookwyrm/templates/search/barcode_modal.html:29 +msgid "Could not access camera" +msgstr "" + +#: bookwyrm/templates/search/barcode_modal.html:33 +msgctxt "barcode scanner" +msgid "Scanning..." +msgstr "" + +#: bookwyrm/templates/search/barcode_modal.html:34 +msgid "Align your book's barcode with the camera." +msgstr "" + +#: bookwyrm/templates/search/barcode_modal.html:38 +msgctxt "barcode scanner" +msgid "ISBN scanned" +msgstr "" + +#: bookwyrm/templates/search/barcode_modal.html:39 +msgctxt "followed by ISBN" +msgid "Searching for book:" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "" @@ -3046,8 +3100,9 @@ msgstr "" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27 #: bookwyrm/templates/settings/federation/instance_list.html:44 #: bookwyrm/templates/settings/layout.html:36 -#: bookwyrm/templates/settings/users/user_admin.html:3 -#: bookwyrm/templates/settings/users/user_admin.html:10 +#: bookwyrm/templates/settings/users/user.html:13 +#: bookwyrm/templates/settings/users/user_admin.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:12 msgid "Users" msgstr "" @@ -3514,6 +3569,7 @@ msgid "Date accepted" msgstr "" #: bookwyrm/templates/settings/invites/manage_invite_requests.html:42 +#: bookwyrm/templates/settings/users/email_filter.html:5 msgid "Email" msgstr "" @@ -3932,7 +3988,7 @@ msgid "Add the file name using the form below to make it available in the applic msgstr "" #: bookwyrm/templates/settings/themes.html:42 -#: bookwyrm/templates/settings/themes.html:101 +#: bookwyrm/templates/settings/themes.html:83 msgid "Add theme" msgstr "" @@ -3940,28 +3996,24 @@ msgstr "" msgid "Unable to save theme" msgstr "" -#: bookwyrm/templates/settings/themes.html:61 -msgid "No available theme files detected" -msgstr "" - -#: bookwyrm/templates/settings/themes.html:69 -#: bookwyrm/templates/settings/themes.html:112 +#: bookwyrm/templates/settings/themes.html:64 +#: bookwyrm/templates/settings/themes.html:94 msgid "Theme name" msgstr "" -#: bookwyrm/templates/settings/themes.html:79 +#: bookwyrm/templates/settings/themes.html:74 msgid "Theme filename" msgstr "" -#: bookwyrm/templates/settings/themes.html:107 +#: bookwyrm/templates/settings/themes.html:89 msgid "Available Themes" msgstr "" -#: bookwyrm/templates/settings/themes.html:115 +#: bookwyrm/templates/settings/themes.html:97 msgid "File" msgstr "" -#: bookwyrm/templates/settings/themes.html:130 +#: bookwyrm/templates/settings/themes.html:112 msgid "Remove theme" msgstr "" @@ -3979,43 +4031,39 @@ msgstr "" msgid "Your password:" msgstr "" -#: bookwyrm/templates/settings/users/user.html:7 -msgid "Back to users" -msgstr "" - -#: bookwyrm/templates/settings/users/user_admin.html:7 +#: bookwyrm/templates/settings/users/user_admin.html:9 #, python-format msgid "Users: %(instance_name)s" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:22 +#: bookwyrm/templates/settings/users/user_admin.html:40 #: bookwyrm/templates/settings/users/username_filter.html:5 msgid "Username" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:26 +#: bookwyrm/templates/settings/users/user_admin.html:44 msgid "Date Added" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:30 +#: bookwyrm/templates/settings/users/user_admin.html:48 msgid "Last Active" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:38 +#: bookwyrm/templates/settings/users/user_admin.html:57 msgid "Remote instance" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:47 +#: bookwyrm/templates/settings/users/user_admin.html:67 #: bookwyrm/templates/settings/users/user_info.html:24 msgid "Active" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:47 +#: bookwyrm/templates/settings/users/user_admin.html:67 #: bookwyrm/templates/settings/users/user_info.html:28 msgid "Inactive" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:52 +#: bookwyrm/templates/settings/users/user_admin.html:73 #: bookwyrm/templates/settings/users/user_info.html:120 msgid "Not set" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 43db15d9d564c104654b5a2f27f668fb4ecbd918..ff4ad1d4996bb4a39f8a210854b7bfa648db2dfc 100644 GIT binary patch delta 21021 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

a9#mi11c-y{CqNu9aRMX+W>0`b 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 delta 21094 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\n" "Language-Team: Spanish\n" "Language: es\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Seguidores" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citas" msgid "Everything else" msgstr "Todo lo demás" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Línea de tiempo principal" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Línea temporal de libros" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch (Alemán)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Gallego)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français (Francés)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk (Noruego)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileño)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Sueco)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chino simplificado)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chino tradicional)" @@ -598,11 +598,11 @@ msgstr "Alias:" #: bookwyrm/templates/author/author.html:48 msgid "Born:" -msgstr "Nacido:" +msgstr "Fecha de nacimiento:" #: bookwyrm/templates/author/author.html:55 msgid "Died:" -msgstr "Muerto:" +msgstr "Fecha de defunción:" #: bookwyrm/templates/author/author.html:65 msgid "External links" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Guardar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Cancelar" @@ -770,9 +770,9 @@ msgstr "Cancelar" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "La carga de datos se conectará a %(source_name)s y comprobará si hay metadatos sobre este autor que no están presentes aquí. Los metadatos existentes no serán sobrescritos." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Agregar a lista" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Acciones" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Denunciar spam" @@ -1216,7 +1216,7 @@ msgstr "Saliendo de BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Este enlace te lleva a: %(link_url)s.
¿Es ahí adonde quieres ir?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuar" @@ -1292,7 +1292,7 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Enviar" @@ -1326,7 +1326,7 @@ msgstr "Usuarios locales" #: bookwyrm/templates/directory/community_filter.html:12 msgid "Federated community" -msgstr "Comunidad federalizada" +msgstr "Comunidad federada" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "No se encontró ningún usuario correspondiente a \"%(query)s\"" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Crear grupo" #: bookwyrm/templates/groups/created_text.html:4 @@ -1824,9 +1825,9 @@ msgstr "¿Eliminar este grupo?" msgid "This action cannot be un-done" msgstr "Esta acción no se puede deshacer" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "Añadir «%(title)s» a esta lista" msgid "Suggest \"%(title)s\" for this list" msgstr "Sugerir «%(title)s» para esta lista" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Sugerir" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Posición" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Establecido" @@ -3923,7 +3924,7 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." msgstr "" #: bookwyrm/templates/settings/themes.html:35 @@ -4200,8 +4201,9 @@ msgid "Need help?" msgstr "" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" -msgstr "Crear Estantería" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" +msgstr "Crear estantería" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 msgid "Edit Shelf" @@ -4216,10 +4218,6 @@ msgstr "Perfil de usuario" msgid "All books" msgstr "Todos los libros" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Crear estantería" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Responder" msgid "Content" msgstr "Contenido" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Advertencia de contenido:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "¡Advertencia, ya vienen spoilers!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Incluir alerta de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "¡Advertencia, ya vienen spoilers!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentario:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Compartir" @@ -4851,10 +4849,6 @@ msgstr "Tus grupos" msgid "Groups: %(username)s" msgstr "Grupos: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Crear grupo" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Perfil de usuario" diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 6c5d17c4d..4e3d049b6 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-14 16:32\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Abonné(e)s" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citations" msgid "Everything else" msgstr "Tout le reste" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Mon fil d’actualité" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Accueil" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Actualité de mes livres" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livres" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Galicien)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano (italien)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituanien)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk (norvégien)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugais brésilien)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugais européen)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Suédois)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简化字" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "Infos supplémentaires :" @@ -727,14 +727,14 @@ msgstr "ISNI :" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Enregistrer" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Annuler" @@ -770,9 +770,9 @@ msgstr "Annuler" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Le chargement des données se connectera à %(source_name)s et vérifiera les métadonnées de cet auteur ou autrice qui ne sont pas présentes ici. Les métadonnées existantes ne seront pas écrasées." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Ajouter à la liste" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Actions" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Signaler un spam" @@ -1216,7 +1216,7 @@ msgstr "Vous quittez BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Ce lien vous amène à %(link_url)s.
Est-ce là que vous souhaitez aller ?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuer" @@ -1292,7 +1292,7 @@ msgstr "Code de confirmation :" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Valider" @@ -1806,8 +1806,9 @@ msgid "No users found for \"%(query)s\"" msgstr "Aucun compte trouvé pour « %(query)s »" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" -msgstr "Créer un Groupe" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" +msgstr "Créer un groupe" #: bookwyrm/templates/groups/created_text.html:4 #, python-format @@ -1824,9 +1825,9 @@ msgstr "Supprimer ce groupe ?" msgid "This action cannot be un-done" msgstr "Cette action ne peut pas être annulée" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "Ajouter « %(title)s » à cette liste" msgid "Suggest \"%(title)s\" for this list" msgstr "Suggérer « %(title)s » pour cette liste" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Suggérer" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Position" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Appliquer" @@ -3923,8 +3924,8 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "Copiez le fichier de thème dans le répertoire bookwyrm/static/css/themes de votre serveur depuis la ligne de commande." #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." -msgstr "Exécutez ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." +msgstr "Exécutez ./bw-dev collectstatic." #: bookwyrm/templates/settings/themes.html:35 msgid "Add the file name using the form below to make it available in the application interface." @@ -4200,7 +4201,8 @@ msgid "Need help?" msgstr "Besoin d’aide ?" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "Créer une étagère" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4216,10 +4218,6 @@ msgstr "Profil utilisateur·rice" msgid "All books" msgstr "Tous les livres" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Créer une étagère" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Répondre" msgid "Content" msgstr "Contenu" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Avertissement sur le contenu :" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Attention spoilers !" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Afficher une alerte spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "Avertissements de contenu/spoilers :" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Attention spoilers !" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Commentaire :" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Publier" @@ -4497,7 +4495,7 @@ msgstr "Critique de « %(book_title)s » : %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year." -msgstr "Définissez un nombre de livre à lire comme objectif pour %(year)s, et suivezvotre progression au fil de l’année." +msgstr "Définissez un nombre de livres à lire comme objectif pour %(year)s, et suivez votre progression au fil de l’année." #: bookwyrm/templates/snippets/goal_form.html:16 msgid "Reading goal:" @@ -4851,10 +4849,6 @@ msgstr "Vos Groupes" msgid "Groups: %(username)s" msgstr "Groupes : %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Créer un groupe" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Profil" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 691d4246e087603ac0f44e63c0f842b22202e1a0..8958c625aa2159fb6d31240e3ad57c6309aa0a96 100644 GIT binary patch delta 22785 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

8dD(RabWR!28MK~K*bbD&^1nh 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 C4P(Fn delta 23057 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 diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 1f45a6890..bf0fc1218 100644 --- a/locale/gl_ES/LC_MESSAGES/django.po +++ b/locale/gl_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:52\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Seguidoras" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citas" msgid "Everything else" msgstr "As outras cousas" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Cronoloxía de Inicio" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Cronoloxía de libros" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Alemán (Alemaña)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español (España)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano (Italian)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Francés (Francia)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lithuanian)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Noruegués (Norwegian)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileiro)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Sueco (Swedish)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinés simplificado)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinés tradicional)" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Gardar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Cancelar" @@ -770,9 +770,9 @@ msgstr "Cancelar" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Ao cargar os datos vas conectar con %(source_name)s e comprobar se existen metadatos desta persoa autora que non están aquí presentes. Non se sobrescribirán os datos existentes." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Engadir a listaxe" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Accións" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Denunciar spam" @@ -1216,7 +1216,7 @@ msgstr "Saír de BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Esta ligazón vaite levar a: %(link_url)s.
É ahí a onde queres ir?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuar" @@ -1292,7 +1292,7 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Enviar" @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "Non se atopan usuarias para \"%(query)s\"" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Crear grupo" #: bookwyrm/templates/groups/created_text.html:4 @@ -1824,9 +1825,9 @@ msgstr "Eliminar este grupo?" msgid "This action cannot be un-done" msgstr "Esta acción non ten volta atrás" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "Engadir \"%(title)s\" a esta lista" msgid "Suggest \"%(title)s\" for this list" msgstr "Suxerir \"%(title)s\" para esta lista" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Suxire" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Posición da lista" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Establecer" @@ -3923,8 +3924,8 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "Copia o ficheiro do decorado no cartafol bookwyrm/static/css/themes do teu servidor usando a liña de comandos." #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." -msgstr "Executa ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." +msgstr "" #: bookwyrm/templates/settings/themes.html:35 msgid "Add the file name using the form below to make it available in the application interface." @@ -4200,8 +4201,9 @@ msgid "Need help?" msgstr "Precisas axuda?" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" -msgstr "Crear Estante" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" +msgstr "Crear estante" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 msgid "Edit Shelf" @@ -4216,10 +4218,6 @@ msgstr "Perfil da usuaria" msgid "All books" msgstr "Tódolos libros" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Crear estante" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Responder" msgid "Content" msgstr "Contido" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Aviso sobre o contido:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Contén Spoilers!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Incluír alerta de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Contén Spoilers!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentario:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Publicación" @@ -4851,10 +4849,6 @@ msgstr "Os teus grupos" msgid "Groups: %(username)s" msgstr "Grupos: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Crear grupo" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Perfil da usuaria" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index 2be0c3ac01a7057cabd8b69e3f99520ca5e585ef..911ed76e7d249a6e33903385d49658f07dc52aed 100644 GIT binary patch delta 22663 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 delta 22885 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 diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index 245387351..fbeaf64b7 100644 --- a/locale/it_IT/LC_MESSAGES/django.po +++ b/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:52\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Followers" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citazioni" msgid "Everything else" msgstr "Tutto il resto" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "La tua timeline" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Home" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Timeline dei libri" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libri" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English (Inglese)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch (Tedesco)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español (Spagnolo)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Galiziano)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français (Francese)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk (Norvegese)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portoghese Brasiliano)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portoghese europeo)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Svedese)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Cinese Semplificato)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Cinese Tradizionale)" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Salva" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Cancella" @@ -770,9 +770,9 @@ msgstr "Cancella" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Il caricamento dei dati si collegherà a %(source_name)s e verificherà eventuali metadati relativi a questo autore che non sono presenti qui. I metadati esistenti non vengono sovrascritti." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Aggiungi all'elenco" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Azioni" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Segnala come spam" @@ -1216,7 +1216,7 @@ msgstr "Esci da BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Questo link ti sta portando a: %(link_url)s.
È qui che vuoi andare?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continua" @@ -1292,7 +1292,7 @@ msgstr "Codice di conferma:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Invia" @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "Nessun utente trovato per \"%(query)s\"" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Crea gruppo" #: bookwyrm/templates/groups/created_text.html:4 @@ -1824,9 +1825,9 @@ msgstr "Eliminare questo gruppo?" msgid "This action cannot be un-done" msgstr "Questa azione non può essere annullata" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "Aggiungi \"%(title)s\" a questa lista" msgid "Suggest \"%(title)s\" for this list" msgstr "Suggerisci \"%(title)s\" per questa lista" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Suggerisci" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Posizione elenco" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Imposta" @@ -3923,8 +3924,8 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "Copia il file del tema nella directory bookwyrm/static/css/themes sul tuo server dalla riga di comando." #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." -msgstr "Esegui ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." +msgstr "" #: bookwyrm/templates/settings/themes.html:35 msgid "Add the file name using the form below to make it available in the application interface." @@ -4200,8 +4201,9 @@ msgid "Need help?" msgstr "Hai bisogno di aiuto?" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" -msgstr "Crea Scaffale" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" +msgstr "Crea scaffale" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 msgid "Edit Shelf" @@ -4216,10 +4218,6 @@ msgstr "Profilo utente" msgid "All books" msgstr "Tutti i libri" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Crea scaffale" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Rispondi" msgid "Content" msgstr "Contenuto" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Avviso sul contenuto:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Attenzione Spoiler!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Includi avviso spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Attenzione Spoiler!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Commenta:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Pubblica" @@ -4851,10 +4849,6 @@ msgstr "I tuoi gruppi" msgid "Groups: %(username)s" msgstr "Gruppi: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Crea gruppo" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Profilo utente" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index b4885e93b693c8909b1476f861f3aaecba0a2b0a..08a3fe6ac5ff76c87f1cb315f558e204008ad0bd 100644 GIT binary patch delta 21120 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 +1M5WWeN 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 delta 21291 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 B1xNq@ diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index b272ecf09..b74de2d2f 100644 --- a/locale/lt_LT/LC_MESSAGES/django.po +++ b/locale/lt_LT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:15\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:51\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Sekėjai" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citatos" msgid "Everything else" msgstr "Visa kita" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Pagrindinė siena" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Pagrindinis" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Knygų siena" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Knygos" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English (Anglų)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch (Vokiečių)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español (Ispanų)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (galisų)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italų (Italian)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français (Prancūzų)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norvegų (Norwegian)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português brasileiro (Brazilijos portugalų)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europos portugalų)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Švedų)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Supaprastinta kinų)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradicinė kinų)" @@ -735,14 +735,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -756,20 +756,20 @@ msgstr "Išsaugoti" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Atšaukti" @@ -778,9 +778,9 @@ msgstr "Atšaukti" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Duomenų įkėlimas prisijungs prie %(source_name)s ir patikrins ar nėra naujos informacijos. Esantys metaduomenys nebus perrašomi." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -883,8 +883,8 @@ msgid "Add to list" msgstr "Pridėti prie sąrašo" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1191,7 +1191,7 @@ msgid "Actions" msgstr "Veiksmai" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Pranešti apie brukalą" @@ -1225,7 +1225,7 @@ msgstr "Tęsti naršymą ne BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Nuoroda veda į: %(link_url)s.
Ar tikrai norite ten nueiti?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Tęsti" @@ -1301,7 +1301,7 @@ msgstr "Patvirtinimo kodas:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Siųsti" @@ -1819,7 +1819,8 @@ msgid "No users found for \"%(query)s\"" msgstr "Pagal paiešką „%(query)s“ nieko nerasta" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Sukurti grupę" #: bookwyrm/templates/groups/created_text.html:4 @@ -1837,9 +1838,9 @@ msgstr "Ištrinti šią grupę?" msgid "This action cannot be un-done" msgstr "Nebegalite atšaukti šio veiksmo" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2319,7 +2320,7 @@ msgstr "Pridėti \"%(title)s\" į šį sąrašą" msgid "Suggest \"%(title)s\" for this list" msgstr "Siūlyti \"%(title)s\" į šį sąrašą" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Siūlyti" @@ -2489,7 +2490,7 @@ msgid "List position" msgstr "Sąrašo pozicija" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Nustatyti" @@ -3952,7 +3953,7 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." msgstr "" #: bookwyrm/templates/settings/themes.html:35 @@ -4229,7 +4230,8 @@ msgid "Need help?" msgstr "" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "Sukurti lentyną" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4245,10 +4247,6 @@ msgstr "Nario paskyra" msgid "All books" msgstr "Visos knygos" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Sukurti lentyną" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4376,24 +4374,24 @@ msgstr "Atsakyti" msgid "Content" msgstr "Turinys" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Įspėjimas dėl turinio:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Galimas turinio atskleidimas!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Įdėti įspėjimą apie turinio atskleidimą" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Galimas turinio atskleidimas!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Komentuoti:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Publikuoti" @@ -4894,10 +4892,6 @@ msgstr "Jūsų grupės" msgid "Groups: %(username)s" msgstr "Grupės: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Sukurti grupę" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Nario paskyra" diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index dbfe5ea07ba28095af217223c694380ae67f9888..7f23bb1a85ac630404dea8c769addd4f5b1fa79c 100644 GIT binary patch delta 21120 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 +1M5WWeN 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 QCvua2J`vh{@JUAy0MR`tS^xk5 diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po index a7626b284..2d4003e2b 100644 --- a/locale/no_NO/LC_MESSAGES/django.po +++ b/locale/no_NO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:51\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Norwegian\n" "Language: no\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Følgere" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Sitater" msgid "Everything else" msgstr "Andre ting" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Lokal tidslinje" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Hjem" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Boktidslinja" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bøker" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English (Engelsk)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch (Tysk)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español (Spansk)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano (Italiensk)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français (Fransk)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisk)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk (Norsk)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português - Brasil (Brasiliansk portugisisk)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisisk)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Svensk)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Forenklet kinesisk)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradisjonelt kinesisk)" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Lagre" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Avbryt" @@ -770,9 +770,9 @@ msgstr "Avbryt" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Laster inn data kobler til %(source_name)s og finner metadata om denne forfatteren som enda ikke finnes her. Eksisterende metadata vil ikke bli overskrevet." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Legg til i liste" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Handlinger" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Rapporter spam" @@ -1216,7 +1216,7 @@ msgstr "Forlater BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Denne lenka sender deg til: %(link_url)s.
Er det dit du vil dra?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Fortsett" @@ -1292,7 +1292,7 @@ msgstr "Bekreftelseskode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Send inn" @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "Ingen medlemmer funnet for \"%(query)s\"" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Opprett gruppe" #: bookwyrm/templates/groups/created_text.html:4 @@ -1824,9 +1825,9 @@ msgstr "Slette denne gruppa?" msgid "This action cannot be un-done" msgstr "Denne handlingen er endelig" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "Legg til \"%(title)s\" på denne lista" msgid "Suggest \"%(title)s\" for this list" msgstr "Foreslå \"%(title)s\" for denne lista" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Foreslå" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Listeposisjon" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Bruk" @@ -3923,7 +3924,7 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." msgstr "" #: bookwyrm/templates/settings/themes.html:35 @@ -4200,7 +4201,8 @@ msgid "Need help?" msgstr "" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "Lag hylle" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4216,10 +4218,6 @@ msgstr "Brukerprofil" msgid "All books" msgstr "Alle bøker" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Lag hylle" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Svar" msgid "Content" msgstr "Innhold" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Innholdsadvarsel:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Spoilers forut!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Inkluder spoiler-varsel" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Spoilers forut!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Kommentar:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Innlegg" @@ -4851,10 +4849,6 @@ msgstr "Gruppene dine" msgid "Groups: %(username)s" msgstr "Grupper: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Opprett gruppe" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Brukerprofil" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 064c6caebac3129eca39164512621959f106f161..6ca75c4db9b5ada99f48b342c3be40dd2877a95c 100644 GIT binary patch delta 22778 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 delta 22809 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,}hA8H}O) zBt`}XJy1Q#$iVOvRO&G?Fz`an0b360$uTf6ltR_JegZYuK{8OR0?O8)jt>(9!+T~1 zhT}|-rMI9_EYSYY4-5_SEc1|MbyhDs=ZCj$e+3n+U!)UL&#b6G)+=Z}n#eKQ~nK$we#fng(PLoO&O zGeh>&)i5$Jbbz|%P)kAT@|YPIDxikuBZ;3!VuREjWMp8t0IH)w}; z>SG%Q1_oxRi^@QG4YXMk)Xf65xEUE3_A@asYy?@v%)p?`2sy~d4r(bIr~+ePU|0)k z{XxYpLe1I@>ivRj2OT2I$iT3MnSr5=nSp_cg@NG#GXq02BLhPkWb~VXp$*jOWM*JU z03}9H8x(5TGEmzK>YL}F#=vC32ystWCI*IGpk^@>1H%et28LUV4B&YR&|#;tQ0qZ9 zgO2tLWoBRqWCpF$W?(R4f~;ltfT}q>xiCVU_ZKq*gE~~?+Ty7ZDm\n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Seguidores" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Todo o resto" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Linha do tempo" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Página inicial" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Linha do tempo dos livros" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English (Inglês)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Galego)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português do Brasil)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Português Europeu)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Sueco)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Salvar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Cancelar" @@ -770,9 +770,9 @@ msgstr "Cancelar" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Para carregar informações nos conectaremos a %(source_name)s e buscaremos metadados que ainda não temos sobre este/a autor/a. Metadados já existentes não serão substituídos." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Adicionar à lista" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Ações" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Denunciar spam" @@ -1216,7 +1216,7 @@ msgstr "Saindo da BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Este link te levará a: %(link_url)s.
Você quer mesmo ir?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Continuar" @@ -1292,7 +1292,7 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Enviar" @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "Nenhum usuário encontrado para \"%(query)s\"" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Criar grupo" #: bookwyrm/templates/groups/created_text.html:4 @@ -1824,9 +1825,9 @@ msgstr "Deletar grupo?" msgid "This action cannot be un-done" msgstr "Esta ação não pode ser desfeita" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "Adicionar \"%(title)s\" a esta lista" msgid "Suggest \"%(title)s\" for this list" msgstr "Sugerir \"%(title)s\" para esta lista" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Sugerir" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Posição na lista" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Definir" @@ -3923,8 +3924,8 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "Copie o arquivo do tema para a pasta bookwyrm/static/css/themes em seu servidor pela linha de comando." #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." -msgstr "Execute ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." +msgstr "Execute ./bw-dev collectstatic." #: bookwyrm/templates/settings/themes.html:35 msgid "Add the file name using the form below to make it available in the application interface." @@ -4200,7 +4201,8 @@ msgid "Need help?" msgstr "Precisa de ajuda?" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "Criar estante" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4216,10 +4218,6 @@ msgstr "Perfil do usuário" msgid "All books" msgstr "Todos os livros" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Criar estante" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Responder" msgid "Content" msgstr "Conteúdo" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Aviso de conteúdo:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Alerta de spoiler!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Incluir alerta de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "Avisos de spoiler/conteúdo:" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Alerta de spoiler!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentário:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Publicar" @@ -4851,10 +4849,6 @@ msgstr "Seus grupos" msgid "Groups: %(username)s" msgstr "Grupos: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Criar grupo" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Perfil do usuário" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 85e167660be76978d3eae5b1408af98292516f36..d943b0f6c1cfbde56d1ccb7ab5d70b864c5f4d81 100644 GIT binary patch delta 19660 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 delta 19770 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 C+{E4h diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index 32acf05c3..6f3d2e4b5 100644 --- a/locale/pt_PT/LC_MESSAGES/django.po +++ b/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:51\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Seguidores" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Tudo o resto" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Cronograma Inicial" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Início" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Cronograma de Livros" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "Inglês" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (lituano)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português brasileiro)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português (Português Europeu)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Salvar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Cancelar" @@ -770,9 +770,9 @@ msgstr "Cancelar" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Carregar os dados irá conectar a %(source_name)s e verificar se há metadados sobre este autor que não estão aqui presentes. Os metadados existentes não serão substituídos." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Adicionar à lista" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1180,7 +1180,7 @@ msgid "Actions" msgstr "Acções" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "" @@ -1214,7 +1214,7 @@ msgstr "" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "" @@ -1290,7 +1290,7 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Submeter" @@ -1804,8 +1804,9 @@ msgid "No users found for \"%(query)s\"" msgstr "Nenhum utilizador encontrado para \"%(query)s\"" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" -msgstr "Criar um Grupo" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" +msgstr "Criar grupo" #: bookwyrm/templates/groups/created_text.html:4 #, python-format @@ -1822,9 +1823,9 @@ msgstr "Apagar este grupo?" msgid "This action cannot be un-done" msgstr "Esta ação não pode ser desfeita" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2296,7 +2297,7 @@ msgstr "" msgid "Suggest \"%(title)s\" for this list" msgstr "" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Sugerir" @@ -2466,7 +2467,7 @@ msgid "List position" msgstr "Posição da lista" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Definir" @@ -3921,7 +3922,7 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." msgstr "" #: bookwyrm/templates/settings/themes.html:35 @@ -4198,7 +4199,8 @@ msgid "Need help?" msgstr "" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "Criar prateleira" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4214,10 +4216,6 @@ msgstr "" msgid "All books" msgstr "Todos os livros" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Criar prateleira" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4341,24 +4339,24 @@ msgstr "Responder" msgid "Content" msgstr "Conteúdo" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Aviso de Conteúdo:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Alerta de spoiler!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Incluir aviso de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Alerta de spoiler!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentar:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Publicação" @@ -4849,10 +4847,6 @@ msgstr "Os Teus Grupos" msgid "Groups: %(username)s" msgstr "Grupos: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Criar grupo" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Perfil de Utilizador" diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo index eb44d9bf9529fbb561ab36fe4271c235c2e19ff6..d540a049d16db15db4469482f05fbdfed044b8b1 100644 GIT binary patch delta 22292 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 diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index 303495c60..691eb7ccb 100644 --- a/locale/sv_SE/LC_MESSAGES/django.po +++ b/locale/sv_SE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:15\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:51\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Swedish\n" "Language: sv\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "Följare" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "Citationer" msgid "Everything else" msgstr "Allt annat" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "Tidslinje för Hem" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "Hem" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "Tidslinjer för böcker" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Böcker" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "Engelska" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Tyska (Tysk)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Spanska (Spansk)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italienska (Italiensk)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Franska (Fransk)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Litauiska (Litauisk)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norska (Norska)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português d Brasil (Brasiliansk Portugisiska)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisiska)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska (Svenska)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Förenklad Kinesiska)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Traditionell Kinesiska)" @@ -727,14 +727,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -748,20 +748,20 @@ msgstr "Spara" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "Avbryt" @@ -770,9 +770,9 @@ msgstr "Avbryt" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "Att ladda in data kommer att ansluta till %(source_name)s och kontrollera eventuella metadata om den här författaren som inte finns här. Befintliga metadata kommer inte att skrivas över." -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -873,8 +873,8 @@ msgid "Add to list" msgstr "Lägg till i listan" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1182,7 +1182,7 @@ msgid "Actions" msgstr "Åtgärder" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Rapportera skräppost" @@ -1216,7 +1216,7 @@ msgstr "Lämnar BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "Den här länken tar dig till: %(link_url)s.
Är det dit du vill åka?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "Fortsätt" @@ -1292,7 +1292,7 @@ msgstr "Bekräftelsekod:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Skicka in" @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "Ingen användare \"%(query)s\" hittades" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "Skapa grupp" #: bookwyrm/templates/groups/created_text.html:4 @@ -1824,9 +1825,9 @@ msgstr "Ta bort den här gruppen?" msgid "This action cannot be un-done" msgstr "Den här åtgärden kan inte ångras" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2298,7 +2299,7 @@ msgstr "Lägg till \"%(title)s\" i den här listan" msgid "Suggest \"%(title)s\" for this list" msgstr "Föreslå \"%(title)s\" för den här listan" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "Föreslå" @@ -2468,7 +2469,7 @@ msgid "List position" msgstr "Listans plats" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "Ställ in" @@ -3923,7 +3924,7 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." msgstr "" #: bookwyrm/templates/settings/themes.html:35 @@ -4200,7 +4201,8 @@ msgid "Need help?" msgstr "Behöver du hjälp?" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "Skapa hylla" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4216,10 +4218,6 @@ msgstr "Användarprofil" msgid "All books" msgstr "Alla böcker" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "Skapa hylla" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4343,24 +4341,24 @@ msgstr "Svara" msgid "Content" msgstr "Innehåll" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "Innehållsvarning:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "Varning för spoiler!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "Inkludera spoilervarning" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "Varning för spoiler!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Kommentar:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "Inlägg" @@ -4851,10 +4849,6 @@ msgstr "Dina grupper" msgid "Groups: %(username)s" msgstr "Grupper: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "Skapa grupp" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Användarprofil" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 4acf1dce3..b4b67c957 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-14 00:10\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "关注者" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "引用" msgid "Everything else" msgstr "所有其它内容" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "主页时间线" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "主页" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "书目时间线" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "书目" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English(英语)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch(德语)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español(西班牙语)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "Galego(加利西亚语)" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "Italiano(意大利语)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français(法语)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių(立陶宛语)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "Norsk(挪威语)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil(巴西葡萄牙语)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu(欧洲葡萄牙语)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "Svenska(瑞典语)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文(繁体中文)" @@ -476,7 +476,7 @@ msgstr "共享状态:公开(需要密钥)" #: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." -msgstr "有完整地址的任何人都可以看到该页面。" +msgstr "任何有完整地址的人都可以看到该页面。" #: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" @@ -723,14 +723,14 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -744,20 +744,20 @@ msgstr "保存" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "取消" @@ -766,9 +766,9 @@ msgstr "取消" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "加载数据会连接到 %(source_name)s 并检查这里还没有记录的与作者相关的元数据。现存的元数据不会被覆盖。" -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -868,8 +868,8 @@ msgid "Add to list" msgstr "添加到列表" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1177,7 +1177,7 @@ msgid "Actions" msgstr "动作" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "举报垃圾信息" @@ -1211,7 +1211,7 @@ msgstr "离开 BookWyrm" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "此链接将跳转至:%(link_url)s
这是您想跳转的网址吗?" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "继续" @@ -1287,7 +1287,7 @@ msgstr "确认代码:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "提交" @@ -1799,7 +1799,8 @@ msgid "No users found for \"%(query)s\"" msgstr "没有找到 \"%(query)s\" 的用户" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "创建群组" #: bookwyrm/templates/groups/created_text.html:4 @@ -1817,9 +1818,9 @@ msgstr "删除该群组?" msgid "This action cannot be un-done" msgstr "此操作无法被撤销" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2287,7 +2288,7 @@ msgstr "将 “%(title)s” 添加到这个列表" msgid "Suggest \"%(title)s\" for this list" msgstr "推荐 “%(title)s” 到这个列表" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "推荐" @@ -2457,7 +2458,7 @@ msgid "List position" msgstr "列表位置:" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "设定" @@ -3908,8 +3909,8 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "从命令行将主题文件复制到您服务器上的 bookwym/static/css/themes 目录。" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." -msgstr "运行 ./bw-dev compilescsss。" +msgid "Run ./bw-dev collectstatic." +msgstr "" #: bookwyrm/templates/settings/themes.html:35 msgid "Add the file name using the form below to make it available in the application interface." @@ -4185,7 +4186,8 @@ msgid "Need help?" msgstr "需要帮助?" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "创建书架" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4201,10 +4203,6 @@ msgstr "用户个人资料" msgid "All books" msgstr "所有书目" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "创建书架" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4326,24 +4324,24 @@ msgstr "回复" msgid "Content" msgstr "内容" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "内容警告:" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "前有剧透!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "加入剧透警告" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "剧透/内容警告:" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "前有剧透!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "评论:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "发布" @@ -4829,10 +4827,6 @@ msgstr "您的群组" msgid "Groups: %(username)s" msgstr "群组: %(username)s" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "创建群组" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "用户个人资料" diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index a410c4fed..7e25b4b92 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-08 19:55+0000\n" -"PO-Revision-Date: 2022-03-08 21:16\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" +"PO-Revision-Date: 2022-03-13 19:52\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -220,7 +220,7 @@ msgid "Followers" msgstr "關注者" #: bookwyrm/models/fields.py:208 -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:6 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:20 @@ -261,73 +261,73 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home Timeline" msgstr "主頁時間線" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:208 msgid "Home" msgstr "主頁" -#: bookwyrm/settings.py:208 +#: bookwyrm/settings.py:209 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:209 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "書目" -#: bookwyrm/settings.py:280 +#: bookwyrm/settings.py:281 msgid "English" msgstr "English(英語)" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "Deutsch(德語)" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "Español(西班牙語)" -#: bookwyrm/settings.py:283 +#: bookwyrm/settings.py:284 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:285 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:286 msgid "Français (French)" msgstr "Français(法語)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:287 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:288 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:289 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:290 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:291 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:292 msgid "简体中文 (Simplified Chinese)" msgstr "簡體中文" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:293 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文" @@ -723,14 +723,14 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 -#: bookwyrm/templates/groups/form.html:30 +#: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:136 -#: bookwyrm/templates/readthrough/readthrough_modal.html:72 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/announcements/edit_announcement.html:120 #: bookwyrm/templates/settings/federation/edit_instance.html:98 #: bookwyrm/templates/settings/federation/instance.html:105 @@ -744,20 +744,20 @@ msgstr "儲存" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:194 -#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/book/cover_add_modal.html:33 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 -#: bookwyrm/templates/book/file_links/verification_modal.html:21 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 -#: bookwyrm/templates/groups/delete_group_modal.html:17 -#: bookwyrm/templates/lists/add_item_modal.html:42 -#: bookwyrm/templates/lists/delete_list_modal.html:18 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/add_item_modal.html:36 +#: bookwyrm/templates/lists/delete_list_modal.html:16 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27 #: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:106 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:53 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Cancel" msgstr "取消" @@ -766,9 +766,9 @@ msgstr "取消" msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." msgstr "" -#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/author/sync_modal.html:24 #: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 #: bookwyrm/templates/snippets/remove_from_group_button.html:17 @@ -868,8 +868,8 @@ msgid "Add to list" msgstr "新增到列表" #: bookwyrm/templates/book/book.html:370 -#: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/book/cover_add_modal.html:32 +#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:255 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 @@ -1175,7 +1175,7 @@ msgid "Actions" msgstr "動作" #: bookwyrm/templates/book/file_links/edit_links.html:53 -#: bookwyrm/templates/book/file_links/verification_modal.html:25 +#: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "" @@ -1209,7 +1209,7 @@ msgstr "" msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" msgstr "" -#: bookwyrm/templates/book/file_links/verification_modal.html:20 +#: bookwyrm/templates/book/file_links/verification_modal.html:26 #: bookwyrm/templates/setup/config.html:139 msgid "Continue" msgstr "" @@ -1285,7 +1285,7 @@ msgstr "" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 #: bookwyrm/templates/settings/dashboard/dashboard.html:116 -#: bookwyrm/templates/snippets/report_modal.html:52 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "提交" @@ -1797,7 +1797,8 @@ msgid "No users found for \"%(query)s\"" msgstr "沒有找到 \"%(query)s\" 的使用者" #: bookwyrm/templates/groups/create_form.html:5 -msgid "Create Group" +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" msgstr "" #: bookwyrm/templates/groups/created_text.html:4 @@ -1815,9 +1816,9 @@ msgstr "" msgid "This action cannot be un-done" msgstr "" -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/delete_list_modal.html:19 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29 #: bookwyrm/templates/settings/announcements/announcement.html:23 #: bookwyrm/templates/settings/announcements/announcements.html:56 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 @@ -2285,7 +2286,7 @@ msgstr "" msgid "Suggest \"%(title)s\" for this list" msgstr "" -#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/add_item_modal.html:41 #: bookwyrm/templates/lists/list.html:257 msgid "Suggest" msgstr "推薦" @@ -2455,7 +2456,7 @@ msgid "List position" msgstr "列表位置:" #: bookwyrm/templates/lists/list.html:152 -#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23 msgid "Set" msgstr "設定" @@ -3906,7 +3907,7 @@ msgid "Copy the theme file into the bookwyrm/static/css/themes dire msgstr "" #: bookwyrm/templates/settings/themes.html:32 -msgid "Run ./bw-dev compilescss." +msgid "Run ./bw-dev collectstatic." msgstr "" #: bookwyrm/templates/settings/themes.html:35 @@ -4183,7 +4184,8 @@ msgid "Need help?" msgstr "" #: bookwyrm/templates/shelf/create_shelf_form.html:5 -msgid "Create Shelf" +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" msgstr "建立書架" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4199,10 +4201,6 @@ msgstr "" msgid "All books" msgstr "所有書目" -#: bookwyrm/templates/shelf/shelf.html:72 -msgid "Create shelf" -msgstr "建立書架" - #: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" @@ -4324,24 +4322,24 @@ msgstr "回覆" msgid "Content" msgstr "內容" -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 -msgid "Content warning:" -msgstr "" - -#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 -msgid "Spoilers ahead!" -msgstr "前有劇透!" - -#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9 msgid "Include spoiler alert" msgstr "加入劇透警告" -#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers/content warnings:" +msgstr "" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27 +msgid "Spoilers ahead!" +msgstr "前有劇透!" + +#: bookwyrm/templates/snippets/create_status/layout.html:45 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "評論:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:18 msgid "Post" msgstr "釋出" @@ -4827,10 +4825,6 @@ msgstr "" msgid "Groups: %(username)s" msgstr "" -#: bookwyrm/templates/user/groups.html:17 -msgid "Create group" -msgstr "" - #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "使用者使用者資料" From a2f2104a08743610d85df3f0c30055ddc8a62813 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 10:42:53 -0700 Subject: [PATCH 125/132] Create non-functional UI for editing array fields --- .../templates/book/edit/edit_book_form.html | 70 ++++++++++++------- 1 file changed, 45 insertions(+), 25 deletions(-) diff --git a/bookwyrm/templates/book/edit/edit_book_form.html b/bookwyrm/templates/book/edit/edit_book_form.html index 38a7fe35d..d886d12f7 100644 --- a/bookwyrm/templates/book/edit/edit_book_form.html +++ b/bookwyrm/templates/book/edit/edit_book_form.html @@ -22,7 +22,7 @@ {% trans "Title:" %} - + {% include 'snippets/form_errors.html' with errors_list=form.title.errors id="desc_title" %}
@@ -31,7 +31,7 @@ {% trans "Subtitle:" %} - + {% include 'snippets/form_errors.html' with errors_list=form.subtitle.errors id="desc_subtitle" %} @@ -40,7 +40,7 @@ {% trans "Description:" %} {{ form.description }} - + {% include 'snippets/form_errors.html' with errors_list=form.description.errors id="desc_description" %} @@ -51,7 +51,7 @@ {% trans "Series:" %} - + {% include 'snippets/form_errors.html' with errors_list=form.series.errors id="desc_series" %} @@ -61,7 +61,7 @@ {% trans "Series number:" %} {{ form.series_number }} - + {% include 'snippets/form_errors.html' with errors_list=form.series_number.errors id="desc_series_number" %} @@ -75,21 +75,41 @@ {% trans "Separate multiple values with commas." %} - + {% include 'snippets/form_errors.html' with errors_list=form.languages.errors id="desc_languages" %} -
-
@@ -106,7 +126,7 @@ {% trans "Separate multiple values with commas." %} - + {% include 'snippets/form_errors.html' with errors_list=form.publishers.errors id="desc_publishers" %} @@ -115,7 +135,7 @@ {% trans "First published date:" %} - + {% include 'snippets/form_errors.html' with errors_list=form.first_published_date.errors id="desc_first_published_date" %} @@ -124,7 +144,7 @@ {% trans "Published date:" %} - + {% include 'snippets/form_errors.html' with errors_list=form.published_date.errors id="desc_published_date" %} @@ -193,7 +213,7 @@ - + {% include 'snippets/form_errors.html' with errors_list=form.cover.errors id="desc_cover" %} @@ -214,7 +234,7 @@
{{ form.physical_format }}
- + {% include 'snippets/form_errors.html' with errors_list=form.physical_format.errors id="desc_physical_format" %} @@ -224,7 +244,7 @@ {% trans "Format details:" %} {{ form.physical_format_detail }} - + {% include 'snippets/form_errors.html' with errors_list=form.physical_format_detail.errors id="desc_physical_format_detail" %} @@ -235,7 +255,7 @@ {% trans "Pages:" %} {{ form.pages }} - + {% include 'snippets/form_errors.html' with errors_list=form.pages.errors id="desc_pages" %} @@ -251,7 +271,7 @@ {% trans "ISBN 13:" %} {{ form.isbn_13 }} - + {% include 'snippets/form_errors.html' with errors_list=form.isbn_13.errors id="desc_isbn_13" %} @@ -260,7 +280,7 @@ {% trans "ISBN 10:" %} {{ form.isbn_10 }} - + {% include 'snippets/form_errors.html' with errors_list=form.isbn_10.errors id="desc_isbn_10" %} @@ -269,7 +289,7 @@ {% trans "Openlibrary ID:" %} {{ form.openlibrary_key }} - + {% include 'snippets/form_errors.html' with errors_list=form.openlibrary_key.errors id="desc_openlibrary_key" %} @@ -278,7 +298,7 @@ {% trans "Inventaire ID:" %} {{ form.inventaire_id }} - + {% include 'snippets/form_errors.html' with errors_list=form.inventaire_id.errors id="desc_inventaire_id" %} @@ -287,7 +307,7 @@ {% trans "OCLC Number:" %} {{ form.oclc_number }} - + {% include 'snippets/form_errors.html' with errors_list=form.oclc_number.errors id="desc_oclc_number" %} @@ -296,7 +316,7 @@ {% trans "ASIN:" %} {{ form.asin }} - + {% include 'snippets/form_errors.html' with errors_list=form.ASIN.errors id="desc_ASIN" %} From 35e6dede098b46c1d0b851281657b5e03c82061d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 11:34:14 -0700 Subject: [PATCH 126/132] Script to remove input fields --- bookwyrm/static/js/forms.js | 17 +++++++++++++++++ .../templates/book/edit/edit_book_form.html | 8 ++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/bookwyrm/static/js/forms.js b/bookwyrm/static/js/forms.js index 7d946d147..998873898 100644 --- a/bookwyrm/static/js/forms.js +++ b/bookwyrm/static/js/forms.js @@ -1,6 +1,19 @@ (function () { "use strict"; + /** + * Remoev input field + * + * @param {event} the button click event + */ + function removeInput(event) { + const trigger = event.currentTarget; + const input_id = trigger.dataset.remove; + const input = document.getElementById(input_id); + + input.remove(); + } + /** * Duplicate an input field * @@ -29,4 +42,8 @@ document .querySelectorAll("[data-duplicate]") .forEach((node) => node.addEventListener("click", duplicateInput)); + + document + .querySelectorAll("[data-remove]") + .forEach((node) => node.addEventListener("click", removeInput)); })(); diff --git a/bookwyrm/templates/book/edit/edit_book_form.html b/bookwyrm/templates/book/edit/edit_book_form.html index d886d12f7..fc15d26ae 100644 --- a/bookwyrm/templates/book/edit/edit_book_form.html +++ b/bookwyrm/templates/book/edit/edit_book_form.html @@ -87,12 +87,16 @@ -
+
-
{% endfor %} - + {% include 'snippets/form_errors.html' with errors_list=form.subjects.errors id="desc_subjects" %}
@@ -186,7 +201,12 @@ {% endfor %} - + + + From a37f83c458594219efc9722c1fe182ddf6520a77 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 14:55:41 -0700 Subject: [PATCH 128/132] Get the field working --- bookwyrm/forms/books.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bookwyrm/forms/books.py b/bookwyrm/forms/books.py index 91d9b8f00..72df1371c 100644 --- a/bookwyrm/forms/books.py +++ b/bookwyrm/forms/books.py @@ -14,6 +14,14 @@ class CoverForm(CustomForm): help_texts = {f: None for f in fields} +class ArrayWidget(forms.widgets.TextInput): + # pylint: disable=unused-argument + # pylint: disable=no-self-use + def value_from_datadict(self, data, files, name): + """get all values for this name""" + return [i for i in data.getlist(name) if i] + + class EditionForm(CustomForm): class Meta: model = models.Edition @@ -41,12 +49,10 @@ class EditionForm(CustomForm): "series_number": forms.TextInput( attrs={"aria-describedby": "desc_series_number"} ), + "subjects": ArrayWidget(), "languages": forms.TextInput( attrs={"aria-describedby": "desc_languages_help desc_languages"} ), - "subjects": forms.TextInput( - attrs={"aria-describedby": "desc_subjects"} - ), "publishers": forms.TextInput( attrs={"aria-describedby": "desc_publishers_help desc_publishers"} ), From 820279166af24dd8051f4829822fe44528c88b3f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 16 Mar 2022 12:39:49 -0700 Subject: [PATCH 129/132] Adds update script --- .../management/commands/instance_version.py | 54 +++++++++++++++++++ .../migrations/0145_sitesettings_version.py | 18 +++++++ bookwyrm/models/site.py | 1 + 3 files changed, 73 insertions(+) create mode 100644 bookwyrm/management/commands/instance_version.py create mode 100644 bookwyrm/migrations/0145_sitesettings_version.py diff --git a/bookwyrm/management/commands/instance_version.py b/bookwyrm/management/commands/instance_version.py new file mode 100644 index 000000000..ca150d640 --- /dev/null +++ b/bookwyrm/management/commands/instance_version.py @@ -0,0 +1,54 @@ +""" Get your admin code to allow install """ +from django.core.management.base import BaseCommand + +from bookwyrm import models +from bookwyrm.settings import VERSION + + +# pylint: disable=no-self-use +class Command(BaseCommand): + """command-line options""" + + help = "What version is this?" + + def add_arguments(self, parser): + """specify which function to run""" + parser.add_argument( + "--current", + action="store_true", + help="Version stored in database", + ) + parser.add_argument( + "--target", + action="store_true", + help="Version stored in settings", + ) + parser.add_argument( + "--update", + action="store_true", + help="Update database version", + ) + + # pylint: disable=unused-argument + def handle(self, *args, **options): + """execute init""" + site = models.SiteSettings.objects.get() + current = site.version or "0.0.1" + target = VERSION + if options.get("current"): + print(current) + return + + if options.get("target"): + print(target) + return + + if options.get("update"): + site.version = target + site.save() + return + + if current != target: + print(f"{current}/{target}") + else: + print(current) diff --git a/bookwyrm/migrations/0145_sitesettings_version.py b/bookwyrm/migrations/0145_sitesettings_version.py new file mode 100644 index 000000000..649f90abe --- /dev/null +++ b/bookwyrm/migrations/0145_sitesettings_version.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-03-16 18:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0144_alter_announcement_display_type"), + ] + + operations = [ + migrations.AddField( + model_name="sitesettings", + name="version", + field=models.CharField(blank=True, max_length=10, null=True), + ), + ] diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py index c6c53f765..cbad6c4b7 100644 --- a/bookwyrm/models/site.py +++ b/bookwyrm/models/site.py @@ -27,6 +27,7 @@ class SiteSettings(models.Model): default_theme = models.ForeignKey( "Theme", null=True, blank=True, on_delete=models.SET_NULL ) + version = models.CharField(null=True, blank=True, max_length=10) # admin setup options install_mode = models.BooleanField(default=False) From 78b03efe451db87c6ad4ff2a7b4210608e6d3212 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 16 Mar 2022 12:53:05 -0700 Subject: [PATCH 130/132] Updates bw-dev command and ticks version number --- bookwyrm/settings.py | 2 +- bw-dev | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index ec30bd678..f8d4c397f 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -11,7 +11,7 @@ from django.utils.translation import gettext_lazy as _ env = Env() env.read_env() DOMAIN = env("DOMAIN") -VERSION = "0.3.3" +VERSION = "0.3.4" RELEASE_API = env( "RELEASE_API", diff --git a/bw-dev b/bw-dev index 9751219a7..b610758fe 100755 --- a/bw-dev +++ b/bw-dev @@ -163,6 +163,7 @@ case "$CMD" in update) git pull docker-compose build + ./update.sh runweb python manage.py migrate runweb python manage.py collectstatic --no-input docker-compose up -d From ee973c7d7266f9b31103fe132e2474f00766d719 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 16 Mar 2022 12:53:27 -0700 Subject: [PATCH 131/132] Adds celerybeat update script --- updates/0.3.4.sh | 1 + 1 file changed, 1 insertion(+) create mode 100755 updates/0.3.4.sh diff --git a/updates/0.3.4.sh b/updates/0.3.4.sh new file mode 100755 index 000000000..fe7f94dd6 --- /dev/null +++ b/updates/0.3.4.sh @@ -0,0 +1 @@ +./bw-dev migrate django_celery_beat From ea69f9087fe4501159e11f0801fca964a2abd55f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 16 Mar 2022 13:32:37 -0700 Subject: [PATCH 132/132] Adds missing update script --- update.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 update.sh diff --git a/update.sh b/update.sh new file mode 100755 index 000000000..a394eed81 --- /dev/null +++ b/update.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +# determine inital and target versions +initial_version="`./bw-dev runweb python manage.py instance_version --current`" +target_version="`./bw-dev runweb python manage.py instance_version --target`" + +initial_version="`echo $initial_version | tail -n 1 | xargs`" +target_version="`echo $target_version | tail -n 1 | xargs`" +if [[ "$initial_version" = "$target_version" ]]; then + echo "Already up to date; version $initial_version" + exit +fi + +echo "---------------------------------------" +echo "Updating from version: $initial_version" +echo ".......... to version: $target_version" +echo "---------------------------------------" + +function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; } + +# execute scripts between initial and target +for version in `ls -A updates/ | sort -V `; do + if version_gt $initial_version $version; then + # too early + continue + fi + if version_gt $version $target_version; then + # too late + continue + fi + echo "Running tasks for version $version" + ./updates/$version +done + +./bw-dev runweb python manage.py instance_version --update +echo "✨ ----------- Done! --------------- ✨"